@_linked/cli 1.27.0 → 1.28.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/defaults/package/tsconfig.json +1 -0
  3. package/lib/esm/app-release/app-assets-store.js.map +1 -1
  4. package/lib/esm/app-release/build-backend.d.ts +4 -1
  5. package/lib/esm/app-release/build-backend.d.ts.map +1 -1
  6. package/lib/esm/app-release/build-backend.js +5 -2
  7. package/lib/esm/app-release/build-backend.js.map +1 -1
  8. package/lib/esm/app-release/create-release-manifest.js.map +1 -1
  9. package/lib/esm/app-release/paths.js.map +1 -1
  10. package/lib/esm/app-release/publisher.js.map +1 -1
  11. package/lib/esm/app-release/resolve-build-target.js.map +1 -1
  12. package/lib/esm/app-release/static-assets.js.map +1 -1
  13. package/lib/esm/app-release/types.js.map +1 -1
  14. package/lib/esm/cli-methods.d.ts.map +1 -1
  15. package/lib/esm/cli-methods.js +6 -0
  16. package/lib/esm/cli-methods.js.map +1 -1
  17. package/lib/esm/cli.js.map +1 -1
  18. package/lib/esm/commands/build-app.js.map +1 -1
  19. package/lib/esm/commands/build-package.js.map +1 -1
  20. package/lib/esm/commands/publish-app.js.map +1 -1
  21. package/lib/esm/commands/safe-yarn.js.map +1 -1
  22. package/lib/esm/commands/serve-app.js.map +1 -1
  23. package/lib/esm/commands/setup-publish.js.map +1 -1
  24. package/lib/esm/commands/start.js.map +1 -1
  25. package/lib/esm/defineConfig.js.map +1 -1
  26. package/lib/esm/index.js.map +1 -1
  27. package/lib/esm/interfaces.js.map +1 -1
  28. package/lib/esm/launch.js.map +1 -1
  29. package/lib/esm/lifecycle.js.map +1 -1
  30. package/lib/esm/loaders/css-loader.mjs.map +1 -1
  31. package/lib/esm/loaders/ts-loader.mjs.map +1 -1
  32. package/lib/esm/metadata.js.map +1 -1
  33. package/lib/esm/package-manifest.js.map +1 -1
  34. package/lib/esm/plugins/lincd-tailwind-sources.js.map +1 -1
  35. package/lib/esm/tailwind.config.js.map +1 -1
  36. package/lib/esm/utils/esmSpecifiers.js.map +1 -1
  37. package/lib/esm/utils/packageManager.js.map +1 -1
  38. package/lib/esm/utils/packageSetup.js.map +1 -1
  39. package/lib/esm/utils/shapeNames.d.ts +26 -0
  40. package/lib/esm/utils/shapeNames.d.ts.map +1 -0
  41. package/lib/esm/utils/shapeNames.js +81 -0
  42. package/lib/esm/utils/shapeNames.js.map +1 -0
  43. package/lib/esm/utils/shippedDotfiles.js.map +1 -1
  44. package/lib/esm/utils.js.map +1 -1
  45. package/lib/esm/vite-config.d.ts +10 -1
  46. package/lib/esm/vite-config.d.ts.map +1 -1
  47. package/lib/esm/vite-config.js +72 -32
  48. package/lib/esm/vite-config.js.map +1 -1
  49. package/lib/esm/workspace-globs.js.map +1 -1
  50. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.28.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#161](https://github.com/linked-fw/cli/pull/161) [`a43b13a`](https://github.com/linked-fw/cli/commit/a43b13ae1d965309f1d783e8570537b4524bdbb1) Thanks [@flyon](https://github.com/flyon)! - A release backend build no longer compiles a private copy of `@_linked/server-utils` and `@_linked/react` into `lib/`. That copy made every provider the app exports fail `LinkedServer`'s `instanceof ShapeProvider` check, so all but one were dropped ("exports two generic backend providers"). `build-app` now also fails if an installed `@_linked/*` package ends up inlined.
