diff --git a/apps/portal/Dockerfile b/apps/portal/Dockerfile index 25fc8c91..b133b10b 100644 --- a/apps/portal/Dockerfile +++ b/apps/portal/Dockerfile @@ -30,8 +30,10 @@ COPY apps/portal/package.json ./apps/portal/package.json COPY apps/bff/package.json ./apps/bff/package.json # Install only the packages needed for the portal (domain + portal) +# Disable inject-workspace-packages so symlinks are used (domain dist doesn't exist at install time) ENV HUSKY=0 RUN --mount=type=cache,id=pnpm-portal,target=/root/.local/share/pnpm/store \ + pnpm config set inject-workspace-packages false && \ pnpm install --frozen-lockfile --filter @customer-portal/domain... --filter @customer-portal/portal... # ============================================================================= @@ -56,7 +58,10 @@ ENV NODE_ENV=production \ NEXT_TELEMETRY_DISABLED=1 # Build: domain → Next.js (standalone output) +# After building domain, manually create symlink to ensure resolution works RUN pnpm --filter @customer-portal/domain build \ + && mkdir -p node_modules/@customer-portal \ + && ln -sf ../../packages/domain node_modules/@customer-portal/domain \ && pnpm --filter @customer-portal/portal build # ============================================================================= diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f61cc094..45a81171 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,9 +7,15 @@ settings: catalogs: default: + "@types/node": + specifier: 24.10.3 + version: 24.10.3 typescript: specifier: 5.9.3 version: 5.9.3 + zod: + specifier: 4.2.1 + version: 4.2.1 overrides: js-yaml: ">=4.1.1" @@ -182,10 +188,13 @@ importers: dependencies: "@customer-portal/domain": specifier: workspace:* - version: file:packages/domain(zod@4.2.1) + version: link:../../packages/domain "@heroicons/react": specifier: ^2.2.0 version: 2.2.0(react@19.2.3) + "@react-google-maps/api": + specifier: ^2.20.8 + version: 2.20.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3) "@tanstack/react-query": specifier: ^5.90.14 version: 5.90.14(react@19.2.3) @@ -200,7 +209,7 @@ importers: version: 0.562.0(react@19.2.3) next: specifier: 16.1.1 - version: 16.1.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: specifier: 19.2.3 version: 19.2.3 @@ -499,11 +508,6 @@ packages: } engines: { node: ">=0.1.90" } - "@customer-portal/domain@file:packages/domain": - resolution: { directory: packages/domain, type: directory } - peerDependencies: - zod: ^4.2.1 - "@discoveryjs/json-ext@0.5.7": resolution: { @@ -845,6 +849,18 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + "@googlemaps/js-api-loader@1.16.8": + resolution: + { + integrity: sha512-CROqqwfKotdO6EBjZO/gQGVTbeDps5V7Mt9+8+5Q+jTg5CRMi3Ii/L9PmV3USROrt2uWxtGzJHORmByxyo9pSQ==, + } + + "@googlemaps/markerclusterer@2.5.3": + resolution: + { + integrity: sha512-x7lX0R5yYOoiNectr10wLgCBasNcXFHiADIBdmn7jQllF2B5ENQw5XtZK+hIw4xnV0Df0xhN4LN98XqA5jaiOw==, + } + "@grpc/grpc-js@1.14.2": resolution: { @@ -2062,6 +2078,27 @@ packages: integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==, } + "@react-google-maps/api@2.20.8": + resolution: + { + integrity: sha512-wtLYFtCGXK3qbIz1H5to3JxbosPnKsvjDKhqGylXUb859EskhzR7OpuNt0LqdLarXUtZCJTKzPn3BNaekNIahg==, + } + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 + react-dom: ^16.8 || ^17 || ^18 || ^19 + + "@react-google-maps/infobox@2.20.0": + resolution: + { + integrity: sha512-03PJHjohhaVLkX6+NHhlr8CIlvUxWaXhryqDjyaZ8iIqqix/nV8GFdz9O3m5OsjtxtNho09F/15j14yV0nuyLQ==, + } + + "@react-google-maps/marker-clusterer@2.20.0": + resolution: + { + integrity: sha512-tieX9Va5w1yP88vMgfH1pHTacDQ9TgDTjox3tLlisKDXRQWdjw+QeVVghhf5XqqIxXHgPdcGwBvKY6UP+SIvLw==, + } + "@scarf/scarf@1.4.0": resolution: { @@ -2482,6 +2519,12 @@ packages: integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==, } + "@types/google.maps@3.58.1": + resolution: + { + integrity: sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==, + } + "@types/http-cache-semantics@4.0.4": resolution: { @@ -4760,6 +4803,12 @@ packages: integrity: sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==, } + invariant@2.2.4: + resolution: + { + integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, + } + ioredis@5.8.2: resolution: { @@ -5003,6 +5052,12 @@ packages: integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==, } + kdbush@4.0.2: + resolution: + { + integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==, + } + keyv@4.5.4: resolution: { @@ -5234,6 +5289,13 @@ packages: integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==, } + loose-envify@1.4.0: + resolution: + { + integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, + } + hasBin: true + lowercase-keys@3.0.0: resolution: { @@ -5702,12 +5764,6 @@ packages: } engines: { node: ">= 0.4" } - ogl@1.0.11: - resolution: - { - integrity: sha512-kUpC154AFfxi16pmZUK4jk3J+8zxwTWGPo03EoYA8QPbzikHoaC82n6pNTbd+oEaJonaE8aPWBlX7ad9zrqLsA==, - } - ohash@2.0.11: resolution: { @@ -6859,6 +6915,12 @@ packages: babel-plugin-macros: optional: true + supercluster@8.0.1: + resolution: + { + integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==, + } + supports-color@7.2.0: resolution: { @@ -7714,10 +7776,6 @@ snapshots: "@colors/colors@1.5.0": optional: true - "@customer-portal/domain@file:packages/domain(zod@4.2.1)": - dependencies: - zod: 4.2.1 - "@discoveryjs/json-ext@0.5.7": {} "@electric-sql/pglite-socket@0.0.6(@electric-sql/pglite@0.3.2)": @@ -7861,6 +7919,13 @@ snapshots: "@eslint/core": 0.17.0 levn: 0.4.1 + "@googlemaps/js-api-loader@1.16.8": {} + + "@googlemaps/markerclusterer@2.5.3": + dependencies: + fast-deep-equal: 3.1.3 + supercluster: 8.0.1 + "@grpc/grpc-js@1.14.2": dependencies: "@grpc/proto-loader": 0.8.0 @@ -8571,6 +8636,21 @@ snapshots: "@protobufjs/utf8@1.1.0": {} + "@react-google-maps/api@2.20.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)": + dependencies: + "@googlemaps/js-api-loader": 1.16.8 + "@googlemaps/markerclusterer": 2.5.3 + "@react-google-maps/infobox": 2.20.0 + "@react-google-maps/marker-clusterer": 2.20.0 + "@types/google.maps": 3.58.1 + invariant: 2.2.4 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + "@react-google-maps/infobox@2.20.0": {} + + "@react-google-maps/marker-clusterer@2.20.0": {} + "@scarf/scarf@1.4.0": {} "@sendgrid/client@8.1.6": @@ -8823,6 +8903,8 @@ snapshots: "@types/express-serve-static-core": 5.1.0 "@types/serve-static": 2.2.0 + "@types/google.maps@3.58.1": {} + "@types/http-cache-semantics@4.0.4": optional: true @@ -10330,6 +10412,10 @@ snapshots: kind-of: 6.0.3 optional: true + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + ioredis@5.8.2: dependencies: "@ioredis/commands": 1.4.0 @@ -10455,6 +10541,8 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + kdbush@4.0.2: {} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -10575,6 +10663,10 @@ snapshots: long@5.3.2: {} + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + lowercase-keys@3.0.0: optional: true @@ -10749,7 +10841,7 @@ snapshots: optionalDependencies: "@nestjs/swagger": 11.2.3(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2) - next@16.1.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + next@16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: "@next/env": 16.1.1 "@swc/helpers": 0.5.15 @@ -10758,7 +10850,7 @@ snapshots: postcss: 8.4.31 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - styled-jsx: 5.1.6(react@19.2.3) + styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.3) optionalDependencies: "@next/swc-darwin-arm64": 16.1.1 "@next/swc-darwin-x64": 16.1.1 @@ -10818,8 +10910,6 @@ snapshots: object-inspect@1.13.4: {} - ogl@1.0.11: {} - ohash@2.0.11: {} on-exit-leak-free@2.1.2: {} @@ -11522,10 +11612,16 @@ snapshots: dependencies: "@tokenizer/token": 0.3.0 - styled-jsx@5.1.6(react@19.2.3): + styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.3): dependencies: client-only: 0.0.1 react: 19.2.3 + optionalDependencies: + "@babel/core": 7.28.5 + + supercluster@8.0.1: + dependencies: + kdbush: 4.0.2 supports-color@7.2.0: dependencies: