@_linked/cli 1.26.0 → 1.28.0

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 (52) hide show
  1. package/CHANGELOG.md +50 -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.js.map +1 -1
  5. package/lib/esm/app-release/create-release-manifest.js.map +1 -1
  6. package/lib/esm/app-release/paths.js.map +1 -1
  7. package/lib/esm/app-release/publisher.js.map +1 -1
  8. package/lib/esm/app-release/resolve-build-target.js.map +1 -1
  9. package/lib/esm/app-release/static-assets.js.map +1 -1
  10. package/lib/esm/app-release/types.js.map +1 -1
  11. package/lib/esm/cli-methods.d.ts +2 -2
  12. package/lib/esm/cli-methods.d.ts.map +1 -1
  13. package/lib/esm/cli-methods.js +30 -70
  14. package/lib/esm/cli-methods.js.map +1 -1
  15. package/lib/esm/cli.js +1 -1
  16. package/lib/esm/cli.js.map +1 -1
  17. package/lib/esm/commands/build-app.js.map +1 -1
  18. package/lib/esm/commands/build-package.js.map +1 -1
  19. package/lib/esm/commands/publish-app.js.map +1 -1
  20. package/lib/esm/commands/safe-yarn.js.map +1 -1
  21. package/lib/esm/commands/serve-app.js.map +1 -1
  22. package/lib/esm/commands/setup-publish.js.map +1 -1
  23. package/lib/esm/commands/start.js.map +1 -1
  24. package/lib/esm/defineConfig.js.map +1 -1
  25. package/lib/esm/index.js.map +1 -1
  26. package/lib/esm/interfaces.js.map +1 -1
  27. package/lib/esm/launch.js.map +1 -1
  28. package/lib/esm/lifecycle.d.ts +76 -0
  29. package/lib/esm/lifecycle.d.ts.map +1 -1
  30. package/lib/esm/lifecycle.js +189 -8
  31. package/lib/esm/lifecycle.js.map +1 -1
  32. package/lib/esm/loaders/css-loader.mjs.map +1 -1
  33. package/lib/esm/loaders/ts-loader.mjs.map +1 -1
  34. package/lib/esm/metadata.js.map +1 -1
  35. package/lib/esm/package-manifest.js.map +1 -1
  36. package/lib/esm/plugins/lincd-tailwind-sources.js.map +1 -1
  37. package/lib/esm/tailwind.config.js.map +1 -1
  38. package/lib/esm/utils/esmSpecifiers.js.map +1 -1
  39. package/lib/esm/utils/packageManager.js.map +1 -1
  40. package/lib/esm/utils/packageSetup.js.map +1 -1
  41. package/lib/esm/utils/shapeNames.d.ts +26 -0
  42. package/lib/esm/utils/shapeNames.d.ts.map +1 -0
  43. package/lib/esm/utils/shapeNames.js +81 -0
  44. package/lib/esm/utils/shapeNames.js.map +1 -0
  45. package/lib/esm/utils/shippedDotfiles.js.map +1 -1
  46. package/lib/esm/utils.js.map +1 -1
  47. package/lib/esm/vite-config.d.ts +10 -1
  48. package/lib/esm/vite-config.d.ts.map +1 -1
  49. package/lib/esm/vite-config.js +62 -31
  50. package/lib/esm/vite-config.js.map +1 -1
  51. package/lib/esm/workspace-globs.js.map +1 -1
  52. package/package.json +1 -1
