@_linked/cli 1.8.1 → 1.9.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 (207) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/defaults/setup-publish/dual-branch/github/workflows/publish.yml +3 -0
  3. package/defaults/setup-publish/github/workflows/publish.yml +3 -0
  4. package/defaults/shape.ts +8 -2
  5. package/jest.config.cjs +8 -4
  6. package/lib/esm/cli-methods.d.ts +11 -3
  7. package/lib/esm/cli-methods.d.ts.map +1 -1
  8. package/lib/esm/cli-methods.js +51 -105
  9. package/lib/esm/cli-methods.js.map +1 -1
  10. package/lib/esm/cli.js +32 -8
  11. package/lib/esm/cli.js.map +1 -1
  12. package/lib/esm/commands/start.d.ts +6 -0
  13. package/lib/esm/commands/start.d.ts.map +1 -0
  14. package/lib/esm/commands/start.js +311 -0
  15. package/lib/esm/commands/start.js.map +1 -0
  16. package/lib/esm/config-webpack-app.d.ts +1 -1
  17. package/lib/esm/config-webpack-app.d.ts.map +1 -1
  18. package/lib/esm/config-webpack-app.js +1 -1
  19. package/lib/esm/config-webpack-app.js.map +1 -1
  20. package/lib/esm/config-webpack.d.ts +1 -1
  21. package/lib/esm/config-webpack.d.ts.map +1 -1
  22. package/lib/esm/config-webpack.js +4 -4
  23. package/lib/esm/config-webpack.js.map +1 -1
  24. package/lib/esm/defineConfig.d.ts +1 -1
  25. package/lib/esm/defineConfig.d.ts.map +1 -1
  26. package/lib/esm/index.d.ts +1 -1
  27. package/lib/esm/index.d.ts.map +1 -1
  28. package/lib/esm/index.js +1 -1
  29. package/lib/esm/index.js.map +1 -1
  30. package/lib/esm/interfaces.d.ts +9 -0
  31. package/lib/esm/interfaces.d.ts.map +1 -1
  32. package/lib/esm/lifecycle.d.ts +24 -0
  33. package/lib/esm/lifecycle.d.ts.map +1 -0
  34. package/lib/esm/lifecycle.js +156 -0
  35. package/lib/esm/lifecycle.js.map +1 -0
  36. package/lib/esm/loaders/ts-loader.d.mts.map +1 -1
  37. package/lib/esm/loaders/ts-loader.mjs +11 -2
  38. package/lib/esm/loaders/ts-loader.mjs.map +1 -1
  39. package/lib/esm/utils.d.ts +1 -1
  40. package/lib/esm/utils.d.ts.map +1 -1
  41. package/lib/esm/utils.js +9 -3
  42. package/lib/esm/utils.js.map +1 -1
  43. package/lib/esm/vite-config.d.ts +20 -0
  44. package/lib/esm/vite-config.d.ts.map +1 -0
  45. package/lib/esm/vite-config.js +410 -0
  46. package/lib/esm/vite-config.js.map +1 -0
  47. package/package.json +13 -14
  48. package/test-results/.last-run.json +6 -0
  49. package/test-results/create-app-Person-fixture-add-/342/206/222-edit-/342/206/222-delete-round-trip/error-context.md +16 -0
  50. package/test-results/create-app-Person-fixture-add-/342/206/222-edit-/342/206/222-delete-round-trip/trace.zip +0 -0
  51. package/tests/unit/safeYarn.test.ts +1 -1
  52. package/tsconfig-esm.json +1 -1
  53. package/defaults/app-with-backend/.env-cmdrc.json +0 -19
  54. package/defaults/app-with-backend/.eslintignore +0 -5
  55. package/defaults/app-with-backend/.eslintrc.json +0 -40
  56. package/defaults/app-with-backend/.prettierignore +0 -4
  57. package/defaults/app-with-backend/.prettierrc.json +0 -27
  58. package/defaults/app-with-backend/.vscode/launch.json +0 -12
  59. package/defaults/app-with-backend/.yarn/plugins/@yarnpkg/plugin-version.cjs +0 -550
  60. package/defaults/app-with-backend/.yarn/releases/yarn-3.6.1.cjs +0 -874
  61. package/defaults/app-with-backend/gitignore.template +0 -25
  62. package/defaults/app-with-backend/linked.backend.datasets.example.json +0 -17
  63. package/defaults/app-with-backend/linked.backend.storage.ts +0 -35
  64. package/defaults/app-with-backend/linked.config.js +0 -5
  65. package/defaults/app-with-backend/package.json +0 -70
  66. package/defaults/app-with-backend/pm2-staging.config.js +0 -12
  67. package/defaults/app-with-backend/pm2.config.js +0 -12
  68. package/defaults/app-with-backend/public/favicon-144x144.png +0 -0
  69. package/defaults/app-with-backend/public/favicon-57x57.png +0 -0
  70. package/defaults/app-with-backend/public/favicon-72x72.png +0 -0
  71. package/defaults/app-with-backend/public/favicon.ico +0 -0
  72. package/defaults/app-with-backend/readme.md +0 -93
  73. package/defaults/app-with-backend/src/App.module.css +0 -83
  74. package/defaults/app-with-backend/src/App.tsx +0 -30
  75. package/defaults/app-with-backend/src/backend.ts +0 -9
  76. package/defaults/app-with-backend/src/components/Error.module.css +0 -9
  77. package/defaults/app-with-backend/src/components/Error.tsx +0 -11
  78. package/defaults/app-with-backend/src/components/PersonOverview.module.css +0 -100
  79. package/defaults/app-with-backend/src/components/PersonOverview.tsx +0 -97
  80. package/defaults/app-with-backend/src/components/PersonOverviewContext.tsx +0 -12
  81. package/defaults/app-with-backend/src/components/PersonPreview.module.css +0 -97
  82. package/defaults/app-with-backend/src/components/PersonPreview.tsx +0 -109
  83. package/defaults/app-with-backend/src/components/Spinner.module.css +0 -17
  84. package/defaults/app-with-backend/src/components/Spinner.tsx +0 -12
  85. package/defaults/app-with-backend/src/index.tsx +0 -34
  86. package/defaults/app-with-backend/src/layout/DefaultLayout.module.css +0 -15
  87. package/defaults/app-with-backend/src/layout/DefaultLayout.tsx +0 -12
  88. package/defaults/app-with-backend/src/layout/Header.module.css +0 -46
  89. package/defaults/app-with-backend/src/layout/Header.tsx +0 -27
  90. package/defaults/app-with-backend/src/linked.frontend.datasets.json +0 -12
  91. package/defaults/app-with-backend/src/linked.frontend.storage.ts +0 -36
  92. package/defaults/app-with-backend/src/package.ts +0 -16
  93. package/defaults/app-with-backend/src/pages/Home.module.css +0 -23
  94. package/defaults/app-with-backend/src/pages/Home.tsx +0 -14
  95. package/defaults/app-with-backend/src/pages/Page1.module.css +0 -111
  96. package/defaults/app-with-backend/src/pages/Page1.tsx +0 -196
  97. package/defaults/app-with-backend/src/pages/PageNotFound.module.css +0 -19
  98. package/defaults/app-with-backend/src/pages/PageNotFound.tsx +0 -14
  99. package/defaults/app-with-backend/src/pages/Signin.module.css +0 -20
  100. package/defaults/app-with-backend/src/pages/Signin.tsx +0 -16
  101. package/defaults/app-with-backend/src/routes.tsx +0 -78
  102. package/defaults/app-with-backend/src/theme.css +0 -91
  103. package/defaults/app-with-backend/src/types.ts +0 -14
  104. package/defaults/app-with-backend/src/utils/lazyWithPreload.tsx +0 -42
  105. package/defaults/app-with-backend/src/utils/preloadRoutes.ts +0 -38
  106. package/defaults/app-with-backend/tsconfig.json +0 -24
  107. package/defaults/app-with-backend/yarnrc.yml.template +0 -8
  108. package/lib/cjs/cli-methods.d.ts +0 -67
  109. package/lib/cjs/cli-methods.d.ts.map +0 -1
  110. package/lib/cjs/cli-methods.js +0 -2718
  111. package/lib/cjs/cli-methods.js.map +0 -1
  112. package/lib/cjs/cli.d.ts +0 -3
  113. package/lib/cjs/cli.d.ts.map +0 -1
  114. package/lib/cjs/cli.js +0 -315
  115. package/lib/cjs/cli.js.map +0 -1
  116. package/lib/cjs/commands/build-package.d.ts +0 -9
  117. package/lib/cjs/commands/build-package.d.ts.map +0 -1
  118. package/lib/cjs/commands/build-package.js +0 -55
  119. package/lib/cjs/commands/build-package.js.map +0 -1
  120. package/lib/cjs/commands/safe-yarn.d.ts +0 -10
  121. package/lib/cjs/commands/safe-yarn.d.ts.map +0 -1
  122. package/lib/cjs/commands/safe-yarn.js +0 -66
  123. package/lib/cjs/commands/safe-yarn.js.map +0 -1
  124. package/lib/cjs/commands/setup-publish.d.ts +0 -23
  125. package/lib/cjs/commands/setup-publish.d.ts.map +0 -1
  126. package/lib/cjs/commands/setup-publish.js +0 -369
  127. package/lib/cjs/commands/setup-publish.js.map +0 -1
  128. package/lib/cjs/config-webpack-app.d.ts +0 -112
  129. package/lib/cjs/config-webpack-app.d.ts.map +0 -1
  130. package/lib/cjs/config-webpack-app.js +0 -427
  131. package/lib/cjs/config-webpack-app.js.map +0 -1
  132. package/lib/cjs/config-webpack.d.ts +0 -55
  133. package/lib/cjs/config-webpack.d.ts.map +0 -1
  134. package/lib/cjs/config-webpack.js +0 -417
  135. package/lib/cjs/config-webpack.js.map +0 -1
  136. package/lib/cjs/defineConfig.d.ts +0 -8
  137. package/lib/cjs/defineConfig.d.ts.map +0 -1
  138. package/lib/cjs/defineConfig.js +0 -12
  139. package/lib/cjs/defineConfig.js.map +0 -1
  140. package/lib/cjs/index.d.ts +0 -12
  141. package/lib/cjs/index.d.ts.map +0 -1
  142. package/lib/cjs/index.js +0 -43
  143. package/lib/cjs/index.js.map +0 -1
  144. package/lib/cjs/interfaces.d.ts +0 -131
  145. package/lib/cjs/interfaces.d.ts.map +0 -1
  146. package/lib/cjs/interfaces.js +0 -3
  147. package/lib/cjs/interfaces.js.map +0 -1
  148. package/lib/cjs/loaders/css-loader.d.mts +0 -2
  149. package/lib/cjs/loaders/css-loader.d.mts.map +0 -1
  150. package/lib/cjs/loaders/css-loader.mjs +0 -86
  151. package/lib/cjs/loaders/css-loader.mjs.map +0 -1
  152. package/lib/cjs/loaders/register-css-only.d.ts +0 -2
  153. package/lib/cjs/loaders/register-css-only.d.ts.map +0 -1
  154. package/lib/cjs/loaders/register-css-only.js +0 -11
  155. package/lib/cjs/loaders/register-css-only.js.map +0 -1
  156. package/lib/cjs/loaders/register.d.ts +0 -2
  157. package/lib/cjs/loaders/register.d.ts.map +0 -1
  158. package/lib/cjs/loaders/register.js +0 -11
  159. package/lib/cjs/loaders/register.js.map +0 -1
  160. package/lib/cjs/loaders/ts-loader.d.mts +0 -3
  161. package/lib/cjs/loaders/ts-loader.d.mts.map +0 -1
  162. package/lib/cjs/loaders/ts-loader.mjs +0 -116
  163. package/lib/cjs/loaders/ts-loader.mjs.map +0 -1
  164. package/lib/cjs/metadata.d.ts +0 -1
  165. package/lib/cjs/metadata.d.ts.map +0 -1
  166. package/lib/cjs/metadata.js +0 -155
  167. package/lib/cjs/metadata.js.map +0 -1
  168. package/lib/cjs/package.json +0 -139
  169. package/lib/cjs/plugins/check-imports.d.ts +0 -2
  170. package/lib/cjs/plugins/check-imports.d.ts.map +0 -1
  171. package/lib/cjs/plugins/check-imports.js +0 -68
  172. package/lib/cjs/plugins/check-imports.js.map +0 -1
  173. package/lib/cjs/plugins/declaration-plugin.d.ts +0 -15
  174. package/lib/cjs/plugins/declaration-plugin.d.ts.map +0 -1
  175. package/lib/cjs/plugins/declaration-plugin.js +0 -285
  176. package/lib/cjs/plugins/declaration-plugin.js.map +0 -1
  177. package/lib/cjs/plugins/externalise-modules.d.ts +0 -7
  178. package/lib/cjs/plugins/externalise-modules.d.ts.map +0 -1
  179. package/lib/cjs/plugins/externalise-modules.js +0 -190
  180. package/lib/cjs/plugins/externalise-modules.js.map +0 -1
  181. package/lib/cjs/plugins/lincd-tailwind-sources.d.ts +0 -3
  182. package/lib/cjs/plugins/lincd-tailwind-sources.d.ts.map +0 -1
  183. package/lib/cjs/plugins/lincd-tailwind-sources.js +0 -32
  184. package/lib/cjs/plugins/lincd-tailwind-sources.js.map +0 -1
  185. package/lib/cjs/plugins/watch-run.d.ts +0 -5
  186. package/lib/cjs/plugins/watch-run.d.ts.map +0 -1
  187. package/lib/cjs/plugins/watch-run.js +0 -45
  188. package/lib/cjs/plugins/watch-run.js.map +0 -1
  189. package/lib/cjs/preflight.css +0 -137
  190. package/lib/cjs/tailwind.config.d.ts +0 -8
  191. package/lib/cjs/tailwind.config.d.ts.map +0 -1
  192. package/lib/cjs/tailwind.config.js +0 -17
  193. package/lib/cjs/tailwind.config.js.map +0 -1
  194. package/lib/cjs/utils.d.ts +0 -77
  195. package/lib/cjs/utils.d.ts.map +0 -1
  196. package/lib/cjs/utils.js +0 -585
  197. package/lib/cjs/utils.js.map +0 -1
  198. package/lib/esm/loaders/register-css-only.d.ts +0 -2
  199. package/lib/esm/loaders/register-css-only.d.ts.map +0 -1
  200. package/lib/esm/loaders/register-css-only.js +0 -9
  201. package/lib/esm/loaders/register-css-only.js.map +0 -1
  202. package/lib/esm/loaders/register.d.ts +0 -2
  203. package/lib/esm/loaders/register.d.ts.map +0 -1
  204. package/lib/esm/loaders/register.js +0 -9
  205. package/lib/esm/loaders/register.js.map +0 -1
  206. package/lib/esm/package.json +0 -139
  207. /package/{babel.config.js → babel.config.cjs} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#59](https://github.com/linked-cm/cli/pull/59) [`98dbb5a`](https://github.com/linked-cm/cli/commit/98dbb5a7767aed3ee1da62009c096eeb76b2c377) Thanks [@flyon](https://github.com/flyon)! - ESM-only. Dropped the CommonJS build; ships ES modules only (`type: module`, no `require` export condition, no `lib/cjs`). Fixed the root `types` field. CJS consumers on Node 22+ can `require()` it (sync ESM) or use dynamic `import()`.
