@holo-js/cli 0.2.5 → 0.3.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 (53) hide show
  1. package/dist/{agent-skills-MSEMQUXT.mjs → agent-skills-CHAXS2YN.mjs} +13 -6
  2. package/dist/bin/holo.mjs +436 -109
  3. package/dist/{broadcast-5MJ3GJK7.mjs → broadcast-5VZM5SGQ.mjs} +13 -10
  4. package/dist/{broadcast-MRJGFCFH.mjs → broadcast-AABT52BK.mjs} +13 -10
  5. package/dist/cache-A42JSVYA.mjs +138 -0
  6. package/dist/cache-DUVBBOZU.mjs +138 -0
  7. package/dist/{cache-migrations-CPYQC7T6.mjs → cache-migrations-4WKSEN2Q.mjs} +12 -10
  8. package/dist/{cache-migrations-APDFSFEX.mjs → cache-migrations-PD2T5AV4.mjs} +14 -12
  9. package/dist/chunk-3RFRE7XG.mjs +491 -0
  10. package/dist/{chunk-PT72AMV7.mjs → chunk-6BHJLCAO.mjs} +256 -392
  11. package/dist/{chunk-KS5TWO75.mjs → chunk-EQUFFLRG.mjs} +7 -7
  12. package/dist/chunk-HX6MOYBO.mjs +2 -0
  13. package/dist/{chunk-YEFJBN56.mjs → chunk-JVLZ3SOW.mjs} +11 -8
  14. package/dist/{chunk-UPXQONEH.mjs → chunk-KRADH7PK.mjs} +55 -51
  15. package/dist/chunk-LALDNNPH.mjs +428 -0
  16. package/dist/chunk-LHK5YUR4.mjs +156 -0
  17. package/dist/{chunk-LBJAJLKU.mjs → chunk-M3IPUCTM.mjs} +1 -1
  18. package/dist/{chunk-TWITVSFZ.mjs → chunk-OI54DOHK.mjs} +256 -392
  19. package/dist/{chunk-LXGQCG56.mjs → chunk-OLZEMIDQ.mjs} +1 -1
  20. package/dist/{chunk-VP2E62DF.mjs → chunk-QSVMXMTQ.mjs} +49 -349
  21. package/dist/{chunk-J76GH2DR.mjs → chunk-R4ZYMEDU.mjs} +129 -86
  22. package/dist/{chunk-XDRCZ3Z5.mjs → chunk-TH5YCOZB.mjs} +57 -53
  23. package/dist/chunk-TRYHX5S4.mjs +360 -0
  24. package/dist/chunk-XBOVM6LO.mjs +41 -0
  25. package/dist/{chunk-ILU426CF.mjs → chunk-YACY2572.mjs} +482 -2
  26. package/dist/{config-MD27U4FM.mjs → config-BZHQK532.mjs} +3 -3
  27. package/dist/{dev-CT4DRTLN.mjs → dev-7KGRV56X.mjs} +10 -8
  28. package/dist/{dev-QDLR6C7K.mjs → dev-GQT37XJU.mjs} +10 -8
  29. package/dist/{discovery-GWTBF5RZ.mjs → discovery-HNH3BLDL.mjs} +8 -6
  30. package/dist/{generators-PUN5TFP5.mjs → generators-3FVW4AEJ.mjs} +18 -15
  31. package/dist/{generators-WQHI7DBW.mjs → generators-JWVNGUUE.mjs} +14 -11
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.mjs +434 -107
  34. package/dist/{media-migrations-D3CDNMPT.mjs → media-migrations-EG34NYAG.mjs} +13 -11
  35. package/dist/{media-migrations-IWCSCKSA.mjs → media-migrations-LGI7R7AR.mjs} +11 -9
  36. package/dist/plugins-ZGLB6JO6.mjs +24 -0
  37. package/dist/{queue-O3OSLGOV.mjs → queue-BEZDCZCY.mjs} +54 -16
  38. package/dist/{queue-GRB2IH5M.mjs → queue-R54DUUYA.mjs} +54 -16
  39. package/dist/{queue-migrations-7T42S4FX.mjs → queue-migrations-AM3AKT76.mjs} +16 -11
  40. package/dist/{queue-migrations-HFZB64OG.mjs → queue-migrations-U477YSFD.mjs} +18 -13
  41. package/dist/{runtime-TTRP2DGL.mjs → runtime-4TJYZLQV.mjs} +10 -8
  42. package/dist/{runtime-M3G5OKQV.mjs → runtime-MSRQD5W5.mjs} +10 -8
  43. package/dist/{runtime-GSXF4NB3.mjs → runtime-VR5BDPYQ.mjs} +1 -1
  44. package/dist/runtime-worker.mjs +7 -1
  45. package/dist/{scaffold-5BOVJYF3.mjs → scaffold-ASEX5LEX.mjs} +8 -4
  46. package/dist/{scaffold-NY3MWUZF.mjs → scaffold-ZAD3XUSD.mjs} +8 -4
  47. package/dist/{security-ST6ED7EK.mjs → security-4QLV7QCH.mjs} +8 -6
  48. package/dist/{security-H7AGDFBX.mjs → security-KYTLP4DF.mjs} +8 -6
  49. package/package.json +35 -8
  50. package/dist/cache-KVRYC7FB.mjs +0 -66
  51. package/dist/cache-WWE4Q4YE.mjs +0 -66
  52. package/dist/chunk-D7O4SU6N.mjs +0 -2
  53. package/dist/chunk-FGQ2I2YH.mjs +0 -22
