@_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
@@ -45,6 +45,34 @@ export declare const envDeprecationNotices: (sources: {
45
45
  * if no candidate exists.
46
46
  */
47
47
  export declare function loadBackendStorageConfig(): Promise<any>;
48
+ /**
49
+ * A local package directory found by {@link discoverLocalPackages}, together
50
+ * with the facts that decide what can be done with it.
51
+ *
52
+ * The facts are recorded rather than filtered on, because the bug this type
53
+ * exists to fix was a SILENT filter: `build-all` discovered only packages
54
+ * carrying `linkedPackage: true` and printed nothing about the rest, so
55
+ * `@_linked/maps` — a shipped dependency that simply never got the flag — was
56
+ * dropped from a green build for as long as nobody counted the names.
57
+ */
58
+ export interface LocalPackage extends PackageDetails {
59
+ /** Where the walk found it. */
60
+ source: 'workspace' | 'local-packages-dir';
61
+ /** `linkedPackage: true`, or the legacy `lincd: true`. */
62
+ isLinkedPackage: boolean;
63
+ /** `linkedApp: true` — built by `linked build-app`, not `linked build`. */
64
+ isApp: boolean;
65
+ /** Has a `build` script of its own, which is what `build-all` invokes. */
66
+ hasBuildScript: boolean;
67
+ }
68
+ /**
69
+ * Directory holding localized checkouts (`semantu localize`). It is
70
+ * deliberately in NO workspace glob — that is the whole point of the design,
71
+ * since npm learning about these checkouts is what made their predecessor
72
+ * under `packages/` a trap — so any walk of `workspaces` alone cannot see it
73
+ * and has to be told about it separately.
74
+ */
75
+ export declare const LOCAL_PACKAGES_DIR = "packages-local";
48
76
  /**
49
77
  * Walk the app's `package.json` `workspaces` field and return every
50
78
  * workspace package that declares `"linkedPackage": true`.
@@ -52,6 +80,54 @@ export declare function loadBackendStorageConfig(): Promise<any>;
52
80
  * Lives here (not in cli-methods.ts) so consumers like LinkedServer can
53
81
  * import it without dragging the rest of the legacy cli-methods flow into
54
82
  * Vite's SSR module graph.
83
+ *
84
+ * Kept deliberately narrow: this is the set the dev resolver and the runtime
85
+ * treat as linked packages. Commands that want every *buildable* local
86
+ * package — flag or no flag, workspace or localized checkout — want
87
+ * {@link discoverLocalPackages} instead.
55
88
  */
56
89
  export declare function getLincdPackages(rootPath?: string): PackageDetails[];
90
+ /**
91
+ * Every local package directory this app can see, whether or not it declares
92
+ * `linkedPackage: true`.
93
+ *
94
+ * Two sources, because the workspace globs are not the whole picture any more:
95
+ *
96
+ * 1. the `workspaces` field (negations honoured — see ./workspace-globs.js);
97
+ * 2. `packages-local/`, the localized checkouts, which is in no glob.
98
+ *
99
+ * Nothing is filtered out here. Callers decide what they can act on and are
100
+ * expected to SAY what they skipped and why.
101
+ */
102
+ export declare function discoverLocalPackages(rootPath?: string, options?: {
103
+ includeLocalPackagesDir?: boolean;
104
+ localPackagesDir?: string;
105
+ }): LocalPackage[];
106
+ /** A package `build-all` found but will not build, and why not. */
107
+ export interface SkippedPackage {
108
+ packageName: string;
109
+ path: string;
110
+ reason: string;
111
+ }
112
+ /** What `build-all` found, and what it decided to do with each package. */
113
+ export interface BuildAllPlan {
114
+ build: Map<string, PackageDetails>;
115
+ skipped: SkippedPackage[];
116
+ }
117
+ /**
118
+ * Decide what `build-all` builds.
119
+ *
120
+ * Every discovered package lands in exactly one of `build` or `skipped`, and
121
+ * `skipped` carries a reason — because the failure mode this replaces was not
122
+ * a narrow scan, it was a SILENT one. `@_linked/maps` is a shipped Create Now
123
+ * dependency that never got `linkedPackage: true`; `build-all` dropped it and
124
+ * printed nothing, so a build covering half the workspace exited 0 and people
125
+ * acted on it. A skip nobody can see is worse than a failure.
126
+ *
127
+ * What counts as buildable is a CAPABILITY, not a declaration: `build-all`
128
+ * invokes each package's own `build` script, so anything with one can be
129
+ * built whether or not it carries the flag. The flag is still reported when
130
+ * it is missing, since the dev resolver and `linked build` do require it.
131
+ */
132
+ export declare function planBuildAll(rootPath?: string, appRoot?: string): BuildAllPlan;
57
133
  //# sourceMappingURL=lifecycle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/lifecycle.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,uBAAuB,GAClC,mBAAmB,MAAM,EAAE,KAC1B,OAAO,CAAC,IAAI,CA+Bd,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS;IAC7C,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB,KAAG,MAAM,EAeT,CAAC;AAgDF;;;;;GAKG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,CAyB7D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,SAAgB,GACvB,cAAc,EAAE,CAkBlB"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/lifecycle.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,uBAAuB,GAClC,mBAAmB,MAAM,EAAE,KAC1B,OAAO,CAAC,IAAI,CA+Bd,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS;IAC7C,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB,KAAG,MAAM,EAeT,CAAC;AAgDF;;;;;GAKG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,CAyB7D;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,+BAA+B;IAC/B,MAAM,EAAE,WAAW,GAAG,oBAAoB,CAAC;IAC3C,0DAA0D;IAC1D,eAAe,EAAE,OAAO,CAAC;IACzB,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC;IACf,0EAA0E;IAC1E,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,SAAgB,GACvB,cAAc,EAAE,CAIlB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,SAAgB,EACxB,OAAO,GAAE;IAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAM,GAC3E,YAAY,EAAE,CA4BhB;AA8ID,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnC,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,QAAQ,SAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,CAgD5E"}
@@ -167,6 +167,14 @@ export function loadBackendStorageConfig() {
167
167
  return undefined;
168
168
  });
169
169
  }
170
+ /**
171
+ * Directory holding localized checkouts (`semantu localize`). It is
172
+ * deliberately in NO workspace glob — that is the whole point of the design,
173
+ * since npm learning about these checkouts is what made their predecessor
174
+ * under `packages/` a trap — so any walk of `workspaces` alone cannot see it
175
+ * and has to be told about it separately.
176
+ */
177
+ export const LOCAL_PACKAGES_DIR = 'packages-local';
170
178
  /**
171
179
  * Walk the app's `package.json` `workspaces` field and return every
172
180
  * workspace package that declares `"linkedPackage": true`.
@@ -174,8 +182,31 @@ export function loadBackendStorageConfig() {
174
182
  * Lives here (not in cli-methods.ts) so consumers like LinkedServer can
175
183
  * import it without dragging the rest of the legacy cli-methods flow into
176
184
  * Vite's SSR module graph.
185
+ *
186
+ * Kept deliberately narrow: this is the set the dev resolver and the runtime
187
+ * treat as linked packages. Commands that want every *buildable* local
188
+ * package — flag or no flag, workspace or localized checkout — want
189
+ * {@link discoverLocalPackages} instead.
177
190
  */
178
191
  export function getLincdPackages(rootPath = process.cwd()) {
192
+ return discoverLocalPackages(rootPath, { includeLocalPackagesDir: false })
193
+ .filter((pkg) => pkg.isLinkedPackage)
194
+ .map(({ path: packagePath, packageName }) => ({ path: packagePath, packageName }));
195
+ }
196
+ /**
197
+ * Every local package directory this app can see, whether or not it declares
198
+ * `linkedPackage: true`.
199
+ *
200
+ * Two sources, because the workspace globs are not the whole picture any more:
201
+ *
202
+ * 1. the `workspaces` field (negations honoured — see ./workspace-globs.js);
203
+ * 2. `packages-local/`, the localized checkouts, which is in no glob.
204
+ *
205
+ * Nothing is filtered out here. Callers decide what they can act on and are
206
+ * expected to SAY what they skipped and why.
207
+ */
208
+ export function discoverLocalPackages(rootPath = process.cwd(), options = {}) {
209
+ const { includeLocalPackagesDir = true, localPackagesDir = LOCAL_PACKAGES_DIR } = options;
179
210
  let pack = getPackageJSON(rootPath);
180
211
  if (!pack || !pack.workspaces) {
181
212
  const originalRoot = rootPath;
@@ -185,16 +216,46 @@ export function getLincdPackages(rootPath = process.cwd()) {
185
216
  if (pack && pack.workspaces)
186
217
  break;
187
218
  }
188
- }
189
- if (!pack || !pack.workspaces) {
190
- // Standalone apps (scaffolded with `linked create-app`) don't have
191
- // workspaces — expected; just no local packages to scan.
192
- return [];
219
+ if (!pack || !pack.workspaces) {
220
+ // Standalone apps (scaffolded with `linked create-app`) don't have
221
+ // workspaces — expected. Fall back to the original root so a
222
+ // `packages-local/` beside it is still found.
223
+ rootPath = originalRoot;
224
+ }
193
225
  }
194
226
  const res = [];
195
- checkWorkspaces(rootPath, pack.workspaces, res);
227
+ if (pack && pack.workspaces) {
228
+ checkWorkspaces(rootPath, pack.workspaces, res);
229
+ }
230
+ if (includeLocalPackagesDir) {
231
+ checkLocalPackagesDir(rootPath, localPackagesDir, res);
232
+ }
196
233
  return res;
197
234
  }