8
+
9
+ - [#59](https://github.com/linked-cm/cli/pull/59) [`647417b`](https://github.com/linked-cm/cli/commit/647417bdcfbd5603daeb02ffd9ddc94f702a960e) Thanks [@flyon](https://github.com/flyon)! - Standalone dev + template git-clone scaffolding:
10
+
11
+ - **Standalone dev resolution** — `createViteConfig` now detects when an app is NOT inside a workspace (lib-only npm install of `@_linked/*`) and resolves those deps via `import → lib/esm` (conditions `['module','node']`) instead of the `development → src` export they don't ship. Fixes "Failed to load `@_linked/server/shapes/LinkedServer`" on a clean install. Monorepo/workspace dev is unchanged.
12
+ - **`create-app` clones the template repo** — new apps are scaffolded by `git clone`-ing `linked-cm/app-template` (single source of truth, same repo CN's server-side project creation uses) instead of copying a bundled defaults tree. The bundled `defaults/app-with-backend` is removed.
13
+ - Removed the orphaned tsx `register`/`register-css-only` loaders (+ `tsx` dep); apps run plain `linked start` (Vite handles TS transform).
14
+
15
+ ## 1.8.2
16
+
17
+ ### Patch Changes
18
+
19
+ - [#57](https://github.com/linked-cm/cli/pull/57) [`e8385bd`](https://github.com/linked-cm/cli/commit/e8385bd4d4287afd85fbb86d6d4d20b1ea7152a7) Thanks [@flyon](https://github.com/flyon)! - CLI sub-template imports updated to use `@_linked/core` instead of legacy
20
+ `lincd/...`:
21
+
22
+ - `defaults/shape.ts` — `Shape` + `NamedNode` from `@_linked/core`
23
+ - `defaults/package/src/package.ts` — `linkedPackage` from `@_linked/core/utils/Package` (clean 1:1 swap; `@_linked/core` exports it identically)
24
+ - `defaults/package/src/ontologies/example-ontology.ts` — `NamedNode` + `createNameSpace` from `@_linked/core` (unused `lincd-jsonld` import dropped)
25
+
26
+ **Important caveat — TODO comments inline in the template files explain**:
27
+ the `package.ts` template is a clean working swap. The `shape.ts` and
28
+ `ontologies/example-ontology.ts` templates' generated output **will fail
29
+ to compile** because `@_linked/core` doesn't export `NamedNode` or
30
+ `Literal` as runtime classes — the new framework architecture moved past
31
+ direct node construction. Templates need a rewrite to emit the modern
32
+ getter-only `@_linked/*` shape pattern (see `@_linked/schema/shapes/Person.ts`).
33
+ The import-path change is a deliberate signal-of-intent that lands
34
+ incomplete; the actual template rewrite is tracked as downstream
35
+ Shape-Builder / Ontology-Manager review work.
36
+
37
+ Users of `linked create shape Foo` and `linked create package Bar`: if you
38
+ hit "Cannot find name NamedNode" or "Cannot find name Literal" errors
39
+ in scaffolded files, you've hit the documented gap. The fix path is the
40
+ template rewrite, not reverting to legacy lincd.
41
+
42
+ Context: see create-now plan-011 report (docs/reports/009-legacy-lincd-eradication.md).
43
+
3
44
  ## 1.8.1
4
45
 
5
46
  ### Patch Changes
@@ -51,6 +51,9 @@ jobs:
51
51
  publish: npx changeset publish
52
52
  title: "chore: release"
53
53
  commit: "chore: release"
54
+ # npm auth uses the npm token below. Do NOT switch to OIDC trusted publishing
55
+ # (id-token: write + publishConfig.provenance) unless you FIRST register this package's
56
+ # trusted publisher on npmjs.com — otherwise publishes fail with 404 / permission errors.
54
57
  env:
55
58
  GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
56
59
  NODE_AUTH_TOKEN: ${{ secrets.{{NPM_SECRET_NAME}} }}
@@ -48,6 +48,9 @@ jobs:
48
48
  publish: npx changeset publish
49
49
  title: 'chore: release'
50
50
  commit: 'chore: release'
51
+ # npm auth uses the npm token below. Do NOT switch to OIDC trusted publishing
52
+ # (id-token: write + publishConfig.provenance) unless you FIRST register this package's
53
+ # trusted publisher on npmjs.com — otherwise publishes fail with 404 / permission errors.
51
54
  env:
52
55
  GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
53
56
  NODE_AUTH_TOKEN: ${{ secrets.{{NPM_SECRET_NAME}} }}
package/defaults/shape.ts CHANGED
@@ -1,5 +1,11 @@
1
- import {Shape} from 'lincd/shapes/Shape';
2
- import {NamedNode} from 'lincd/models';
1
+ // TODO(plan-1.5 / Phase 3 — Shape Builder review): @_linked/core does
2
+ // not export NamedNode as a class. The template needs to be rewritten to
3
+ // match the modern @_linked/* shape pattern — see packages/schema/src/
4
+ // shapes/Person.ts (getter-only, no NamedNode annotation). Import paths
5
+ // updated to @_linked/core to flag intent; current generated output
6
+ // won't compile until the template + downstream tooling are updated.
7
+ import {Shape} from '@_linked/core/shapes/Shape';
8
+ import {NamedNode} from '@_linked/core';
3
9
  import {linkedShape} from '../package.js';
4
10
 
5
11
  @linkedShape
package/jest.config.cjs CHANGED
@@ -1,9 +1,10 @@
1
1
  // Jest config for @_linked/cli unit tests.
2
2
  //
3
- // Tests target the compiled CJS output in lib/cjs, not raw src/. This avoids
4
- // configuring jest's ESM mode (notoriously fiddly with our mixed tsx/ESM
5
- // runtime) and keeps the test runner identical to what npm consumers see.
6
- // Run `yarn build` before `yarn test:unit` so lib/cjs exists.
3
+ // The cli is now ESM-only (no lib/cjs). Rather than configure jest's ESM mode
4
+ // (notoriously fiddly), tests import raw `src/` .ts and let babel-jest
5
+ // transpile ESM→CJS. The `moduleNameMapper` below strips the `.js` suffix from
6
+ // relative specifiers (src uses the published-output `./foo.js` convention) so
7
+ // they resolve back to the `.ts` source.
7
8
  //
8
9
  // E2E specs live in tests/e2e/ and run under Playwright (see
9
10
  // playwright.config.ts), not Jest.
@@ -25,5 +26,8 @@ module.exports = {
25
26
  },
26
27
  ],
27
28
  },
29
+ moduleNameMapper: {
30
+ '^(\\.{1,2}/.*)\\.js$': '$1',
31
+ },
28
32
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
29
33
  };