@@ -0,0 +1,26 @@
1
+ export interface ExposedShape {
2
+ file: string;
3
+ className: string;
4
+ }
5
+ /**
6
+ * Shapes in one compiled module whose identity would change if a bundler
7
+ * renamed their class.
8
+ *
9
+ * A shape's IRI is built from its class name unless `@linkedShape({name})`
10
+ * gives one. `keepNames` in Vite's own TypeScript transform protects source
11
+ * files, but published `lib/` JavaScript never goes through that transform —
12
+ * only through the define pass above. So a compiled shape is exposed exactly
13
+ * when it has no explicit name and its module contains a trigger. This is how
14
+ * `@_linked/server`'s `LinkedServer` and `LincdAPI` came to register as
15
+ * `LinkedServer2` / `LincdAPI2`.
16
+ */
17
+ export declare const findRenameableShapes: (source: string, file?: string) => ExposedShape[];
18
+ /**
19
+ * Build step: warn about every exposed shape in a package's compiled ESM.
20
+ *
21
+ * A warning, not a failure: it is only a hazard when a consumer's bundler
22
+ * actually rewrites the module, and naming the shape is a change to the
23
+ * package's source that its owner has to make.
24
+ */
25
+ export declare const checkShapeNames: (packagePath: string) => Promise<true | string>;
26
+ //# sourceMappingURL=shapeNames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapeNames.d.ts","sourceRoot":"","sources":["../../../src/utils/shapeNames.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,aAAS,KACR,YAAY,EASd,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC1B,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,GAAG,MAAM,CA2BvB,CAAC"}
@@ -0,0 +1,81 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import fs from 'fs';
11
+ import path from 'path';
12
+ /**
13
+ * Text that makes Vite run an extra `esbuild.transform` over a compiled module.
14
+ *
15
+ * Vite's `vite:define` plugin transforms any module containing a `define` key
16
+ * (`process.env` and `import.meta.env` / `import.meta.hot` are its own keys in
17
+ * a client build), and in dev it rewrites `process.env.NODE_ENV` in client
18
+ * modules the same way. That pass does not set `keepNames`, and esbuild
19
+ * renames the inner binding of the class expression tsc emits for a decorated
20
+ * class: `let Foo = class Foo` becomes `class Foo2`.
21
+ */
22
+ const RENAME_TRIGGER = /process\.env|import\.meta\.(?:env|hot)/;
23
+ /** `Foo = __decorate([ …decorators… ], Foo)`, as tsc emits it. */
24
+ const DECORATED = /\b([A-Za-z_$][\w$]*) = __decorate\(\[([\s\S]*?)\], \1\)/g;
25
+ /**
26
+ * Shapes in one compiled module whose identity would change if a bundler
27
+ * renamed their class.
28
+ *
29
+ * A shape's IRI is built from its class name unless `@linkedShape({name})`
30
+ * gives one. `keepNames` in Vite's own TypeScript transform protects source
31
+ * files, but published `lib/` JavaScript never goes through that transform —
32
+ * only through the define pass above. So a compiled shape is exposed exactly
33
+ * when it has no explicit name and its module contains a trigger. This is how
34
+ * `@_linked/server`'s `LinkedServer` and `LincdAPI` came to register as
35
+ * `LinkedServer2` / `LincdAPI2`.
36
+ */
37
+ export const findRenameableShapes = (source, file = '') => {
38
+ if (!RENAME_TRIGGER.test(source))
39
+ return [];
40
+ const found = [];
41
+ for (const [, className, decorators] of source.matchAll(DECORATED)) {
42
+ if (!/\blinkedShape\b/.test(decorators))
43
+ continue;
44
+ if (/\blinkedShape\(\s*\{[\s\S]*?\bname\s*:/.test(decorators))
45
+ continue;
46
+ found.push({ file, className });
47
+ }
48
+ return found;
49
+ };
50
+ /**
51
+ * Build step: warn about every exposed shape in a package's compiled ESM.
52
+ *
53
+ * A warning, not a failure: it is only a hazard when a consumer's bundler
54
+ * actually rewrites the module, and naming the shape is a change to the
55
+ * package's source that its owner has to make.
56
+ */
57
+ export const checkShapeNames = (packagePath) => __awaiter(void 0, void 0, void 0, function* () {
58
+ const libDir = path.join(packagePath, 'lib', 'esm');
59
+ if (!fs.existsSync(libDir))
60
+ return true;
61
+ const exposed = [];
62
+ const walk = (dir) => {
63
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
64
+ const full = path.join(dir, entry.name);
65
+ if (entry.isDirectory())
66
+ walk(full);
67
+ else if (entry.name.endsWith('.js')) {
68
+ exposed.push(...findRenameableShapes(fs.readFileSync(full, 'utf8'), path.relative(libDir, full)));
69
+ }
70
+ }
71
+ };
72
+ walk(libDir);
73
+ if (exposed.length === 0)
74
+ return true;
75
+ const listed = exposed.map((s) => `${s.className} (${s.file})`).join(', ');
76
+ return (`${exposed.length} shape(s) take their identity from a class name that a ` +
77
+ `consumer's bundler may rename, because the module also reads process.env or ` +
78
+ `import.meta.env: ${listed}. Give each an explicit name: ` +
79
+ `@linkedShape({name: '<ClassName>'}).`);
80
+ });
81
+ //# sourceMappingURL=shapeNames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapeNames.js","sourceRoot":"","sources":["../../../src/utils/shapeNames.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;;;;;GASG;AACH,MAAM,cAAc,GAAG,wCAAwC,CAAC;AAEhE,kEAAkE;AAClE,MAAM,SAAS,GAAG,0DAA0D,CAAC;AAO7E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAc,EACd,IAAI,GAAG,EAAE,EACO,EAAE;IAClB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,SAAS;QAClD,IAAI,wCAAwC,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,SAAS;QACxE,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,WAAmB,EACK,EAAE;IAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;QAC3B,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,IAAI,CACV,GAAG,oBAAoB,CACrB,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAC5B,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,CAAC;IACb,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,OAAO,CACL,GAAG,OAAO,CAAC,MAAM,yDAAyD;QAC1E,8EAA8E;QAC9E,oBAAoB,MAAM,gCAAgC;QAC1D,sCAAsC,CACvC,CAAC;AACJ,CAAC,CAAA,CAAC","sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\n/**\n * Text that makes Vite run an extra `esbuild.transform` over a compiled module.\n *\n * Vite's `vite:define` plugin transforms any module containing a `define` key\n * (`process.env` and `import.meta.env` / `import.meta.hot` are its own keys in\n * a client build), and in dev it rewrites `process.env.NODE_ENV` in client\n * modules the same way. That pass does not set `keepNames`, and esbuild\n * renames the inner binding of the class expression tsc emits for a decorated\n * class: `let Foo = class Foo` becomes `class Foo2`.\n */\nconst RENAME_TRIGGER = /process\\.env|import\\.meta\\.(?:env|hot)/;\n\n/** `Foo = __decorate([ …decorators… ], Foo)`, as tsc emits it. */\nconst DECORATED = /\\b([A-Za-z_$][\\w$]*) = __decorate\\(\\[([\\s\\S]*?)\\], \\1\\)/g;\n\nexport interface ExposedShape {\n file: string;\n className: string;\n}\n\n/**\n * Shapes in one compiled module whose identity would change if a bundler\n * renamed their class.\n *\n * A shape's IRI is built from its class name unless `@linkedShape({name})`\n * gives one. `keepNames` in Vite's own TypeScript transform protects source\n * files, but published `lib/` JavaScript never goes through that transform —\n * only through the define pass above. So a compiled shape is exposed exactly\n * when it has no explicit name and its module contains a trigger. This is how\n * `@_linked/server`'s `LinkedServer` and `LincdAPI` came to register as\n * `LinkedServer2` / `LincdAPI2`.\n */\nexport const findRenameableShapes = (\n source: string,\n file = '',\n): ExposedShape[] => {\n if (!RENAME_TRIGGER.test(source)) return [];\n const found: ExposedShape[] = [];\n for (const [, className, decorators] of source.matchAll(DECORATED)) {\n if (!/\\blinkedShape\\b/.test(decorators)) continue;\n if (/\\blinkedShape\\(\\s*\\{[\\s\\S]*?\\bname\\s*:/.test(decorators)) continue;\n found.push({file, className});\n }\n return found;\n};\n\n/**\n * Build step: warn about every exposed shape in a package's compiled ESM.\n *\n * A warning, not a failure: it is only a hazard when a consumer's bundler\n * actually rewrites the module, and naming the shape is a change to the\n * package's source that its owner has to make.\n */\nexport const checkShapeNames = async (\n packagePath: string,\n): Promise<true | string> => {\n const libDir = path.join(packagePath, 'lib', 'esm');\n if (!fs.existsSync(libDir)) return true;\n const exposed: ExposedShape[] = [];\n const walk = (dir: string) => {\n for (const entry of fs.readdirSync(dir, {withFileTypes: true})) {\n const full = path.join(dir, entry.name);\n if (entry.isDirectory()) walk(full);\n else if (entry.name.endsWith('.js')) {\n exposed.push(\n ...findRenameableShapes(\n fs.readFileSync(full, 'utf8'),\n path.relative(libDir, full),\n ),\n );\n }\n }\n };\n walk(libDir);\n if (exposed.length === 0) return true;\n const listed = exposed.map((s) => `${s.className} (${s.file})`).join(', ');\n return (\n `${exposed.length} shape(s) take their identity from a class name that a ` +\n `consumer's bundler may rename, because the module also reads process.env or ` +\n `import.meta.env: ${listed}. Give each an explicit name: ` +\n `@linkedShape({name: '<ClassName>'}).`\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"shippedDotfiles.js","sourceRoot":"","sources":["../../../src/utils/shippedDotfiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,gBAAgB,GAA2B;IAC/C,oBAAoB,EAAE,YAAY;IAClC,oBAAoB,EAAE,YAAY;IAClC,sBAAsB,EAAE,cAAc;CACvC,CAAC;AAEF,+EAA+E;AAC/E,0EAA0E;AAC1E,+BAA+B;AAC/B,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;gBAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"shippedDotfiles.js","sourceRoot":"","sources":["../../../src/utils/shippedDotfiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,gBAAgB,GAA2B;IAC/C,oBAAoB,EAAE,YAAY;IAClC,oBAAoB,EAAE,YAAY;IAClC,sBAAsB,EAAE,cAAc;CACvC,CAAC;AAEF,+EAA+E;AAC/E,0EAA0E;AAC1E,+BAA+B;AAC/B,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;gBAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nconst SHIPPED_DOTFILES: Record<string, string> = {\n 'gitignore.template': '.gitignore',\n 'npmignore.template': '.npmignore',\n 'env.example.template': '.env.example',\n};\n\n// npm strips .gitignore files and honours nested .npmignore files when packing\n// the CLI, so templates ship dotfiles under neutral names and scaffolding\n// restores them, at any depth.\nexport function renameShippedDotfiles(folder: string): void {\n for (const entry of fs.readdirSync(folder, {withFileTypes: true})) {\n const full = path.join(folder, entry.name);\n if (entry.isDirectory()) {\n if (entry.name !== 'node_modules') renameShippedDotfiles(full);\n } else if (SHIPPED_DOTFILES[entry.name]) {\n fs.renameSync(full, path.join(folder, SHIPPED_DOTFILES[entry.name]));\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport {exec, ExecOptions} from 'child_process';\nimport * as fs from 'fs';\nimport {builtinModules} from 'module';\nimport * as path from 'path';\nimport ts from 'typescript';\nimport type {PackageDetails} from './interfaces.js';\n\nimport * as crypto from 'crypto';\nimport {findNearestPackageJsonSync} from 'find-nearest-package-json';\nimport * as glob from 'glob';\n\nvar gruntConfig;\n\n// Credit: https://gist.github.com/tinovyatkin/727ddbf7e7e10831a1eca9e4ff2fc32e\nconst tsHost = ts.createCompilerHost(\n {\n allowJs: true,\n noEmit: true,\n isolatedModules: true,\n resolveJsonModule: false,\n moduleResolution: ts.ModuleResolutionKind.Classic, // we don't want node_modules\n incremental: true,\n noLib: true,\n noResolve: true,\n },\n true,\n);\n\nexport var getFileImports = async function (filePath) {\n try {\n const importing: string[] = [];\n\n const add = (literal: ts.Node) => {\n const moduleName = literal.getText().replace(/['\"`]/g, '');\n if (\n !moduleName.startsWith('node:') &&\n !builtinModules.includes(moduleName)\n ) {\n importing.push(moduleName);\n }\n };\n // Every form that names a module: `import ... from 'x'`, `import 'x'`,\n // `export ... from 'x'`, `import('x')` (value and type position) and\n // `import x = require('x')`. Children are always visited, so specifiers\n // nested inside functions or a `declare module` body are found too.\n const delintNode = (node: ts.Node) => {\n if (\n (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) &&\n node.moduleSpecifier &&\n ts.isStringLiteralLike(node.moduleSpecifier)\n ) {\n add(node.moduleSpecifier);\n } else if (\n ts.isCallExpression(node) &&\n node.expression.kind === ts.SyntaxKind.ImportKeyword &&\n node.arguments.length >= 1 &&\n ts.isStringLiteralLike(node.arguments[0])\n ) {\n // `import('x')` with a literal argument. A computed specifier cannot be\n // checked statically and is skipped.\n add(node.arguments[0]);\n } else if (\n // `type A = import('x').B`, and the same inside `typeof import('x')`.\n ts.isImportTypeNode(node) &&\n ts.isLiteralTypeNode(node.argument) &&\n ts.isStringLiteral(node.argument.literal)\n ) {\n add(node.argument.literal);\n } else if (\n // `import x = require('x')`.\n ts.isExternalModuleReference(node) &&\n ts.isStringLiteralLike(node.expression)\n ) {\n add(node.expression);\n }\n ts.forEachChild(node, delintNode);\n };\n const sourceFile = tsHost.getSourceFile(\n filePath,\n ts.ScriptTarget.Latest,\n (msg) => {\n throw new Error(`Failed to parse ${filePath}: ${msg}`);\n },\n );\n //check if its a directory, then we wanr that we can't parse it\n let stat = fs.lstatSync(filePath);\n if (stat.isDirectory()) {\n return importing;\n }\n\n if (!sourceFile) {\n console.warn(`Failed to find file ${filePath}`);\n return importing;\n }\n delintNode(sourceFile);\n return importing;\n } catch (err) {\n console.warn(`Error parsing file ${filePath}: ${err}`);\n return [];\n }\n};\n\n// The package name part of a bare specifier: '@scope/name' for a scoped\n// package, the first segment otherwise. Returns null for anything that is not a\n// bare specifier (relative and absolute paths). The 'node:' case is redundant\n// for callers that use getFileImports (which drops builtins already), and is\n// kept so the helper is correct standalone.\nvar barePackageName = function (importPath: string): string | null {\n if (\n importPath.startsWith('.') ||\n importPath.startsWith('/') ||\n importPath.startsWith('node:')\n ) {\n return null;\n }\n const segments = importPath.split('/');\n const name = importPath.startsWith('@')\n ? segments.slice(0, 2).join('/')\n : segments[0];\n return name || null;\n};\n\nvar isLinkedPackageName = function (name: string) {\n // The current '@_linked/*' scope, and the legacy 'lincd'-prefixed names\n // ('lincd', 'lincd-foo', ...).\n return name.startsWith('@_linked/') || /^lincd(-|$)/.test(name);\n};\n\n/**\n * True when the import reaches into ANOTHER Linked package's internals — a\n * '/src/' or '/lib/' path inside '@_linked/<pkg>' or a 'lincd'-prefixed package\n * — instead of going through that package's public subpath. Such an import\n * breaks when the other package changes its build layout, and it bypasses the\n * exports map, so the two are not interchangeable.\n *\n * Relative specifiers are exempt on purpose: the rule is about other packages,\n * and a relative path can only reach files inside the current package, where a\n * './lib/helpers' folder is a perfectly ordinary local module. Escaping the\n * package with '../' is already caught by isImportOutsideOfPackage.\n *\n * @param importPath The import path to check\n */\nexport var isInternalLinkedImport = function (importPath: string) {\n const name = barePackageName(importPath);\n if (!name || !isLinkedPackageName(name)) {\n return false;\n }\n // Match whole path segments, so '@_linked/core/library/x' is not a hit.\n const subPath = importPath.slice(name.length).split('/').filter(Boolean);\n return subPath.includes('src') || subPath.includes('lib');\n};\n/**\n * True when a relative import escapes the package source root. Normalising\n * first is what makes this correct: only leading '..' segments that survive\n * normalisation actually climb out, so './a..b' is an ordinary file name and\n * '../a/../b' climbs one level, not two.\n *\n * @param importPath The import path to check\n * @param curFileDepth How many folders deep the current file is (0 = src, 1 = src/foo, etc.)\n */\nexport var isImportOutsideOfPackage = function (\n importPath: string,\n curFileDepth: number,\n) {\n if (!importPath.startsWith('.')) {\n return false;\n }\n const segments = path.posix\n .normalize(importPath.split('\\\\').join('/'))\n .split('/');\n // How many folders the specifier climbs: the leading '..' segments that\n // normalisation could not cancel out.\n let climbs = 0;\n while (segments[climbs] === '..') {\n climbs++;\n }\n return climbs > curFileDepth;\n};\n\nexport var getPackageJSON = function (root = process.cwd(), error = true) {\n // console.log('Getting package.json from ' + chalk.cyan(root));\n //log stack trace\n let packagePath = path.join(root, 'package.json');\n if (fs.existsSync(packagePath)) {\n return JSON.parse(fs.readFileSync(packagePath, 'utf8'));\n } else if (root === process.cwd()) {\n if (error) {\n console.warn(\n 'Could not find package.json. Make sure you run this command from the root of a linked package or a linked workspace',\n );\n process.exit();\n }\n }\n};\n\n/**\n * Scans package.json for dependencies that are LINCD packages\n * Also looks into dependencies of dependencies\n * If no packageJson is given, it will attempt to obtain it from the current working directory\n * Returns an array of lincd packages, with each entry containing an array with the package name and the local path to the package\n * @param packageJson\n */\nexport var getLINCDDependencies = function (\n packageJson?,\n checkedPackages: Set<string> = new Set(),\n): [string, string, string[]][] {\n if (!packageJson) {\n packageJson = getPackageJSON();\n }\n let dependencies = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n };\n let lincdPackagePaths: [string, string, string[]][] = [];\n let firstTime = checkedPackages.size === 0;\n\n for (var dependency of Object.keys(dependencies)) {\n try {\n if (!checkedPackages.has(dependency)) {\n let [modulePackageJson, modulePath] = getModulePackageJSON(dependency);\n checkedPackages.add(dependency);\n\n if (modulePackageJson?.lincd) {\n lincdPackagePaths.push([\n modulePackageJson.name,\n modulePath,\n [\n ...Object.keys({\n ...modulePackageJson.dependencies,\n ...modulePackageJson.devDependencies,\n }),\n ],\n ]);\n //also check if this package has any dependencies that are lincd packages\n lincdPackagePaths = lincdPackagePaths.concat(\n getLINCDDependencies(modulePackageJson, checkedPackages),\n );\n }\n if (!modulePackageJson) {\n //this seems to only happen with yarn workspaces for some grunt related dependencies of lincd-cli\n // console.log(`could not find package.json of ${dependency}`);\n }\n }\n } catch (err) {\n console.log(\n `could not check if ${dependency} is a lincd package: ${err}`,\n );\n }\n }\n\n if (firstTime) {\n // let dependencyMap:Map<string,Set<string>> = new Map();\n let lincdPackageNames = new Set(\n lincdPackagePaths.map(\n ([packageName, modulePath, pkgDependencies]) => packageName,\n ),\n );\n //remove lincd-cli from the list of lincd packages\n lincdPackageNames.delete('lincd-cli');\n\n lincdPackagePaths.forEach(\n ([packageName, modulePath, pkgDependencies], key) => {\n let lincdDependencies = pkgDependencies.filter((dependency) =>\n lincdPackageNames.has(dependency),\n );\n if (packageName === 'lincd-cli') {\n //remove lincd-modules from the dependencies of lincd-cli (it's not a hard dependency, and it messes things up)\n lincdDependencies.splice(\n lincdDependencies.indexOf('lincd-modules'),\n 1,\n );\n }\n // dependencyMap.set(packageName, new Set(lincdDependencies));\n //update dependencies to be the actual lincd package objects\n lincdPackagePaths[key][2] = lincdDependencies;\n },\n );\n\n // //add the nested dependencies for each lincd package\n // for (let [packageName,pkgDependencies] of dependencyMap) {\n // pkgDependencies.forEach((dependency) => {\n // if (dependencyMap.has(dependency)) {\n // dependencyMap.get(dependency).forEach((nestedDependency) => {\n // pkgDependencies.add(nestedDependency);\n // });\n // }\n // });\n // }\n //\n // dependencyMap.forEach((dependencies,packageName) => {\n // //check for circular dependencies\n // if([...dependencies].some(dependency => {\n // return dependencyMap.get(dependency).has(packageName);\n // }))\n // {\n // console.warn(`Circular dependency detected between ${packageName} and ${dependency}`);\n // }\n //\n // });\n\n // a simple sort with dependencyMap doesn't seem to work,so we start with LINCD (least dependencies) and from there add packages that have all their dependencies already added\n let sortedPackagePaths = [];\n let addedPackages = new Set();\n let lincdItself = lincdPackagePaths.find(([packageName]) => {\n return packageName === 'lincd';\n });\n if (lincdItself) {\n sortedPackagePaths.push(lincdItself);\n addedPackages = new Set(['lincd']);\n }\n\n while (addedPackages.size !== lincdPackagePaths.length) {\n let startSize = addedPackages.size;\n lincdPackagePaths.forEach(\n ([packageName, modulePath, pkgDependencies]) => {\n if (\n !addedPackages.has(packageName) &&\n pkgDependencies.every((dependency) => addedPackages.has(dependency))\n ) {\n sortedPackagePaths.push([packageName, modulePath, pkgDependencies]);\n addedPackages.add(packageName);\n }\n },\n );\n if (startSize === addedPackages.size) {\n console.warn('Could not sort lincd packages, circular dependencies?');\n break;\n }\n }\n\n //sort the lincd packages by least dependent first\n // lincdPackagePaths = lincdPackagePaths.sort(([packageNameA],[packageNameB]) => {\n // //if package A depends on package B, then package B should come first\n // if (dependencyMap.get(packageNameA).has(packageNameB)) {\n // console.log(packageNameA+' depends on '+packageNameB+ ' (below)')\n // return 1;\n // }\n // console.log(packageNameA+' above '+packageNameB)\n // return -1;\n // });\n return sortedPackagePaths;\n }\n\n return lincdPackagePaths;\n};\n\nexport const getLastBuildTime = (packagePath) => {\n return getLastModifiedFile(packagePath + '/@(builds|lib|dist)/**/*.js');\n};\n\nexport const getLastModifiedSourceTime = (packagePath) => {\n return getLastModifiedFile(packagePath + '/@(src|data|css|modules)/**/*', {\n ignore: [\n packagePath + '/**/*.css.json',\n packagePath + '/**/*.d.ts',\n packagePath + '/**/node_modules/**/*',\n packagePath + '/**/lib/**/*',\n packagePath + '/**/dist/**/*',\n ],\n });\n};\n\nexport const getLastCommitTime = (\n packagePath,\n): Promise<{date: Date; changes: string; commitId: string}> => {\n // console.log(`git log -1 --format=%ci -- ${packagePath}`);\n // process.exit();\n return execPromise(`cd ${packagePath} && git log -1 --format=\"%h %ci\" -- .`)\n .then(async (result) => {\n let commitId = result.substring(0, result.indexOf(' '));\n let date = result.substring(commitId.length + 1);\n let lastCommitDate = new Date(date);\n\n let changes = await execPromise(\n `cd ${packagePath} && git show --stat --oneline ${commitId} -- .`,\n );\n // log(packagePath, result, lastCommitDate);\n // log(changes);\n return {date: lastCommitDate, changes, commitId};\n })\n .catch(({error, stdout, stderr}) => {\n debugInfo(chalk.red('Git error: ') + error.message.toString());\n return null;\n });\n};\n\nexport const getLastModifiedFile = (filePath, config = {}) => {\n var files = glob.sync(filePath, config);\n\n // console.log(files.join(\" - \"));\n var lastModifiedName;\n var lastModified: Date;\n var lastModifiedTime = 0;\n files.forEach((fileName) => {\n if (fs.lstatSync(fileName).isDirectory()) {\n // console.log(\"skipping directory \"+fileName);\n return;\n }\n let mtime = fs.statSync(path.join(fileName)).mtime;\n let modifiedTime = mtime.getTime();\n if (modifiedTime > lastModifiedTime) {\n // console.log(fileName,mtime);\n lastModifiedName = fileName;\n lastModified = mtime;\n lastModifiedTime = modifiedTime;\n }\n });\n return {lastModified, lastModifiedName, lastModifiedTime};\n};\n\n//from https://github.com/haalcala/node-packagejson/blob/master/index.js\nexport var getModulePackageJSON = function (module_name, work_dir?) {\n if (!work_dir) {\n work_dir = process.cwd();\n } else {\n work_dir = path.resolve(work_dir);\n }\n\n var package_json;\n\n if (fs.existsSync(path.resolve(work_dir, './node_modules'))) {\n var module_dir = path.resolve(work_dir, './node_modules/' + module_name);\n\n if (\n fs.existsSync(module_dir) &&\n fs.existsSync(module_dir + '/package.json')\n ) {\n package_json = JSON.parse(\n fs.readFileSync(module_dir + '/package.json', 'utf-8'),\n );\n }\n }\n\n if (!package_json && work_dir != '/') {\n return getModulePackageJSON(module_name, path.resolve(work_dir, '..'));\n }\n\n return [package_json, module_dir];\n};\nexport function execp(\n cmd,\n log: boolean = false,\n allowError: boolean = false,\n options: any = {},\n): Promise<null> {\n // opts || (opts = {});\n if (log) console.log(chalk.cyan(cmd));\n\n return new Promise((resolve, reject) => {\n var child = exec(cmd, options);\n\n child.stdout.pipe(process.stdout);\n child.stderr.pipe(process.stderr);\n // process.stdin.pipe(child.stdin);\n\n child.on('close', function (code) {\n if (code === 0) {\n resolve(null);\n } else {\n reject();\n }\n // console.log('killing child');\n // child.kill('SIGHUP');\n // resolve(code);\n });\n // child.on('data', function (result) {\n // \t// if (log)\n // \t// {\n // \t// \tconsole.log(result);\n // \t// }\n // \tresolve(result);\n // \tconsole.log('resolve data');\n //\n // });\n\n child.on('error', function (err) {\n if (!allowError) {\n // console.log('reject err');\n reject(err);\n return;\n } else if (log) {\n console.warn(err);\n }\n // console.log('resolve err');\n resolve(null);\n });\n child.on('exit', function (code, signal) {\n if (code !== 0) {\n reject('Child process exited with error code ' + code);\n return;\n }\n // console.log('resolve exit');\n resolve(null);\n });\n });\n}\n\nexport function execPromise(\n command,\n log = false,\n allowError: boolean = false,\n options?: ExecOptions,\n pipeOutput: boolean = false,\n): Promise<string> {\n return new Promise(function (resolve, reject) {\n if (log) console.log(chalk.cyan(command));\n let child = exec(command, options, (error, stdout, stderr) => {\n if (error) {\n if (!allowError) {\n reject({error, stdout, stderr});\n return;\n } else if (log) {\n console.warn(error);\n }\n }\n //TODO: getting a typescript error for 'trim()', this worked before, is it still used? do we log anywhere?\n let result = stdout['trim']();\n if (log) {\n // console.log(chalk\"RESOLVING \"+command);\n console.log(result);\n // console.log('ERRORS:'+(result.indexOf('Aborted due to warnings') !== -1));\n // console.log('stderr:'+stderr);\n }\n resolve(result);\n });\n if (pipeOutput) {\n child.stdout.pipe(process.stdout);\n child.stderr.pipe(process.stderr);\n }\n });\n}\n\nexport function generateScopedNameProduction(cssClassName, filepath, css?) {\n //for app development we can use short unique hashes\n //but for bundles of lincd modules, we need to ensure unique class names across bundles of many packages\n //generate a short unique hash based on cssClassName and filepath\n let hash = crypto\n .createHash('md5')\n .update(cssClassName + filepath)\n .digest('hex')\n .substring(0, 6);\n return hash;\n}\nexport function generateScopedName(cssClassName, filepath, css?) {\n // Strip any Vite-style query suffix (?inline, ?raw, ?direct) before\n // computing the filename. Without this, dev-mode SSR CSS collection\n // via `?inline` produces selectors like\n // `._foo_SigninLayout.module.css?inline_leftSidebar` — the literal\n // `.module.css?inline` becomes part of the class name, which CSS\n // parsers split on `.` and `?`, breaking everything.\n const cleanFilepath = filepath.replace(/\\?.*$/, '');\n var filename = path\n .basename(cleanFilepath)\n .replace(/\\.module\\.css$/, '')\n .replace(/\\.css$/, '');\n let resolved = path.resolve(cleanFilepath).replace(/[\\w\\-_\\/]+\\/file\\:/, '');\n let nearestPackageJson = findNearestPackageJsonSync(resolved);\n let packageName = nearestPackageJson\n ? nearestPackageJson.data.name\n : 'unknown';\n return (\n packageName.replace(/[^a-zA-Z0-9_]+/g, '_') +\n '_' +\n filename +\n '_' +\n cssClassName\n );\n}\n\nexport const needsRebuilding = async function (\n pkg: PackageDetails,\n useGitForLastModified: boolean,\n log: boolean = false,\n) {\n let lastModifiedSourceDate: Date;\n let lastModifiedSourceName: string;\n\n if (useGitForLastModified) {\n const {changes, commitId, date} = await getLastCommitTime(pkg.path);\n\n lastModifiedSourceDate = date;\n lastModifiedSourceName = commitId;\n } else {\n const {lastModified, lastModifiedName, lastModifiedTime} =\n getLastModifiedSourceTime(pkg.path);\n lastModifiedSourceName = lastModifiedName;\n lastModifiedSourceDate = lastModified;\n }\n\n let lastModifiedBundle = getLastBuildTime(pkg.path);\n let result =\n lastModifiedSourceDate &&\n lastModifiedSourceDate.getTime() > lastModifiedBundle.lastModifiedTime;\n if (log) {\n console.log(\n chalk.cyan(\n 'Last modified source: ' +\n lastModifiedSourceName +\n ' on ' +\n lastModifiedSourceDate.toString(),\n ),\n );\n console.log(\n chalk.cyan(\n 'Last build: ' +\n (lastModifiedBundle &&\n typeof lastModifiedBundle.lastModified !== 'undefined'\n ? lastModifiedBundle.lastModified.toString()\n : 'never'),\n ),\n );\n }\n return result;\n};\n\nexport function log(...messages) {\n messages.forEach((message) => {\n console.log(chalk.cyan(message));\n });\n}\n\nexport function debug(config, ...messages) {\n if (config.debug) {\n log(...messages);\n }\n}\n\nexport function debugInfo(...messages) {\n // messages.forEach((message) => {\n // console.log(chalk.cyan('Info: ') + message);\n // });\n //@TODO: let packages also use linked.config.json? instead of gruntfile...\n // that way we can read \"analyse\" here and see if we need to log debug info\n // if(!gruntConfig)\n // {\n // gruntConfig = getGruntConfig();\n // console.log(gruntConfig);\n // process.exit();\n // }\n if (gruntConfig && gruntConfig.analyse === true) {\n messages.forEach((message) => {\n console.log(chalk.cyan('Info: ') + message);\n });\n }\n}\n\nexport function warn(...messages) {\n messages.forEach((message) => {\n console.log(chalk.red(message));\n });\n}\n\nexport function flatten(arr) {\n return arr.reduce(function (a, b) {\n return b ? a.concat(b) : a;\n }, []);\n}\n\nexport function getLinkedTailwindColors() {\n return {\n 'primary-color': 'var(--primary-color)',\n 'font-color': 'var(--font-color)',\n };\n}\n\n/**\n * Recursively get all files in a directory\n * https://stackoverflow.com/a/45130990/831465\n * @param dir The directory to get files from\n * @returns A promise that resolves to an array of file paths\n */\nexport async function getFiles(\n dir: string,\n filenameFilter?: string,\n): Promise<string[]> {\n const entries = await fs.promises.readdir(dir, {withFileTypes: true});\n let files = await Promise.all(\n entries.map((entry) => {\n const res = path.resolve(dir, entry.name);\n return entry.isDirectory() ? getFiles(res, filenameFilter) : res;\n }),\n );\n //flatten the array of arrays into a single array\n let flatFiles = flatten(files) as string[];\n if (filenameFilter) {\n //filter the files to only include those that match the filenameFilter\n flatFiles = flatFiles.filter((file) => file.includes(filenameFilter));\n }\n return flatFiles;\n}\n\n/**\n * Strip ANSI escape codes from a string\n * @param str The string to strip ANSI codes from\n * @returns The string with ANSI codes removed\n */\nexport function stripAnsi(str: string): string {\n return str.replace(/\\x1b\\[[0-9;]*m/g, '');\n}\n"]}
@@ -42,7 +42,10 @@ export interface LinkedViteConfigOptions {
42
42
  plugins?: Plugin[];
43
43
  /** Extra PostCSS plugins (e.g. `postcss-media-to-container`). */
44
44
  postcssPlugins?: unknown[];
45
- /** Extra `define` entries (used to bridge legacy `process.env.X` refs to client). */
45
+ /**
46
+ * Extra `define` entries for the CLIENT environment only (used to bridge
47
+ * `process.env.X` refs into the browser). Never applied server-side.
48
+ */
46
49
  define?: Record<string, string>;
47
50
  /**
48
51
  * Extra workspace globs (trailing `/*`, or a direct package dir) resolved
@@ -135,6 +138,12 @@ export declare function discoverWorkspaces(extraGlobs?: string[], cwd?: string):
135
138
  export declare function ssrNoExternal(workspaces: {
136
139
  name: string;
137
140
  }[], dependents?: string[]): (string | RegExp)[];
141
+ /**
142
+ * The `process.env.*` values inlined into the browser bundle — and only there.
143
+ * See the `environments.client.define` note in `createViteConfig` for why the
144
+ * server environment must not receive them.
145
+ */
146
+ export declare function clientDefine(opts?: Pick<LinkedViteConfigOptions, 'define' | 'port'>): Record<string, string>;
138
147
  export declare function createViteConfig(opts?: LinkedViteConfigOptions): ReturnType<typeof defineConfig>;
139
148
  export {};
140
149
  //# sourceMappingURL=vite-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vite-config.d.ts","sourceRoot":"","sources":["../../src/vite-config.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,YAAY,EAAC,MAAM,MAAM,CAAC;AAMlC,OAAO,KAAK,EAAC,MAAM,EAAa,MAAM,MAAM,CAAC;AAuB7C;;;;;;;;;;;;;;;GAeG;AACH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,GAAI,IAAI,MAAM,KAAG,MAAM,GAAG,SAyDtD,CAAC;AAEF,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAQnD;AAED,MAAM,WAAW,uBAAuB;IACtC,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,OAAO,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAAC;IAC1C,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,iEAAiE;IACjE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC;IAC3B,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAwCD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAC,EAAE,EAC7C,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CAsEnB;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,gCAAgC,CACpD,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,cAAc,EAAE,CAAC,CAmC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,GAAE,MAAM,EAAO,EACzB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,cAAc,EAAE,CAAC,CAyD3B;AAwCD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,EAAE,EAC5B,UAAU,GAAE,MAAM,EAAO,GACxB,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAGrB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,uBAA4B,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CA0VpG"}
1
+ {"version":3,"file":"vite-config.d.ts","sourceRoot":"","sources":["../../src/vite-config.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,YAAY,EAAC,MAAM,MAAM,CAAC;AAMlC,OAAO,KAAK,EAAC,MAAM,EAAa,MAAM,MAAM,CAAC;AAuB7C;;;;;;;;;;;;;;;GAeG;AACH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,GAAI,IAAI,MAAM,KAAG,MAAM,GAAG,SAyDtD,CAAC;AAEF,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAQnD;AAED,MAAM,WAAW,uBAAuB;IACtC,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,OAAO,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAAC;IAC1C,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,iEAAiE;IACjE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC;IAC3B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAwCD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAC,EAAE,EAC7C,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CAsEnB;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,gCAAgC,CACpD,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,cAAc,EAAE,CAAC,CAmC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,GAAE,MAAM,EAAO,EACzB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,cAAc,EAAE,CAAC,CAyD3B;AAwCD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,EAAE,EAC5B,UAAU,GAAE,MAAM,EAAO,GACxB,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAGrB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,IAAI,GAAE,IAAI,CAAC,uBAAuB,EAAE,QAAQ,GAAG,MAAM,CAAM,GAC1D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,uBAA4B,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAqWpG"}
@@ -482,9 +482,23 @@ export function ssrNoExternal(workspaces, dependents = []) {
482
482
  return [/^@_linked\/server-utils$/, /^@_linked\/react$/];
483
483
  return [...new Set([...workspaces.map((w) => w.name), ...dependents])];
484
484
  }
485
+ /**
486
+ * The `process.env.*` values inlined into the browser bundle — and only there.
487
+ * See the `environments.client.define` note in `createViteConfig` for why the
488
+ * server environment must not receive them.
489
+ */
490
+ export function clientDefine(opts = {}) {
491
+ var _a, _b, _c, _d, _e, _f;
492
+ return Object.assign({ 'process.env.NODE_ENV': JSON.stringify((_a = process.env.NODE_ENV) !== null && _a !== void 0 ? _a : 'production'), 'process.env.SITE_ROOT': JSON.stringify((_b = process.env.SITE_ROOT) !== null && _b !== void 0 ? _b : `http://localhost:${(_d = (_c = process.env.PORT) !== null && _c !== void 0 ? _c : opts.port) !== null && _d !== void 0 ? _d : 4040}`),
493
+ // The app's display name, so client components (e.g. the header) can read it
494
+ // like the SSR <title> does (server-utils Html reads process.env.APP_NAME). The
495
+ // browser has no `process`, so inline it; falls back to a generic label when
496
+ // unset so a bare checkout never renders `undefined`.
497
+ 'process.env.APP_NAME': JSON.stringify((_e = process.env.APP_NAME) !== null && _e !== void 0 ? _e : 'Linked App') }, ((_f = opts.define) !== null && _f !== void 0 ? _f : {}));
498
+ }
485
499
  export function createViteConfig(opts = {}) {
486
500
  return defineConfig((_a) => __awaiter(this, [_a], void 0, function* ({ mode }) {
487
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
501
+ var _b, _c, _d, _e, _f, _g;
488
502
  const isDev = mode === 'development';
489
503
  const workspaces = isDev ? yield discoverWorkspaces(opts.workspaceGlobs) : [];
490
504
  // STANDALONE = dev mode with no source-shipping workspaces discovered
@@ -514,7 +528,7 @@ export function createViteConfig(opts = {}) {
514
528
  linkedDeps.push(name);
515
529
  }
516
530
  }
517
- catch (_p) {
531
+ catch (_h) {
518
532
  /* best-effort — no package.json is fine */
519
533
  }
520
534
  }
@@ -719,34 +733,51 @@ export function createViteConfig(opts = {}) {
719
733
  // workspace) are bundled too, so they import the Vite-loaded workspace.
720
734
  noExternal: ssrNoExternal(workspaces, yield workspaceDependents(workspaces)) }, (isStandalone
721
735
  ? { resolve: { conditions: ['module', 'node'] } }
722
- : {})), define: Object.assign({
723
- // The FRAMEWORK's only client-side env dependency: `@_linked/server-utils`'s
724
- // `Server.ts` reads `process.env.SITE_ROOT` to target the backend. The
725
- // browser has no `process`, and Vite (unlike a bundler's EnvironmentPlugin)
726
- // doesn't auto-inline `process.env.X`, so we define SITE_ROOT here — it's
727
- // always the app's own origin, defaulted to `http://localhost:<port>` (an
728
- // explicit `SITE_ROOT` env, e.g. from `.env-cmdrc`, still wins). NODE_ENV
729
- // is a common client guard, so define it too.
730
- //
731
- // We define only these SPECIFIC tokens (never a whole-object `process.env`
732
- // replacement): Vite's `define` also hits the SSR transform, and the backend
733
- // reads `process.env` at runtime (e.g. passes the whole object to
734
- // `parseDatasetsConfig`) — clobbering bare `process.env` would strip the
735
- // server's env.
736
- //
737
- // Apps expose their OWN frontend env vars by adding to `define` in their
738
- // `vite.config.ts`, e.g.:
739
- // createViteConfig({ define: {
740
- // 'process.env.MY_PUBLIC_KEY': JSON.stringify(process.env.MY_PUBLIC_KEY),
741
- // }})
742
- // (only reference PUBLIC vars in client code — a defined secret would be
743
- // inlined into the browser bundle).
744
- 'process.env.NODE_ENV': JSON.stringify((_g = process.env.NODE_ENV) !== null && _g !== void 0 ? _g : 'production'), 'process.env.SITE_ROOT': JSON.stringify((_h = process.env.SITE_ROOT) !== null && _h !== void 0 ? _h : `http://localhost:${(_k = (_j = process.env.PORT) !== null && _j !== void 0 ? _j : opts.port) !== null && _k !== void 0 ? _k : 4040}`),
745
- // The app's display name, so client components (e.g. the header) can read it
746
- // like the SSR <title> does (server-utils Html reads process.env.APP_NAME). The
747
- // browser has no `process`, so inline it; falls back to a generic label when
748
- // unset so a bare checkout never renders `undefined`.
749
- 'process.env.APP_NAME': JSON.stringify((_l = process.env.APP_NAME) !== null && _l !== void 0 ? _l : 'Linked App') }, ((_m = opts.define) !== null && _m !== void 0 ? _m : {})) }), (workspaces.length > 0
736
+ : {})),
737
+ // Client-only, deliberately: these go on the `client` environment, not the
738
+ // top-level `define`, because a top-level `define` is inherited by the SSR
739
+ // environment too.
740
+ //
741
+ // The browser needs them. `@_linked/server-utils`'s `Server.ts` reads
742
+ // `process.env.SITE_ROOT` to target the backend; the browser has no
743
+ // `process`, and Vite (unlike a bundler's EnvironmentPlugin) doesn't
744
+ // auto-inline `process.env.X`, so SITE_ROOT is defined here — always the
745
+ // app's own origin, defaulted to `http://localhost:<port>` (an explicit
746
+ // `SITE_ROOT` env, e.g. from `.env-cmdrc`, still wins). NODE_ENV is a
747
+ // common client guard, so it is defined too.
748
+ //
749
+ // The server must NOT get them, for two reasons:
750
+ // - it reads `process.env` at runtime, so an inlined build-time value is
751
+ // wrong there (a release backend would carry the build machine's
752
+ // SITE_ROOT rather than the deployment's);
753
+ // - worse, every `define` key is a trigger. Vite's `vite:define` plugin
754
+ // runs `esbuild.transform` — without `keepNames` — over any SSR module
755
+ // whose text contains a key. esbuild renames the inner binding of a
756
+ // tsc-emitted decorated class (`let LinkedServer = class LinkedServer`
757
+ // becomes `class LinkedServer2`), and a shape's IRI is built from its
758
+ // class name, so `@_linked/server`'s `LinkedServer` and `LincdAPI`
759
+ // registered as `LinkedServer2` / `LincdAPI2` in dev. Without user keys
760
+ // the SSR environment has none of its own (`keepProcessEnv` is on for
761
+ // it), so nothing server-side is rewritten.
762
+ //
763
+ // Only these SPECIFIC tokens, never a whole-object `process.env`
764
+ // replacement: in a client build Vite already maps any other
765
+ // `process.env.X` to `{}.X` (undefined), which is what client code expects.
766
+ //
767
+ // Apps expose their OWN frontend env vars through the `define` option,
768
+ // which lands here too:
769
+ // createViteConfig({ define: {
770
+ // 'process.env.MY_PUBLIC_KEY': JSON.stringify(process.env.MY_PUBLIC_KEY),
771
+ // }})
772
+ // (only reference PUBLIC vars in client code — a defined secret would be
773
+ // inlined into the browser bundle). An app that puts a top-level `define`
774
+ // in its own config reintroduces both problems for the server; use
775
+ // `environments.client.define` there as well.
776
+ environments: {
777
+ client: {
778
+ define: clientDefine(opts),
779
+ },
780
+ } }), (workspaces.length > 0
750
781
  ? { optimizeDeps: { exclude: workspaces.map((w) => w.name) } }
751
782
  : isStandalone && linkedDeps.length > 0
752
783
  ? { optimizeDeps: { exclude: linkedDeps } }
@@ -758,7 +789,7 @@ export function createViteConfig(opts = {}) {
758
789
  // it's not — the app needs the dep for theme variables to load.
759
790
  try {
760
791
  const tailwind = yield import('@tailwindcss/vite');
761
- const tailwindPlugin = (_o = tailwind.default) !== null && _o !== void 0 ? _o : tailwind;
792
+ const tailwindPlugin = (_g = tailwind.default) !== null && _g !== void 0 ? _g : tailwind;
762
793
  config.plugins.push(tailwindPlugin());
763
794
  }
764
795
  catch (err) {