@@ -3,12 +3,440 @@ import { mkdtemp, mkdir, readFile, rm, writeFile } from "fs/promises";
3
3
  import { existsSync } from "fs";
4
4
  import { createRequire } from "module";
5
5
  import { basename, dirname, extname as extname2, join as join2, resolve as resolve2 } from "path";
6
- import { pathToFileURL } from "url";
6
+ import { fileURLToPath, pathToFileURL } from "url";
7
7
  import { build } from "esbuild";
8
8
 
9
9
  // src/project/shared.ts
10
10
  import { stat } from "fs/promises";
11
11
  import { extname, join, relative, resolve } from "path";
12
+
13
+ // package.json
14
+ var package_default = {
15
+ name: "@holo-js/cli",
16
+ version: "0.3.0",
17
+ description: "Holo-JS Framework - project creation, discovery, and operational CLI",
18
+ type: "module",
19
+ license: "MIT",
20
+ bin: {
21
+ holo: "./dist/bin/holo.mjs",
22
+ "holo-js": "./dist/bin/holo.mjs"
23
+ },
24
+ exports: {
25
+ ".": {
26
+ types: "./dist/index.d.ts",
27
+ import: "./dist/index.mjs"
28
+ }
29
+ },
30
+ main: "./dist/index.mjs",
31
+ types: "./dist/index.d.ts",
32
+ files: [
33
+ "dist"
34
+ ],
35
+ scripts: {
36
+ build: "node ../../scripts/generate-cli-workspace-catalog.mjs && tsup",
37
+ stub: "node ../../scripts/generate-cli-workspace-catalog.mjs && tsup --watch",
38
+ typecheck: "tsc -p tsconfig.json --noEmit",
39
+ test: "vitest --run && HOLO_CLI_INCLUDE_INTEGRATION=1 vitest --run tests/cli.test.ts",
40
+ "test:integration": "HOLO_CLI_INCLUDE_INTEGRATION=1 vitest --run tests/cli.test.ts"
41
+ },
42
+ dependencies: {
43
+ "@clack/prompts": "catalog:",
44
+ "@holo-js/auth": "catalog:",
45
+ "@holo-js/cache-db": "catalog:",
46
+ "@holo-js/config": "catalog:",
47
+ "@holo-js/core": "catalog:",
48
+ "@holo-js/db": "catalog:",
49
+ "@holo-js/kernel": "catalog:",
50
+ "@holo-js/security": "catalog:",
51
+ "@holo-js/storage": "catalog:",
52
+ esbuild: "catalog:",
53
+ inflection: "catalog:"
54
+ },
55
+ peerDependencies: {
56
+ "@holo-js/broadcast": "catalog:",
57
+ "@holo-js/mail": "catalog:",
58
+ "@holo-js/session": "catalog:",
59
+ "@holo-js/queue": "catalog:"
60
+ },
61
+ peerDependenciesMeta: {
62
+ "@holo-js/broadcast": {
63
+ optional: true
64
+ },
65
+ "@holo-js/mail": {
66
+ optional: true
67
+ },
68
+ "@holo-js/queue": {
69
+ optional: true
70
+ },
71
+ "@holo-js/session": {
72
+ optional: true
73
+ }
74
+ },
75
+ devDependencies: {
76
+ "@holo-js/broadcast": "catalog:",
77
+ "@holo-js/events": "catalog:",
78
+ "@holo-js/mail": "catalog:",
79
+ "@holo-js/queue": "catalog:",
80
+ "@holo-js/queue-db": "catalog:",
81
+ "@holo-js/session": "catalog:",
82
+ "@types/node": "catalog:",
83
+ tsup: "catalog:",
84
+ typescript: "catalog:",
85
+ vitest: "catalog:"
86
+ },
87
+ engines: {
88
+ node: ">=20.11.0"
89
+ }
90
+ };
91
+
92
+ // src/generated/workspaceCatalog.ts
93
+ var WORKSPACE_CATALOG = Object.freeze({
94
+ "@clerk/backend": "^3.4.7",
95
+ "@clack/prompts": "^1.5.1",
96
+ "@eslint/js": "^9.17.0",
97
+ "@holo-js/adapter-next": "^0.3.0",
98
+ "@holo-js/adapter-nuxt": "^0.3.0",
99
+ "@holo-js/adapter-sveltekit": "^0.3.0",
100
+ "@holo-js/adapter-shared": "^0.3.0",
101
+ "@holo-js/auth": "^0.3.0",
102
+ "@holo-js/auth-clerk": "^0.3.0",
103
+ "@holo-js/auth-social": "^0.3.0",
104
+ "@holo-js/auth-social-apple": "^0.3.0",
105
+ "@holo-js/auth-social-discord": "^0.3.0",
106
+ "@holo-js/auth-social-facebook": "^0.3.0",
107
+ "@holo-js/auth-social-github": "^0.3.0",
108
+ "@holo-js/auth-social-google": "^0.3.0",
109
+ "@holo-js/auth-social-linkedin": "^0.3.0",
110
+ "@holo-js/auth-workos": "^0.3.0",
111
+ "@holo-js/authorization": "^0.3.0",
112
+ "@holo-js/broadcast": "^0.3.0",
113
+ "@holo-js/cache": "^0.3.0",
114
+ "@holo-js/cache-db": "^0.3.0",
115
+ "@holo-js/cache-redis": "^0.3.0",
116
+ "@holo-js/cli": "^0.3.0",
117
+ "@holo-js/config": "^0.3.0",
118
+ "@holo-js/core": "^0.3.0",
119
+ "@holo-js/db": "^0.3.0",
120
+ "@holo-js/db-mysql": "^0.3.0",
121
+ "@holo-js/db-postgres": "^0.3.0",
122
+ "@holo-js/db-sqlite": "^0.3.0",
123
+ "@holo-js/events": "^0.3.0",
124
+ "@holo-js/flux": "^0.3.0",
125
+ "@holo-js/flux-react": "^0.3.0",
126
+ "@holo-js/flux-svelte": "^0.3.0",
127
+ "@holo-js/flux-vue": "^0.3.0",
128
+ "@holo-js/forms": "^0.3.0",
129
+ "@holo-js/kernel": "^0.3.0",
130
+ "@holo-js/mail": "^0.3.0",
131
+ "@holo-js/media": "^0.3.0",
132
+ "@holo-js/notifications": "^0.3.0",
133
+ "@holo-js/queue": "^0.3.0",
134
+ "@holo-js/queue-db": "^0.3.0",
135
+ "@holo-js/queue-redis": "^0.3.0",
136
+ "@holo-js/realtime": "^0.3.0",
137
+ "@holo-js/security": "^0.3.0",
138
+ "@holo-js/session": "^0.3.0",
139
+ "@holo-js/storage": "^0.3.0",
140
+ "@holo-js/storage-s3": "^0.3.0",
141
+ "@holo-js/validation": "^0.3.0",
142
+ "@nuxt/kit": "^4.4.4",
143
+ "@nuxt/module-builder": "^1.0.2",
144
+ "@sveltejs/adapter-node": "^5.5.4",
145
+ "@sveltejs/kit": "^2.59.1",
146
+ "@sveltejs/vite-plugin-svelte": "^7.1.0",
147
+ "@types/better-sqlite3": "^7.6.12",
148
+ "@types/node": "^22.10.2",
149
+ "@types/pg": "^8.11.0",
150
+ "@types/react": "^19.2.14",
151
+ "@types/react-dom": "^19.2.3",
152
+ "@types/react-test-renderer": "^19.1.0",
153
+ "@types/ws": "^8.18.1",
154
+ "@vitest/coverage-istanbul": "^4.1.5",
155
+ "@vitest/coverage-v8": "^4.1.5",
156
+ "better-sqlite3": "^11.7.0",
157
+ "bullmq": "^5.71.0",
158
+ "create-holo-js": "^0.3.0",
159
+ "esbuild": "^0.27.4",
160
+ "eslint": "^9.17.0",
161
+ "fast-check": "^4.5.3",
162
+ "globals": "^15.14.0",
163
+ "h3": "^1.15.11",
164
+ "inflection": "^3.0.2",
165
+ "ioredis": "^5.4.2",
166
+ "mysql2": "^3.17.1",
167
+ "next": "^16.2.4",
168
+ "nodemailer": "^6.10.1",
169
+ "nuxt": "^4.4.4",
170
+ "pg": "^8.13.0",
171
+ "playwright": "^1.57.0",
172
+ "react": "^19.2.6",
173
+ "react-dom": "^19.2.6",
174
+ "react-test-renderer": "^19.2.6",
175
+ "sharp": "^0.34.4",
176
+ "svelte": "^5.55.5",
177
+ "svelte-check": "^4.4.6",
178
+ "tslib": "^2.8.1",
179
+ "tsup": "^8.3.5",
180
+ "typescript": "^5.7.2",
181
+ "typescript-eslint": "^8.30.1",
182
+ "ulid": "^3.0.1",
183
+ "uuid": "^12.0.0",
184
+ "valibot": "^1.1.0",
185
+ "vite": "^8.0.10",
186
+ "vitepress": "^1.6.3",
187
+ "vitest": "^4.1.5",
188
+ "vue": "^3.5.13",
189
+ "vue-router": "^5.0.4",
190
+ "vue-tsc": "^2.2.0",
191
+ "ws": "^8.18.3"
192
+ });
193
+
194
+ // src/metadata.ts
195
+ var HOLO_PACKAGE_VERSION = package_default.version;
196
+ var HOLO_PACKAGE_RANGE = `^${HOLO_PACKAGE_VERSION}`;
197
+ function catalogVersion(packageName) {
198
+ return WORKSPACE_CATALOG[packageName];
199
+ }
200
+ var ESBUILD_PACKAGE_VERSION = catalogVersion("esbuild");
201
+ var SCAFFOLD_PACKAGE_MANAGER_VERSIONS = Object.freeze({
202
+ npm: "npm@latest",
203
+ pnpm: "pnpm@latest",
204
+ yarn: "yarn@stable",
205
+ bun: "bun@1.3.9"
206
+ });
207
+ var SCAFFOLD_FRAMEWORK_VERSIONS = Object.freeze({
208
+ nuxt: catalogVersion("nuxt"),
209
+ next: catalogVersion("next"),
210
+ sveltekit: catalogVersion("@sveltejs/kit")
211
+ });
212
+ var SCAFFOLD_NEXT_REACT_VERSIONS = Object.freeze({
213
+ react: catalogVersion("react"),
214
+ "react-dom": catalogVersion("react-dom"),
215
+ "@types/react": catalogVersion("@types/react"),
216
+ "@types/react-dom": catalogVersion("@types/react-dom")
217
+ });
218
+ var SCAFFOLD_BASE_DEV_DEPENDENCY_VERSIONS = Object.freeze({
219
+ typescript: catalogVersion("typescript"),
220
+ "@types/node": catalogVersion("@types/node"),
221
+ "@eslint/js": catalogVersion("@eslint/js"),
222
+ eslint: catalogVersion("eslint"),
223
+ globals: catalogVersion("globals"),
224
+ "typescript-eslint": catalogVersion("typescript-eslint")
225
+ });
226
+ var SCAFFOLD_NUXT_DEPENDENCY_VERSIONS = Object.freeze({
227
+ vue: catalogVersion("vue"),
228
+ "vue-router": catalogVersion("vue-router"),
229
+ "vue-tsc": catalogVersion("vue-tsc")
230
+ });
231
+ var SCAFFOLD_SVELTEKIT_DEPENDENCY_VERSIONS = Object.freeze({
232
+ "@sveltejs/adapter-node": catalogVersion("@sveltejs/adapter-node"),
233
+ "@sveltejs/vite-plugin-svelte": catalogVersion("@sveltejs/vite-plugin-svelte"),
234
+ svelte: catalogVersion("svelte"),
235
+ "svelte-check": catalogVersion("svelte-check"),
236
+ vite: catalogVersion("vite")
237
+ });
238
+ var IOREDIS_PACKAGE_VERSION = catalogVersion("ioredis");
239
+ var SCAFFOLD_FRAMEWORK_ADAPTER_VERSIONS = Object.freeze({
240
+ nuxt: HOLO_PACKAGE_RANGE,
241
+ next: HOLO_PACKAGE_RANGE,
242
+ sveltekit: HOLO_PACKAGE_RANGE
243
+ });
244
+ var SCAFFOLD_FRAMEWORK_RUNTIME_VERSIONS = Object.freeze({
245
+ nuxt: {
246
+ "@holo-js/storage": HOLO_PACKAGE_RANGE
247
+ },
248
+ next: {
249
+ "@holo-js/storage": HOLO_PACKAGE_RANGE
250
+ },
251
+ sveltekit: {
252
+ "@holo-js/storage": HOLO_PACKAGE_RANGE
253
+ }
254
+ });
255
+
256
+ // src/project/frameworks.ts
257
+ var FRAMEWORK_DESCRIPTORS = {
258
+ nuxt: {
259
+ id: "nuxt",
260
+ displayName: "Nuxt",
261
+ detectPackages: ["nuxt"],
262
+ adapterPackage: "@holo-js/adapter-nuxt",
263
+ fluxPackage: "@holo-js/flux-vue",
264
+ scaffold: {
265
+ dependencies: {
266
+ nuxt: SCAFFOLD_FRAMEWORK_VERSIONS.nuxt,
267
+ vue: SCAFFOLD_NUXT_DEPENDENCY_VERSIONS.vue,
268
+ "vue-router": SCAFFOLD_NUXT_DEPENDENCY_VERSIONS["vue-router"],
269
+ "@holo-js/adapter-nuxt": SCAFFOLD_FRAMEWORK_ADAPTER_VERSIONS.nuxt
270
+ },
271
+ devDependencies: {
272
+ "vue-tsc": SCAFFOLD_NUXT_DEPENDENCY_VERSIONS["vue-tsc"]
273
+ },
274
+ scripts: {
275
+ postinstall: "nuxt prepare"
276
+ },
277
+ lintScript: "eslint app config server shared tests *.d.ts --fix --no-warn-ignored --no-error-on-unmatched-pattern",
278
+ typecheckScript: "nuxt typecheck",
279
+ defaultUrl: "http://localhost:3000",
280
+ tsconfig: "nuxt",
281
+ vscodeVueHybridMode: true
282
+ },
283
+ runner: {
284
+ commandName: "nuxt",
285
+ buildArgs: ["build"],
286
+ start: [".output/server/index.mjs"],
287
+ startUsesFrameworkBinary: false,
288
+ preloadNextRuntime: false,
289
+ suppressSvelteKitOutput: false,
290
+ nextDevServerConflictHandling: false
291
+ },
292
+ sync: {
293
+ commands: {
294
+ bun: ["bun", "x", "nuxt", "prepare"],
295
+ npm: ["npm", "exec", "--", "nuxt", "prepare"],
296
+ pnpm: ["pnpm", "exec", "nuxt", "prepare"],
297
+ yarn: ["yarn", "run", "nuxt", "prepare"]
298
+ },
299
+ errorLabel: "nuxt prepare"
300
+ },
301
+ capabilities: {
302
+ managedBroadcastAuthRoute: false
303
+ }
304
+ },
305
+ next: {
306
+ id: "next",
307
+ displayName: "Next.js",
308
+ detectPackages: ["next"],
309
+ adapterPackage: "@holo-js/adapter-next",
310
+ fluxPackage: "@holo-js/flux-react",
311
+ scaffold: {
312
+ dependencies: {
313
+ next: SCAFFOLD_FRAMEWORK_VERSIONS.next,
314
+ react: SCAFFOLD_NEXT_REACT_VERSIONS.react,
315
+ "react-dom": SCAFFOLD_NEXT_REACT_VERSIONS["react-dom"],
316
+ "@holo-js/adapter-next": SCAFFOLD_FRAMEWORK_ADAPTER_VERSIONS.next
317
+ },
318
+ devDependencies: {
319
+ "@types/react": SCAFFOLD_NEXT_REACT_VERSIONS["@types/react"],
320
+ "@types/react-dom": SCAFFOLD_NEXT_REACT_VERSIONS["@types/react-dom"]
321
+ },
322
+ scripts: {},
323
+ lintScript: "eslint app config server tests --fix --no-warn-ignored --no-error-on-unmatched-pattern",
324
+ typecheckScript: "tsc -p tsconfig.json --noEmit",
325
+ defaultUrl: "http://localhost:3000",
326
+ tsconfig: "next"
327
+ },
328
+ runner: {
329
+ commandName: "next",
330
+ buildArgs: ["build"],
331
+ start: ["start"],
332
+ startUsesFrameworkBinary: true,
333
+ preloadNextRuntime: true,
334
+ suppressSvelteKitOutput: false,
335
+ nextDevServerConflictHandling: true
336
+ },
337
+ capabilities: {
338
+ managedBroadcastAuthRoute: true
339
+ }
340
+ },
341
+ sveltekit: {
342
+ id: "sveltekit",
343
+ displayName: "SvelteKit",
344
+ detectPackages: ["@sveltejs/kit"],
345
+ adapterPackage: "@holo-js/adapter-sveltekit",
346
+ fluxPackage: "@holo-js/flux-svelte",
347
+ scaffold: {
348
+ dependencies: {
349
+ "@holo-js/adapter-sveltekit": SCAFFOLD_FRAMEWORK_ADAPTER_VERSIONS.sveltekit,
350
+ "@sveltejs/adapter-node": SCAFFOLD_SVELTEKIT_DEPENDENCY_VERSIONS["@sveltejs/adapter-node"],
351
+ "@sveltejs/kit": SCAFFOLD_FRAMEWORK_VERSIONS.sveltekit,
352
+ "@sveltejs/vite-plugin-svelte": SCAFFOLD_SVELTEKIT_DEPENDENCY_VERSIONS["@sveltejs/vite-plugin-svelte"],
353
+ svelte: SCAFFOLD_SVELTEKIT_DEPENDENCY_VERSIONS.svelte,
354
+ vite: SCAFFOLD_SVELTEKIT_DEPENDENCY_VERSIONS.vite
355
+ },
356
+ devDependencies: {
357
+ "svelte-check": SCAFFOLD_SVELTEKIT_DEPENDENCY_VERSIONS["svelte-check"]
358
+ },
359
+ scripts: {},
360
+ lintScript: "eslint src config server tests --fix --no-warn-ignored --no-error-on-unmatched-pattern",
361
+ typecheckScript: "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
362
+ defaultUrl: "http://localhost:5173",
363
+ tsconfig: "sveltekit"
364
+ },
365
+ runner: {
366
+ commandName: "vite",
367
+ buildArgs: ["build", "--logLevel", "error"],
368
+ start: ["build/index.js"],
369
+ startUsesFrameworkBinary: false,
370
+ preloadNextRuntime: false,
371
+ suppressSvelteKitOutput: true,
372
+ nextDevServerConflictHandling: false
373
+ },
374
+ sync: {
375
+ commands: {
376
+ bun: ["bun", "x", "svelte-kit", "sync"],
377
+ npm: ["npm", "exec", "--", "svelte-kit", "sync"],
378
+ pnpm: ["pnpm", "exec", "svelte-kit", "sync"],
379
+ yarn: ["yarn", "run", "svelte-kit", "sync"]
380
+ },
381
+ errorLabel: "svelte-kit sync"
382
+ },
383
+ capabilities: {
384
+ managedBroadcastAuthRoute: false
385
+ }
386
+ }
387
+ };
388
+ var SUPPORTED_FRAMEWORK_IDS = Object.keys(FRAMEWORK_DESCRIPTORS);
389
+ function getFrameworkDescriptor(framework) {
390
+ return FRAMEWORK_DESCRIPTORS[framework];
391
+ }
392
+ function getFrameworkDescriptorById(framework) {
393
+ return Object.values(FRAMEWORK_DESCRIPTORS).find((descriptor) => descriptor.id === framework);
394
+ }
395
+ function isSupportedFrameworkId(framework) {
396
+ return Object.prototype.hasOwnProperty.call(FRAMEWORK_DESCRIPTORS, framework);
397
+ }
398
+ function getFrameworkDescriptorByIdFrom(framework, descriptors) {
399
+ return descriptors.find((descriptor) => descriptor.id === framework) ?? getFrameworkDescriptorById(framework);
400
+ }
401
+ function getFrameworkDescriptorsWith(descriptors) {
402
+ return Object.freeze([
403
+ ...descriptors,
404
+ ...Object.values(FRAMEWORK_DESCRIPTORS)
405
+ ]);
406
+ }
407
+ function detectFrameworkDescriptorFromPackageJson(dependencies, devDependencies, descriptors = Object.values(FRAMEWORK_DESCRIPTORS)) {
408
+ return descriptors.find(
409
+ (descriptor) => descriptor.detectPackages.some((packageName) => dependencies[packageName] || devDependencies[packageName])
410
+ );
411
+ }
412
+ function getFrameworkRuntimeDependencies(framework) {
413
+ return SCAFFOLD_FRAMEWORK_RUNTIME_VERSIONS[framework];
414
+ }
415
+ function getFrameworkRuntimeDependencyVersion(framework, packageName) {
416
+ const version = getFrameworkRuntimeDependencies(framework)[packageName];
417
+ if (!version) {
418
+ throw new Error(`Missing runtime dependency "${packageName}" for framework "${framework}".`);
419
+ }
420
+ return version;
421
+ }
422
+ function getFrameworkBroadcastPackages(framework) {
423
+ const descriptor = getFrameworkDescriptor(framework);
424
+ return descriptor.fluxPackage ? [descriptor.fluxPackage, descriptor.adapterPackage] : [descriptor.adapterPackage];
425
+ }
426
+ function getFrameworkBroadcastPackagesFromDescriptor(descriptor) {
427
+ return descriptor.fluxPackage ? [descriptor.fluxPackage, descriptor.adapterPackage] : [descriptor.adapterPackage];
428
+ }
429
+ function frameworkDescriptorSupportsManagedBroadcastAuthRoute(framework) {
430
+ return framework?.capabilities.managedBroadcastAuthRoute === true;
431
+ }
432
+ function getManagedFrameworkPackageNames() {
433
+ return Object.values(FRAMEWORK_DESCRIPTORS).flatMap((descriptor) => [
434
+ descriptor.adapterPackage,
435
+ ...descriptor.fluxPackage ? [descriptor.fluxPackage] : []
436
+ ]);
437
+ }
438
+
439
+ // src/project/shared.ts
12
440
  var SUPPORTED_AUTH_SOCIAL_PROVIDERS = [
13
441
  "google",
14
442
  "github",
@@ -238,6 +666,42 @@ function resolveDefaultArtifactPath(projectRoot, relativeDir, fileName) {
238
666
 
239
667
  // src/project/runtime.ts
240
668
  var projectModuleBundler = build;
669
+ function createHoloPackageBundlerPlugin(projectRoot) {
670
+ const projectRequire = createRequire(join2(projectRoot, "package.json"));
671
+ const cliRequire = createRequire(import.meta.url);
672
+ return {
673
+ name: "holo-package-bundler",
674
+ setup(buildContext) {
675
+ buildContext.onResolve({ filter: /^@holo-js\// }, ({ importer, path }) => {
676
+ const importerRequire = importer ? createRequire(importer) : void 0;
677
+ const resolvers = [
678
+ ...importerRequire ? [importerRequire.resolve.bind(importerRequire)] : [],
679
+ projectRequire.resolve.bind(projectRequire),
680
+ cliRequire.resolve.bind(cliRequire)
681
+ ];
682
+ for (const resolvePackage of resolvers) {
683
+ try {
684
+ const resolved = resolvePackage(path);
685
+ return {
686
+ path: resolved.startsWith("file:") ? fileURLToPath(resolved) : resolved,
687
+ external: true
688
+ };
689
+ } catch {
690
+ continue;
691
+ }
692
+ }
693
+ const workspaceSpecifier = resolveWorkspacePackageImportSpecifier(path);
694
+ if (workspaceSpecifier) {
695
+ return {
696
+ path: fileURLToPath(workspaceSpecifier),
697
+ external: true
698
+ };
699
+ }
700
+ return void 0;
701
+ });
702
+ }
703
+ };
704
+ }
241
705
  function resolveWorkspacePackageImportSpecifier(specifier) {
242
706
  if (!specifier.startsWith("@holo-js/")) {
243
707
  return void 0;
@@ -341,11 +805,12 @@ async function bundleProjectModule(projectRoot, entryPath, options = {}) {
341
805
  outfile,
342
806
  format: "esm",
343
807
  logLevel: "silent",
344
- packages: "external",
808
+ packages: options.bundleDependencies ? "bundle" : "external",
345
809
  platform: "node",
346
810
  target: "node20",
347
811
  tsconfig: tsconfigPath,
348
812
  sourcemap: false,
813
+ plugins: options.bundleDependencies ? [createHoloPackageBundlerPlugin(projectRoot)] : [],
349
814
  external: [...options.external ?? []]
350
815
  });
351
816
  return {
@@ -415,6 +880,21 @@ function setProjectModuleBundlerForTesting(bundler) {
415
880
  }
416
881
 
417
882
  export {
883
+ HOLO_PACKAGE_VERSION,
884
+ ESBUILD_PACKAGE_VERSION,
885
+ SCAFFOLD_PACKAGE_MANAGER_VERSIONS,
886
+ SCAFFOLD_BASE_DEV_DEPENDENCY_VERSIONS,
887
+ IOREDIS_PACKAGE_VERSION,
888
+ getFrameworkDescriptor,
889
+ isSupportedFrameworkId,
890
+ getFrameworkDescriptorByIdFrom,
891
+ getFrameworkDescriptorsWith,
892
+ detectFrameworkDescriptorFromPackageJson,
893
+ getFrameworkRuntimeDependencyVersion,
894
+ getFrameworkBroadcastPackages,
895
+ getFrameworkBroadcastPackagesFromDescriptor,
896
+ frameworkDescriptorSupportsManagedBroadcastAuthRoute,
897
+ getManagedFrameworkPackageNames,
418
898
  SUPPORTED_AUTH_SOCIAL_PROVIDERS,
419
899
  AUTH_SOCIAL_PROVIDER_PACKAGE_NAMES,
420
900
  APP_CONFIG_FILE_NAMES,
@@ -7,11 +7,11 @@ import {
7
7
  serializeDatabaseConfig,
8
8
  serializeProjectConfig,
9
9
  writeProjectConfig
10
- } from "./chunk-YEFJBN56.mjs";
11
- import "./chunk-J76GH2DR.mjs";
10
+ } from "./chunk-JVLZ3SOW.mjs";
11
+ import "./chunk-R4ZYMEDU.mjs";
12
12
  import {
13
13
  readTextFile
14
- } from "./chunk-ILU426CF.mjs";
14
+ } from "./chunk-YACY2572.mjs";
15
15
  export {
16
16
  defaultProjectConfig,
17
17
  ensureGeneratedSchemaPlaceholder,
@@ -14,16 +14,18 @@ import {
14
14
  runProjectPrepare,
15
15
  runProjectStartServer,
16
16
  toPosixSlashes
17
- } from "./chunk-XDRCZ3Z5.mjs";
17
+ } from "./chunk-KRADH7PK.mjs";
18
18
  import {
19
19
  hasProjectDependency
20
- } from "./chunk-FGQ2I2YH.mjs";
21
- import "./chunk-D7O4SU6N.mjs";
22
- import "./chunk-VP2E62DF.mjs";
23
- import "./chunk-TWITVSFZ.mjs";
24
- import "./chunk-YEFJBN56.mjs";
25
- import "./chunk-J76GH2DR.mjs";
26
- import "./chunk-ILU426CF.mjs";
20
+ } from "./chunk-LHK5YUR4.mjs";
21
+ import "./chunk-HX6MOYBO.mjs";
22
+ import "./chunk-QSVMXMTQ.mjs";
23
+ import "./chunk-OI54DOHK.mjs";
24
+ import "./chunk-JVLZ3SOW.mjs";
25
+ import "./chunk-R4ZYMEDU.mjs";
26
+ import "./chunk-3RFRE7XG.mjs";
27
+ import "./chunk-TRYHX5S4.mjs";
28
+ import "./chunk-YACY2572.mjs";
27
29
  export {
28
30
  collectDirectoryTree,
29
31
  collectDiscoveryWatchRoots,
@@ -14,16 +14,18 @@ import {
14
14
  runProjectPrepare,
15
15
  runProjectStartServer,
16
16
  toPosixSlashes
17
- } from "./chunk-UPXQONEH.mjs";
17
+ } from "./chunk-TH5YCOZB.mjs";
18
18
  import {
19
19
  hasProjectDependency
20
- } from "./chunk-FGQ2I2YH.mjs";
21
- import "./chunk-D7O4SU6N.mjs";
22
- import "./chunk-VP2E62DF.mjs";
23
- import "./chunk-PT72AMV7.mjs";
24
- import "./chunk-YEFJBN56.mjs";
25
- import "./chunk-J76GH2DR.mjs";
26
- import "./chunk-ILU426CF.mjs";
20
+ } from "./chunk-LHK5YUR4.mjs";
21
+ import "./chunk-HX6MOYBO.mjs";
22
+ import "./chunk-6BHJLCAO.mjs";
23
+ import "./chunk-JVLZ3SOW.mjs";
24
+ import "./chunk-QSVMXMTQ.mjs";
25
+ import "./chunk-R4ZYMEDU.mjs";
26
+ import "./chunk-3RFRE7XG.mjs";
27
+ import "./chunk-TRYHX5S4.mjs";
28
+ import "./chunk-YACY2572.mjs";
27
29
  export {
28
30
  collectDirectoryTree,
29
31
  collectDiscoveryWatchRoots,
@@ -1,18 +1,20 @@
1
1
  import {
2
- collectImportedBindingsBySource,
3
2
  discoverAppCommands,
4
- extractListensToItems,
5
3
  loadRegisteredMigrations,
6
4
  loadRegisteredModels,
7
5
  loadRegisteredSeeders,
8
- prepareProjectDiscovery,
6
+ prepareProjectDiscovery
7
+ } from "./chunk-QSVMXMTQ.mjs";
8
+ import "./chunk-R4ZYMEDU.mjs";
9
+ import {
10
+ collectImportedBindingsBySource,
11
+ extractListensToItems,
9
12
  resolveListenerEventNamesForDiscovery,
10
13
  resolveListenerEventNamesFromSource,
11
14
  resolveNamedExport,
12
15
  resolveNamedExportEntry
13
- } from "./chunk-VP2E62DF.mjs";
14
- import "./chunk-J76GH2DR.mjs";
15
- import "./chunk-ILU426CF.mjs";
16
+ } from "./chunk-TRYHX5S4.mjs";
17
+ import "./chunk-YACY2572.mjs";
16
18
  export {
17
19
  collectImportedBindingsBySource,
18
20
  discoverAppCommands,
@@ -3,30 +3,29 @@ import {
3
3
  } from "./chunk-VRGB6DIS.mjs";
4
4
  import {
5
5
  runProjectPrepare
6
- } from "./chunk-UPXQONEH.mjs";
7
- import "./chunk-FGQ2I2YH.mjs";
6
+ } from "./chunk-TH5YCOZB.mjs";
7
+ import "./chunk-LHK5YUR4.mjs";
8
8
  import {
9
9
  hasRegisteredCreateTableMigration,
10
10
  hasRegisteredMigrationSlug,
11
11
  nextMigrationTemplate
12
- } from "./chunk-LXGQCG56.mjs";
13
- import {
14
- writeLine
15
- } from "./chunk-I7QBCEV7.mjs";
12
+ } from "./chunk-OLZEMIDQ.mjs";
16
13
  import {
17
14
  ensureAbsent,
18
15
  fileExists
19
- } from "./chunk-LBJAJLKU.mjs";
20
- import "./chunk-D7O4SU6N.mjs";
16
+ } from "./chunk-M3IPUCTM.mjs";
21
17
  import {
22
- collectFiles,
23
- prepareProjectDiscovery
24
- } from "./chunk-VP2E62DF.mjs";
25
- import "./chunk-PT72AMV7.mjs";
18
+ writeLine
19
+ } from "./chunk-I7QBCEV7.mjs";
20
+ import "./chunk-HX6MOYBO.mjs";
21
+ import "./chunk-6BHJLCAO.mjs";
26
22
  import {
27
23
  ensureGeneratedSchemaPlaceholder,
28
24
  ensureProjectConfig
29
- } from "./chunk-YEFJBN56.mjs";
25
+ } from "./chunk-JVLZ3SOW.mjs";
26
+ import {
27
+ prepareProjectDiscovery
28
+ } from "./chunk-QSVMXMTQ.mjs";
30
29
  import {
31
30
  ensureSuffix,
32
31
  loadGeneratedProjectRegistry,
@@ -48,12 +47,16 @@ import {
48
47
  toKebabCase,
49
48
  toPascalCase,
50
49
  toSnakeCase
51
- } from "./chunk-J76GH2DR.mjs";
50
+ } from "./chunk-R4ZYMEDU.mjs";
51
+ import "./chunk-3RFRE7XG.mjs";
52
+ import {
53
+ collectFiles
54
+ } from "./chunk-TRYHX5S4.mjs";
52
55
  import {
53
56
  makeProjectRelativePath,
54
57
  resolveDefaultArtifactPath,
55
58
  writeTextFile
56
- } from "./chunk-ILU426CF.mjs";
59
+ } from "./chunk-YACY2572.mjs";
57
60
 
58
61
  // src/generators.ts
59
62
  import { createHash } from "crypto";