235
+ /**
236
+ * Add every immediate subdirectory of `packages-local/` that holds a
237
+ * `package.json`. No glob, no negations: the directory has no `workspaces`
238
+ * entry to interpret, its contents are there because a developer localized
239
+ * them on purpose, and each one is a plain checkout.
240
+ */
241
+ function checkLocalPackagesDir(rootPath, localPackagesDir, res) {
242
+ const dir = path.join(rootPath, localPackagesDir);
243
+ if (!fs.existsSync(dir))
244
+ return;
245
+ const already = new Set(res.map((pkg) => path.resolve(pkg.path)));
246
+ for (const entry of fs.readdirSync(dir)) {
247
+ if (entry.startsWith('.'))
248
+ continue;
249
+ const packagePath = path.join(dir, entry);
250
+ if (!fs.statSync(packagePath).isDirectory())
251
+ continue;
252
+ // A checkout that some glob already picked up must not appear twice —
253
+ // duplicates would be built twice and counted twice.
254
+ if (already.has(path.resolve(packagePath)))
255
+ continue;
256
+ addPackage(packagePath, 'local-packages-dir', res);
257
+ }
258
+ }
198
259
  function checkWorkspaces(rootPath, workspaces, res) {
199
260
  // Negated entries ("!packages/core") are excluded the way npm excludes them
200
261
  // — including from the exact-path branch below, which npm also subjects to
@@ -231,8 +292,128 @@ function checkPackagePath(rootPath, packagePath, res) {
231
292
  if (pack && pack.workspaces) {
232
293
  checkWorkspaces(packagePath, pack.workspaces, res);
233
294
  }
234
- else if (pack && pack.linkedPackage === true) {
235
- res.push({ path: packagePath, packageName: pack.name });
295
+ else if (pack) {
296
+ addPackage(packagePath, 'workspace', res, pack);
297
+ }
298
+ }
299
+ function addPackage(packagePath, source, res, packageJson) {
300
+ var _a;
301
+ const pack = packageJson !== null && packageJson !== void 0 ? packageJson : getPackageJSON(packagePath);
302
+ if (!pack || !pack.name)
303
+ return;
304
+ res.push({
305
+ path: packagePath,
306
+ packageName: pack.name,
307
+ source,
308
+ // `lincd: true` is the pre-rename spelling of the same flag and is still
309
+ // honoured by `linked build-package`; honouring it here too keeps the two
310
+ // from disagreeing about what a linked package is.
311
+ isLinkedPackage: pack.linkedPackage === true || pack.lincd === true,
312
+ isApp: pack.linkedApp === true,
313
+ hasBuildScript: !!((_a = pack.scripts) === null || _a === void 0 ? void 0 : _a.build),
314
+ });
315
+ }
316
+ /**
317
+ * Filters packages to only include those in the dependency tree of the app root
318
+ */
319
+ function filterPackagesByDependencyTree(allPackages, appRootPath) {
320
+ const appPackageJson = getPackageJSON(appRootPath);
321
+ if (!appPackageJson) {
322
+ return allPackages;
323
+ }
324
+ const relevantPackages = new Map();
325
+ const packagesToCheck = new Set();
326
+ // Start with direct dependencies from app root
327
+ if (appPackageJson.dependencies) {
328
+ Object.keys(appPackageJson.dependencies).forEach((dep) => {
329
+ if (allPackages.has(dep)) {
330
+ packagesToCheck.add(dep);
331
+ }
332
+ });
333
+ }
334
+ // Recursively add dependencies
335
+ const processedPackages = new Set();
336
+ while (packagesToCheck.size > 0) {
337
+ const packageName = Array.from(packagesToCheck)[0];
338
+ packagesToCheck.delete(packageName);
339
+ if (processedPackages.has(packageName)) {
340
+ continue;
341
+ }
342
+ processedPackages.add(packageName);
343
+ const packageDetails = allPackages.get(packageName);
344
+ if (packageDetails) {
345
+ relevantPackages.set(packageName, packageDetails);
346
+ // Get this package's dependencies
347
+ const packageJson = getPackageJSON(packageDetails.path);
348
+ if (packageJson && packageJson.dependencies) {
349
+ Object.keys(packageJson.dependencies).forEach((dep) => {
350
+ if (allPackages.has(dep) && !processedPackages.has(dep)) {
351
+ packagesToCheck.add(dep);
352
+ }
353
+ });
354
+ }
355
+ }
356
+ }
357
+ return relevantPackages;
358
+ }
359
+ /**
360
+ * Decide what `build-all` builds.
361
+ *
362
+ * Every discovered package lands in exactly one of `build` or `skipped`, and
363
+ * `skipped` carries a reason — because the failure mode this replaces was not
364
+ * a narrow scan, it was a SILENT one. `@_linked/maps` is a shipped Create Now
365
+ * dependency that never got `linkedPackage: true`; `build-all` dropped it and
366
+ * printed nothing, so a build covering half the workspace exited 0 and people
367
+ * acted on it. A skip nobody can see is worse than a failure.
368
+ *
369
+ * What counts as buildable is a CAPABILITY, not a declaration: `build-all`
370
+ * invokes each package's own `build` script, so anything with one can be
371
+ * built whether or not it carries the flag. The flag is still reported when
372
+ * it is missing, since the dev resolver and `linked build` do require it.
373
+ */
374
+ export function planBuildAll(rootPath = './', appRoot) {
375
+ const build = new Map();
376
+ const skipped = [];
377
+ const buildable = [];
378
+ for (const pkg of discoverLocalPackages(rootPath)) {
379
+ const detail = { path: pkg.path, packageName: pkg.packageName };
380
+ // Packages reached through a `../` workspace glob live outside this
381
+ // repository; building them was never in scope for `build-all`.
382
+ if (pkg.path.indexOf('../') !== -1 || pkg.path.indexOf('..\\') !== -1) {
383
+ skipped.push(Object.assign(Object.assign({}, detail), { reason: 'outside this repository' }));
384
+ }
385
+ else if (pkg.isApp) {
386
+ skipped.push(Object.assign(Object.assign({}, detail), { reason: 'is a linked app — build it with `linked build-app`' }));
387
+ }
388
+ else if (!pkg.hasBuildScript) {
389
+ skipped.push(Object.assign(Object.assign({}, detail), { reason: 'has no `build` script' }));
390
+ }
391
+ else {
392
+ buildable.push(pkg);
393
+ build.set(pkg.packageName, detail);
394
+ }
395
+ }
396
+ // Narrow to what this app actually depends on, if we are inside one.
397
+ if (appRoot) {
398
+ const appPackageJson = getPackageJSON(appRoot);
399
+ const isAppWithLinkedDeps = appPackageJson &&
400
+ appPackageJson.lincd !== true &&
401
+ appPackageJson.dependencies &&
402
+ Object.keys(appPackageJson.dependencies).some((dep) => build.has(dep));
403
+ if (isAppWithLinkedDeps) {
404
+ const inTree = filterPackagesByDependencyTree(build, appRoot);
405
+ for (const pkg of buildable) {
406
+ if (inTree.has(pkg.packageName))
407
+ continue;
408
+ build.delete(pkg.packageName);
409
+ skipped.push({
410
+ path: pkg.path,
411
+ packageName: pkg.packageName,
412
+ reason: `not in ${appPackageJson.name || 'this app'}'s dependency tree`,
413
+ });
414
+ }
415
+ }
236
416
  }
417
+ return { build, skipped };
237
418
  }
238
419
  //# sourceMappingURL=lifecycle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/lifecycle.ts"],"names":[],"mappings":"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","sourcesContent":["// Lifecycle helpers shared by the Vite-based dev orchestrator.\n//\n// Extracted from cli-methods.ts so the SSR module graph (started from\n// `commands/start.ts`) doesn't have to walk the rest of that file. The\n// the older helpers in cli-methods.ts contain many dynamic\n// `import(<variable>)` calls Vite can't analyze statically and would\n// emit warnings about — even though startWithVite never calls them.\n\nimport fs from 'fs-extra';\nimport path from 'path';\nimport chalk from 'chalk';\nimport {getPackageJSON} from './utils.js';\nimport {parseWorkspacePatterns, isWorkspacePathNegated} from './workspace-globs.js';\nimport type {PackageDetails} from './interfaces.js';\n\n/**\n * Load the app's environment into `process.env`, then re-apply the original\n * shell env so it always wins on conflict. Idempotent — runs at most once.\n *\n * Two sources, tried in this order:\n * 1. `.env` (Node-native `process.loadEnvFile`, no dependency) — a flat file.\n * This is what the app template ships and the only form that will survive.\n * `--env` is not consulted here: a flat `.env` has no profiles, so\n * NODE_ENV comes from the file or the shell.\n * 2. `.env-cmdrc.json` (DEPRECATED, via `env-cmd`) — profile-based; honours\n * `--env a,b` and merges `_main` + the named profiles. Still read when it\n * is the only file present, so no existing app breaks, but it warns.\n *\n * `.env` going first is what makes migrating a one-step job: add the flat file\n * and it takes over. The profile file can then be deleted whenever convenient.\n *\n * If neither file exists we skip silently — CN-hosted apps have their env\n * injected into the child process at spawn time, so there's nothing to read\n * from disk.\n */\nexport const ensureEnvironmentLoaded = async (\n environmentNames?: string[],\n): Promise<void> => {\n if (process.env.ENV_VARS_LOADED) return;\n const cwd = process.cwd();\n const envCmdrcPath = path.join(cwd, '.env-cmdrc.json');\n const dotEnvPath = path.join(cwd, '.env');\n\n // Snapshot the original shell env — it should always take priority over\n // whatever a file sets (so injected/production env wins over dev defaults).\n const shellEnv = {...process.env};\n\n const hasDotEnv = fs.existsSync(dotEnvPath);\n const hasEnvCmdrc = fs.existsSync(envCmdrcPath);\n\n for (const notice of envDeprecationNotices({hasEnvCmdrc, hasDotEnv})) {\n console.warn(chalk.yellow(notice));\n }\n\n if (hasDotEnv) {\n // Native flat-file loader (Node 20.12+). Populates process.env from `.env`.\n process.loadEnvFile(dotEnvPath);\n } else if (hasEnvCmdrc) {\n await loadEnvCmdrc(envCmdrcPath, environmentNames);\n } else {\n console.warn(\n 'No .env or .env-cmdrc.json found in this folder — relying on the ambient environment.',\n );\n }\n\n // Re-apply shell env so it always wins over file values.\n process.env = {...process.env, ...shellEnv};\n process.env.ENV_VARS_LOADED = 'true';\n};\n\n/**\n * What to tell an app about where its environment came from.\n *\n * `.env-cmdrc.json` is still read when it is the only file present, so no app\n * breaks today. But it is the only reason `--env` exists, and both are going\n * away.\n *\n * The case worth shouting about is an app holding both files: `.env` wins, so\n * the profile file and every `--env` name passed with it do nothing. That is\n * the intended migration path, but it is invisible from the outside — values\n * an app still believes it is getting from a profile are simply absent.\n *\n * Pure and exported so the messages can be asserted without a chdir.\n */\nexport const envDeprecationNotices = (sources: {\n hasEnvCmdrc: boolean;\n hasDotEnv: boolean;\n}): string[] => {\n if (!sources.hasEnvCmdrc) return [];\n const notices = [\n '.env-cmdrc.json is deprecated and will be removed in a future major release.',\n ' Move its values into a flat `.env`, and supply anything that differs per ' +\n 'deployment from the environment itself. `--env` goes away with it.',\n ];\n if (sources.hasDotEnv) {\n notices.push(\n ' This app has BOTH files. `.env` wins, so `.env-cmdrc.json` — and any ' +\n '`--env` profile named with it — is being ignored entirely. Delete it once ' +\n 'the flat file is complete.',\n );\n }\n return notices;\n};\n\n/**\n * Legacy loader: reads `.env-cmdrc.json`, merges `_main` plus the profile(s)\n * named by `--env a,b` (default `development`). Kept for CN and existing apps\n * until they migrate to a flat `.env`.\n */\nconst loadEnvCmdrc = async (\n envCmdrcPath: string,\n environmentNames?: string[],\n): Promise<void> => {\n // env-cmd ships ESM; literal specifier is fine for Vite's analyzer.\n const {GetEnvVars} = await import('env-cmd');\n const vars = await GetEnvVars({envFile: {filePath: envCmdrcPath}});\n const environments = Object.keys(vars);\n\n if (environments.includes('_main')) {\n process.env = {...process.env, ...vars._main};\n }\n // Callers that parsed `--env` themselves pass the names in. Commands that\n // have not been converted yet still have their names scraped off argv.\n const requested = environmentNames?.length\n ? environmentNames\n : readEnvNamesFromArgv();\n if (requested.length) {\n requested.forEach((name) => {\n if (environments.includes(name)) {\n console.log('Environment: ' + name);\n process.env = {...process.env, ...vars[name]};\n } else {\n console.warn(\n `Environment ${name} not found in .env-cmdrc.json. Available: ${environments.join(', ')}`,\n );\n }\n });\n } else {\n process.env = {...process.env, ...vars.development};\n console.log('No environment specified, using development');\n }\n};\n\nconst readEnvNamesFromArgv = (): string[] => {\n const args = process.argv.slice(2);\n const envIndex = args.indexOf('--env');\n if (envIndex === -1) return [];\n return (args[envIndex + 1] || '').split(',').filter(Boolean);\n};\n\n/**\n * Discover and load the app's storage-config bootstrap file. Tries the\n * canonical `linked.backend.storage.{ts,js}` first, then legacy paths.\n * Returns whatever the file's default export evaluates to, or undefined\n * if no candidate exists.\n */\nexport async function loadBackendStorageConfig(): Promise<any> {\n const cwd = process.cwd();\n const candidates = [\n path.join(cwd, 'linked.backend.storage.ts'),\n path.join(cwd, 'linked.backend.storage.js'),\n path.join(cwd, 'backend-storage-config.ts'),\n path.join(cwd, 'backend-storage-config.js'),\n path.join(cwd, 'scripts', 'backend-storage-config.js'),\n path.join(cwd, 'scripts', 'backend-storage-config.ts'),\n path.join(cwd, 'scripts', 'storage-config.js'),\n ];\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n // Variable specifier is intentional — we discover the path at\n // runtime by probing the candidate list, so static analysis is\n // impossible.\n return import(/* @vite-ignore */ candidate);\n }\n }\n console.warn(\n chalk.yellow(\n '[linked.backend.storage] no linked.backend.storage.{ts,js} found at app root.',\n ),\n );\n return undefined;\n}\n\n/**\n * A local package directory found by {@link discoverLocalPackages}, together\n * with the facts that decide what can be done with it.\n *\n * The facts are recorded rather than filtered on, because the bug this type\n * exists to fix was a SILENT filter: `build-all` discovered only packages\n * carrying `linkedPackage: true` and printed nothing about the rest, so\n * `@_linked/maps` — a shipped dependency that simply never got the flag — was\n * dropped from a green build for as long as nobody counted the names.\n */\nexport interface LocalPackage extends PackageDetails {\n /** Where the walk found it. */\n source: 'workspace' | 'local-packages-dir';\n /** `linkedPackage: true`, or the legacy `lincd: true`. */\n isLinkedPackage: boolean;\n /** `linkedApp: true` — built by `linked build-app`, not `linked build`. */\n isApp: boolean;\n /** Has a `build` script of its own, which is what `build-all` invokes. */\n hasBuildScript: boolean;\n}\n\n/**\n * Directory holding localized checkouts (`semantu localize`). It is\n * deliberately in NO workspace glob — that is the whole point of the design,\n * since npm learning about these checkouts is what made their predecessor\n * under `packages/` a trap — so any walk of `workspaces` alone cannot see it\n * and has to be told about it separately.\n */\nexport const LOCAL_PACKAGES_DIR = 'packages-local';\n\n/**\n * Walk the app's `package.json` `workspaces` field and return every\n * workspace package that declares `\"linkedPackage\": true`.\n *\n * Lives here (not in cli-methods.ts) so consumers like LinkedServer can\n * import it without dragging the rest of the legacy cli-methods flow into\n * Vite's SSR module graph.\n *\n * Kept deliberately narrow: this is the set the dev resolver and the runtime\n * treat as linked packages. Commands that want every *buildable* local\n * package — flag or no flag, workspace or localized checkout — want\n * {@link discoverLocalPackages} instead.\n */\nexport function getLincdPackages(\n rootPath = process.cwd(),\n): PackageDetails[] {\n return discoverLocalPackages(rootPath, {includeLocalPackagesDir: false})\n .filter((pkg) => pkg.isLinkedPackage)\n .map(({path: packagePath, packageName}) => ({path: packagePath, packageName}));\n}\n\n/**\n * Every local package directory this app can see, whether or not it declares\n * `linkedPackage: true`.\n *\n * Two sources, because the workspace globs are not the whole picture any more:\n *\n * 1. the `workspaces` field (negations honoured — see ./workspace-globs.js);\n * 2. `packages-local/`, the localized checkouts, which is in no glob.\n *\n * Nothing is filtered out here. Callers decide what they can act on and are\n * expected to SAY what they skipped and why.\n */\nexport function discoverLocalPackages(\n rootPath = process.cwd(),\n options: {includeLocalPackagesDir?: boolean; localPackagesDir?: string} = {},\n): LocalPackage[] {\n const {includeLocalPackagesDir = true, localPackagesDir = LOCAL_PACKAGES_DIR} =\n options;\n\n let pack = getPackageJSON(rootPath);\n if (!pack || !pack.workspaces) {\n const originalRoot = rootPath;\n for (let i = 0; i <= 3; i++) {\n rootPath = path.join(originalRoot, ...Array(i).fill('..'));\n pack = getPackageJSON(rootPath);\n if (pack && pack.workspaces) break;\n }\n if (!pack || !pack.workspaces) {\n // Standalone apps (scaffolded with `linked create-app`) don't have\n // workspaces — expected. Fall back to the original root so a\n // `packages-local/` beside it is still found.\n rootPath = originalRoot;\n }\n }\n\n const res: LocalPackage[] = [];\n if (pack && pack.workspaces) {\n checkWorkspaces(rootPath, pack.workspaces, res);\n }\n if (includeLocalPackagesDir) {\n checkLocalPackagesDir(rootPath, localPackagesDir, res);\n }\n return res;\n}\n\n/**\n * Add every immediate subdirectory of `packages-local/` that holds a\n * `package.json`. No glob, no negations: the directory has no `workspaces`\n * entry to interpret, its contents are there because a developer localized\n * them on purpose, and each one is a plain checkout.\n */\nfunction checkLocalPackagesDir(\n rootPath: string,\n localPackagesDir: string,\n res: LocalPackage[],\n) {\n const dir = path.join(rootPath, localPackagesDir);\n if (!fs.existsSync(dir)) return;\n const already = new Set(res.map((pkg) => path.resolve(pkg.path)));\n for (const entry of fs.readdirSync(dir)) {\n if (entry.startsWith('.')) continue;\n const packagePath = path.join(dir, entry);\n if (!fs.statSync(packagePath).isDirectory()) continue;\n // A checkout that some glob already picked up must not appear twice —\n // duplicates would be built twice and counted twice.\n if (already.has(path.resolve(packagePath))) continue;\n addPackage(packagePath, 'local-packages-dir', res);\n }\n}\n\nfunction checkWorkspaces(rootPath: string, workspaces: any, res: LocalPackage[]) {\n // Negated entries (\"!packages/core\") are excluded the way npm excludes them\n // — including from the exact-path branch below, which npm also subjects to\n // them. See ./workspace-globs.js.\n const {patterns, negatedPatterns} = parseWorkspacePatterns(workspaces);\n const checkUnlessNegated = (packagePath: string) => {\n const rel = path.relative(rootPath, packagePath).split(path.sep).join('/');\n if (isWorkspacePathNegated(rel, negatedPatterns)) return;\n checkPackagePath(rootPath, packagePath, res);\n };\n patterns.forEach((workspace: string) => {\n const workspacePath = path.join(rootPath, workspace.replace('/*', ''));\n if (workspace.indexOf('/*') !== -1) {\n if (fs.existsSync(workspacePath)) {\n const folders = fs.readdirSync(workspacePath);\n folders.forEach((folder: string) => {\n if (folder !== './' && folder !== '../') {\n checkUnlessNegated(path.join(workspacePath, folder));\n }\n });\n }\n } else {\n checkUnlessNegated(workspacePath);\n }\n });\n}\n\nfunction checkPackagePath(rootPath: string, packagePath: string, res: LocalPackage[]) {\n const packageJsonPath = path.join(packagePath, 'package.json');\n if (!fs.existsSync(packageJsonPath)) return;\n const pack = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n if (pack && pack.workspaces) {\n checkWorkspaces(packagePath, pack.workspaces, res);\n } else if (pack) {\n addPackage(packagePath, 'workspace', res, pack);\n }\n}\n\nfunction addPackage(\n packagePath: string,\n source: LocalPackage['source'],\n res: LocalPackage[],\n packageJson?: any,\n) {\n const pack = packageJson ?? getPackageJSON(packagePath);\n if (!pack || !pack.name) return;\n res.push({\n path: packagePath,\n packageName: pack.name,\n source,\n // `lincd: true` is the pre-rename spelling of the same flag and is still\n // honoured by `linked build-package`; honouring it here too keeps the two\n // from disagreeing about what a linked package is.\n isLinkedPackage: pack.linkedPackage === true || pack.lincd === true,\n isApp: pack.linkedApp === true,\n hasBuildScript: !!pack.scripts?.build,\n });\n}\n\n/**\n * Filters packages to only include those in the dependency tree of the app root\n */\nfunction filterPackagesByDependencyTree(\n allPackages: Map<string, PackageDetails>,\n appRootPath: string,\n): Map<string, PackageDetails> {\n const appPackageJson = getPackageJSON(appRootPath);\n if (!appPackageJson) {\n return allPackages;\n }\n\n const relevantPackages = new Map<string, PackageDetails>();\n const packagesToCheck = new Set<string>();\n\n // Start with direct dependencies from app root\n if (appPackageJson.dependencies) {\n Object.keys(appPackageJson.dependencies).forEach((dep) => {\n if (allPackages.has(dep)) {\n packagesToCheck.add(dep);\n }\n });\n }\n\n // Recursively add dependencies\n const processedPackages = new Set<string>();\n\n while (packagesToCheck.size > 0) {\n const packageName = Array.from(packagesToCheck)[0];\n packagesToCheck.delete(packageName);\n\n if (processedPackages.has(packageName)) {\n continue;\n }\n\n processedPackages.add(packageName);\n const packageDetails = allPackages.get(packageName);\n\n if (packageDetails) {\n relevantPackages.set(packageName, packageDetails);\n\n // Get this package's dependencies\n const packageJson = getPackageJSON(packageDetails.path);\n if (packageJson && packageJson.dependencies) {\n Object.keys(packageJson.dependencies).forEach((dep) => {\n if (allPackages.has(dep) && !processedPackages.has(dep)) {\n packagesToCheck.add(dep);\n }\n });\n }\n }\n }\n\n return relevantPackages;\n}\n\n/** A package `build-all` found but will not build, and why not. */\nexport interface SkippedPackage {\n packageName: string;\n path: string;\n reason: string;\n}\n\n/** What `build-all` found, and what it decided to do with each package. */\nexport interface BuildAllPlan {\n build: Map<string, PackageDetails>;\n skipped: SkippedPackage[];\n}\n\n/**\n * Decide what `build-all` builds.\n *\n * Every discovered package lands in exactly one of `build` or `skipped`, and\n * `skipped` carries a reason — because the failure mode this replaces was not\n * a narrow scan, it was a SILENT one. `@_linked/maps` is a shipped Create Now\n * dependency that never got `linkedPackage: true`; `build-all` dropped it and\n * printed nothing, so a build covering half the workspace exited 0 and people\n * acted on it. A skip nobody can see is worse than a failure.\n *\n * What counts as buildable is a CAPABILITY, not a declaration: `build-all`\n * invokes each package's own `build` script, so anything with one can be\n * built whether or not it carries the flag. The flag is still reported when\n * it is missing, since the dev resolver and `linked build` do require it.\n */\nexport function planBuildAll(rootPath = './', appRoot?: string): BuildAllPlan {\n const build = new Map<string, PackageDetails>();\n const skipped: SkippedPackage[] = [];\n const buildable: LocalPackage[] = [];\n\n for (const pkg of discoverLocalPackages(rootPath)) {\n const detail = {path: pkg.path, packageName: pkg.packageName};\n // Packages reached through a `../` workspace glob live outside this\n // repository; building them was never in scope for `build-all`.\n if (pkg.path.indexOf('../') !== -1 || pkg.path.indexOf('..\\\\') !== -1) {\n skipped.push({...detail, reason: 'outside this repository'});\n } else if (pkg.isApp) {\n skipped.push({\n ...detail,\n reason: 'is a linked app — build it with `linked build-app`',\n });\n } else if (!pkg.hasBuildScript) {\n skipped.push({...detail, reason: 'has no `build` script'});\n } else {\n buildable.push(pkg);\n build.set(pkg.packageName, detail);\n }\n }\n\n // Narrow to what this app actually depends on, if we are inside one.\n if (appRoot) {\n const appPackageJson = getPackageJSON(appRoot);\n const isAppWithLinkedDeps =\n appPackageJson &&\n appPackageJson.lincd !== true &&\n appPackageJson.dependencies &&\n Object.keys(appPackageJson.dependencies).some((dep) => build.has(dep));\n\n if (isAppWithLinkedDeps) {\n const inTree = filterPackagesByDependencyTree(build, appRoot);\n for (const pkg of buildable) {\n if (inTree.has(pkg.packageName)) continue;\n build.delete(pkg.packageName);\n skipped.push({\n path: pkg.path,\n packageName: pkg.packageName,\n reason: `not in ${appPackageJson.name || 'this app'}'s dependency tree`,\n });\n }\n }\n }\n\n return {build, skipped};\n}\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"css-loader.mjs","sourceRoot":"","sources":["../../../src/loaders/css-loader.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"css-loader.mjs","sourceRoot":"","sources":["../../../src/loaders/css-loader.mts"],"names":[],"mappings":"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","sourcesContent":["import createLoader from 'create-esm-loader';\n// import parseCSS from 'css-parse';\nimport {generateScopedName, generateScopedNameProduction} from '../utils.js';\n\nconst cssLoader = {\n resolve(specifier, opts) {\n //check if the url is css\n if (specifier.endsWith('.css')) {\n // console.log(`##LOADER option resolve ${specifier}`);\n //and not a node_module (because we don't need to process node_modules)\n if (specifier.startsWith('.')) {\n // console.log(`##LOADER resolve ${specifier} - ${specifier.startsWith('.') ? 'local' : 'node_module'}`);\n let {parentURL} = opts;\n let url = new URL(specifier, parentURL).href;\n return {url};\n } else {\n // console.log(`##LOADER NOT RESOLVING ${specifier}`);\n }\n }\n },\n format(url, opts) {\n //check if the url is css and not a node_module\n if (url.endsWith('.css')) {\n // console.log(`##LOADER format ${url} - ${url.startsWith('.') ? 'local' : 'node_module'}`);\n\n return {format: 'module'};\n }\n },\n transform(source, opts) {\n const {url} = opts;\n //check if the url is css and not a node_module\n if (url.endsWith('.css')) {\n // console.log(`##LOADER transform ${url} - ${url.startsWith('.') ? 'local' : 'node_module'}`);\n //if yes, convert the CSS source to a JSON object with original selectors as keys\n //and the converted class names as values\n let cssClassesObject = parseCssToObject(String(source), opts.url);\n let finalSource = JSON.stringify(cssClassesObject, null, 2);\n return {source: `export default ${finalSource};`};\n }\n },\n};\n\nfunction parseCssToObject(rawSource: string, filename) {\n const output = {};\n let myResults = rawSource.match(/\\.[a-zA-Z_]{1}[\\w]+[\\s:]/g);\n if (myResults) {\n myResults\n .map((result) => {\n return result.replace(/[\\.\\s:]/g, '');\n })\n .forEach((selector) => {\n let scopedClassName;\n if (process.env.NODE_ENV === 'production') {\n scopedClassName = generateScopedNameProduction(selector, filename);\n } else {\n scopedClassName = generateScopedName(selector, filename);\n }\n output[selector] = scopedClassName;\n });\n }\n // console.log(myResults);\n // for (const rule of parseCSS(rawSource).stylesheet.rules) {\n // if(rule.selectors)\n // {\n // let selector = rule['selectors'].at(-1); // Get right-most in the selector rule: `.Bar` in `.Foo > .Bar {…}`\n // if (selector[0] !== '.') break; // only care about classes\n //\n // selector = selector\n // .substring(1) // Skip the initial `.`\n // .match(/(\\w+)/)[1]; // Get only the classname: `Qux` in `.Qux[type=\"number\"]`\n //\n // output[selector] = selector;//getClassStyles(rule['declarations']);\n // // : selector;\n // }\n // }\n\n return output;\n}\n\nfunction getClassStyles(declarations) {\n const styles = {};\n\n for (const declaration of declarations) {\n styles[declaration['property']] = declaration['value'];\n }\n\n return styles;\n}\n//@ts-ignore\nexport const {resolve, load} = await createLoader(cssLoader);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ts-loader.mjs","sourceRoot":"","sources":["../../../src/loaders/ts-loader.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ts-loader.mjs","sourceRoot":"","sources":["../../../src/loaders/ts-loader.mts"],"names":[],"mappings":"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","sourcesContent":["// Node ESM loader for .ts / .tsx / .mts / .cts. Transforms via esbuild\n// with `experimentalDecorators: true` forced on — @_linked/core's\n// @literalProperty / @objectProperty / @linkedShape ship the legacy\n// signature `(target, propertyKey, descriptor)`, so the loader has to\n// produce legacy `__decorate(...)` calls. tsx (which we previously\n// relied on) ignores experimentalDecorators since esbuild's default\n// follows the TC39 standard decorator proposal — that mismatch silently\n// broke decorator-based property registration in user scripts.\nimport {readFileSync, existsSync, statSync} from 'node:fs';\nimport {fileURLToPath, pathToFileURL} from 'node:url';\nimport path from 'node:path';\nimport {transformSync} from 'esbuild';\n\n// Read the user's tsconfig once at boot. We re-use it for every TS file\n// we transform so a single source of truth (the user app's tsconfig)\n// drives target / jsx / paths / etc.\nconst userTsconfigPath = path.join(process.cwd(), 'tsconfig.json');\nlet userTsconfigRaw: any = {compilerOptions: {}};\nif (existsSync(userTsconfigPath)) {\n try {\n userTsconfigRaw = JSON.parse(readFileSync(userTsconfigPath, 'utf8'));\n userTsconfigRaw.compilerOptions = userTsconfigRaw.compilerOptions ?? {};\n } catch {\n // Fall back to empty config if parsing fails — esbuild still works.\n }\n}\n// Force legacy decorator emit regardless of what the user's tsconfig says.\nuserTsconfigRaw.compilerOptions.experimentalDecorators = true;\nconst tsconfigRaw = JSON.stringify(userTsconfigRaw);\n\nconst TS_EXT = /\\.(tsx?|mts|cts)$/;\nconst TS_RESOLUTION_EXTS = ['.ts', '.tsx', '.mts', '.cts', '.js', '.mjs', '.cjs'];\n/** Just the TypeScript ones, for mapping a `.js` specifier onto its source. */\nconst TS_EXTS_ONLY = ['.ts', '.tsx', '.mts', '.cts'];\n\n// Node's default ESM resolver requires explicit extensions on relative\n// specifiers. App code (and the cli's user-app imports) routinely omits\n// them — tsx used to backfill this, so we have to as well. We only\n// touch `./foo` / `../foo` style imports; bare specifiers go straight to\n// Node's resolver.\nexport async function resolve(\n specifier: string,\n context: any,\n nextResolve: (specifier: string, context: any) => Promise<any>,\n): Promise<any> {\n // Direct .ts/.tsx/.mts/.cts specifier (relative or absolute path).\n // Node's default ESM resolver doesn't accept these extensions, so we\n // short-circuit and let our `load` hook do the transform.\n if (TS_EXT.test(specifier)) {\n if (specifier.startsWith('file://')) {\n return {url: specifier, shortCircuit: true, format: 'module'};\n }\n if (path.isAbsolute(specifier)) {\n return {\n url: pathToFileURL(specifier).href,\n shortCircuit: true,\n format: 'module',\n };\n }\n if (specifier.startsWith('./') || specifier.startsWith('../')) {\n const parentUrl = context.parentURL;\n if (parentUrl) {\n const parentPath = fileURLToPath(parentUrl);\n const resolved = path.resolve(path.dirname(parentPath), specifier);\n return {\n url: pathToFileURL(resolved).href,\n shortCircuit: true,\n format: 'module',\n };\n }\n }\n }\n\n // A relative `./x.js` that has no `./x.js` on disk, written by TypeScript\n // source that means `./x.ts`. This is the NodeNext convention — TS requires\n // the `.js` spelling in emitted-ESM code and rewrites nothing — and it is also\n // what a self-referential ontology namespace import looks like\n // (`import * as _this from './vocab.js'`). Without this, such a module can\n // only be loaded from a built `lib/`, never from source.\n if (\n (specifier.startsWith('./') || specifier.startsWith('../')) &&\n /\\.(js|mjs|cjs)$/.test(specifier)\n ) {\n const parentUrl = context.parentURL;\n if (parentUrl) {\n const parentPath = fileURLToPath(parentUrl);\n const asWritten = path.resolve(path.dirname(parentPath), specifier);\n if (!existsSync(asWritten)) {\n const withoutExt = asWritten.replace(/\\.(js|mjs|cjs)$/, '');\n for (const candidate of TS_EXTS_ONLY.map((e) => withoutExt + e)) {\n if (existsSync(candidate) && statSync(candidate).isFile()) {\n return {\n url: pathToFileURL(candidate).href,\n shortCircuit: true,\n format: 'module',\n };\n }\n }\n }\n }\n }\n\n // Extension-less relative specifier — backfill the extension by probing\n // the disk. App code routinely omits `.ts`/`.tsx` on intra-app imports.\n // `path.extname` treats any text after the last dot as an extension, so\n // `./tailwind.config` looks \"extended\" by `.config`; only treat the\n // specifier as resolved when the suffix matches a known JS/TS ext.\n const ext = path.extname(specifier);\n const knownExt = TS_RESOLUTION_EXTS.includes(ext);\n if (\n (specifier.startsWith('./') || specifier.startsWith('../')) &&\n !knownExt\n ) {\n const parentUrl = context.parentURL;\n if (parentUrl) {\n const parentPath = fileURLToPath(parentUrl);\n const resolvedBase = path.resolve(path.dirname(parentPath), specifier);\n const candidates = [\n ...TS_RESOLUTION_EXTS.map((ext) => resolvedBase + ext),\n ...TS_RESOLUTION_EXTS.map((ext) =>\n path.join(resolvedBase, 'index' + ext),\n ),\n ];\n for (const candidate of candidates) {\n if (existsSync(candidate) && statSync(candidate).isFile()) {\n return {\n url: pathToFileURL(candidate).href,\n shortCircuit: true,\n format: 'module',\n };\n }\n }\n }\n }\n\n return nextResolve(specifier, context);\n}\n\nexport async function load(\n url: string,\n context: any,\n nextLoad: (url: string, context: any) => Promise<any>,\n): Promise<any> {\n if (!TS_EXT.test(url)) {\n return nextLoad(url, context);\n }\n const filePath = fileURLToPath(url);\n const source = readFileSync(filePath, 'utf8');\n const isTsx = url.endsWith('.tsx');\n const {code} = transformSync(source, {\n loader: isTsx ? 'tsx' : 'ts',\n format: 'esm',\n target: 'es2022',\n sourcefile: filePath,\n sourcemap: 'inline',\n tsconfigRaw,\n // Honour `\"jsx\": \"react-jsx\"` from tsconfig — esbuild doesn't\n // always pick it up via tsconfigRaw, leaving SSR with \"React is\n // not defined\". Forcing `automatic` injects the jsx-runtime import.\n jsx: 'automatic',\n // Keep `import x from './data.json' with { type: 'json' }` syntax in\n // the output — Node 22+ requires the attribute on JSON imports and\n // esbuild strips it by default when downleveling below esnext.\n supported: {'import-attributes': true},\n });\n return {\n format: 'module',\n source: code,\n shortCircuit: true,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,sCAAsC;AACtC,2BAA2B;AAC3B,6BAA6B;AAC7B,yDAAyD;AACzD,6CAA6C;AAC7C,0CAA0C;AAC1C,sCAAsC;AACtC,gEAAgE;AAChE,EAAE;AACF,oCAAoC;AACpC,2BAA2B;AAC3B,EAAE;AACF,iCAAiC;AACjC,wCAAwC;AACxC,yCAAyC;AACzC,sBAAsB;AACtB,kBAAkB;AAClB,aAAa;AACb,oBAAoB;AACpB,OAAO;AACP,yCAAyC;AACzC,wDAAwD;AACxD,EAAE;AACF,0BAA0B;AAC1B,0BAA0B;AAC1B,wBAAwB;AACxB,6BAA6B;AAC7B,cAAc;AACd,UAAU;AACV,aAAa;AACb,sCAAsC;AACtC,MAAM;AACN,EAAE;AACF,2DAA2D;AAC3D,+DAA+D;AAC/D,yCAAyC;AACzC,0DAA0D;AAC1D,qDAAqD;AACrD,4BAA4B;AAC5B,6BAA6B;AAC7B,wDAAwD;AACxD,6EAA6E;AAC7E,YAAY;AACZ,UAAU;AACV,MAAM;AACN,yBAAyB;AACzB,IAAI;AACJ,EAAE;AACF,gEAAgE;AAChE,wEAAwE;AACxE,EAAE;AACF,qJAAqJ;AACrJ,iKAAiK;AACjK,wBAAwB;AACxB,EAAE;AACF,oDAAoD;AACpD,0CAA0C;AAC1C,iBAAiB;AACjB,qCAAqC;AACrC,SAAS;AACT,QAAQ;AACR,SAAS;AACT,uCAAuC;AACvC,8CAA8C;AAC9C,QAAQ;AACR,qDAAqD;AACrD,4EAA4E;AAC5E,aAAa;AACb,YAAY;AACZ,6IAA6I;AAC7I,gCAAgC;AAChC,SAAS;AACT,gCAAgC;AAChC,MAAM;AACN,EAAE;AACF,2BAA2B;AAC3B,oDAAoD;AACpD,EAAE;AACF,0BAA0B;AAC1B,uEAAuE;AACvE,wFAAwF;AACxF,EAAE;AACF,iBAAiB;AACjB,uBAAuB;AACvB,mBAAmB;AACnB,wBAAwB;AACxB,oBAAoB;AACpB,8BAA8B;AAC9B,0BAA0B;AAC1B,0EAA0E;AAC1E,gEAAgE;AAChE,4BAA4B;AAC5B,uBAAuB;AACvB,+DAA+D;AAC/D,wCAAwC;AACxC,gDAAgD;AAChD,0DAA0D;AAC1D,sBAAsB;AACtB,wCAAwC;AACxC,kCAAkC;AAClC,4BAA4B;AAC5B,gDAAgD;AAChD,mBAAmB;AACnB,kCAAkC;AAClC,+BAA+B;AAC/B,uBAAuB;AACvB,4CAA4C;AAC5C,gCAAgC;AAChC,8FAA8F;AAC9F,qBAAqB;AACrB,0BAA0B;AAC1B,kBAAkB;AAClB,0EAA0E;AAC1E,kDAAkD;AAClD,mFAAmF;AACnF,2EAA2E;AAC3E,oCAAoC;AACpC,oFAAoF;AACpF,kEAAkE;AAClE,yBAAyB;AACzB,kFAAkF;AAClF,kEAAkE;AAClE,kBAAkB;AAClB,EAAE;AACF,oDAAoD;AACpD,gFAAgF;AAChF,8CAA8C;AAC9C,kCAAkC;AAClC,6CAA6C;AAC7C,mBAAmB;AACnB,+EAA+E;AAC/E,mDAAmD;AACnD,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB;AAChB,WAAW;AACX,SAAS;AACT,EAAE;AACF,iHAAiH;AACjH,4BAA4B;AAC5B,MAAM;AACN,EAAE;AACF,wDAAwD;AACxD,kBAAkB;AAClB,8CAA8C;AAC9C,OAAO;AACP,+DAA+D;AAC/D,mEAAmE;AACnE,uCAAuC;AACvC,QAAQ;AACR,EAAE;AACF,yBAAyB;AACzB,KAAK"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,sCAAsC;AACtC,2BAA2B;AAC3B,6BAA6B;AAC7B,yDAAyD;AACzD,6CAA6C;AAC7C,0CAA0C;AAC1C,sCAAsC;AACtC,gEAAgE;AAChE,EAAE;AACF,oCAAoC;AACpC,2BAA2B;AAC3B,EAAE;AACF,iCAAiC;AACjC,wCAAwC;AACxC,yCAAyC;AACzC,sBAAsB;AACtB,kBAAkB;AAClB,aAAa;AACb,oBAAoB;AACpB,OAAO;AACP,yCAAyC;AACzC,wDAAwD;AACxD,EAAE;AACF,0BAA0B;AAC1B,0BAA0B;AAC1B,wBAAwB;AACxB,6BAA6B;AAC7B,cAAc;AACd,UAAU;AACV,aAAa;AACb,sCAAsC;AACtC,MAAM;AACN,EAAE;AACF,2DAA2D;AAC3D,+DAA+D;AAC/D,yCAAyC;AACzC,0DAA0D;AAC1D,qDAAqD;AACrD,4BAA4B;AAC5B,6BAA6B;AAC7B,wDAAwD;AACxD,6EAA6E;AAC7E,YAAY;AACZ,UAAU;AACV,MAAM;AACN,yBAAyB;AACzB,IAAI;AACJ,EAAE;AACF,gEAAgE;AAChE,wEAAwE;AACxE,EAAE;AACF,qJAAqJ;AACrJ,iKAAiK;AACjK,wBAAwB;AACxB,EAAE;AACF,oDAAoD;AACpD,0CAA0C;AAC1C,iBAAiB;AACjB,qCAAqC;AACrC,SAAS;AACT,QAAQ;AACR,SAAS;AACT,uCAAuC;AACvC,8CAA8C;AAC9C,QAAQ;AACR,qDAAqD;AACrD,4EAA4E;AAC5E,aAAa;AACb,YAAY;AACZ,6IAA6I;AAC7I,gCAAgC;AAChC,SAAS;AACT,gCAAgC;AAChC,MAAM;AACN,EAAE;AACF,2BAA2B;AAC3B,oDAAoD;AACpD,EAAE;AACF,0BAA0B;AAC1B,uEAAuE;AACvE,wFAAwF;AACxF,EAAE;AACF,iBAAiB;AACjB,uBAAuB;AACvB,mBAAmB;AACnB,wBAAwB;AACxB,oBAAoB;AACpB,8BAA8B;AAC9B,0BAA0B;AAC1B,0EAA0E;AAC1E,gEAAgE;AAChE,4BAA4B;AAC5B,uBAAuB;AACvB,+DAA+D;AAC/D,wCAAwC;AACxC,gDAAgD;AAChD,0DAA0D;AAC1D,sBAAsB;AACtB,wCAAwC;AACxC,kCAAkC;AAClC,4BAA4B;AAC5B,gDAAgD;AAChD,mBAAmB;AACnB,kCAAkC;AAClC,+BAA+B;AAC/B,uBAAuB;AACvB,4CAA4C;AAC5C,gCAAgC;AAChC,8FAA8F;AAC9F,qBAAqB;AACrB,0BAA0B;AAC1B,kBAAkB;AAClB,0EAA0E;AAC1E,kDAAkD;AAClD,mFAAmF;AACnF,2EAA2E;AAC3E,oCAAoC;AACpC,oFAAoF;AACpF,kEAAkE;AAClE,yBAAyB;AACzB,kFAAkF;AAClF,kEAAkE;AAClE,kBAAkB;AAClB,EAAE;AACF,oDAAoD;AACpD,gFAAgF;AAChF,8CAA8C;AAC9C,kCAAkC;AAClC,6CAA6C;AAC7C,mBAAmB;AACnB,+EAA+E;AAC/E,mDAAmD;AACnD,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB;AAChB,WAAW;AACX,SAAS;AACT,EAAE;AACF,iHAAiH;AACjH,4BAA4B;AAC5B,MAAM;AACN,EAAE;AACF,wDAAwD;AACxD,kBAAkB;AAClB,8CAA8C;AAC9C,OAAO;AACP,+DAA+D;AAC/D,mEAAmE;AACnE,uCAAuC;AACvC,QAAQ;AACR,EAAE;AACF,yBAAyB;AACzB,KAAK","sourcesContent":["// import {NamedNode} from 'lincd/models';\n// import {GetEnvVars} from 'env-cmd';\n// import path from 'path';\n// import fs from 'fs-extra';\n// import {createNameSpace} from 'lincd/utils/NameSpace';\n// import {Prefix} from 'lincd/utils/Prefix';\n// import {getPackageJSON} from './utils';\n// import {warn} from './cli-methods';\n// import {JSONLDWriter} from 'lincd-jsonld/utils/JSONLDWriter';\n//\n// function getLocalPackagePaths() {\n// let packagePaths = [];\n//\n// //add the APP package itself\n// let appPackagePath = process.cwd();\n// let appLincdPackagePath = path.join(\n// appPackagePath,\n// 'frontend',\n// 'src',\n// 'package.ts',\n// );\n// if (fs.existsSync(appPackagePath)) {\n// let packageJSON = getPackageJSON(appPackagePath);\n//\n// packagePaths.push([\n// packageJSON.name,\n// appPackagePath,\n// appLincdPackagePath,\n// true,\n// ]);\n// } else {\n// console.log('Not a LINCD app');\n// }\n//\n// //NOTE: we could also switch to checking 'workspaces'?\n// let packagesFolder = path.join(process.cwd(), 'packages');\n// if (fs.existsSync(packagesFolder)) {\n// let localPackages = fs.readdirSync(packagesFolder);\n// localPackages.forEach((packageFolderName) => {\n// packagePaths.push([\n// packageFolderName,\n// path.join(packagesFolder, packageFolderName),\n// path.join(packagesFolder, packageFolderName, 'lib', 'package.js'),\n// ]);\n// });\n// }\n// return packagePaths;\n// }\n//\n// export const buildMetadata = async (): Promise<string[]> => {\n// // require('@babel/register')({extensions: ['js', '.ts', '.tsx']});\n//\n// //NOTE: we can not rely on the LincdWebApp shape from lincd-server here, because that would make the initial build of all modules a lot trickier\n// //see, CLI needs to be built as one of the first things in order to build other things. So it cannot rely on lincd-server, which relies on 10 other packages\n// let app: NamedNode;\n//\n// //set the URL of the app as the URI of its node\n// let envVars: any = await GetEnvVars({\n// envFile: {\n// filePath: '.env-cmdrc.json',\n// },\n// });\n// if (\n// envVars[process.env.NODE_ENV] &&\n// envVars[process.env.NODE_ENV].SITE_ROOT\n// ) {\n// //get the site root of the current environment\n// app = NamedNode.getOrCreate(envVars[process.env.NODE_ENV].SITE_ROOT);\n// } else {\n// warn(\n// 'Cannot find environment variable SITE_ROOT. Make sure SITE_ROOT is set (likely in .env-cmdrc.json) for the current environment: ' +\n// process.env.NODE_ENV,\n// );\n// app = NamedNode.create();\n// }\n//\n// let updatedPaths = [];\n// var localPackagePaths = getLocalPackagePaths();\n//\n// //prepare output path\n// let metadataFolder = path.join(process.cwd(), 'data', 'metadata');\n// await fs.ensureDir(metadataFolder); //{recursive:true} but not needed with fs-extra\n//\n// for (const [\n// packageCodeName,\n// packagePath,\n// lincdPackagePath,\n// isAppPackage,\n// ] of localPackagePaths) {\n// let errors = false;\n// //TODO: check if this resolves, if not, skip it (for initial setup)\n// import('lincd-modules/scripts/package-metadata.js').then(\n// async (script) => {\n// await script\n// .getPackageMetadata(packagePath, lincdPackagePath)\n// .then(async (response) => {\n// if (response.errors.length > 0) {\n// // console.log(JSON.stringify(response));\n// warn(\n// 'Error processing ' +\n// packagePath +\n// ':\\n' +\n// response.errors.join('\\n'),\n// );\n// // throw response\n// errors = true;\n// } else {\n// if (!response.packageUri) {\n// console.warn(\n// 'No package URI from meta data. Not building meta data for this package',\n// );\n// return;\n// }\n// let pkgNode = NamedNode.getOrCreate(response.packageUri);\n// //connect the packages to the app\n// let lincdApp = createNameSpace('http://lincd.org/ont/lincd-app/');\n// Prefix.add('lincdApp', 'http://lincd.org/ont/lincd-app/');\n// if (isAppPackage) {\n// //Note: this needs to match with LincdWebApp.ownPackage accessor;\n// app.overwrite(lincdApp('ownPackage'), pkgNode);\n// } else {\n// //Note: this needs to match with LincdWebApp.packages accessor;\n// app.set(lincdApp('maintainsPackage'), pkgNode);\n// }\n//\n// //write this graph to a jsonld file\n// let packageMetaData = JSON.stringify(response.result, null, 2);\n// let metadataFile = path.join(\n// metadataFolder,\n// packageCodeName + '.json',\n// );\n// await fs.writeFile(metadataFile, packageMetaData).then(() => {\n// updatedPaths.push(metadataFile);\n// });\n// }\n// });\n// },\n// );\n//\n// //enable this when testing if you don't want to continue with building other metadata when an errors occur\n// // if (errors) break;\n// }\n//\n// let packageMetaData = await JSONLDWriter.stringify(\n// app as any,\n// process.env.NODE_ENV === 'development',\n// );\n// let metadataFile = path.join(metadataFolder, '_app.json');\n// await fs.writeFile(metadataFile, packageMetaData).then(() => {\n// updatedPaths.push(metadataFile);\n// });\n//\n// return updatedPaths;\n// };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"package-manifest.js","sourceRoot":"","sources":["../../src/package-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,WAAgB,EAAW,EAAE;;IAC/D,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAA,WAAW,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;IACzD,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,CACzE,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"package-manifest.js","sourceRoot":"","sources":["../../src/package-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,WAAgB,EAAW,EAAE;;IAC/D,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAA,WAAW,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;IACzD,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,CACzE,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/**\n * Whether a package actually publishes a CommonJS build.\n *\n * A package exposes CJS by pointing `main` at it or by declaring a `require`\n * condition in its `exports` map. Most do neither — they are `\"type\": \"module\"`\n * with an `import`-only exports map — and yet a second full `tsc` pass ran for\n * them and copied output into `lib/cjs` that nothing could ever resolve.\n *\n * Keyed on the manifest rather than on the presence of `tsconfig-cjs.json`, so\n * a package opts out by describing itself honestly rather than by deleting a\n * file.\n */\nexport const packagePublishesCjs = (packageJson: any): boolean => {\n if (!packageJson) return false;\n if (typeof packageJson.main === 'string' && packageJson.main.includes('cjs')) {\n return true;\n }\n const entries = Object.values(packageJson.exports ?? {});\n return entries.some(\n (entry: any) => entry && typeof entry === 'object' && 'require' in entry,\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"lincd-tailwind-sources.js","sourceRoot":"","sources":["../../../src/plugins/lincd-tailwind-sources.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EACL,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,6BAA6B;IAC7B,cAAc;IACd,YAAY;IACV,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,iCAAiC;IACjC,0CAA0C;IAE1C,qCAAqC;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACtE,CAAC;IAEF,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACpD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE;QACxC,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,2BAA2B,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAE/C,OAAO,OAAO,CAAC;IACf,aAAa;IACb,WAAW;IACX,0CAA0C;IAC1C,sBAAsB;IACtB,KAAK;IACP,MAAM;AACR,CAAC,CAAA;AACD,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"lincd-tailwind-sources.js","sourceRoot":"","sources":["../../../src/plugins/lincd-tailwind-sources.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EACL,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,6BAA6B;IAC7B,cAAc;IACd,YAAY;IACV,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,iCAAiC;IACjC,0CAA0C;IAE1C,qCAAqC;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACtE,CAAC;IAEF,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACpD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE;QACxC,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,2BAA2B,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAE/C,OAAO,OAAO,CAAC;IACf,aAAa;IACb,WAAW;IACX,0CAA0C;IAC1C,sBAAsB;IACtB,KAAK;IACP,MAAM;AACR,CAAC,CAAA;AACD,eAAe,eAAe,CAAC","sourcesContent":["//@ts-ignore\nimport plugin from 'tailwindcss/plugin';\nimport path from 'path';\nimport fs from 'fs';\nimport {\n getLINCDDependencies,\n} from '../utils.js';\n\n\nconst getLincdSources = () => {\n // return plugin.withOptions(\n // () => {},\n // () => {\n const sources: string[] = [];\n\n // Always include your app source\n // sources.push('./src/**/*.{js,ts,tsx}');\n\n // Now dynamically add LINCD packages\n const packageJson = JSON.parse(\n fs.readFileSync(path.resolve(process.cwd(), 'package.json'), 'utf-8')\n );\n\n const lincdDeps = getLINCDDependencies(packageJson);\n lincdDeps.forEach(([name, packagePath]) => {\n sources.push(`${packagePath}/lib/**/*.{js,ts,tsx,mjs}`);\n });\n\n // console.log('sources:', sources.join(\"\\n\"));\n\n return sources;\n // return {};\n // return {\n // // Extend Tailwind's `content` config\n // content: sources,\n // };\n // });\n}\nexport default getLincdSources;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind.config.js","sourceRoot":"","sources":["../../src/tailwind.config.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,qCAAqC,CAAC;AAClE,8CAA8C;AAE9C,yDAAyD;AACzD,yDAAyD;AACzD,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,CAAC,wBAAwB,EAAE,GAAG,eAAe,EAAE,CAAC;IACzD,KAAK,EAAE;QACL,MAAM,EAAE,EAAE;KACX;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"tailwind.config.js","sourceRoot":"","sources":["../../src/tailwind.config.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,qCAAqC,CAAC;AAClE,8CAA8C;AAE9C,yDAAyD;AACzD,yDAAyD;AACzD,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,CAAC,wBAAwB,EAAE,GAAG,eAAe,EAAE,CAAC;IACzD,KAAK,EAAE;QACL,MAAM,EAAE,EAAE;KACX;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import getLincdSources from './plugins/lincd-tailwind-sources.js';\n// console.log('✅ Loaded tailwind.config.js');\n\n// This config is used via @config directive in theme.css\n// It provides content paths for Tailwind class detection\nconst config = {\n content: ['./src/**/*.{js,ts,tsx}', ...getLincdSources()],\n theme: {\n extend: {},\n },\n};\n\nexport default config;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"esmSpecifiers.js","sourceRoot":"","sources":["../../../src/utils/esmSpecifiers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esmSpecifiers.js","sourceRoot":"","sources":["../../../src/utils/esmSpecifiers.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\nimport {glob} from 'glob';\nimport path from 'path';\nimport ts from 'typescript';\n\n// Specifiers Node already resolves as written.\nconst RESOLVED_EXTENSIONS = new Set(['.js', '.mjs', '.cjs', '.json']);\n\nconst isRelative = (spec: string) =>\n spec === '.' ||\n spec === '..' ||\n spec.startsWith('./') ||\n spec.startsWith('../');\n\nconst isFile = (file: string) => {\n try {\n return fs.statSync(file).isFile();\n } catch {\n return false;\n }\n};\n\n// A module exists at `<base>` when either the JS or its declaration is there:\n// a declaration-only emit still resolves, and TypeScript's node16/nodenext\n// resolution maps the `.js` specifier we write back onto the `.d.ts`.\nconst moduleExists = (\n base: string,\n {allowDeclarationOnly}: {allowDeclarationOnly: boolean},\n) => isFile(base + '.js') || (allowDeclarationOnly && isFile(base + '.d.ts'));\n\n// Returns the rewritten specifier, the same specifier when it needs no change,\n// or null when an extensionless specifier cannot be resolved.\n// `allowDeclarationOnly` is set while rewriting a `.d.ts`, where a sibling\n// `.d.ts` with no `.js` (a types-only module) is a valid target.\nconst resolveSpecifier = (\n spec: string,\n fromDir: string,\n allowDeclarationOnly: boolean,\n): string | null => {\n if (!isRelative(spec) || RESOLVED_EXTENSIONS.has(path.extname(spec))) {\n return spec;\n }\n // './dir/' -> './dir'. A trailing slash, like '.' and '..', explicitly names\n // a directory, so such a specifier must never resolve to a sibling '<x>.js'.\n const base = spec.replace(/\\/+$/, '');\n const target = path.resolve(fromDir, base);\n const namesDirectory = base !== spec || /(^|\\/)\\.\\.?$/.test(base);\n const options = {allowDeclarationOnly};\n // A file wins over a directory of the same name: Node's own resolution of\n // './x' inside an ESM package likewise never falls back to './x/index.js',\n // and tsc emits './x' for a source file './x.ts' sitting next to an './x/'.\n if (!namesDirectory && moduleExists(target, options)) {\n return base + '.js';\n }\n if (moduleExists(path.join(target, 'index'), options)) {\n return base + '/index.js';\n }\n // Another existing file (e.g. './styles.css') is left as written.\n return isFile(target) ? spec : null;\n};\n\n// The string literals of static imports/exports (including side-effect\n// imports), of `import()` calls with a literal argument, and — in declarations —\n// of `import('./x')` types. Nested nodes are visited, so imports and exports\n// inside a `declare module` body are covered as well.\n// A template literal with substitutions — `import(`./${name}`)` — is not a\n// literal specifier and is deliberately skipped: its target is only known at\n// runtime, so it is neither rewritten nor reported as unresolved.\nconst collectSpecifiers = (source: ts.SourceFile): ts.StringLiteral[] => {\n const found: ts.StringLiteral[] = [];\n const visit = (node: ts.Node) => {\n if (\n (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) &&\n node.moduleSpecifier &&\n ts.isStringLiteral(node.moduleSpecifier)\n ) {\n found.push(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 found.push(node.arguments[0] as ts.StringLiteral);\n } else if (\n // `type A = import('./x').B` and the same in `typeof import('./x')`.\n ts.isImportTypeNode(node) &&\n ts.isLiteralTypeNode(node.argument) &&\n ts.isStringLiteral(node.argument.literal)\n ) {\n found.push(node.argument.literal);\n } else if (\n // `import x = require('./y')`, which node16 declarations still emit.\n ts.isExternalModuleReference(node) &&\n ts.isStringLiteral(node.expression)\n ) {\n found.push(node.expression);\n }\n ts.forEachChild(node, visit);\n };\n visit(source);\n return found;\n};\n\nexport type RewriteResult = {\n /** Number of files rewritten. */\n changed: number;\n /** Specifiers left as written because no file matched, as `'<spec>' in <file>`. */\n unresolved: string[];\n};\n\n/**\n * Appends `.js` (or `/index.js`) to extensionless relative specifiers in emitted\n * ESM — in `.js` and in the `.d.ts` declarations beside them, so consumers on\n * TypeScript `node16`/`nodenext` resolution get valid declarations too.\n */\nexport async function rewriteExtensionlessImports(\n libEsmDir: string,\n): Promise<RewriteResult> {\n const files = (\n await glob('**/*.{js,d.ts}', {cwd: libEsmDir, absolute: true})\n ).sort();\n let changed = 0;\n const unresolved: string[] = [];\n for (const file of files) {\n const isDeclaration = file.endsWith('.d.ts');\n const text = await fs.readFile(file, 'utf8');\n const source = ts.createSourceFile(\n file,\n text,\n ts.ScriptTarget.Latest,\n true,\n isDeclaration ? ts.ScriptKind.TS : ts.ScriptKind.JS,\n );\n let output = text;\n // Apply edits back to front so earlier offsets stay valid.\n const literals = collectSpecifiers(source).reverse();\n const fileUnresolved: string[] = [];\n for (const literal of literals) {\n const spec = literal.text;\n const rewritten = resolveSpecifier(\n spec,\n path.dirname(file),\n isDeclaration,\n );\n if (rewritten === null) {\n fileUnresolved.unshift(\n `'${spec}' in ${path.relative(libEsmDir, file)}`,\n );\n continue;\n }\n if (rewritten !== spec) {\n // Keep the original quotes; replace only the text between them.\n const start = literal.getStart(source) + 1;\n const end = literal.getEnd() - 1;\n output = output.slice(0, start) + rewritten + output.slice(end);\n }\n }\n if (output !== text) {\n await fs.writeFile(file, output);\n changed++;\n }\n unresolved.push(...fileUnresolved);\n }\n return {changed, unresolved};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../../../src/utils/packageManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,iEAAiE;AACjE,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AAC7D,iEAAiE;AACjE,MAAM,WAAW,GAAG,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;AAEjE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,OAAO,CAAC,GAAG,EAAE,EAChC,SAAiC,EAAE,CAAC,UAAU;IAE9C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,iDAAiD;IACjD,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACrE,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;QACvE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;QACjC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,gBAAgB,CAC9B,EAA0B,EAC1B,MAAc;IAEd,OAAO,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC;AAChE,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,cAAc,CAC5B,EAA0B,EAC1B,UAAkB;IAElB,OAAO,EAAE,KAAK,MAAM;QAClB,CAAC,CAAC,aAAa,UAAU,EAAE;QAC3B,CAAC,CAAC,oBAAoB,UAAU,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../../../src/utils/packageManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,iEAAiE;AACjE,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AAC7D,iEAAiE;AACjE,MAAM,WAAW,GAAG,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;AAEjE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,OAAO,CAAC,GAAG,EAAE,EAChC,SAAiC,EAAE,CAAC,UAAU;IAE9C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,iDAAiD;IACjD,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACrE,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;QACvE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;QACjC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,gBAAgB,CAC9B,EAA0B,EAC1B,MAAc;IAEd,OAAO,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC;AAChE,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,cAAc,CAC5B,EAA0B,EAC1B,UAAkB;IAElB,OAAO,EAAE,KAAK,MAAM;QAClB,CAAC,CAAC,aAAa,UAAU,EAAE;QAC3B,CAAC,CAAC,oBAAoB,UAAU,EAAE,CAAC;AACvC,CAAC","sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nexport type DetectedPackageManager = 'npm' | 'yarn';\n\n/** Files that mark a directory as the root of a yarn project. */\nconst YARN_MARKERS = ['yarn.lock', '.yarnrc.yml', '.yarnrc'];\n/** Files that mark a directory as the root of an npm project. */\nconst NPM_MARKERS = ['package-lock.json', 'npm-shrinkwrap.json'];\n\n/**\n * Work out which package manager owns the project that `startDir` lives in.\n *\n * npm is the default: every scaffold the CLI produces is an npm project, and\n * plain `npm`/`npx` is the only thing guaranteed to be on PATH next to node.\n * yarn is only used when the tree actually says so — a `yarn.lock`,\n * `.yarnrc.yml` or a vendored `.yarn/releases/` in this directory or an\n * ancestor. That keeps existing yarn monorepos (create_now pins yarn 3.6.1)\n * working without assuming yarn anywhere else.\n *\n * The nearest marker wins, so an npm package checked out inside a yarn\n * workspace still builds with npm.\n *\n * @param exists injectable for tests; defaults to `fs.existsSync`.\n */\nexport function detectPackageManager(\n startDir: string = process.cwd(),\n exists: (p: string) => boolean = fs.existsSync,\n): DetectedPackageManager {\n let dir = path.resolve(startDir);\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (NPM_MARKERS.some((m) => exists(path.join(dir, m)))) return 'npm';\n if (YARN_MARKERS.some((m) => exists(path.join(dir, m)))) return 'yarn';\n if (exists(path.join(dir, '.yarn', 'releases'))) return 'yarn';\n const parent = path.dirname(dir);\n if (parent === dir) return 'npm';\n dir = parent;\n }\n}\n\n/** The command that runs a package.json script with `pm`. */\nexport function runScriptCommand(\n pm: DetectedPackageManager,\n script: string,\n): string {\n return pm === 'yarn' ? `yarn ${script}` : `npm run ${script}`;\n}\n\n/** The command that runs a locally installed binary with `pm`. */\nexport function execBinCommand(\n pm: DetectedPackageManager,\n binAndArgs: string,\n): string {\n return pm === 'yarn'\n ? `yarn exec ${binAndArgs}`\n : `npx --no-install ${binAndArgs}`;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"packageSetup.js","sourceRoot":"","sources":["../../../src/utils/packageSetup.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAUxB;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAC9B,iBAAyB,EACzB,YAAoB,EACpB,aAAqB,OAAO,CAAC,QAAQ,EACrC,oBAA6B,KAAK;IAElC,MAAM,KAAK,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,CAAC,iBAAiB;QAClC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK;YACL,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,cAAc,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3D,OAAO;QACL,cAAc;QACd,MAAM,EACJ,SAAS,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC;YAClC,CAAC,CAAC,4BAA4B;YAC9B,CAAC,CAAC,IAAI;QACV,cAAc,EAAE,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa;QAC1E,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ;KAClG,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"packageSetup.js","sourceRoot":"","sources":["../../../src/utils/packageSetup.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAUxB;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAC9B,iBAAyB,EACzB,YAAoB,EACpB,aAAqB,OAAO,CAAC,QAAQ,EACrC,oBAA6B,KAAK;IAElC,MAAM,KAAK,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,CAAC,iBAAiB;QAClC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK;YACL,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,cAAc,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3D,OAAO;QACL,cAAc;QACd,MAAM,EACJ,SAAS,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC;YAClC,CAAC,CAAC,4BAA4B;YAC9B,CAAC,CAAC,IAAI;QACV,cAAc,EAAE,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa;QAC1E,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ;KAClG,CAAC;AACJ,CAAC","sourcesContent":["import path from 'path';\n\nexport type PackageSetupPlan = {\n packageManager: 'yarn' | 'npm';\n /** Contents for a `.yarnrc.yml` in the new package, or null when not needed. */\n yarnrc: string | null;\n installCommand: string;\n buildCommand: string;\n};\n\n/**\n * Plans the install + first build of a freshly scaffolded linked package.\n *\n * - npm is the default. yarn is only used when the new package lands inside an\n * existing yarn project (`insideYarnProject`) — e.g. a package added to a\n * yarn-3 monorepo — because mixing npm into such a workspace produces a\n * second lockfile and an unresolvable bin. Merely having yarn on PATH is no\n * longer enough to pick it.\n * - Yarn 2+ defaults to Plug'n'Play, which leaves no node_modules. The build\n * step shells out to `npx tsc` / `npx tsconfig-to-dual-package`, so the\n * package is pinned to the node-modules linker. Yarn 1 ignores .yarnrc.yml.\n * - The build runs through the CLI that is currently executing (node + its own\n * launch script) instead of `npm exec linked`, which cannot resolve a bin\n * that a different package manager installed.\n */\nexport function planPackageSetup(\n yarnVersionOutput: string,\n launchScript: string,\n nodeBinary: string = process.execPath,\n insideYarnProject: boolean = false,\n): PackageSetupPlan {\n const match = (yarnVersionOutput || '').trim().match(/^(\\d+)\\./);\n const yarnMajor = !insideYarnProject\n ? null\n : match\n ? parseInt(match[1], 10)\n : null;\n const packageManager = yarnMajor === null ? 'npm' : 'yarn';\n return {\n packageManager,\n yarnrc:\n yarnMajor !== null && yarnMajor >= 2\n ? 'nodeLinker: node-modules\\n'\n : null,\n installCommand: packageManager === 'yarn' ? 'yarn install' : 'npm install',\n buildCommand: `${JSON.stringify(nodeBinary)} ${JSON.stringify(path.resolve(launchScript))} build`,\n };\n}\n"]}