8
+
9
+ ## 1.28.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [#158](https://github.com/linked-fw/cli/pull/158) [`e821daf`](https://github.com/linked-fw/cli/commit/e821dafc4865dfc4db3404eeb20619fe1ad8fcd1) Thanks [@flyon](https://github.com/flyon)! - `linked build` gains a "Checking shape names" step that warns about compiled shapes without `@linkedShape({name})` whose module also reads `process.env` or `import.meta.env` — the ones a consumer's bundler can rename.
14
+
15
+ - [#158](https://github.com/linked-fw/cli/pull/158) [`ee391de`](https://github.com/linked-fw/cli/commit/ee391dea3b53ed0ae6e19d667397b1fc4433d05b) Thanks [@flyon](https://github.com/flyon)! - `createViteConfig` now applies its `process.env.*` defines (`NODE_ENV`, `SITE_ROOT`, `APP_NAME`, and anything passed as its `define` option) to the **client environment only** (`environments.client.define`), no longer to the top-level `define` that the SSR environment inherits.
16
+
17
+ A top-level define reached the server in two harmful ways. Vite's define pass runs `esbuild.transform` without `keepNames` over every SSR module containing a key, which renamed tsc-emitted decorated classes — `@_linked/server`'s `LinkedServer` and `LincdAPI` registered as `LinkedServer2` / `LincdAPI2` in dev, so their shape IRIs no longer matched. And in a release backend build it inlined the build machine's `SITE_ROOT` instead of reading the deployment's.
18
+
19
+ Behaviour change: server-side code loaded through Vite now reads `process.env.SITE_ROOT`, `APP_NAME` and `NODE_ENV` at runtime in dev as well, so those must be set in the server's environment (they already had to be for any externalised package). Apps that add their own top-level `define` in `vite.config` should move it to `environments.client.define`.
20
+
21
+ ### Patch Changes
22
+
23
+ - [#158](https://github.com/linked-fw/cli/pull/158) [`1a8fe90`](https://github.com/linked-fw/cli/commit/1a8fe90a5f4b974dbae00425f976b77f880f0efa) Thanks [@flyon](https://github.com/flyon)! - The package template's tsconfig (and the CLI's own) now sets `inlineSources`, so published source maps carry their sources instead of pointing at an unshipped `src/`.
24
+
3
25
  ## 1.27.0
4
26
 
5
27
  ### Minor Changes
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "sourceMap": true,
4
+ "inlineSources": true,
4
5
  "declaration": true,
5
6
  "experimentalDecorators": true,
6
7
  "emitDecoratorMetadata": true,
@@ -1 +1 @@
1
- {"version":3,"file":"app-assets-store.js","sourceRoot":"","sources":["../../../src/app-release/app-assets-store.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,uCAAuC,CAAC;AAa/C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAEd,EAAE,mDADvB,eAAkD,EAAE;IAEpD,MAAM,iBAAiB,GACrB,YAAY,CAAC,iBAAiB;QAC9B,CAAC,GAAS,EAAE;YACV,MAAM,EAAC,wBAAwB,EAAC,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACnE,OAAO,wBAAwB,EAAE,CAAC;QACpC,CAAC,CAAA,CAAC,CAAC;IACL,MAAM,iBAAiB,EAAE,CAAC;IAE1B,MAAM,QAAQ,GACZ,YAAY,CAAC,QAAQ;QACrB,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAC/C,CAAC,CAAA,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAU,EAAE,CAC9D,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"app-assets-store.js","sourceRoot":"","sources":["../../../src/app-release/app-assets-store.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,uCAAuC,CAAC;AAa/C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAEd,EAAE,mDADvB,eAAkD,EAAE;IAEpD,MAAM,iBAAiB,GACrB,YAAY,CAAC,iBAAiB;QAC9B,CAAC,GAAS,EAAE;YACV,MAAM,EAAC,wBAAwB,EAAC,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACnE,OAAO,wBAAwB,EAAE,CAAC;QACpC,CAAC,CAAA,CAAC,CAAC;IACL,MAAM,iBAAiB,EAAE,CAAC;IAE1B,MAAM,QAAQ,GACZ,YAAY,CAAC,QAAQ;QACrB,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAC/C,CAAC,CAAA,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAU,EAAE,CAC9D,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC","sourcesContent":["import {\n FileStorePurposes,\n LinkedFileStorage,\n} from '@_linked/core/utils/LinkedFileStorage';\nimport type {IFileStore} from '@_linked/core/interfaces/IFileStore';\n\nexport interface ResolveAppAssetsStoreDependencies {\n /**\n * Loads the app's storage bootstrap file. Importing it is what registers the\n * stores on `LinkedFileStorage`; the module's own exports are not inspected.\n */\n loadStorageConfig?: () => Promise<unknown>;\n /** Injection point for tests. Defaults to `LinkedFileStorage.getStore`. */\n getStore?: (purpose: string) => IFileStore;\n}\n\n/**\n * Resolve the store that release artifacts are published to.\n *\n * Apps that dedicate a CDN bucket to bundles configure\n * `LinkedFileStorage.setStore(FileStorePurposes.appAssets, …)`. Apps with a\n * single store configure only a default store and `getStore` falls back to it\n * — that is a supported setup, not an error, so there is no check for a\n * dedicated store here.\n */\nexport const resolveAppAssetsStore = async (\n dependencies: ResolveAppAssetsStoreDependencies = {},\n): Promise<IFileStore> => {\n const loadStorageConfig =\n dependencies.loadStorageConfig ||\n (async () => {\n const {loadBackendStorageConfig} = await import('../lifecycle.js');\n return loadBackendStorageConfig();\n });\n await loadStorageConfig();\n\n const getStore =\n dependencies.getStore ||\n ((purpose: string) => LinkedFileStorage.getStore(purpose));\n return getStore(FileStorePurposes.appAssets);\n};\n\n/** `accessURL` values are compared ignoring a trailing slash. */\nexport const normalizeAccessURL = (accessURL: string): string =>\n (accessURL || '').trim().replace(/\\/+$/, '');\n"]}
@@ -28,7 +28,10 @@ export declare const workspacePackagesToExternalize: (appRoot: string, discover?
28
28
  }[]>) => Promise<string[]>;
29
29
  /**
30
30
  * A relative import from `lib/` into `packages/` means a workspace package was
31
- * compiled in after all.
31
+ * compiled in after all. One into `node_modules/@_linked/` means an installed
32
+ * framework package was: `lib/node_modules/@_linked/server-utils` is a second
33
+ * `ShapeProvider` class, so the server's `instanceof` check rejects every
34
+ * provider the app exports.
32
35
  *
33
36
  * Worth failing the build over rather than leaving to be discovered: the
34
37
  * output is perfectly valid JavaScript, and the symptom is the app refusing to
@@ -1 +1 @@
1
- {"version":3,"file":"build-backend.d.ts","sourceRoot":"","sources":["../../../src/app-release/build-backend.ts"],"names":[],"mappings":"AA+BA,eAAO,MAAM,qBAAqB,GAChC,SAAS,MAAM,EACf,SAAQ,CAAC,CAAC,EAAE,MAAM,KAAK,OAAuB,KAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAWvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,8BAA8B,GACzC,SAAS,MAAM,EACf,WAAU,CACR,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,EAAE,MAAM,KACR,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,EAAE,CAG5B,KACA,OAAO,CAAC,MAAM,EAAE,CAGlB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,GAAI,QAAQ,MAAM,KAAG,MAAM,EAQlE,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,SAAS,MAAM,EACf,WAAU,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAiC,KACvE,OAAO,CAAC,IAAI,CAwBd,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,GAC3C,SAAS,MAAM,EACf,oBAAoB,MAAM,EAAE,KAC3B,MAAM,GAAG,IAgBX,CAAC;AAqBF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAS;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAM,EAChC,eAAc;IAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAAM,KACjE,OAAO,CAAC,IAAI,CAqFd,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,SAAS,MAAM,EACf,cAAc,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,KAC/C,OAAO,CAAC,MAAM,CAYhB,CAAC"}
1
+ {"version":3,"file":"build-backend.d.ts","sourceRoot":"","sources":["../../../src/app-release/build-backend.ts"],"names":[],"mappings":"AA+BA,eAAO,MAAM,qBAAqB,GAChC,SAAS,MAAM,EACf,SAAQ,CAAC,CAAC,EAAE,MAAM,KAAK,OAAuB,KAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAWvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,8BAA8B,GACzC,SAAS,MAAM,EACf,WAAU,CACR,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,EAAE,MAAM,KACR,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,EAAE,CAG5B,KACA,OAAO,CAAC,MAAM,EAAE,CAGlB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,GAAI,QAAQ,MAAM,KAAG,MAAM,EAQlE,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,SAAS,MAAM,EACf,WAAU,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAiC,KACvE,OAAO,CAAC,IAAI,CAwBd,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,GAC3C,SAAS,MAAM,EACf,oBAAoB,MAAM,EAAE,KAC3B,MAAM,GAAG,IAgBX,CAAC;AAqBF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAS;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAM,EAChC,eAAc;IAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAAM,KACjE,OAAO,CAAC,IAAI,CAqFd,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,SAAS,MAAM,EACf,cAAc,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,KAC/C,OAAO,CAAC,MAAM,CAYhB,CAAC"}
@@ -88,7 +88,10 @@ export const workspacePackagesToExternalize = (appRoot_1, ...args_1) => __awaite
88
88
  });
89
89
  /**
90
90
  * A relative import from `lib/` into `packages/` means a workspace package was
91
- * compiled in after all.
91
+ * compiled in after all. One into `node_modules/@_linked/` means an installed
92
+ * framework package was: `lib/node_modules/@_linked/server-utils` is a second
93
+ * `ShapeProvider` class, so the server's `instanceof` check rejects every
94
+ * provider the app exports.
92
95
  *
93
96
  * Worth failing the build over rather than leaving to be discovered: the
94
97
  * output is perfectly valid JavaScript, and the symptom is the app refusing to
@@ -98,7 +101,7 @@ export const findInlinedWorkspaceImports = (source) => {
98
101
  // Both static `from "…"` and dynamic `import("…")`: a lazily imported page
99
102
  // can drag a workspace package in on its own, and only the second form
100
103
  // appears in the output for it.
101
- const matches = source.matchAll(/(?:from|import)\s*\(?\s*["'](\.[^"']*\/packages\/[^"']+)["']/g);
104
+ const matches = source.matchAll(/(?:from|import)\s*\(?\s*["'](\.[^"']*\/(?:packages|node_modules\/@_linked)\/[^"']+)["']/g);
102
105
  return [...new Set([...matches].map((m) => m[1]))].sort();
103
106
  };
104
107
  export const assertNoInlinedWorkspaces = (appRoot_1, ...args_1) => __awaiter(void 0, [appRoot_1, ...args_1], void 0, function* (appRoot, readFile = (p) => fs.readFile(p, 'utf8')) {
@@ -1 +1 @@
1
- {"version":3,"file":"build-backend.js","sourceRoot":"","sources":["../../../src/app-release/build-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-backend.js","sourceRoot":"","sources":["../../../src/app-release/build-backend.ts"],"names":[],"mappings":"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","sourcesContent":["import {builtinModules} from 'module';\nimport fs from 'fs-extra';\nimport path from 'path';\n\n/**\n * The backend entry points a compiled app is started from.\n *\n * `serve-app` requires all three on disk and `startServer` imports `lib/App.js`\n * and `lib/routes.js` by those exact paths, so the names are a contract, not a\n * convention.\n */\nconst BACKEND_ENTRIES: Record<string, string[]> = {\n backend: ['src/backend.ts', 'src/backend.tsx'],\n App: ['src/App.tsx', 'src/App.ts'],\n routes: ['src/routes.tsx', 'src/routes.ts'],\n};\n\n/**\n * Vite's default server conditions minus the `development|production` token.\n *\n * See the note at the `resolve` option below: dropping the token is what stops\n * a workspace package resolving to its TypeScript source.\n */\nconst SERVER_CONDITIONS = ['module', 'node'];\n\n/** Both spellings, because a backend may use either. */\nconst NODE_BUILTINS = [\n ...builtinModules,\n ...builtinModules.map((name) => `node:${name}`),\n];\n\nexport const resolveBackendEntries = (\n appRoot: string,\n exists: (p: string) => boolean = fs.existsSync\n): Record<string, string> => {\n const entries: Record<string, string> = {};\n for (const [name, candidates] of Object.entries(BACKEND_ENTRIES)) {\n const found = candidates.find((candidate) =>\n exists(path.join(appRoot, candidate))\n );\n if (found) {\n entries[name] = path.join(appRoot, found);\n }\n }\n return entries;\n};\n\n/**\n * Workspace package names to list as `ssr.external`.\n *\n * Vite will not externalise these on its own, and the reason is worth\n * recording because it is entirely non-obvious. `node_modules/@_linked/core`\n * is a symlink into `packages/core`; Vite resolves package data with\n * `preserveSymlinks: false`, so the resolved id realpaths *out* of\n * `node_modules`; and Vite refuses to externalise anything that does not look\n * like it lives there:\n *\n * if (!configuredAsExternal && !isInNodeModules(resolved.id)) return false;\n *\n * So every workspace package got compiled into `lib/`. That is not merely\n * wasteful — `linked.backend.storage.js` is loaded from the APP ROOT by a raw\n * Node `import()` and resolves `@_linked/core` through node_modules, so the\n * storage config configured one copy of `LinkedStorage` while the compiled\n * backend queried another. `LinkedStorage`'s routing state is a per-copy\n * static, so the app's single-instance guard refuses to boot. The old `tsc`\n * build never hit this: it emitted bare specifiers and Node converged on one\n * copy. Naming the packages here restores that.\n *\n * `configuredAsExternal` is the one thing that overrides the symlink rule, and\n * it is keyed on exact package names — no regexes.\n */\nexport const workspacePackagesToExternalize = async (\n appRoot: string,\n discover: (\n globs: string[],\n cwd: string\n ) => Promise<{name: string}[]> = async (globs, cwd) => {\n const {discoverWorkspaces} = await import('../vite-config.js');\n return discoverWorkspaces(globs, cwd);\n }\n): Promise<string[]> => {\n const workspaces = await discover([], appRoot);\n return [...new Set(workspaces.map((w) => w.name))].sort();\n};\n\n/**\n * A relative import from `lib/` into `packages/` means a workspace package was\n * compiled in after all. One into `node_modules/@_linked/` means an installed\n * framework package was: `lib/node_modules/@_linked/server-utils` is a second\n * `ShapeProvider` class, so the server's `instanceof` check rejects every\n * provider the app exports.\n *\n * Worth failing the build over rather than leaving to be discovered: the\n * output is perfectly valid JavaScript, and the symptom is the app refusing to\n * boot with a message about storage routing that points nowhere near here.\n */\nexport const findInlinedWorkspaceImports = (source: string): string[] => {\n // Both static `from \"…\"` and dynamic `import(\"…\")`: a lazily imported page\n // can drag a workspace package in on its own, and only the second form\n // appears in the output for it.\n const matches = source.matchAll(\n /(?:from|import)\\s*\\(?\\s*[\"'](\\.[^\"']*\\/(?:packages|node_modules\\/@_linked)\\/[^\"']+)[\"']/g\n );\n return [...new Set([...matches].map((m) => m[1]))].sort();\n};\n\nexport const assertNoInlinedWorkspaces = async (\n appRoot: string,\n readFile: (p: string) => Promise<string> = (p) => fs.readFile(p, 'utf8')\n): Promise<void> => {\n // Every entry, not just the backend: `App.js` and `routes.js` reach code the\n // backend never imports, so a package can be inlined through either of them.\n const inlined = new Set<string>();\n for (const name of Object.keys(BACKEND_ENTRIES)) {\n const entryPath = path.join(appRoot, 'lib', `${name}.js`);\n if (!fs.existsSync(entryPath)) continue;\n for (const found of findInlinedWorkspaceImports(await readFile(entryPath))) {\n inlined.add(found);\n }\n }\n if (inlined.size === 0) return;\n\n const named = [...inlined].sort();\n throw new Error(\n 'The compiled backend inlined workspace packages instead of importing ' +\n 'them: ' +\n named.slice(0, 3).join(', ') +\n (named.length > 3 ? `, and ${named.length - 3} more` : '') +\n '. Each one is a second copy of that package, and a second copy of ' +\n '@_linked/core splits LinkedStorage\\'s routing state from the one the ' +\n 'storage config configures. Check that the package is discoverable as a ' +\n 'workspace, so it can be named in ssr.external.'\n );\n};\n\n/**\n * Turn Rollup's unresolved-import error into one that names the actual cause.\n *\n * Externalizing a workspace package means the build now resolves it through\n * its published `exports` — its `lib/`, not its `src/`. A package whose `lib/`\n * is stale therefore fails here, on a file that plainly exists in source.\n * Rollup's own message (\"failed to resolve import X\") sends you looking at the\n * import, which is fine.\n */\nexport const explainUnresolvedWorkspaceImport = (\n message: string,\n externalWorkspaces: string[]\n): string | null => {\n const match = message.match(/failed to resolve import \"([^\"]+)\"/i);\n if (!match) return null;\n const specifier = match[1];\n const pkg = externalWorkspaces.find(\n (name) => specifier === name || specifier.startsWith(`${name}/`)\n );\n if (!pkg) return null;\n return (\n `${message}\\n\\n` +\n `\"${pkg}\" is a workspace package, so a release build resolves it through its ` +\n `published exports — its lib/, not its src/. If this file exists in ` +\n `${pkg}/src but not in its build output, that package's lib/ is stale. ` +\n `Build it first (\\`linked build\\` in the package, or \\`linked build-workspace\\`) ` +\n `and run build-app again.`\n );\n};\n\n/**\n * Strip the client build's `manualChunks` from the SSR output options.\n *\n * Rollup refuses `manualChunks` together with `preserveModules`, and passing\n * `undefined` in the inline config does not remove it — Vite's config merge\n * keeps the app's value. So it is cleared in the output hook instead, after\n * the merge. Chunk grouping is a client concern; the backend wants one output\n * file per source file.\n */\nconst dropManualChunks = () => ({\n name: 'linked:backend-no-manual-chunks',\n enforce: 'post' as const,\n outputOptions(options: Record<string, unknown>) {\n if (!options.manualChunks) return null;\n const {manualChunks: _dropped, ...rest} = options;\n return rest;\n },\n});\n\n/**\n * Compile the app's backend to `lib/`.\n *\n * This runs Vite in SSR mode against the app's own `vite.config`, which is the\n * point: `linked start` already loads `src/backend.ts`, `src/App.tsx` and\n * `src/routes.tsx` through `vite.ssrLoadModule`, so a production build that\n * used anything else was resolving the same source differently from dev. The\n * workspace resolver, the decorator transform and extensionless relative\n * imports all come along for free.\n *\n * `preserveModules` keeps `src/`'s file layout in `lib/`, so the entry paths\n * stay where `serve-app` and `startServer` look for them and lazily imported\n * pages keep their own files. `manualChunks` is cleared because Rollup refuses\n * to run it alongside `preserveModules` — and it is a client-side concern\n * anyway.\n *\n * Workspace packages are named as `ssr.external` explicitly; see\n * `workspacePackagesToExternalize` for why Vite does not do it on its own.\n * Node's built-ins are listed by hand for a related reason: Vite externalises\n * them for SSR only when it recognises the specifier, and a bare `crypto` —\n * which a backend written for Node may perfectly well import — resolved\n * instead to the abandoned `crypto` shim package sitting in node_modules, and\n * failed the build.\n *\n * `copyPublicDir` is off because `public/` is the client build's output, not\n * the backend's. Left on, it copied 38MB of already-built bundles into `lib/`.\n */\nexport const buildBackendWithVite = async (\n options: {appRoot?: string} = {},\n dependencies: {viteBuild?: (config: any) => Promise<unknown>} = {}\n): Promise<void> => {\n const appRoot = options.appRoot || process.cwd();\n const entries = resolveBackendEntries(appRoot);\n\n if (!entries.backend) {\n throw new Error(\n 'No backend entry found: expected src/backend.ts in ' + appRoot\n );\n }\n\n const viteBuild =\n dependencies.viteBuild ||\n (async (config: any) => {\n const {build} = await import('vite');\n return build(config);\n });\n\n const externalWorkspaces = await workspacePackagesToExternalize(appRoot);\n\n try {\n await viteBuild({\n root: appRoot,\n mode: 'production',\n isProduction: true,\n // The client build sets `base` to the release URL. The backend emits no\n // asset URLs of its own, so it must not inherit one.\n base: '/',\n // Never resolve a `development` export condition in a release build.\n //\n // The workspace-source convention is\n // \"development\": \"./src/*.ts\", \"import\": \"./lib/esm/*.js\"\n // and Vite expands its `development|production` token from NODE_ENV —\n // which during a release build is whatever the app's `.env` says,\n // routinely `development`. The package then resolves to TypeScript, which\n // cannot be externalised because Node could not load it, so it is\n // compiled in regardless of what `ssr.external` says.\n //\n // Dropping the token (rather than pinning it to `production`) leaves\n // `import` — which Vite always appends last — to win. Same treatment\n // `createViteConfig` already applies to a standalone install, for the\n // mirror-image reason.\n //\n // All three lists have to say it: `ssr.resolve.conditions` does not\n // inherit from `resolve.conditions` here, and `externalConditions`\n // governs the packages that end up external.\n resolve: {conditions: SERVER_CONDITIONS},\n ssr: {\n // Merged with the app's own ssr.external rather than replacing it.\n external: externalWorkspaces,\n resolve: {\n conditions: SERVER_CONDITIONS,\n externalConditions: SERVER_CONDITIONS,\n },\n },\n plugins: [dropManualChunks()],\n build: {\n ssr: true,\n outDir: 'lib',\n emptyOutDir: true,\n copyPublicDir: false,\n manifest: false,\n sourcemap: true,\n rollupOptions: {\n input: entries,\n external: NODE_BUILTINS,\n output: {\n format: 'es',\n preserveModules: true,\n preserveModulesRoot: path.join(appRoot, 'src'),\n entryFileNames: '[name].js',\n chunkFileNames: '[name].js',\n },\n },\n },\n });\n } catch (err) {\n const explained = explainUnresolvedWorkspaceImport(\n err instanceof Error ? err.message : String(err),\n externalWorkspaces\n );\n if (!explained) throw err;\n throw new Error(explained);\n }\n\n await assertNoInlinedWorkspaces(appRoot);\n};\n\n/**\n * Copy `src`'s CSS next to the compiled backend.\n *\n * The server reads stylesheets like `lib/css/theme.css` off disk by path, so\n * they have to exist as files whether or not any module imported them.\n */\nexport const copyBackendStylesheets = async (\n appRoot: string,\n listCssFiles: (dir: string) => Promise<string[]>\n): Promise<number> => {\n const sourceFolder = path.join(appRoot, 'src');\n const targetFolder = path.join(appRoot, 'lib');\n const cssFiles = await listCssFiles(sourceFolder);\n await Promise.all(\n cssFiles.map((file) => {\n const targetFile = file.replace(sourceFolder, targetFolder);\n fs.mkdirpSync(path.dirname(targetFile));\n return fs.copyFile(file, targetFile);\n })\n );\n return cssFiles.length;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"create-release-manifest.js","sourceRoot":"","sources":["../../../src/app-release/create-release-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-release-manifest.js","sourceRoot":"","sources":["../../../src/app-release/create-release-manifest.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from 'crypto';\nimport {execFileSync} from 'child_process';\nimport fs from 'fs';\nimport path from 'path';\nimport {\n joinObjectKey,\n normalizeReleasePath,\n resolveExistingPathWithinRoot,\n} from './paths.js';\nimport {resolveDeclaredStaticAssets} from './static-assets.js';\nimport type {\n AppBuildTarget,\n LinkedAppReleaseFile,\n LinkedAppReleaseManifest,\n} from './types.js';\n\ninterface ViteManifestEntry {\n file: string;\n css?: string[];\n assets?: string[];\n imports?: string[];\n dynamicImports?: string[];\n}\n\ntype ViteManifest = Record<string, ViteManifestEntry>;\n\nexport interface CreateReleaseManifestOptions {\n appRoot: string;\n environmentNames: string[];\n target: AppBuildTarget;\n /**\n * `accessURL` of the store this release will be published to. Omitted (or\n * null) for a Capacitor build, which produces a local, non-publishable\n * manifest and never touches a file store.\n */\n accessURL?: string | null;\n staticAssets?: string[];\n /** Base key releases are nested under. Defaults to `releases`. */\n releasePrefix?: string;\n builtAt?: string;\n sourceRevision?: string;\n /** Allow a revision derived from a working tree with uncommitted changes. */\n allowDirty?: boolean;\n /**\n * Public URL every asset of this release is served from — the release\n * prefix resolved against the store's `accessURL`, and the value the client\n * bundle was built with as Vite's `base`. Empty for a Capacitor build.\n */\n baseURL?: string;\n}\n\nconst MIME_TYPES: Record<string, string> = {\n '.css': 'text/css; charset=utf-8',\n '.gif': 'image/gif',\n '.html': 'text/html; charset=utf-8',\n '.ico': 'image/x-icon',\n '.jpeg': 'image/jpeg',\n '.jpg': 'image/jpeg',\n '.js': 'text/javascript; charset=utf-8',\n '.json': 'application/json; charset=utf-8',\n '.map': 'application/json; charset=utf-8',\n '.png': 'image/png',\n '.svg': 'image/svg+xml',\n '.webp': 'image/webp',\n '.woff': 'font/woff',\n '.woff2': 'font/woff2',\n};\n\nexport const DEFAULT_RELEASE_PREFIX = 'releases';\nexport const MANIFEST_FILE_NAME = 'linked-release.json';\nexport const MANIFEST_SOURCE_PATH = `public/bundles/${MANIFEST_FILE_NAME}`;\nexport const MANIFEST_CONTENT_TYPE = 'application/json; charset=utf-8';\n\n/**\n * Cache-Control rule, decided by where a file came from rather than by what it\n * is called.\n *\n * Files listed in the Vite manifest are content-hashed by construction — Vite\n * emitted the name, so the bytes behind that key can never change and the\n * object is immutable for a year. Everything else (declared static assets, the\n * release manifest) is revalidated after a minute, so a re-published release is\n * picked up quickly. Guessing \"is this hashed?\" from the filename was tried and\n * removed: `og-image-1200x630.png`, `sw-v20260101.js` and `icon-FacebookRound.svg`\n * all read as hashed, and a year of immutable caching on those cannot be undone\n * without renaming the file.\n */\nexport const IMMUTABLE_CACHE_CONTROL = 'public, max-age=31536000, immutable';\nexport const ENTRY_CACHE_CONTROL = 'public, max-age=60, must-revalidate';\n\n/** Where a release file came from; this is what decides its cache policy. */\nexport type ReleaseFileOrigin = 'vite-bundle' | 'static-asset';\n\nconst getContentType = (filePath: string): string =>\n MIME_TYPES[path.extname(filePath).toLowerCase()] || 'application/octet-stream';\n\nexport const getCacheControl = (origin: ReleaseFileOrigin): string =>\n origin === 'vite-bundle' ? IMMUTABLE_CACHE_CONTROL : ENTRY_CACHE_CONTROL;\n\n/** A revision has to be safe to embed in an object key and a URL. */\nconst SAFE_REVISION = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;\n\nconst runGit = (appRoot: string, args: string[]): string =>\n execFileSync('git', args, {\n cwd: appRoot,\n encoding: 'utf8',\n stdio: ['ignore', 'pipe', 'ignore'],\n });\n\nexport interface ResolveSourceRevisionOptions {\n appRoot: string;\n /** `--revision`, or a caller-supplied value. Used verbatim when given. */\n revision?: string;\n /** `--allow-dirty`: build from a dirty tree, tagging the revision `-dirty`. */\n allowDirty?: boolean;\n env?: NodeJS.ProcessEnv;\n}\n\n/**\n * Determine the revision that identifies this release.\n *\n * An explicit `--revision`, then `LINKED_RELEASE_REVISION`, then `GITHUB_SHA`\n * win over Git, so a release can be built from an exported tarball or a CI\n * checkout that is not a working repository. Falling back to `git rev-parse`\n * requires a clean tree: two builds of the same uncommitted work would\n * otherwise share a release ID and a prefix, silently overwriting each other\n * while files removed in between linger under the prefix.\n */\nexport const resolveSourceRevision = ({\n appRoot,\n revision,\n allowDirty,\n env = process.env,\n}: ResolveSourceRevisionOptions): string => {\n const explicit = (\n revision ||\n env.LINKED_RELEASE_REVISION ||\n env.GITHUB_SHA ||\n ''\n ).trim();\n if (explicit) {\n if (!SAFE_REVISION.test(explicit)) {\n throw new Error(\n `Invalid release revision \"${explicit}\". Use letters, digits, \".\", \"-\" or \"_\".`,\n );\n }\n return explicit;\n }\n\n let head: string;\n try {\n head = runGit(appRoot, ['rev-parse', '--short=12', 'HEAD']).trim();\n } catch {\n throw new Error(\n 'Cannot determine the Git revision for this release. Build from a Git checkout, ' +\n 'or pass --revision <sha> (or set LINKED_RELEASE_REVISION / GITHUB_SHA).',\n );\n }\n\n let dirty = false;\n try {\n dirty = runGit(appRoot, ['status', '--porcelain']).trim().length > 0;\n } catch {\n // `rev-parse` worked, so this is a repository; treat an unreadable status\n // as clean rather than blocking the build on a Git quirk.\n }\n if (!dirty) return head;\n if (!allowDirty) {\n throw new Error(\n `The working tree has uncommitted changes, so release ${head} would not identify ` +\n 'what was built: a second build of the same edits reuses the prefix and overwrites it. ' +\n 'Commit or stash the changes, pass --allow-dirty to publish as ' +\n `\"${head}-dirty\", or pass --revision <sha>.`,\n );\n }\n return `${head}-dirty`;\n};\n\nconst collectViteOutputPaths = (manifest: ViteManifest): string[] => {\n const files = new Set<string>();\n\n for (const [entryName, entry] of Object.entries(manifest)) {\n if (!entry || typeof entry.file !== 'string') {\n throw new Error(`Invalid Vite manifest entry: ${entryName}`);\n }\n\n files.add(joinObjectKey('public/bundles', entry.file));\n for (const relativePath of [...(entry.css || []), ...(entry.assets || [])]) {\n files.add(joinObjectKey('public/bundles', relativePath));\n }\n\n for (const importedEntry of [\n ...(entry.imports || []),\n ...(entry.dynamicImports || []),\n ]) {\n if (!manifest[importedEntry]) {\n throw new Error(\n `Vite manifest entry ${entryName} references missing import ${importedEntry}`,\n );\n }\n }\n }\n\n return [...files];\n};\n\n/**\n * Build the key prefix for one release. Every object of a release lives under\n * it, so publishing a new release cannot overwrite the previous one and a\n * rollback is a matter of pointing at the older prefix.\n */\nexport const buildReleasePrefix = (\n releaseId: string,\n basePrefix: string = DEFAULT_RELEASE_PREFIX,\n): string => joinObjectKey(basePrefix, releaseId);\n\nexport const releaseObjectKey = (\n releasePrefix: string,\n sourcePath: string,\n): string => joinObjectKey(releasePrefix, sourcePath);\n\n/** Directory `vite build` writes the client bundle to. See the README. */\nexport const VITE_OUTPUT_DIR = 'public/bundles';\n\n/**\n * Public URL the client bundle of a release is served from. Object keys are\n * `<releasePrefix>/public/bundles/…` under the store's `accessURL`, and this is\n * the value the build passes to Vite as `base`, so the root-absolute URLs the\n * bundle emits for its own chunks and assets resolve under the release prefix\n * without any server rewrite.\n */\nexport const releaseBaseURL = (\n accessURL: string,\n releasePrefix: string,\n): string =>\n `${releaseStaticAccessURL(accessURL, releasePrefix)}/${VITE_OUTPUT_DIR}/`;\n\n/**\n * The release's root URL: `accessURL` plus the release prefix, without the\n * bundle directory. `@_linked/server` builds the HTML entry tags as\n * `${STATIC_ACCESS_URL}/public/bundles/<file>`, so pointing `STATIC_ACCESS_URL`\n * at this value is what makes a running app serve one particular release —\n * a value to deploy, not server code to write or a rewrite rule to configure.\n */\nexport const releaseStaticAccessURL = (\n accessURL: string,\n releasePrefix: string,\n): string =>\n `${(accessURL || '').trim().replace(/\\/+$/, '')}/${releasePrefix}`;\n\nexport interface ReleaseIdentity {\n appName: string;\n appVersion: string;\n sourceRevision: string;\n releaseId: string;\n releasePrefix: string;\n}\n\n/**\n * Work out the release ID and prefix before anything is built. The client\n * bundle has to be built with the release prefix as its `base`, so the prefix\n * cannot wait until the manifest is written.\n */\nexport const resolveReleaseIdentity = (options: {\n appRoot: string;\n releasePrefix?: string;\n sourceRevision?: string;\n allowDirty?: boolean;\n env?: NodeJS.ProcessEnv;\n}): ReleaseIdentity => {\n const packageJson = JSON.parse(\n fs.readFileSync(path.join(options.appRoot, 'package.json'), 'utf8'),\n );\n const sourceRevision = resolveSourceRevision({\n appRoot: options.appRoot,\n revision: options.sourceRevision,\n allowDirty: options.allowDirty,\n env: options.env,\n });\n const releaseId = `${packageJson.version}-${sourceRevision}`;\n return {\n appName: packageJson.name,\n appVersion: packageJson.version,\n sourceRevision,\n releaseId,\n releasePrefix: buildReleasePrefix(releaseId, options.releasePrefix),\n };\n};\n\nconst describeReleaseFile = (\n appRoot: string,\n releasePrefix: string,\n sourcePath: string,\n origin: ReleaseFileOrigin,\n): LinkedAppReleaseFile => {\n const normalizedSourcePath = normalizeReleasePath(sourcePath, 'source path');\n const absolutePath = resolveExistingPathWithinRoot(appRoot, normalizedSourcePath);\n const content = fs.readFileSync(absolutePath);\n\n return {\n sourcePath: normalizedSourcePath,\n objectKey: releaseObjectKey(releasePrefix, normalizedSourcePath),\n sha256: crypto.createHash('sha256').update(content).digest('hex'),\n size: content.byteLength,\n contentType: getContentType(normalizedSourcePath),\n cacheControl: getCacheControl(origin),\n };\n};\n\nexport const createReleaseManifest = (\n options: CreateReleaseManifestOptions,\n): LinkedAppReleaseManifest => {\n const identity = resolveReleaseIdentity({\n appRoot: options.appRoot,\n releasePrefix: options.releasePrefix,\n sourceRevision: options.sourceRevision,\n allowDirty: options.allowDirty,\n });\n const {releasePrefix} = identity;\n\n // A Capacitor build ships its assets inside the native app, so it produces a\n // manifest for local inspection only and is never uploaded. That is why it\n // needs no destination and is marked unpublishable.\n const publishable = options.target === 'web';\n if (publishable && options.accessURL === undefined) {\n throw new Error(\n 'A web release manifest requires the accessURL of the store it will be published to',\n );\n }\n\n // Origin decides the cache policy: Vite named these files after their own\n // content, so they are immutable; declared static assets keep their name\n // across releases and must be revalidated.\n const origins = new Map<string, ReleaseFileOrigin>();\n if (options.target === 'web') {\n const viteManifestPath = path.join(\n options.appRoot,\n `${VITE_OUTPUT_DIR}/.vite/manifest.json`,\n );\n const viteManifest = JSON.parse(\n fs.readFileSync(viteManifestPath, 'utf8'),\n ) as ViteManifest;\n for (const sourcePath of collectViteOutputPaths(viteManifest)) {\n origins.set(sourcePath, 'vite-bundle');\n }\n }\n for (const sourcePath of resolveDeclaredStaticAssets(\n options.appRoot,\n options.staticAssets,\n )) {\n if (!origins.has(sourcePath)) origins.set(sourcePath, 'static-asset');\n }\n\n const files = [...origins.entries()]\n .map(([sourcePath, origin]) =>\n describeReleaseFile(options.appRoot, releasePrefix, sourcePath, origin),\n )\n .sort((a, b) => a.objectKey.localeCompare(b.objectKey));\n\n return {\n schemaVersion: 1,\n appName: identity.appName,\n appVersion: identity.appVersion,\n releaseId: identity.releaseId,\n target: options.target,\n publishable,\n builtAt: options.builtAt || new Date().toISOString(),\n environmentNames: [...options.environmentNames],\n destination: {\n accessURL: options.accessURL || '',\n releasePrefix,\n baseURL:\n options.baseURL ??\n (options.accessURL\n ? releaseBaseURL(options.accessURL, releasePrefix)\n : ''),\n },\n files,\n };\n};\n\nexport const serializeReleaseManifest = (\n manifest: LinkedAppReleaseManifest,\n): string => `${JSON.stringify(manifest, null, 2)}\\n`;\n\nexport const writeReleaseManifest = (\n appRoot: string,\n manifest: LinkedAppReleaseManifest,\n): string => {\n const outputPath = path.join(appRoot, MANIFEST_SOURCE_PATH);\n fs.writeFileSync(outputPath, serializeReleaseManifest(manifest));\n return outputPath;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/app-release/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAEhD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,KAAa,EACb,QAAgB,cAAc,EACtB,EAAE;IACV,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnD,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,sBAAsB,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxE,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,2CAA2C,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAG,QAAkB,EAAU,EAAE;IAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,OAAe,EACf,YAAoB,EACZ,EAAE;IACV,MAAM,UAAU,GAAG,oBAAoB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAClF,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAEtE,IACE,cAAc,KAAK,IAAI;QACvB,cAAc,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAC/B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,YAAY,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,aAAqB,EACrB,SAAiB,EACT,EAAE;IACV,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC1E,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEnE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,GAAG,iBAAiB,IAAI,mBAAmB,EAAE,CAAC;AACvD,CAAC,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/app-release/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAEhD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,KAAa,EACb,QAAgB,cAAc,EACtB,EAAE;IACV,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnD,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,sBAAsB,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxE,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,2CAA2C,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAG,QAAkB,EAAU,EAAE;IAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,OAAe,EACf,YAAoB,EACZ,EAAE;IACV,MAAM,UAAU,GAAG,oBAAoB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAClF,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAEtE,IACE,cAAc,KAAK,IAAI;QACvB,cAAc,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAC/B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,YAAY,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,aAAqB,EACrB,SAAiB,EACT,EAAE;IACV,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC1E,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEnE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,GAAG,iBAAiB,IAAI,mBAAmB,EAAE,CAAC;AACvD,CAAC,CAAC","sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nconst WINDOWS_ABSOLUTE_PATH = /^[a-zA-Z]:[\\\\/]/;\n\nexport const normalizeReleasePath = (\n value: string,\n label: string = 'release path',\n): string => {\n const slashPath = value.replace(/\\\\/g, '/').trim();\n\n if (!slashPath || slashPath === '.') {\n throw new Error(`${label} must not be empty`);\n }\n\n if (path.posix.isAbsolute(slashPath) || WINDOWS_ABSOLUTE_PATH.test(value)) {\n throw new Error(`${label} must be relative: ${value}`);\n }\n\n const normalized = path.posix.normalize(slashPath).replace(/^\\.\\//, '');\n if (normalized === '..' || normalized.startsWith('../')) {\n throw new Error(`${label} must stay inside the application root: ${value}`);\n }\n\n return normalized;\n};\n\nexport const joinObjectKey = (...segments: string[]): string => {\n if (segments.length === 0) {\n throw new Error('object key must not be empty');\n }\n\n return normalizeReleasePath(segments.join('/'), 'object key');\n};\n\nexport const resolveExistingPathWithinRoot = (\n appRoot: string,\n relativePath: string,\n): string => {\n const normalized = normalizeReleasePath(relativePath, 'source path');\n const rootRealPath = fs.realpathSync(appRoot);\n const candidateRealPath = fs.realpathSync(path.resolve(rootRealPath, normalized));\n const relativeToRoot = path.relative(rootRealPath, candidateRealPath);\n\n if (\n relativeToRoot === '..' ||\n relativeToRoot.startsWith(`..${path.sep}`) ||\n path.isAbsolute(relativeToRoot)\n ) {\n throw new Error(`source path escapes the application root: ${relativePath}`);\n }\n\n return candidateRealPath;\n};\n\nexport const joinStaticAssetUrl = (\n publicBaseUrl: string,\n assetPath: string,\n): string => {\n const normalizedAssetPath = normalizeReleasePath(assetPath, 'asset path');\n const normalizedBaseUrl = publicBaseUrl.trim().replace(/\\/+$/, '');\n\n if (!normalizedBaseUrl) {\n throw new Error('public base URL must not be empty');\n }\n\n return `${normalizedBaseUrl}/${normalizedAssetPath}`;\n};\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../../src/app-release/publisher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../../src/app-release/publisher.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from 'crypto';\nimport fs from 'fs';\nimport type {IFileStore} from '@_linked/core/interfaces/IFileStore';\nimport {normalizeAccessURL} from './app-assets-store.js';\nimport {\n MANIFEST_CONTENT_TYPE,\n MANIFEST_SOURCE_PATH,\n ENTRY_CACHE_CONTROL,\n releaseObjectKey,\n} from './create-release-manifest.js';\nimport {normalizeReleasePath, resolveExistingPathWithinRoot} from './paths.js';\nimport type {\n LinkedAppReleaseFile,\n LinkedAppReleaseManifest,\n PublishPlan,\n PublishResult,\n} from './types.js';\n\nexport interface PlanReleasePublishOptions {\n appRoot: string;\n manifestPath?: string;\n store: IFileStore;\n}\n\nexport interface LoadedReleaseManifest {\n absolutePath: string;\n manifest: LinkedAppReleaseManifest;\n}\n\nexport interface PublishReleaseOptions extends PlanReleasePublishOptions {\n yes?: boolean;\n onProgress?: (progress: PublishProgress) => void;\n onWarning?: (message: string) => void;\n}\n\nexport interface PublishProgress {\n completed: number;\n total: number;\n objectKey: string;\n}\n\n/**\n * Every object of a release must land under that release's own prefix.\n *\n * The manifest is a plain file on disk: a hand-edited or foreign one can name\n * any `objectKey` it likes, and nothing else catches it — the `accessURL` check\n * only proves the store is the right store, and the stored-location check only\n * proves the store kept the key it was handed. So the key is not merely checked\n * for shape, it is recomputed: it has to be exactly what this release prefix and\n * this source path produce, or a release could overwrite a *different* release.\n */\nconst validateObjectKey = (\n releasePrefix: string,\n file: LinkedAppReleaseFile,\n): void => {\n const sourcePath = normalizeReleasePath(\n String(file.sourcePath ?? ''),\n 'source path',\n );\n const objectKey = normalizeReleasePath(\n String(file.objectKey ?? ''),\n 'object key',\n );\n const expected = releaseObjectKey(releasePrefix, sourcePath);\n if (objectKey !== expected) {\n throw new Error(\n `Release manifest object key is not under the release prefix: ` +\n `\"${file.objectKey}\" (expected \"${expected}\"). Rebuild the release; ` +\n 'a manifest may only upload to its own prefix.',\n );\n }\n};\n\nexport const loadReleaseManifest = (\n appRoot: string,\n manifestPath = MANIFEST_SOURCE_PATH,\n): LoadedReleaseManifest => {\n const absolutePath = resolveExistingPathWithinRoot(appRoot, manifestPath);\n const manifest = JSON.parse(\n fs.readFileSync(absolutePath, 'utf8'),\n ) as LinkedAppReleaseManifest;\n\n if (manifest.schemaVersion !== 1) {\n throw new Error(\n `Unsupported release manifest schema: ${manifest.schemaVersion}`,\n );\n }\n if (manifest.target !== 'web' || manifest.publishable !== true) {\n throw new Error('Only publishable web release manifests may be uploaded');\n }\n if (!Array.isArray(manifest.files) || manifest.files.length === 0) {\n throw new Error('Release manifest contains no files');\n }\n if (!manifest.destination?.releasePrefix) {\n throw new Error('Release manifest has no release prefix');\n }\n const releasePrefix = normalizeReleasePath(\n manifest.destination.releasePrefix,\n 'release prefix',\n );\n for (const file of manifest.files) {\n validateObjectKey(releasePrefix, file);\n }\n\n return {absolutePath, manifest};\n};\n\n/**\n * The manifest records the `accessURL` of the store it was built for. If the\n * configured store now writes somewhere else, the release is not the one that\n * was built and publishing stops. Trailing slashes are not significant.\n */\nconst validateDestination = (\n manifest: LinkedAppReleaseManifest,\n store: IFileStore,\n) => {\n const expected = normalizeAccessURL(manifest.destination.accessURL);\n const actual = normalizeAccessURL(store.accessURL);\n if (expected !== actual) {\n throw new Error(\n `Release destination does not match the manifest (manifest was built for ${\n expected || '(empty)'\n }, the configured appAssets store writes to ${actual || '(empty)'})`,\n );\n }\n};\n\nconst hashBuffer = (content: Buffer): string =>\n crypto.createHash('sha256').update(content).digest('hex');\n\n/**\n * Re-hash the file on disk before uploading. This needs no support from the\n * store and is what actually guarantees the bytes match the manifest.\n */\nconst validateLocalFile = (\n appRoot: string,\n file: LinkedAppReleaseFile,\n): string => {\n // `resolveExistingPathWithinRoot` resolves symlinks, so a source path that\n // points out of the app root through one is refused here too.\n const absolutePath = resolveExistingPathWithinRoot(appRoot, file.sourcePath);\n const content = fs.readFileSync(absolutePath);\n if (content.byteLength !== file.size || hashBuffer(content) !== file.sha256) {\n throw new Error(`Release artifact changed after build: ${file.sourcePath}`);\n }\n return absolutePath;\n};\n\nexport const planReleasePublish = (\n options: PlanReleasePublishOptions,\n): PublishPlan => {\n const {absolutePath, manifest} = loadReleaseManifest(\n options.appRoot,\n options.manifestPath,\n );\n validateDestination(manifest, options.store);\n\n for (const file of manifest.files) {\n validateLocalFile(options.appRoot, file);\n }\n\n return {\n releaseId: manifest.releaseId,\n manifestPath: absolutePath,\n manifestObjectKey: releaseObjectKey(\n manifest.destination.releasePrefix,\n MANIFEST_SOURCE_PATH,\n ),\n destination: manifest.destination,\n files: manifest.files,\n totalBytes: manifest.files.reduce((total, file) => total + file.size, 0),\n };\n};\n\n/**\n * Verify one uploaded object against the hash in the manifest.\n *\n * `statFile` is optional on `IFileStore`, and a store that has it may still\n * report no `sha256` (S3 only returns one when the object carries a checksum).\n * Neither case is a failure: verification is skipped, the key is reported back\n * as unverified, and the caller warns once. An `etag` is deliberately not used\n * as a substitute — it is not a content hash.\n */\nconst verifyUpload = async (\n store: IFileStore,\n objectKey: string,\n expected: {size: number; sha256: string},\n): Promise<'verified' | 'unsupported' | 'no-hash'> => {\n if (typeof store.statFile !== 'function') return 'unsupported';\n\n const stat = await store.statFile(objectKey);\n if (!stat) {\n throw new Error(`Uploaded artifact is missing from the store: ${objectKey}`);\n }\n if (stat.size !== expected.size) {\n throw new Error(\n `Uploaded artifact size does not match the manifest: ${objectKey}`,\n );\n }\n if (!stat.sha256) return 'no-hash';\n if (stat.sha256 !== expected.sha256) {\n throw new Error(`Uploaded artifact verification failed: ${objectKey}`);\n }\n return 'verified';\n};\n\nexport const publishRelease = async (\n options: PublishReleaseOptions,\n): Promise<PublishResult> => {\n const plan = planReleasePublish(options);\n\n if (!options.yes) {\n return {\n releaseId: plan.releaseId,\n uploadedFiles: 0,\n uploadedBytes: 0,\n dryRun: true,\n unverified: [],\n };\n }\n\n const unverified: string[] = [];\n let warnedAboutVerification = false;\n const noteUnverified = (objectKey: string, reason: string) => {\n unverified.push(objectKey);\n if (warnedAboutVerification) return;\n warnedAboutVerification = true;\n options.onWarning?.(\n `Cannot verify uploads against a store hash (${reason}). Files are still ` +\n 'checked against the manifest before upload; the remote copy is not re-checked.',\n );\n };\n\n const upload = async (\n objectKey: string,\n content: Buffer,\n contentType: string,\n cacheControl: string,\n sha256: string,\n ) => {\n // `preventDuplicates: false` is explicit: a release key must be exactly the\n // key in the manifest. `LocalFileStore` otherwise appends a random suffix,\n // which would both break the URL and make verification meaningless.\n const storedURL = await options.store.saveFile(objectKey, content, {\n mimeType: contentType,\n cacheControl,\n preventDuplicates: false,\n });\n // A release key has to survive the round trip verbatim, or the published\n // URLs in the bundle point at nothing. Some stores sanitise or suffix the\n // path they are given; say so plainly instead of failing later with a\n // confusing \"missing from the store\".\n if (typeof storedURL === 'string' && !storedURL.endsWith(objectKey)) {\n throw new Error(\n `The file store did not store the release object under its own key. ` +\n `Expected a location ending in \"${objectKey}\", got \"${storedURL}\". ` +\n 'A release store must keep object keys verbatim.',\n );\n }\n const outcome = await verifyUpload(options.store, objectKey, {\n size: content.byteLength,\n sha256,\n });\n if (outcome === 'unsupported') {\n noteUnverified(objectKey, 'this store does not implement statFile');\n } else if (outcome === 'no-hash') {\n noteUnverified(objectKey, 'the store reports no sha256 for stored objects');\n }\n };\n\n const totalUploads = plan.files.length + 1;\n let completedUploads = 0;\n\n /**\n * A failure halfway through leaves a partial prefix behind, so the message\n * has to say which object failed, where it was going and how much is already\n * there — and that a re-run finishes the job, since keys are deterministic\n * and every object is overwritten with identical bytes.\n */\n const describeFailure = (\n error: unknown,\n what: string,\n objectKey: string,\n ): Error => {\n const cause = error instanceof Error ? error : new Error(String(error));\n const failure = new Error(\n `Release upload failed while uploading ${what} to \"${objectKey}\" ` +\n `(store ${options.store.accessURL || '(no accessURL)'}): ${cause.message}. ` +\n `${completedUploads} of ${totalUploads} objects were already uploaded under ` +\n `\"${plan.destination.releasePrefix}\"; the release manifest was not uploaded, so the ` +\n 'release is incomplete. Re-running publish-app resumes it — object keys are ' +\n 'deterministic and already-uploaded objects are rewritten with identical bytes.',\n );\n (failure as Error & {cause?: unknown}).cause = cause;\n failure.stack = cause.stack\n ? `${failure.message}\\nCaused by: ${cause.stack}`\n : failure.stack;\n return failure;\n };\n\n for (const file of plan.files) {\n const absolutePath = resolveExistingPathWithinRoot(\n options.appRoot,\n file.sourcePath,\n );\n try {\n await upload(\n file.objectKey,\n fs.readFileSync(absolutePath),\n file.contentType,\n file.cacheControl,\n file.sha256,\n );\n } catch (error) {\n throw describeFailure(error, file.sourcePath, file.objectKey);\n }\n completedUploads += 1;\n options.onProgress?.({\n completed: completedUploads,\n total: totalUploads,\n objectKey: file.objectKey,\n });\n }\n\n // The manifest goes last: its presence under the release prefix is what marks\n // the release as complete.\n const manifestBody = fs.readFileSync(plan.manifestPath);\n try {\n await upload(\n plan.manifestObjectKey,\n manifestBody,\n MANIFEST_CONTENT_TYPE,\n ENTRY_CACHE_CONTROL,\n hashBuffer(manifestBody),\n );\n } catch (error) {\n throw describeFailure(error, 'the release manifest', plan.manifestObjectKey);\n }\n completedUploads += 1;\n options.onProgress?.({\n completed: completedUploads,\n total: totalUploads,\n objectKey: plan.manifestObjectKey,\n });\n\n return {\n releaseId: plan.releaseId,\n uploadedFiles: totalUploads,\n uploadedBytes: plan.totalBytes + manifestBody.byteLength,\n dryRun: false,\n unverified,\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-build-target.js","sourceRoot":"","sources":["../../../src/app-release/resolve-build-target.ts"],"names":[],"mappings":"AAOA,4DAA4D;AAC5D,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAEtC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EACjC,MAAM,EACN,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,MACC,EAAE,EAAkB,EAAE;IACnD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,6BAA6B,MAAM,CAAC,MAAM,CAAC,mCAAmC,CAC/E,CAAC;IACJ,CAAC;IACD,MAAM,sBAAsB,GAC1B,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,iBAAiB,CAAC;IAE5D,8DAA8D;IAC9D,2EAA2E;IAC3E,IAAI,MAAM,KAAK,KAAK,IAAI,sBAAsB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;AACtD,CAAC,CAAC"}
1
+ {"version":3,"file":"resolve-build-target.js","sourceRoot":"","sources":["../../../src/app-release/resolve-build-target.ts"],"names":[],"mappings":"AAOA,4DAA4D;AAC5D,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAEtC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EACjC,MAAM,EACN,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,MACC,EAAE,EAAkB,EAAE;IACnD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,6BAA6B,MAAM,CAAC,MAAM,CAAC,mCAAmC,CAC/E,CAAC;IACJ,CAAC;IACD,MAAM,sBAAsB,GAC1B,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,iBAAiB,CAAC;IAE5D,8DAA8D;IAC9D,2EAA2E;IAC3E,IAAI,MAAM,KAAK,KAAK,IAAI,sBAAsB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;AACtD,CAAC,CAAC","sourcesContent":["import type {AppBuildTarget} from './types.js';\n\nexport interface ResolveBuildTargetOptions {\n target?: AppBuildTarget;\n appEnv?: string;\n}\n\n/** The only `APP_ENV` value that selects a native build. */\nconst CAPACITOR_APP_ENV = 'capacitor';\n\n/**\n * Resolve the app build target.\n *\n * `APP_ENV` selects the Capacitor target only when it literally says\n * `capacitor`. It used to be read as a boolean — any non-empty value meant\n * \"native\" — which quietly hijacked the far more common `APP_ENV=production`\n * into a near-empty, non-publishable manifest, and then made `--target web`\n * fail outright. Nothing else in this monorepo reads `APP_ENV`, so there is no\n * boolean contract left to preserve; an unrelated value is ignored and the\n * build defaults to web, exactly as it does with `APP_ENV` unset. Pass\n * `--target` to be explicit.\n */\nexport const resolveBuildTarget = ({\n target,\n appEnv = process.env.APP_ENV,\n}: ResolveBuildTargetOptions = {}): AppBuildTarget => {\n if (target !== undefined && target !== 'web' && target !== 'capacitor') {\n throw new Error(\n `Unknown app build target \"${String(target)}\". Expected \"web\" or \"capacitor\".`,\n );\n }\n const isCapacitorEnvironment =\n (appEnv || '').trim().toLowerCase() === CAPACITOR_APP_ENV;\n\n // An explicit web target cannot silently override an explicit\n // `APP_ENV=capacitor`, because that would make a native build publishable.\n if (target === 'web' && isCapacitorEnvironment) {\n throw new Error(\n 'Cannot build target \"web\" while APP_ENV=capacitor. Unset APP_ENV or use --target capacitor.',\n );\n }\n\n if (target) {\n return target;\n }\n\n return isCapacitorEnvironment ? 'capacitor' : 'web';\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"static-assets.js","sourceRoot":"","sources":["../../../src/app-release/static-assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAC,QAAQ,EAAC,MAAM,MAAM,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,OAAe,EACf,WAAqB,EAAE,EACb,EAAE;IACZ,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,kCAAkC,WAAW,uBAAuB,OAAO,EAAE,CAC9E,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAEnD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QAChF,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,kDAAkD,OAAO,EAAE,CAC5D,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,iBAAiB,EAAE;YAC9C,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,KAAK;YACV,MAAM,EAAE,KAAK;SACd,CAAC,EAAE,CAAC;YACH,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;YACzE,MAAM,aAAa,GAAG,6BAA6B,CACjD,OAAO,EACP,eAAe,CAChB,CAAC;YACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YACtE,IACE,CAAC,iBAAiB,CAAC,eAAe,CAAC;gBACnC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;gBACjC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EACjC,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,mBAAmB,OAAO,4BAA4B,CAC7E,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,cAAsB,EAAW,EAAE,CAC5D,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,UAAkB,EAClB,sBAA8B,EACtB,EAAE;IACV,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC;QAC1D,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;QACnD,CAAC,CAAC,sBAAsB,CAAC;IAC3B,OAAO,oBAAoB,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;AACjE,CAAC,CAAC"}
1
+ {"version":3,"file":"static-assets.js","sourceRoot":"","sources":["../../../src/app-release/static-assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAC,QAAQ,EAAC,MAAM,MAAM,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,OAAe,EACf,WAAqB,EAAE,EACb,EAAE;IACZ,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,kCAAkC,WAAW,uBAAuB,OAAO,EAAE,CAC9E,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAEnD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QAChF,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,kDAAkD,OAAO,EAAE,CAC5D,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,iBAAiB,EAAE;YAC9C,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,KAAK;YACV,MAAM,EAAE,KAAK;SACd,CAAC,EAAE,CAAC;YACH,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;YACzE,MAAM,aAAa,GAAG,6BAA6B,CACjD,OAAO,EACP,eAAe,CAChB,CAAC;YACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YACtE,IACE,CAAC,iBAAiB,CAAC,eAAe,CAAC;gBACnC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;gBACjC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EACjC,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,mBAAmB,OAAO,4BAA4B,CAC7E,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,cAAsB,EAAW,EAAE,CAC5D,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,UAAkB,EAClB,sBAA8B,EACtB,EAAE;IACV,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC;QAC1D,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;QACnD,CAAC,CAAC,sBAAsB,CAAC;IAC3B,OAAO,oBAAoB,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;AACjE,CAAC,CAAC","sourcesContent":["import fs from 'fs';\nimport {globSync} from 'glob';\nimport path from 'path';\nimport {\n normalizeReleasePath,\n resolveExistingPathWithinRoot,\n} from './paths.js';\n\nexport const PUBLIC_ROOT = 'public';\n\n/**\n * Resolve `publish.staticAssets` globs to files under the app's `public/`.\n *\n * Both the pattern and every match are checked. Checking only the pattern is\n * not enough: brace expansion escapes it, and `public/{,../}secret/**` expands\n * to `public/../secret/**`, which glob returns as plain `secret/…` paths — a\n * prefix test on the pattern sees `public/` and lets them through. So each\n * match is resolved (following symlinks) and has to land inside `public/`.\n */\nexport const resolveDeclaredStaticAssets = (\n appRoot: string,\n patterns: string[] = [],\n): string[] => {\n const matches = new Set<string>();\n if (patterns.length === 0) return [];\n const publicPath = path.join(appRoot, PUBLIC_ROOT);\n if (!fs.existsSync(publicPath)) {\n throw new Error(\n `static assets are declared but ${PUBLIC_ROOT}/ does not exist in ${appRoot}`,\n );\n }\n const publicRealPath = fs.realpathSync(publicPath);\n\n for (const pattern of patterns) {\n const normalizedPattern = normalizeReleasePath(pattern, 'static asset pattern');\n if (!isUnderPublicRoot(normalizedPattern)) {\n throw new Error(\n `static asset pattern must stay inside public/: ${pattern}`,\n );\n }\n\n for (const match of globSync(normalizedPattern, {\n cwd: appRoot,\n nodir: true,\n dot: false,\n follow: false,\n })) {\n const normalizedMatch = normalizeReleasePath(match, 'static asset path');\n const absoluteMatch = resolveExistingPathWithinRoot(\n appRoot,\n normalizedMatch,\n );\n const relativeToPublic = path.relative(publicRealPath, absoluteMatch);\n if (\n !isUnderPublicRoot(normalizedMatch) ||\n relativeToPublic.startsWith('..') ||\n path.isAbsolute(relativeToPublic)\n ) {\n throw new Error(\n `static asset \"${match}\" (from pattern ${pattern}) resolves outside public/`,\n );\n }\n matches.add(normalizedMatch);\n }\n }\n\n return [...matches].sort((a, b) => a.localeCompare(b));\n};\n\nconst isUnderPublicRoot = (normalizedPath: string): boolean =>\n normalizedPath.startsWith(`${PUBLIC_ROOT}/`);\n\nexport const relativePublicAssetPath = (\n publicRoot: string,\n absoluteOrRelativePath: string,\n): string => {\n const relativePath = path.isAbsolute(absoluteOrRelativePath)\n ? path.relative(publicRoot, absoluteOrRelativePath)\n : absoluteOrRelativePath;\n return normalizeReleasePath(relativePath, 'public asset path');\n};\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/app-release/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/app-release/types.ts"],"names":[],"mappings":"","sourcesContent":["export type AppBuildTarget = 'web' | 'capacitor';\n\nexport interface BuildAppOptions {\n environments: string[];\n target?: AppBuildTarget;\n}\n\nexport interface AppPublishConfig {\n /** Extra files under `public/` to ship besides the Vite bundle output. */\n staticAssets?: string[];\n /**\n * Base key every release is nested under. The release prefix becomes\n * `<releasePrefix>/<releaseId>`. Defaults to `releases`.\n */\n releasePrefix?: string;\n}\n\n/**\n * Where a release was built for. `accessURL` is the base URL of the file store\n * that produced the manifest (see `IFileStore.accessURL`); publishing refuses\n * to run against a store whose `accessURL` no longer matches, so a staging\n * build can never be pushed to production by swapping config.\n */\nexport interface LinkedAppReleaseDestination {\n accessURL: string;\n /** Key prefix every object of this release lives under. */\n releasePrefix: string;\n /**\n * Public URL the release's client bundle is served from — `accessURL`,\n * the release prefix and the Vite output directory joined. The build passes\n * it to Vite as `base`, so the bundle's own asset URLs resolve under the\n * release prefix with no server rewrite. Empty for a Capacitor build.\n */\n baseURL: string;\n}\n\nexport interface LinkedAppReleaseFile {\n /** Path relative to the app root, used to read the file back at publish time. */\n sourcePath: string;\n /** Key in the file store, always under the release prefix. */\n objectKey: string;\n sha256: string;\n size: number;\n contentType: string;\n cacheControl: string;\n}\n\nexport interface LinkedAppReleaseManifest {\n schemaVersion: 1;\n appName: string;\n appVersion: string;\n releaseId: string;\n target: AppBuildTarget;\n publishable: boolean;\n builtAt: string;\n environmentNames: string[];\n destination: LinkedAppReleaseDestination;\n files: LinkedAppReleaseFile[];\n}\n\nexport interface PublishPlan {\n releaseId: string;\n manifestPath: string;\n manifestObjectKey: string;\n destination: LinkedAppReleaseDestination;\n files: LinkedAppReleaseFile[];\n totalBytes: number;\n}\n\nexport interface PublishResult {\n releaseId: string;\n uploadedFiles: number;\n uploadedBytes: number;\n dryRun: boolean;\n /** Object keys whose upload could not be verified against a store hash. */\n unverified: string[];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"cli-methods.d.ts","sourceRoot":"","sources":["../../src/cli-methods.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-methods.d.ts","sourceRoot":"","sources":["../../src/cli-methods.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ import { renameShippedDotfiles } from './utils/shippedDotfiles.js';
19
19
  import { planPackageSetup } from './utils/packageSetup.js';
20
20
  import { detectPackageManager, execBinCommand, runScriptCommand, } from './utils/packageManager.js';
21
21
  import { rewriteExtensionlessImports } from './utils/esmSpecifiers.js';
22
+ import { checkShapeNames } from './utils/shapeNames.js';
22
23
  import { spawn as spawnChild } from 'child_process';
23
24
  import { findNearestPackageJson } from 'find-nearest-package-json';
24
25
  import { statSync } from 'fs';
@@ -2267,6 +2268,11 @@ export const planBuildSteps = (pkgJson, packagePath) => [
2267
2268
  return changed > 0 ? { info: `rewrote ${changed} file(s)` } : true;
2268
2269
  }),
2269
2270
  },
2271
+ {
2272
+ // Reads the emitted lib/esm, so it runs after everything that writes it.
2273
+ name: 'Checking shape names',
2274
+ apply: () => checkShapeNames(packagePath),
2275
+ },
2270
2276
  {
2271
2277
  name: 'Checking dependencies',
2272
2278
  apply: () => depCheck(packagePath),