@@ -1,4 +1,13 @@
1
- import { PackageDetails } from './interfaces';
1
+ import type { PackageDetails } from './interfaces.js';
2
+ /**
3
+ * Dynamically import the app's backend storage configuration. Tries the
4
+ * canonical `linked.backend.storage.{ts,js}` at app root first, then the
5
+ * earlier `backend-storage-config.{ts,js}` (Iter3), then the legacy
6
+ * `scripts/storage-config.js` (pre-rename). The fallback chain lets older
7
+ * app clones keep booting through the rename.
8
+ */
9
+ import { ensureEnvironmentLoaded, loadBackendStorageConfig, getLincdPackages } from './lifecycle.js';
10
+ export { ensureEnvironmentLoaded, loadBackendStorageConfig, getLincdPackages };
2
11
  export declare const createApp: (name: any, basePath?: string, options?: {
3
12
  appName?: string;
4
13
  appPrefix?: string;
@@ -10,8 +19,8 @@ export declare function logError(...errors: any[]): void;
10
19
  export declare function developPackage(target: any, mode: any): void;
11
20
  export declare function runOnPackagesGroupedByDependencies(lincdPackages: any, onBuildStack: (packageGroup: any, dependencies: any) => (pkg: PackageDetails) => Promise<any>, onStackEnd: any, sync?: boolean): Promise<void>;
12
21
  export declare function buildAll(options: any): void;
13
- export declare function getLincdPackages(rootPath?: string): PackageDetails[];
14
22
  export declare const createOntology: (prefix: any, uriBase?: any, basePath?: string) => Promise<void>;
23
+ export declare const addLineToIndex: (line: any, insertMatchString: string, root?: string, insertAtStart?: boolean) => string;
15
24
  export declare const setNameVariables: (name: any) => {
16
25
  hyphenName: any;
17
26
  camelCaseName: any;
@@ -32,7 +41,6 @@ invalidImports?: Map<string, {
32
41
  }[]>) => Promise<boolean>;
33
42
  export declare const depCheckStaged: () => Promise<void>;
34
43
  export declare const depCheck: (packagePath?: string) => Promise<unknown>;
35
- export declare const ensureEnvironmentLoaded: () => Promise<void>;
36
44
  export declare const runScript: (scriptName: string, options: {
37
45
  spawn: boolean;
38
46
  }) => Promise<never>;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-methods.d.ts","sourceRoot":"","sources":["../../src/cli-methods.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-methods.d.ts","sourceRoot":"","sources":["../../src/cli-methods.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAgBpD;;;;;;GAMG;AAKH,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAC,uBAAuB,EAAE,wBAAwB,EAAE,gBAAgB,EAAC,CAAC;AAoB7E,eAAO,MAAM,SAAS,GAAU,SAAI,EAAE,iBAAwB,EAAE,UAAS;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAM,kBAmL9J,CAAC;AAmBF,wBAAgB,IAAI,CAAC,GAAG,QAAQ,OAAA,QAK/B;AACD,wBAAgB,QAAQ,CAAC,GAAG,MAAM,OAAA,QAIjC;AACD,wBAAgB,cAAc,CAAC,MAAM,KAAA,EAAE,IAAI,KAAA,QAyB1C;AA2CD,wBAAgB,kCAAkC,CAChD,aAAa,KAAA,EACb,YAAY,EAAE,CACZ,YAAY,KAAA,EACZ,YAAY,KAAA,KACT,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,GAAG,CAAC,EAC1C,UAAU,KAAA,EACV,IAAI,UAAQ,GACX,OAAO,CAAC,IAAI,CAAC,CAqNf;AA+ID,wBAAgB,QAAQ,CAAC,OAAO,KAAA,QAkU/B;AA2ED,eAAO,MAAM,cAAc,GACzB,WAAM,EACN,aAAQ,EACR,iBAAwB,kBA6FzB,CAAC;AAGF,eAAO,MAAM,cAAc,GACzB,SAAI,EACJ,mBAAmB,MAAM,EACzB,OAAM,MAAsB,EAC5B,gBAAe,OAAe,WAsC/B,CAAC;AAiGF,eAAO,MAAM,gBAAgB,GAAa,SAAI;;;;;CAc7C,CAAC;AAgBF;;GAEG;AACH,eAAO,MAAM,YAAY,cAaxB,CAAC;AACF,eAAO,MAAM,WAAW,GAAU,SAAI,EAAE,iBAAwB,kBA2B/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,SAAI,EAAE,iBAAwB,kBAmCtE,CAAC;AACF,eAAO,MAAM,eAAe,GAAU,SAAI,EAAE,iBAAwB,kBAuCnE,CAAC;AAKF,eAAO,MAAM,YAAY,GACvB,eAAc,MAA0B,EACxC,QAAO,MAAU,EAAE,wDAAwD;AAC3E,iBAAgB,GAAG,CAAC,MAAM,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,EAAE,CAAa,qBA0G9E,CAAC;AAEF,eAAO,MAAM,cAAc,qBAuB1B,CAAC;AACF,eAAO,MAAM,QAAQ,GAAU,cAAa,MAAsB,qBAwDjE,CAAC;AAEF,eAAO,MAAM,SAAS,GACpB,YAAY,MAAM,EAClB,SAAS;IAAC,KAAK,EAAE,OAAO,CAAA;CAAC,mBAoB1B,CAAC;AAEF,eAAO,MAAM,SAAS,GACpB,aAAa,MAAM,EACnB,QAAQ,MAAM,EACd,SAAS;IAAC,KAAK,EAAE,OAAO,CAAA;CAAC,kBA2G1B,CAAC;AACF,eAAO,MAAM,WAAW,GACtB,WAAU,OAAe,EACzB,iBAAkB,iBA8DnB,CAAC;AACF,eAAO,MAAM,QAAQ,sBAKpB,CAAC;AACF,eAAO,MAAM,aAAa,qBAqHzB,CAAC;AACF,eAAO,MAAM,YAAY,wBAiExB,CAAC;AAEF,eAAO,MAAM,eAAe,qBAoK3B,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,SAAI,EACJ,aAAQ,EACR,iBAAwB,kBA4GzB,CAAC;AAqBF,eAAO,MAAM,QAAQ,GAAa,gBAAW,kBAuD5C,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,WAAM,EACN,YAAO,EACP,oBAA2B,EAC3B,aAAY,OAAc,iBAoN3B,CAAC;AACF,eAAO,MAAM,cAAc,GAAU,oBAA2B,kBAyB/D,CAAC;AACF,eAAO,MAAM,iBAAiB,GAAU,oBAA2B,qBAWlE,CAAC;AACF,eAAO,MAAM,iBAAiB,GAAU,oBAA2B;;EAelE,CAAC;AAEF,eAAO,IAAI,cAAc,GAAa,OAAM,OAAe,kBA0K1D,CAAC;AAsBF,eAAO,IAAI,cAAc,GACvB,SAAI,EACJ,UAAK,EACL,UAAK,EACL,oBAAe,oBA6DhB,CAAC;AAEF,eAAO,IAAI,YAAY,GACrB,SAAI,EACJ,WAAM,EACN,YAAO,EACP,wBAAuB,OAAe,EACtC,OAAM,OAAe,kBAqHtB,CAAC;AAeF,eAAO,IAAI,4BAA4B,GACrC,aAAQ,EACR,YAAO,EACP,iBAAY,EACZ,gBAAW,qBA4CZ,CAAC;AAOF,eAAO,IAAI,cAAc,GAAa,aAAQ,EAAE,YAAO,SAMtD,CAAC;AACF,eAAO,IAAI,YAAY,GAAmB,iBAAwB,kBA8FjE,CAAC;AAEF,eAAO,IAAI,wBAAwB,GAAa,gBAAW,EAAE,YAAO,SA6BnE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAU,gBAAW,qBA8B/C,CAAC"}
@@ -37,30 +37,12 @@ let dirname__ = typeof __dirname !== 'undefined'
37
37
  * `scripts/storage-config.js` (pre-rename). The fallback chain lets older
38
38
  * app clones keep booting through the rename.
39
39
  */
40
- function loadBackendStorageConfig() {
41
- return __awaiter(this, void 0, void 0, function* () {
42
- const cwd = process.cwd();
43
- const candidates = [
44
- // Iter4 canonical:
45
- path.join(cwd, 'linked.backend.storage.ts'),
46
- path.join(cwd, 'linked.backend.storage.js'),
47
- // Iter3:
48
- path.join(cwd, 'backend-storage-config.ts'),
49
- path.join(cwd, 'backend-storage-config.js'),
50
- path.join(cwd, 'scripts', 'backend-storage-config.js'),
51
- path.join(cwd, 'scripts', 'backend-storage-config.ts'),
52
- // legacy pre-rename:
53
- path.join(cwd, 'scripts', 'storage-config.js'),
54
- ];
55
- for (const candidate of candidates) {
56
- if (fs.existsSync(candidate)) {
57
- return import(candidate);
58
- }
59
- }
60
- console.warn(chalk.yellow('[linked.backend.storage] no linked.backend.storage.{ts,js} found at app root.'));
61
- return undefined;
62
- });
63
- }
40
+ // Plan-011: extracted to ./lifecycle.ts so the Vite SSR loader doesn't
41
+ // have to graph-walk the rest of cli-methods.ts (which contains many
42
+ // dynamic imports Vite can't analyze). We import for internal callers
43
+ // AND re-export so external consumers can keep importing from here.
44
+ import { ensureEnvironmentLoaded, loadBackendStorageConfig, getLincdPackages, } from './lifecycle.js';
45
+ export { ensureEnvironmentLoaded, loadBackendStorageConfig, getLincdPackages };
64
46
  var variables = {};
65
47
  /**
66
48
  * Prompt user for input
@@ -123,14 +105,26 @@ export const createApp = (name_1, ...args_1) => __awaiter(void 0, [name_1, ...ar
123
105
  if (!fs.existsSync(targetFolder)) {
124
106
  fs.mkdirSync(targetFolder);
125
107
  }
126
- fs.copySync(path.join(dirname__, '..', '..', 'defaults', 'app-with-backend'), targetFolder);
108
+ // Scaffold from the canonical template repo (single source of truth; CN's
109
+ // server-side createProject clones the same repo). Shallow clone, then drop
110
+ // .git so the new app starts with clean history.
111
+ yield execPromise(`git clone --depth 1 https://github.com/linked-cm/app-template.git "${targetFolder}"`, false, false);
112
+ fs.removeSync(path.join(targetFolder, '.git'));
127
113
  //make sure the data folder exists (even though its empty).. copying empty folders does not work with fs.copySync
128
114
  fs.mkdirSync(path.join(targetFolder, 'data'), { recursive: true });
129
115
  fs.mkdirSync(path.join(targetFolder, 'data/uploads/resized'), {
130
116
  recursive: true,
131
117
  });
132
- fs.renameSync(path.join(targetFolder, 'gitignore.template'), path.join(targetFolder, '.gitignore'));
133
- fs.renameSync(path.join(targetFolder, 'yarnrc.yml.template'), path.join(targetFolder, '.yarnrc.yml'));
118
+ // The template repo now ships real dotfiles; guard the legacy
119
+ // `*.template` renames so they no-op when the dotfile already exists.
120
+ const gitignoreTemplate = path.join(targetFolder, 'gitignore.template');
121
+ if (fs.existsSync(gitignoreTemplate)) {
122
+ fs.renameSync(gitignoreTemplate, path.join(targetFolder, '.gitignore'));
123
+ }
124
+ const yarnrcTemplate = path.join(targetFolder, 'yarnrc.yml.template');
125
+ if (fs.existsSync(yarnrcTemplate)) {
126
+ fs.renameSync(yarnrcTemplate, path.join(targetFolder, '.yarnrc.yml'));
127
+ }
134
128
  // Mark the new app as a self-contained Yarn project root. Without this,
135
129
  // Yarn climbs ancestor dirs looking for the project root and may decide
136
130
  // a stray yarn.lock further up the tree is "the project" — aborting
@@ -842,29 +836,7 @@ function getLocalLincdModules(rootPath = './') {
842
836
  return pkg.path.indexOf('..\\') === -1;
843
837
  });
844
838
  }
845
- export function getLincdPackages(rootPath = process.cwd()) {
846
- let pack = getPackageJSON(rootPath);
847
- if (!pack || !pack.workspaces) {
848
- const originalRoot = rootPath;
849
- for (let i = 0; i <= 3; i++) {
850
- rootPath = path.join(originalRoot, ...Array(i).fill('..'));
851
- pack = getPackageJSON(rootPath);
852
- if (pack && pack.workspaces) {
853
- // log('Found workspace at '+packagePath);
854
- break;
855
- }
856
- }
857
- }
858
- if (!pack || !pack.workspaces) {
859
- // Standalone apps (scaffolded with `linked create-app`) don't have
860
- // workspaces — that's expected, just no local packages to scan.
861
- return [];
862
- }
863
- // console.log(pack.workspaces);
864
- let res = [];
865
- checkWorkspaces(rootPath, pack.workspaces, res);
866
- return res;
867
- }
839
+ // getLincdPackages moved to ./lifecycle.ts and re-exported above.
868
840
  function setVariable(name, replacement) {
869
841
  //prepare name for regexp
870
842
  name = name.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
@@ -927,7 +899,9 @@ export const createOntology = (prefix_1, uriBase_1, ...args_1) => __awaiter(void
927
899
  log(`Added an import of this file from ${chalk.magenta(indexPath)}`);
928
900
  }
929
901
  });
930
- const addLineToIndex = function (line, insertMatchString, root = process.cwd(), insertAtStart = false) {
902
+ // Exported for Shape-Builder reuse (plan-010 T1d.4): CodeShapeSyncService adds
903
+ // the `import './shapes/<Shape>.js';` line to a generated app package's index.
904
+ export const addLineToIndex = function (line, insertMatchString, root = process.cwd(), insertAtStart = false) {
931
905
  //import ontology in index
932
906
  let indexPath = ['index.ts', 'index.tsx']
933
907
  .map((f) => path.join(root, 'src', f))
@@ -936,6 +910,11 @@ const addLineToIndex = function (line, insertMatchString, root = process.cwd(),
936
910
  });
937
911
  if (indexPath) {
938
912
  let indexContents = fs.readFileSync(indexPath, 'utf-8');
913
+ // Idempotent: if the exact line is already present, do nothing (re-running
914
+ // a shape edit must not append a duplicate import).
915
+ if (indexContents.split(/\n/g).some((l) => l.trim() === line.trim())) {
916
+ return indexPath;
917
+ }
939
918
  let lines = indexContents.split(/\n/g);
940
919
  let newContents;
941
920
  for (var key in lines) {
@@ -1158,6 +1137,17 @@ invalidImports = new Map()) {
1158
1137
  // Start checking each file in the source folder
1159
1138
  for (const file of dir) {
1160
1139
  const filename = path.join(sourceFolder, file);
1140
+ // plan-011 §P7 — skip test sources. Test files (and their helpers/probes)
1141
+ // are not part of the shipped ESM contract, so the missing-extension rule
1142
+ // isn't load-bearing for them; enforcing it only blocks `linked build`
1143
+ // (the real ESM-output gate stays in force for shipped source). This is
1144
+ // what makes `linked build` green for packages whose tests use
1145
+ // extensionless imports (e.g. @_linked/core).
1146
+ if (/(?:^|[\\/])(?:tests?|__tests__|test-helpers)(?:[\\/]|$)/.test(filename) ||
1147
+ /\.(?:test|spec)\.tsx?$/.test(file) ||
1148
+ /^type-probe.*\.tsx?$/.test(file)) {
1149
+ continue;
1150
+ }
1161
1151
  // File is either a directory, or not a .ts(x)
1162
1152
  // INFO: For future use - if this part fails, it could be due to user permissions
1163
1153
  // i.e. the program not having access to check the file metadata
@@ -1309,55 +1299,7 @@ export const depCheck = (...args_1) => __awaiter(void 0, [...args_1], void 0, fu
1309
1299
  });
1310
1300
  });
1311
1301
  });
1312
- export const ensureEnvironmentLoaded = () => __awaiter(void 0, void 0, void 0, function* () {
1313
- if (!process.env.ENV_VARS_LOADED) {
1314
- //load env-cmd for development environment
1315
- let { GetEnvVars } = yield import('env-cmd');
1316
- let envCmdrcPath = path.join(process.cwd(), '.env-cmdrc.json');
1317
- if (!fs.existsSync(envCmdrcPath)) {
1318
- console.warn('No .env-cmdrc.json found in this folder. Are you running this command from the root of a LINCD app?');
1319
- process.exit();
1320
- }
1321
- let vars = yield GetEnvVars({
1322
- envFile: {
1323
- filePath: envCmdrcPath,
1324
- },
1325
- });
1326
- let environments = Object.keys(vars);
1327
- // Snapshot the original shell environment so it always takes highest priority
1328
- let shellEnv = Object.assign({}, process.env);
1329
- //if _main is present, load it first
1330
- if (environments.includes('_main')) {
1331
- process.env = Object.assign(Object.assign({}, process.env), vars._main);
1332
- }
1333
- //if --env is passed, load that environment
1334
- let args = process.argv.splice(2);
1335
- if (args.includes('--env')) {
1336
- let envIndex = args.indexOf('--env');
1337
- let env = args[envIndex + 1];
1338
- env.split(',').forEach((singleEnvironment) => {
1339
- if (environments.includes(singleEnvironment)) {
1340
- console.log('Environment: ' + singleEnvironment);
1341
- process.env = Object.assign(Object.assign({}, process.env), vars[singleEnvironment]);
1342
- }
1343
- else {
1344
- console.warn('Environment ' +
1345
- singleEnvironment +
1346
- ' not found in .env-cmdrc.json. Available environments: ' +
1347
- environments.join(', '));
1348
- }
1349
- });
1350
- }
1351
- else {
1352
- //chose development by default
1353
- process.env = Object.assign(Object.assign({}, process.env), vars.development);
1354
- console.log('No environment specified, using development');
1355
- }
1356
- // Re-apply original shell env vars so they always win over .env-cmdrc.json
1357
- process.env = Object.assign(Object.assign({}, process.env), shellEnv);
1358
- process.env.ENV_VARS_LOADED = 'true';
1359
- }
1360
- });
1302
+ // ensureEnvironmentLoaded moved to ./lifecycle.ts and re-exported above.
1361
1303
  export const runScript = (scriptName, options) => __awaiter(void 0, void 0, void 0, function* () {
1362
1304
  //if spawn is not defined, default to true
1363
1305
  const spawn = options.spawn !== undefined ? options.spawn : true;
@@ -1392,8 +1334,8 @@ export const runMethod = (packageName, method, options) => __awaiter(void 0, voi
1392
1334
  linkedConfig.server.loadRoutes = () => __awaiter(void 0, void 0, void 0, function* () { return yield import(path.join(process.cwd(), 'src', 'routes.tsx')); });
1393
1335
  }
1394
1336
  //@ts-ignore
1395
- const ServerClass = (yield import('@_linked/server/shapes/LincdServer'))
1396
- .LincdServer;
1337
+ const ServerClass = (yield import('@_linked/server/shapes/LinkedServer'))
1338
+ .LinkedServer;
1397
1339
  yield loadBackendStorageConfig();
1398
1340
  let server = new ServerClass(linkedConfig);
1399
1341
  //init the server
@@ -1432,7 +1374,7 @@ export const runMethod = (packageName, method, options) => __awaiter(void 0, voi
1432
1374
  });
1433
1375
  }
1434
1376
  else {
1435
- //reuse the existing running LincdServer instance.
1377
+ //reuse the existing running LinkedServer instance.
1436
1378
  //make a HTTP call
1437
1379
  //'/call/:pkg/:method',
1438
1380
  fetch(process.env.SITE_ROOT + '/call/' + packageName + '/' + method, {
@@ -1481,7 +1423,7 @@ export const startServer = (...args_1) => __awaiter(void 0, [...args_1], void 0,
1481
1423
  // hook.hook('.module.css', scssLoadcall);
1482
1424
  if (!ServerClass) {
1483
1425
  //@ts-ignore
1484
- ServerClass = (yield import('@_linked/server/shapes/LincdServer')).LincdServer;
1426
+ ServerClass = (yield import('@_linked/server/shapes/LinkedServer')).LinkedServer;
1485
1427
  }
1486
1428
  yield loadBackendStorageConfig();
1487
1429
  // Set default loadAppComponent if not provided
@@ -1532,7 +1474,11 @@ export const buildApp = () => __awaiter(void 0, void 0, void 0, function* () {
1532
1474
  });
1533
1475
  export const buildFrontend = () => __awaiter(void 0, void 0, void 0, function* () {
1534
1476
  yield ensureEnvironmentLoaded();
1535
- const webpackAppConfig = yield (yield import('./config-webpack-app.js')).getWebpackAppConfig();
1477
+ // @vite-ignore the webpack build path is legacy code, only reached
1478
+ // by `linked build-frontend` which is not part of the Vite dev/SSR
1479
+ // flow. Tell Vite not to graph-walk into it so we don't emit
1480
+ // import-analysis warnings for a file we never load via SSR.
1481
+ const webpackAppConfig = yield (yield import(/* @vite-ignore */ './config-webpack-app.js')).getWebpackAppConfig();
1536
1482
  console.log(chalk.magenta(`🛠 Building ${process.env.NODE_ENV} frontend bundles`));
1537
1483
  yield new Promise((resolve, reject) => {
1538
1484
  webpack(webpackAppConfig, (err, stats) => __awaiter(void 0, void 0, void 0, function* () {