@_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.
- package/CHANGELOG.md +41 -0
- package/defaults/setup-publish/dual-branch/github/workflows/publish.yml +3 -0
- package/defaults/setup-publish/github/workflows/publish.yml +3 -0
- package/defaults/shape.ts +8 -2
- package/jest.config.cjs +8 -4
- package/lib/esm/cli-methods.d.ts +11 -3
- package/lib/esm/cli-methods.d.ts.map +1 -1
- package/lib/esm/cli-methods.js +51 -105
- package/lib/esm/cli-methods.js.map +1 -1
- package/lib/esm/cli.js +32 -8
- package/lib/esm/cli.js.map +1 -1
- package/lib/esm/commands/start.d.ts +6 -0
- package/lib/esm/commands/start.d.ts.map +1 -0
- package/lib/esm/commands/start.js +311 -0
- package/lib/esm/commands/start.js.map +1 -0
- package/lib/esm/config-webpack-app.d.ts +1 -1
- package/lib/esm/config-webpack-app.d.ts.map +1 -1
- package/lib/esm/config-webpack-app.js +1 -1
- package/lib/esm/config-webpack-app.js.map +1 -1
- package/lib/esm/config-webpack.d.ts +1 -1
- package/lib/esm/config-webpack.d.ts.map +1 -1
- package/lib/esm/config-webpack.js +4 -4
- package/lib/esm/config-webpack.js.map +1 -1
- package/lib/esm/defineConfig.d.ts +1 -1
- package/lib/esm/defineConfig.d.ts.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/interfaces.d.ts +9 -0
- package/lib/esm/interfaces.d.ts.map +1 -1
- package/lib/esm/lifecycle.d.ts +24 -0
- package/lib/esm/lifecycle.d.ts.map +1 -0
- package/lib/esm/lifecycle.js +156 -0
- package/lib/esm/lifecycle.js.map +1 -0
- package/lib/esm/loaders/ts-loader.d.mts.map +1 -1
- package/lib/esm/loaders/ts-loader.mjs +11 -2
- package/lib/esm/loaders/ts-loader.mjs.map +1 -1
- package/lib/esm/utils.d.ts +1 -1
- package/lib/esm/utils.d.ts.map +1 -1
- package/lib/esm/utils.js +9 -3
- package/lib/esm/utils.js.map +1 -1
- package/lib/esm/vite-config.d.ts +20 -0
- package/lib/esm/vite-config.d.ts.map +1 -0
- package/lib/esm/vite-config.js +410 -0
- package/lib/esm/vite-config.js.map +1 -0
- package/package.json +13 -14
- package/test-results/.last-run.json +6 -0
- package/test-results/create-app-Person-fixture-add-/342/206/222-edit-/342/206/222-delete-round-trip/error-context.md +16 -0
- package/test-results/create-app-Person-fixture-add-/342/206/222-edit-/342/206/222-delete-round-trip/trace.zip +0 -0
- package/tests/unit/safeYarn.test.ts +1 -1
- package/tsconfig-esm.json +1 -1
- package/defaults/app-with-backend/.env-cmdrc.json +0 -19
- package/defaults/app-with-backend/.eslintignore +0 -5
- package/defaults/app-with-backend/.eslintrc.json +0 -40
- package/defaults/app-with-backend/.prettierignore +0 -4
- package/defaults/app-with-backend/.prettierrc.json +0 -27
- package/defaults/app-with-backend/.vscode/launch.json +0 -12
- package/defaults/app-with-backend/.yarn/plugins/@yarnpkg/plugin-version.cjs +0 -550
- package/defaults/app-with-backend/.yarn/releases/yarn-3.6.1.cjs +0 -874
- package/defaults/app-with-backend/gitignore.template +0 -25
- package/defaults/app-with-backend/linked.backend.datasets.example.json +0 -17
- package/defaults/app-with-backend/linked.backend.storage.ts +0 -35
- package/defaults/app-with-backend/linked.config.js +0 -5
- package/defaults/app-with-backend/package.json +0 -70
- package/defaults/app-with-backend/pm2-staging.config.js +0 -12
- package/defaults/app-with-backend/pm2.config.js +0 -12
- package/defaults/app-with-backend/public/favicon-144x144.png +0 -0
- package/defaults/app-with-backend/public/favicon-57x57.png +0 -0
- package/defaults/app-with-backend/public/favicon-72x72.png +0 -0
- package/defaults/app-with-backend/public/favicon.ico +0 -0
- package/defaults/app-with-backend/readme.md +0 -93
- package/defaults/app-with-backend/src/App.module.css +0 -83
- package/defaults/app-with-backend/src/App.tsx +0 -30
- package/defaults/app-with-backend/src/backend.ts +0 -9
- package/defaults/app-with-backend/src/components/Error.module.css +0 -9
- package/defaults/app-with-backend/src/components/Error.tsx +0 -11
- package/defaults/app-with-backend/src/components/PersonOverview.module.css +0 -100
- package/defaults/app-with-backend/src/components/PersonOverview.tsx +0 -97
- package/defaults/app-with-backend/src/components/PersonOverviewContext.tsx +0 -12
- package/defaults/app-with-backend/src/components/PersonPreview.module.css +0 -97
- package/defaults/app-with-backend/src/components/PersonPreview.tsx +0 -109
- package/defaults/app-with-backend/src/components/Spinner.module.css +0 -17
- package/defaults/app-with-backend/src/components/Spinner.tsx +0 -12
- package/defaults/app-with-backend/src/index.tsx +0 -34
- package/defaults/app-with-backend/src/layout/DefaultLayout.module.css +0 -15
- package/defaults/app-with-backend/src/layout/DefaultLayout.tsx +0 -12
- package/defaults/app-with-backend/src/layout/Header.module.css +0 -46
- package/defaults/app-with-backend/src/layout/Header.tsx +0 -27
- package/defaults/app-with-backend/src/linked.frontend.datasets.json +0 -12
- package/defaults/app-with-backend/src/linked.frontend.storage.ts +0 -36
- package/defaults/app-with-backend/src/package.ts +0 -16
- package/defaults/app-with-backend/src/pages/Home.module.css +0 -23
- package/defaults/app-with-backend/src/pages/Home.tsx +0 -14
- package/defaults/app-with-backend/src/pages/Page1.module.css +0 -111
- package/defaults/app-with-backend/src/pages/Page1.tsx +0 -196
- package/defaults/app-with-backend/src/pages/PageNotFound.module.css +0 -19
- package/defaults/app-with-backend/src/pages/PageNotFound.tsx +0 -14
- package/defaults/app-with-backend/src/pages/Signin.module.css +0 -20
- package/defaults/app-with-backend/src/pages/Signin.tsx +0 -16
- package/defaults/app-with-backend/src/routes.tsx +0 -78
- package/defaults/app-with-backend/src/theme.css +0 -91
- package/defaults/app-with-backend/src/types.ts +0 -14
- package/defaults/app-with-backend/src/utils/lazyWithPreload.tsx +0 -42
- package/defaults/app-with-backend/src/utils/preloadRoutes.ts +0 -38
- package/defaults/app-with-backend/tsconfig.json +0 -24
- package/defaults/app-with-backend/yarnrc.yml.template +0 -8
- package/lib/cjs/cli-methods.d.ts +0 -67
- package/lib/cjs/cli-methods.d.ts.map +0 -1
- package/lib/cjs/cli-methods.js +0 -2718
- package/lib/cjs/cli-methods.js.map +0 -1
- package/lib/cjs/cli.d.ts +0 -3
- package/lib/cjs/cli.d.ts.map +0 -1
- package/lib/cjs/cli.js +0 -315
- package/lib/cjs/cli.js.map +0 -1
- package/lib/cjs/commands/build-package.d.ts +0 -9
- package/lib/cjs/commands/build-package.d.ts.map +0 -1
- package/lib/cjs/commands/build-package.js +0 -55
- package/lib/cjs/commands/build-package.js.map +0 -1
- package/lib/cjs/commands/safe-yarn.d.ts +0 -10
- package/lib/cjs/commands/safe-yarn.d.ts.map +0 -1
- package/lib/cjs/commands/safe-yarn.js +0 -66
- package/lib/cjs/commands/safe-yarn.js.map +0 -1
- package/lib/cjs/commands/setup-publish.d.ts +0 -23
- package/lib/cjs/commands/setup-publish.d.ts.map +0 -1
- package/lib/cjs/commands/setup-publish.js +0 -369
- package/lib/cjs/commands/setup-publish.js.map +0 -1
- package/lib/cjs/config-webpack-app.d.ts +0 -112
- package/lib/cjs/config-webpack-app.d.ts.map +0 -1
- package/lib/cjs/config-webpack-app.js +0 -427
- package/lib/cjs/config-webpack-app.js.map +0 -1
- package/lib/cjs/config-webpack.d.ts +0 -55
- package/lib/cjs/config-webpack.d.ts.map +0 -1
- package/lib/cjs/config-webpack.js +0 -417
- package/lib/cjs/config-webpack.js.map +0 -1
- package/lib/cjs/defineConfig.d.ts +0 -8
- package/lib/cjs/defineConfig.d.ts.map +0 -1
- package/lib/cjs/defineConfig.js +0 -12
- package/lib/cjs/defineConfig.js.map +0 -1
- package/lib/cjs/index.d.ts +0 -12
- package/lib/cjs/index.d.ts.map +0 -1
- package/lib/cjs/index.js +0 -43
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/interfaces.d.ts +0 -131
- package/lib/cjs/interfaces.d.ts.map +0 -1
- package/lib/cjs/interfaces.js +0 -3
- package/lib/cjs/interfaces.js.map +0 -1
- package/lib/cjs/loaders/css-loader.d.mts +0 -2
- package/lib/cjs/loaders/css-loader.d.mts.map +0 -1
- package/lib/cjs/loaders/css-loader.mjs +0 -86
- package/lib/cjs/loaders/css-loader.mjs.map +0 -1
- package/lib/cjs/loaders/register-css-only.d.ts +0 -2
- package/lib/cjs/loaders/register-css-only.d.ts.map +0 -1
- package/lib/cjs/loaders/register-css-only.js +0 -11
- package/lib/cjs/loaders/register-css-only.js.map +0 -1
- package/lib/cjs/loaders/register.d.ts +0 -2
- package/lib/cjs/loaders/register.d.ts.map +0 -1
- package/lib/cjs/loaders/register.js +0 -11
- package/lib/cjs/loaders/register.js.map +0 -1
- package/lib/cjs/loaders/ts-loader.d.mts +0 -3
- package/lib/cjs/loaders/ts-loader.d.mts.map +0 -1
- package/lib/cjs/loaders/ts-loader.mjs +0 -116
- package/lib/cjs/loaders/ts-loader.mjs.map +0 -1
- package/lib/cjs/metadata.d.ts +0 -1
- package/lib/cjs/metadata.d.ts.map +0 -1
- package/lib/cjs/metadata.js +0 -155
- package/lib/cjs/metadata.js.map +0 -1
- package/lib/cjs/package.json +0 -139
- package/lib/cjs/plugins/check-imports.d.ts +0 -2
- package/lib/cjs/plugins/check-imports.d.ts.map +0 -1
- package/lib/cjs/plugins/check-imports.js +0 -68
- package/lib/cjs/plugins/check-imports.js.map +0 -1
- package/lib/cjs/plugins/declaration-plugin.d.ts +0 -15
- package/lib/cjs/plugins/declaration-plugin.d.ts.map +0 -1
- package/lib/cjs/plugins/declaration-plugin.js +0 -285
- package/lib/cjs/plugins/declaration-plugin.js.map +0 -1
- package/lib/cjs/plugins/externalise-modules.d.ts +0 -7
- package/lib/cjs/plugins/externalise-modules.d.ts.map +0 -1
- package/lib/cjs/plugins/externalise-modules.js +0 -190
- package/lib/cjs/plugins/externalise-modules.js.map +0 -1
- package/lib/cjs/plugins/lincd-tailwind-sources.d.ts +0 -3
- package/lib/cjs/plugins/lincd-tailwind-sources.d.ts.map +0 -1
- package/lib/cjs/plugins/lincd-tailwind-sources.js +0 -32
- package/lib/cjs/plugins/lincd-tailwind-sources.js.map +0 -1
- package/lib/cjs/plugins/watch-run.d.ts +0 -5
- package/lib/cjs/plugins/watch-run.d.ts.map +0 -1
- package/lib/cjs/plugins/watch-run.js +0 -45
- package/lib/cjs/plugins/watch-run.js.map +0 -1
- package/lib/cjs/preflight.css +0 -137
- package/lib/cjs/tailwind.config.d.ts +0 -8
- package/lib/cjs/tailwind.config.d.ts.map +0 -1
- package/lib/cjs/tailwind.config.js +0 -17
- package/lib/cjs/tailwind.config.js.map +0 -1
- package/lib/cjs/utils.d.ts +0 -77
- package/lib/cjs/utils.d.ts.map +0 -1
- package/lib/cjs/utils.js +0 -585
- package/lib/cjs/utils.js.map +0 -1
- package/lib/esm/loaders/register-css-only.d.ts +0 -2
- package/lib/esm/loaders/register-css-only.d.ts.map +0 -1
- package/lib/esm/loaders/register-css-only.js +0 -9
- package/lib/esm/loaders/register-css-only.js.map +0 -1
- package/lib/esm/loaders/register.d.ts +0 -2
- package/lib/esm/loaders/register.d.ts.map +0 -1
- package/lib/esm/loaders/register.js +0 -9
- package/lib/esm/loaders/register.js.map +0 -1
- package/lib/esm/package.json +0 -139
- /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
|
-
|
|
2
|
-
|
|
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
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
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
|
};
|
package/lib/esm/cli-methods.d.ts
CHANGED
|
@@ -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":"AAyBA,OAAO,EAAC,cAAc,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"cli-methods.d.ts","sourceRoot":"","sources":["../../src/cli-methods.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/cli-methods.js
CHANGED
|
@@ -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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
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
|
-
|
|
133
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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/
|
|
1396
|
-
.
|
|
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
|
|
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/
|
|
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
|
-
|
|
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* () {
|