@_linked/cli 1.8.1 → 1.8.2
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 +29 -0
- package/defaults/app-with-backend/.env.example +20 -0
- package/defaults/app-with-backend/gitignore.template +3 -1
- package/defaults/app-with-backend/linked.config.js +2 -0
- package/defaults/app-with-backend/package.json +12 -7
- package/defaults/app-with-backend/vite.config.ts +13 -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/lib/cjs/cli-methods.d.ts +11 -3
- package/lib/cjs/cli-methods.d.ts.map +1 -1
- package/lib/cjs/cli-methods.js +55 -118
- package/lib/cjs/cli-methods.js.map +1 -1
- package/lib/cjs/cli.js +30 -6
- package/lib/cjs/cli.js.map +1 -1
- package/lib/cjs/commands/start.d.ts +6 -0
- package/lib/cjs/commands/start.d.ts.map +1 -0
- package/lib/cjs/commands/start.js +337 -0
- package/lib/cjs/commands/start.js.map +1 -0
- package/lib/cjs/config-webpack-app.d.ts +1 -1
- package/lib/cjs/config-webpack-app.d.ts.map +1 -1
- package/lib/cjs/config-webpack-app.js +1 -1
- package/lib/cjs/config-webpack-app.js.map +1 -1
- package/lib/cjs/config-webpack.d.ts +1 -1
- package/lib/cjs/config-webpack.d.ts.map +1 -1
- package/lib/cjs/config-webpack.js +10 -10
- package/lib/cjs/config-webpack.js.map +1 -1
- package/lib/cjs/defineConfig.d.ts +1 -1
- package/lib/cjs/defineConfig.d.ts.map +1 -1
- package/lib/cjs/index.d.ts +1 -1
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +2 -2
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/interfaces.d.ts +9 -0
- package/lib/cjs/interfaces.d.ts.map +1 -1
- package/lib/cjs/lifecycle.d.ts +24 -0
- package/lib/cjs/lifecycle.d.ts.map +1 -0
- package/lib/cjs/lifecycle.js +187 -0
- package/lib/cjs/lifecycle.js.map +1 -0
- package/lib/cjs/loaders/ts-loader.d.mts.map +1 -1
- package/lib/cjs/loaders/ts-loader.mjs +11 -2
- package/lib/cjs/loaders/ts-loader.mjs.map +1 -1
- package/lib/cjs/package.json +6 -1
- package/lib/cjs/utils.d.ts +1 -1
- package/lib/cjs/utils.d.ts.map +1 -1
- package/lib/cjs/utils.js +9 -3
- package/lib/cjs/utils.js.map +1 -1
- package/lib/cjs/vite-config.d.ts +20 -0
- package/lib/cjs/vite-config.d.ts.map +1 -0
- package/lib/cjs/vite-config.js +401 -0
- package/lib/cjs/vite-config.js.map +1 -0
- 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 +36 -102
- 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/package.json +6 -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 +377 -0
- package/lib/esm/vite-config.js.map +1 -0
- package/package.json +6 -1
- 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/tsconfig-esm.json +1 -1
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
// Vite config helper for linked apps. Replaces webpack-based dev + build.
|
|
11
|
+
//
|
|
12
|
+
// Apps use this from their own vite.config.ts:
|
|
13
|
+
//
|
|
14
|
+
// import {createViteConfig} from '@_linked/cli/vite';
|
|
15
|
+
// export default createViteConfig({port: 4040, cssMode: 'tailwind'});
|
|
16
|
+
//
|
|
17
|
+
// The helper preserves the dev-mode `generateScopedName` (readable
|
|
18
|
+
// `_packageName_filename_className`) so CSS module class names match
|
|
19
|
+
// what the previous webpack chain produced for trace/debug. Production
|
|
20
|
+
// uses Vite's default scoping (content-hash, equivalent uniqueness).
|
|
21
|
+
import { defineConfig } from 'vite';
|
|
22
|
+
import react from '@vitejs/plugin-react';
|
|
23
|
+
import fsExtra from 'fs-extra';
|
|
24
|
+
import path from 'node:path';
|
|
25
|
+
import { generateScopedName } from './utils.js';
|
|
26
|
+
/**
|
|
27
|
+
* Walk the app's package.json `workspaces` field to build a lookup table
|
|
28
|
+
* from npm name → absolute src/ directory. Used by the resolver plugin
|
|
29
|
+
* to map bare specifiers like `@_linked/foo/bar` directly to source.
|
|
30
|
+
* No glob library: workspaces only support trailing `/*` patterns.
|
|
31
|
+
*/
|
|
32
|
+
function discoverWorkspaces() {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
var _a, _b;
|
|
35
|
+
const fs = yield import('node:fs/promises');
|
|
36
|
+
const cwd = process.cwd();
|
|
37
|
+
const out = [];
|
|
38
|
+
const seen = new Set();
|
|
39
|
+
// Register a package root iff it ships a `src/` dir (source install). Published
|
|
40
|
+
// packages have only `lib/` and are skipped — they resolve via their exports.
|
|
41
|
+
const addFromRoot = (root) => __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const subPkgPath = path.join(root, 'package.json');
|
|
43
|
+
if (!(yield fsExtra.pathExists(subPkgPath)))
|
|
44
|
+
return;
|
|
45
|
+
const srcDir = path.join(root, 'src');
|
|
46
|
+
if (!(yield fsExtra.pathExists(srcDir)))
|
|
47
|
+
return;
|
|
48
|
+
try {
|
|
49
|
+
const sub = yield fsExtra.readJson(subPkgPath);
|
|
50
|
+
if (sub.name && !seen.has(sub.name)) {
|
|
51
|
+
seen.add(sub.name);
|
|
52
|
+
out.push({ name: sub.name, srcDir });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (_a) { }
|
|
56
|
+
});
|
|
57
|
+
// 1. The app's own `workspaces` globs — the monorepo-root case (CN, or any app
|
|
58
|
+
// that is itself a workspace root). Only trailing `/*` patterns.
|
|
59
|
+
const pkgPath = path.join(cwd, 'package.json');
|
|
60
|
+
if (yield fsExtra.pathExists(pkgPath)) {
|
|
61
|
+
const pkg = yield fsExtra.readJson(pkgPath);
|
|
62
|
+
const patterns = Array.isArray(pkg.workspaces)
|
|
63
|
+
? pkg.workspaces
|
|
64
|
+
: (_b = (_a = pkg.workspaces) === null || _a === void 0 ? void 0 : _a.packages) !== null && _b !== void 0 ? _b : [];
|
|
65
|
+
for (const pattern of patterns) {
|
|
66
|
+
const m = pattern.match(/^(.+?)\/\*$/);
|
|
67
|
+
if (m) {
|
|
68
|
+
const parent = path.join(cwd, m[1]);
|
|
69
|
+
if (yield fsExtra.pathExists(parent)) {
|
|
70
|
+
for (const ent of yield fs.readdir(parent, { withFileTypes: true })) {
|
|
71
|
+
if (ent.isDirectory() || ent.isSymbolicLink()) {
|
|
72
|
+
yield addFromRoot(path.join(parent, ent.name));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
yield addFromRoot(path.join(cwd, pattern));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// 2. Dependency-graph traversal from the app's package.json. Starting from the
|
|
83
|
+
// app's own `dependencies` (+ `devDependencies`), keep the deps whose
|
|
84
|
+
// resolved package.json is marked `"linkedPackage": true` — the same marker
|
|
85
|
+
// the CLI keys on (see cli-methods.ts) — and recurse into THOSE packages'
|
|
86
|
+
// `dependencies`, with a visited-set to avoid cycles/rework.
|
|
87
|
+
//
|
|
88
|
+
// A dep is REGISTERED only if it ships `src/` (a symlinked workspace clone,
|
|
89
|
+
// or a `link:`/`portal:` dev install) — that's what lets a STANDALONE app
|
|
90
|
+
// (not itself a workspace root — e.g. a per-branch clone under /apps) resolve
|
|
91
|
+
// a linked package's `.tsx` sources with extension probing, instead of
|
|
92
|
+
// falling through to the package's `development → ./src/*.ts` export (which
|
|
93
|
+
// misses `.tsx` like LinkedServer). A prod/ejected app installs PUBLISHED
|
|
94
|
+
// packages (no `src/`) → not registered, resolved via each package's `lib`.
|
|
95
|
+
//
|
|
96
|
+
// The marker — NOT the npm scope — drives discovery, so a user's own
|
|
97
|
+
// custom-scope published linked package (e.g. `@acme/foo` with
|
|
98
|
+
// `linkedPackage:true`) is picked up too, and linked packages present in
|
|
99
|
+
// node_modules but not depended upon are ignored.
|
|
100
|
+
const nm = path.join(cwd, 'node_modules');
|
|
101
|
+
// Resolve a dependency name to its installed package.json path. A symlinked
|
|
102
|
+
// workspace clone resolves under the app's node_modules just like a normal
|
|
103
|
+
// install. Returns null when the package isn't installed (e.g. an optional
|
|
104
|
+
// or unhoisted dep) — we skip rather than throw.
|
|
105
|
+
const readInstalledPkg = (name) => __awaiter(this, void 0, void 0, function* () {
|
|
106
|
+
const root = path.join(nm, name);
|
|
107
|
+
const pkgJson = path.join(root, 'package.json');
|
|
108
|
+
if (!(yield fsExtra.pathExists(pkgJson)))
|
|
109
|
+
return null;
|
|
110
|
+
try {
|
|
111
|
+
return { root, json: yield fsExtra.readJson(pkgJson) };
|
|
112
|
+
}
|
|
113
|
+
catch (_a) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
const visited = new Set();
|
|
118
|
+
const walk = (deps) => __awaiter(this, void 0, void 0, function* () {
|
|
119
|
+
for (const name of Object.keys(deps !== null && deps !== void 0 ? deps : {})) {
|
|
120
|
+
if (visited.has(name))
|
|
121
|
+
continue;
|
|
122
|
+
visited.add(name);
|
|
123
|
+
const resolved = yield readInstalledPkg(name);
|
|
124
|
+
if (!resolved)
|
|
125
|
+
continue;
|
|
126
|
+
if (resolved.json.linkedPackage !== true)
|
|
127
|
+
continue;
|
|
128
|
+
// Register if it ships source (addFromRoot gates on src/ existing).
|
|
129
|
+
yield addFromRoot(resolved.root);
|
|
130
|
+
// Recurse into this linked package's own dependencies.
|
|
131
|
+
yield walk(resolved.json.dependencies);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
if (yield fsExtra.pathExists(pkgPath)) {
|
|
135
|
+
const appPkg = yield fsExtra.readJson(pkgPath);
|
|
136
|
+
yield walk(appPkg.dependencies);
|
|
137
|
+
yield walk(appPkg.devDependencies);
|
|
138
|
+
}
|
|
139
|
+
return out;
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Resolve a bare specifier like `@_linked/foo/bar`, `lincd-rdfs/Foo`, or
|
|
144
|
+
* `pkg/utils/Bar.js` against the workspace lookup. Tries extensions in
|
|
145
|
+
* order: .ts, .tsx, then the literal id (for files that already include
|
|
146
|
+
* an extension or for non-TS assets). Returns null when the specifier
|
|
147
|
+
* doesn't match any workspace package or no candidate exists on disk.
|
|
148
|
+
*/
|
|
149
|
+
function resolveWorkspaceSpecifier(specifier, workspaces) {
|
|
150
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
151
|
+
for (const ws of workspaces) {
|
|
152
|
+
if (specifier === ws.name) {
|
|
153
|
+
for (const ext of ['index.ts', 'index.tsx']) {
|
|
154
|
+
const p = path.join(ws.srcDir, ext);
|
|
155
|
+
if (yield fsExtra.pathExists(p))
|
|
156
|
+
return p;
|
|
157
|
+
}
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
if (specifier.startsWith(ws.name + '/')) {
|
|
161
|
+
const subpath = specifier.slice(ws.name.length + 1);
|
|
162
|
+
// Strip .js/.jsx suffix — workspace src uses TS published-output
|
|
163
|
+
// convention (./Sibling.js) but we want the TS source.
|
|
164
|
+
const base = subpath.replace(/\.jsx?$/, '');
|
|
165
|
+
for (const ext of ['.tsx', '.ts']) {
|
|
166
|
+
const p = path.join(ws.srcDir, base + ext);
|
|
167
|
+
if (yield fsExtra.pathExists(p))
|
|
168
|
+
return p;
|
|
169
|
+
}
|
|
170
|
+
// Files that already include an extension Vite handles (.css, .json,
|
|
171
|
+
// .svg, etc.) — return the literal path under src.
|
|
172
|
+
const literal = path.join(ws.srcDir, subpath);
|
|
173
|
+
if (yield fsExtra.pathExists(literal))
|
|
174
|
+
return literal;
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
export function createViteConfig(opts = {}) {
|
|
182
|
+
return defineConfig((_a) => __awaiter(this, [_a], void 0, function* ({ mode }) {
|
|
183
|
+
var _b, _c, _d, _e, _f, _g;
|
|
184
|
+
const isDev = mode === 'development';
|
|
185
|
+
const workspaces = isDev ? yield discoverWorkspaces() : [];
|
|
186
|
+
const config = {
|
|
187
|
+
server: {
|
|
188
|
+
port: (_b = opts.port) !== null && _b !== void 0 ? _b : 4040,
|
|
189
|
+
middlewareMode: true,
|
|
190
|
+
},
|
|
191
|
+
build: {
|
|
192
|
+
outDir: (_c = opts.outDir) !== null && _c !== void 0 ? _c : 'public/bundles',
|
|
193
|
+
manifest: true,
|
|
194
|
+
// Bump chunk-size warning so it doesn't fire on every build for
|
|
195
|
+
// the linked vendor bundle. Real chunking happens via
|
|
196
|
+
// manualChunks below.
|
|
197
|
+
chunkSizeWarningLimit: 1000,
|
|
198
|
+
rollupOptions: {
|
|
199
|
+
input: (_d = opts.entry) !== null && _d !== void 0 ? _d : 'src/index.tsx',
|
|
200
|
+
output: {
|
|
201
|
+
entryFileNames: 'assets/[name]-[hash].js',
|
|
202
|
+
chunkFileNames: 'assets/[name]-[hash].js',
|
|
203
|
+
assetFileNames: 'assets/[name]-[hash][extname]',
|
|
204
|
+
// Split large/common deps so route chunks don't all carry
|
|
205
|
+
// their own copy AND the main entry doesn't end up at 5MB+.
|
|
206
|
+
// Each manualChunk becomes its own assets/<name>-<hash>.js
|
|
207
|
+
// file the browser caches independently — incremental dev
|
|
208
|
+
// builds + cache wins on prod deploys both improve.
|
|
209
|
+
manualChunks: (id) => {
|
|
210
|
+
if (!id.includes('node_modules')) {
|
|
211
|
+
// Linked workspaces ship as @_linked/* / lincd-* —
|
|
212
|
+
// group all linked-framework code into a single chunk.
|
|
213
|
+
if (id.includes('/packages/core/') ||
|
|
214
|
+
id.includes('/packages/react/') ||
|
|
215
|
+
id.includes('/packages/server-utils/') ||
|
|
216
|
+
id.includes('/packages/primitives/') ||
|
|
217
|
+
id.includes('/packages/css/') ||
|
|
218
|
+
/\/packages\/(auth|org|schema|fuseki|owl|xsd|dcat|dcmi|s3|sentry|ui)\//.test(id)) {
|
|
219
|
+
return 'linked';
|
|
220
|
+
}
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
// React + React-DOM in their own chunk — every route uses them
|
|
224
|
+
if (/[\\/]node_modules[\\/](react|react-dom|react-router-dom|scheduler)[\\/]/.test(id)) {
|
|
225
|
+
return 'react-vendor';
|
|
226
|
+
}
|
|
227
|
+
// Heavy editor deps — only loaded on pages that need them,
|
|
228
|
+
// but worth isolating so they don't get pulled into main.
|
|
229
|
+
if (/[\\/]node_modules[\\/]@monaco-editor[\\/]/.test(id)) {
|
|
230
|
+
return 'monaco';
|
|
231
|
+
}
|
|
232
|
+
// Charting/visualization
|
|
233
|
+
if (/[\\/]node_modules[\\/](recharts|react-flow|@xyflow|d3-)[\\/]/.test(id)) {
|
|
234
|
+
return 'viz';
|
|
235
|
+
}
|
|
236
|
+
// Animation
|
|
237
|
+
if (/[\\/]node_modules[\\/]framer-motion[\\/]/.test(id)) {
|
|
238
|
+
return 'motion';
|
|
239
|
+
}
|
|
240
|
+
// Catch-all for other node_modules in a vendor chunk
|
|
241
|
+
return 'vendor';
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
sourcemap: true,
|
|
246
|
+
},
|
|
247
|
+
plugins: [
|
|
248
|
+
// Plan-011 phase 3a — Direct workspace specifier resolver.
|
|
249
|
+
//
|
|
250
|
+
// The package.json `"./*": { "development": "./src/*.ts" }` wildcard
|
|
251
|
+
// can't express "try .ts, fall back to .tsx" (Node's exports spec
|
|
252
|
+
// resolves to a single literal path). For React-heavy packages like
|
|
253
|
+
// @_linked/primitives, @_linked/server-utils, and @_linked/auth,
|
|
254
|
+
// most files are .tsx — the wildcard fails before any Vite plugin
|
|
255
|
+
// gets a chance to fix it up.
|
|
256
|
+
//
|
|
257
|
+
// This plugin intercepts BARE workspace specifiers like
|
|
258
|
+
// `@_linked/foo/bar` and `pkg-name/utils/Baz.js` BEFORE Vite's
|
|
259
|
+
// package.json resolver runs, mapping them straight to source with
|
|
260
|
+
// proper extension fallback (.tsx → .ts → literal). It also covers
|
|
261
|
+
// the `./Sibling.js` published-output convention for imports made
|
|
262
|
+
// from within workspace `src/` trees.
|
|
263
|
+
isDev
|
|
264
|
+
? {
|
|
265
|
+
name: 'linked:resolve-workspace-ts',
|
|
266
|
+
enforce: 'pre',
|
|
267
|
+
resolveId(id, importer) {
|
|
268
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
269
|
+
if (id.startsWith('\0'))
|
|
270
|
+
return null;
|
|
271
|
+
// Workspace-internal `./Sibling.js` → `.tsx` / `.ts` rewrite.
|
|
272
|
+
if (importer &&
|
|
273
|
+
importer.includes(`${path.sep}packages${path.sep}`) &&
|
|
274
|
+
/\.(jsx?)$/.test(id) &&
|
|
275
|
+
(id.startsWith('.') || id.startsWith('/'))) {
|
|
276
|
+
const importerDir = path.dirname(importer);
|
|
277
|
+
const base = path.resolve(importerDir, id);
|
|
278
|
+
for (const ext of ['.tsx', '.ts']) {
|
|
279
|
+
const candidate = base.replace(/\.jsx?$/, ext);
|
|
280
|
+
if (yield fsExtra.pathExists(candidate))
|
|
281
|
+
return candidate;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// Bare workspace specifier — resolve directly to src/.
|
|
285
|
+
if (!id.startsWith('.') &&
|
|
286
|
+
!id.startsWith('/') &&
|
|
287
|
+
workspaces.length > 0) {
|
|
288
|
+
const resolved = yield resolveWorkspaceSpecifier(id, workspaces);
|
|
289
|
+
if (resolved)
|
|
290
|
+
return resolved;
|
|
291
|
+
}
|
|
292
|
+
return null;
|
|
293
|
+
});
|
|
294
|
+
},
|
|
295
|
+
}
|
|
296
|
+
: null,
|
|
297
|
+
react({
|
|
298
|
+
babel: {
|
|
299
|
+
parserOpts: {
|
|
300
|
+
plugins: ['decorators-legacy', 'classProperties'],
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
}),
|
|
304
|
+
// Dev-only: log every file the watcher sees change. Without this,
|
|
305
|
+
// backend edits look silent (no JS rebuild step, no Node restart —
|
|
306
|
+
// see plan-010 §"Rebuild chain") and it's hard to tell whether
|
|
307
|
+
// Vite picked up the change at all.
|
|
308
|
+
isDev
|
|
309
|
+
? {
|
|
310
|
+
name: 'linked:reload-log',
|
|
311
|
+
configureServer(server) {
|
|
312
|
+
server.watcher.on('change', (file) => {
|
|
313
|
+
const rel = file.replace(process.cwd() + '/', '');
|
|
314
|
+
console.log(`[linked] reloaded ${rel}`);
|
|
315
|
+
});
|
|
316
|
+
},
|
|
317
|
+
}
|
|
318
|
+
: null,
|
|
319
|
+
...((_e = opts.plugins) !== null && _e !== void 0 ? _e : []),
|
|
320
|
+
].filter(Boolean),
|
|
321
|
+
css: {
|
|
322
|
+
modules: {
|
|
323
|
+
generateScopedName: isDev ? generateScopedName : undefined,
|
|
324
|
+
},
|
|
325
|
+
postcss: opts.postcssPlugins
|
|
326
|
+
? { plugins: opts.postcssPlugins }
|
|
327
|
+
: undefined,
|
|
328
|
+
},
|
|
329
|
+
esbuild: {
|
|
330
|
+
tsconfigRaw: {
|
|
331
|
+
compilerOptions: {
|
|
332
|
+
experimentalDecorators: true,
|
|
333
|
+
},
|
|
334
|
+
},
|
|
335
|
+
jsx: 'automatic',
|
|
336
|
+
},
|
|
337
|
+
// Plan-011 phase 3a — `ssr.external` is now a minimal allowlist of
|
|
338
|
+
// npm deps that genuinely can't (or shouldn't) go through Vite's
|
|
339
|
+
// SSR transform. Workspace packages (`@_linked/*`, `lincd-*`) are
|
|
340
|
+
// DELIBERATELY removed so Vite resolves them via each package's
|
|
341
|
+
// `development → ./src/*.ts` conditional export and HMR works on
|
|
342
|
+
// source changes (see plan-011 §I1).
|
|
343
|
+
//
|
|
344
|
+
// "Multiple LINCD" warnings may resurface during the interim until
|
|
345
|
+
// LINCD eradication completes (plan-011 §I2 — accepted).
|
|
346
|
+
ssr: {
|
|
347
|
+
external: [
|
|
348
|
+
'react',
|
|
349
|
+
'react-dom',
|
|
350
|
+
'react-dom/server',
|
|
351
|
+
'react-router-dom',
|
|
352
|
+
'scheduler',
|
|
353
|
+
'express',
|
|
354
|
+
],
|
|
355
|
+
},
|
|
356
|
+
define: (_f = opts.define) !== null && _f !== void 0 ? _f : {},
|
|
357
|
+
};
|
|
358
|
+
// Tailwind plugin (only if explicitly enabled — adds a heavy plugin).
|
|
359
|
+
if (opts.cssMode === 'tailwind') {
|
|
360
|
+
// Try ESM dynamic import first (works when @tailwindcss/vite is
|
|
361
|
+
// installed in the app or hoisted). Surface a CLEAR warning when
|
|
362
|
+
// it's not — the app needs the dep for theme variables to load.
|
|
363
|
+
try {
|
|
364
|
+
const tailwind = yield import('@tailwindcss/vite');
|
|
365
|
+
const tailwindPlugin = (_g = tailwind.default) !== null && _g !== void 0 ? _g : tailwind;
|
|
366
|
+
config.plugins.push(tailwindPlugin());
|
|
367
|
+
}
|
|
368
|
+
catch (err) {
|
|
369
|
+
console.warn('[createViteConfig] cssMode=tailwind but @tailwindcss/vite ' +
|
|
370
|
+
'could not be loaded. Theme variables won\'t apply at runtime. ' +
|
|
371
|
+
'Add `@tailwindcss/vite` to your app\'s package.json.');
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
return config;
|
|
375
|
+
}));
|
|
376
|
+
}
|
|
377
|
+
//# sourceMappingURL=vite-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-config.js","sourceRoot":"","sources":["../../src/vite-config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@_linked/cli",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.2",
|
|
4
4
|
"description": "Command line tools for the @_linked/* packages and apps",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/esm/index.js",
|
|
@@ -84,12 +84,15 @@
|
|
|
84
84
|
"@babel/register": "^7.23.7",
|
|
85
85
|
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
|
|
86
86
|
"@tailwindcss/postcss": "^4.1.4",
|
|
87
|
+
"@tailwindcss/vite": "^4.1.4",
|
|
87
88
|
"@types/node": "^20.12.7",
|
|
88
89
|
"@types/react": "^18.0.17",
|
|
89
90
|
"@types/react-dom": "^18.0.6",
|
|
91
|
+
"@vitejs/plugin-react": "^4.3.0",
|
|
90
92
|
"babel-loader": "^9.1.3",
|
|
91
93
|
"chalk": "^4.1.2",
|
|
92
94
|
"child-process-promise": "^2.2.1",
|
|
95
|
+
"chokidar": "^4.0.0",
|
|
93
96
|
"colors": "^1.4.0",
|
|
94
97
|
"commander": "^11.0.0",
|
|
95
98
|
"copy-webpack-plugin": "^12.0.2",
|
|
@@ -101,6 +104,7 @@
|
|
|
101
104
|
"depcheck": "^1.4.7",
|
|
102
105
|
"env-cmd": "^10.1.0",
|
|
103
106
|
"esbuild": "^0.28.0",
|
|
107
|
+
"express": "^4.19.2",
|
|
104
108
|
"find-nearest-package-json": "^2.0.1",
|
|
105
109
|
"fs-extra": "^11.2.0",
|
|
106
110
|
"glob": "^10.3.12",
|
|
@@ -135,6 +139,7 @@
|
|
|
135
139
|
"tsx": "^4.19.3",
|
|
136
140
|
"typescript": "^5.4.0",
|
|
137
141
|
"typescript-plugin-css-modules": "^5.1.0",
|
|
142
|
+
"vite": "^6.0.0",
|
|
138
143
|
"webpack": "^5.90.3",
|
|
139
144
|
"webpack-bundle-analyzer": "^4.10.1",
|
|
140
145
|
"webpack-license-plugin": "^4.4.2",
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Instructions
|
|
2
|
+
|
|
3
|
+
- Following Playwright test failed.
|
|
4
|
+
- Explain why, be concise, respect Playwright best practices.
|
|
5
|
+
- Provide a snippet of code with the fix, if possible.
|
|
6
|
+
|
|
7
|
+
# Test info
|
|
8
|
+
|
|
9
|
+
- Name: create-app.spec.ts >> Person fixture: add → edit → delete round-trip
|
|
10
|
+
- Location: tests/e2e/create-app.spec.ts:113:1
|
|
11
|
+
|
|
12
|
+
# Error details
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
Error: Log message "/Started.*Server/" not received after 60000ms
|
|
16
|
+
```
|
|
Binary file
|