@zmdb/cli 1.0.0-beta.1

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/LICENSE +674 -0
  2. package/README.md +19 -0
  3. package/dist/__fixtures__/http-client/src/contract.d.ts +38 -0
  4. package/dist/__fixtures__/http-client/src/contract.d.ts.map +1 -0
  5. package/dist/__fixtures__/http-client/src/contract.js +121 -0
  6. package/dist/__fixtures__/http-client/src/contract.js.map +1 -0
  7. package/dist/__fixtures__/http-client/src/models.d.ts +11 -0
  8. package/dist/__fixtures__/http-client/src/models.d.ts.map +1 -0
  9. package/dist/__fixtures__/http-client/src/models.js +2 -0
  10. package/dist/__fixtures__/http-client/src/models.js.map +1 -0
  11. package/dist/__fixtures__/http-client/src/schema.d.ts +4 -0
  12. package/dist/__fixtures__/http-client/src/schema.d.ts.map +1 -0
  13. package/dist/__fixtures__/http-client/src/schema.js +2 -0
  14. package/dist/__fixtures__/http-client/src/schema.js.map +1 -0
  15. package/dist/__fixtures__/http-client/src/unrelated.d.ts +2 -0
  16. package/dist/__fixtures__/http-client/src/unrelated.d.ts.map +1 -0
  17. package/dist/__fixtures__/http-client/src/unrelated.js +2 -0
  18. package/dist/__fixtures__/http-client/src/unrelated.js.map +1 -0
  19. package/dist/__fixtures__/http-client/zmdb.config.d.ts +16 -0
  20. package/dist/__fixtures__/http-client/zmdb.config.d.ts.map +1 -0
  21. package/dist/__fixtures__/http-client/zmdb.config.js +12 -0
  22. package/dist/__fixtures__/http-client/zmdb.config.js.map +1 -0
  23. package/dist/__fixtures__/project/src/schema.d.ts +6 -0
  24. package/dist/__fixtures__/project/src/schema.d.ts.map +1 -0
  25. package/dist/__fixtures__/project/src/schema.js +2 -0
  26. package/dist/__fixtures__/project/src/schema.js.map +1 -0
  27. package/dist/__fixtures__/project/zmdb.config.d.ts +22 -0
  28. package/dist/__fixtures__/project/zmdb.config.d.ts.map +1 -0
  29. package/dist/__fixtures__/project/zmdb.config.js +55 -0
  30. package/dist/__fixtures__/project/zmdb.config.js.map +1 -0
  31. package/dist/application-loader.d.ts +4 -0
  32. package/dist/application-loader.d.ts.map +1 -0
  33. package/dist/application-loader.js +102 -0
  34. package/dist/application-loader.js.map +1 -0
  35. package/dist/args.d.ts +23 -0
  36. package/dist/args.d.ts.map +1 -0
  37. package/dist/args.js +353 -0
  38. package/dist/args.js.map +1 -0
  39. package/dist/atomic.d.ts +13 -0
  40. package/dist/atomic.d.ts.map +1 -0
  41. package/dist/atomic.js +28 -0
  42. package/dist/atomic.js.map +1 -0
  43. package/dist/bin.d.ts +3 -0
  44. package/dist/bin.d.ts.map +1 -0
  45. package/dist/bin.js +4 -0
  46. package/dist/bin.js.map +1 -0
  47. package/dist/commands/check.d.ts +5 -0
  48. package/dist/commands/check.d.ts.map +1 -0
  49. package/dist/commands/check.js +7 -0
  50. package/dist/commands/check.js.map +1 -0
  51. package/dist/commands/client.d.ts +38 -0
  52. package/dist/commands/client.d.ts.map +1 -0
  53. package/dist/commands/client.js +347 -0
  54. package/dist/commands/client.js.map +1 -0
  55. package/dist/commands/codegen.d.ts +9 -0
  56. package/dist/commands/codegen.d.ts.map +1 -0
  57. package/dist/commands/codegen.js +56 -0
  58. package/dist/commands/codegen.js.map +1 -0
  59. package/dist/commands/embed.d.ts +8 -0
  60. package/dist/commands/embed.d.ts.map +1 -0
  61. package/dist/commands/embed.js +17 -0
  62. package/dist/commands/embed.js.map +1 -0
  63. package/dist/commands/export.d.ts +5 -0
  64. package/dist/commands/export.d.ts.map +1 -0
  65. package/dist/commands/export.js +6 -0
  66. package/dist/commands/export.js.map +1 -0
  67. package/dist/commands/generate.d.ts +5 -0
  68. package/dist/commands/generate.d.ts.map +1 -0
  69. package/dist/commands/generate.js +6 -0
  70. package/dist/commands/generate.js.map +1 -0
  71. package/dist/commands/migrate.d.ts +9 -0
  72. package/dist/commands/migrate.d.ts.map +1 -0
  73. package/dist/commands/migrate.js +18 -0
  74. package/dist/commands/migrate.js.map +1 -0
  75. package/dist/commands/new.d.ts +4 -0
  76. package/dist/commands/new.d.ts.map +1 -0
  77. package/dist/commands/new.js +35 -0
  78. package/dist/commands/new.js.map +1 -0
  79. package/dist/commands/pull.d.ts +5 -0
  80. package/dist/commands/pull.d.ts.map +1 -0
  81. package/dist/commands/pull.js +14 -0
  82. package/dist/commands/pull.js.map +1 -0
  83. package/dist/commands/push.d.ts +6 -0
  84. package/dist/commands/push.d.ts.map +1 -0
  85. package/dist/commands/push.js +11 -0
  86. package/dist/commands/push.js.map +1 -0
  87. package/dist/commands/studio.d.ts +31 -0
  88. package/dist/commands/studio.d.ts.map +1 -0
  89. package/dist/commands/studio.js +154 -0
  90. package/dist/commands/studio.js.map +1 -0
  91. package/dist/commands/upgrade.d.ts +5 -0
  92. package/dist/commands/upgrade.d.ts.map +1 -0
  93. package/dist/commands/upgrade.js +11 -0
  94. package/dist/commands/upgrade.js.map +1 -0
  95. package/dist/database.d.ts +4 -0
  96. package/dist/database.d.ts.map +1 -0
  97. package/dist/database.js +8 -0
  98. package/dist/database.js.map +1 -0
  99. package/dist/errors.d.ts +7 -0
  100. package/dist/errors.d.ts.map +1 -0
  101. package/dist/errors.js +20 -0
  102. package/dist/errors.js.map +1 -0
  103. package/dist/index.d.ts +34 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +626 -0
  106. package/dist/index.js.map +1 -0
  107. package/dist/lifecycle.d.ts +6 -0
  108. package/dist/lifecycle.d.ts.map +1 -0
  109. package/dist/lifecycle.js +75 -0
  110. package/dist/lifecycle.js.map +1 -0
  111. package/dist/migration-project.d.ts +14 -0
  112. package/dist/migration-project.d.ts.map +1 -0
  113. package/dist/migration-project.js +74 -0
  114. package/dist/migration-project.js.map +1 -0
  115. package/dist/output.d.ts +27 -0
  116. package/dist/output.d.ts.map +1 -0
  117. package/dist/output.js +60 -0
  118. package/dist/output.js.map +1 -0
  119. package/dist/repl.d.ts +48 -0
  120. package/dist/repl.d.ts.map +1 -0
  121. package/dist/repl.js +265 -0
  122. package/dist/repl.js.map +1 -0
  123. package/dist/scaffold.d.ts +28 -0
  124. package/dist/scaffold.d.ts.map +1 -0
  125. package/dist/scaffold.js +414 -0
  126. package/dist/scaffold.js.map +1 -0
  127. package/dist/studio/index.d.ts +20 -0
  128. package/dist/studio/index.d.ts.map +1 -0
  129. package/dist/studio/index.js +607 -0
  130. package/dist/studio/index.js.map +1 -0
  131. package/dist/templates/command.d.ts +3 -0
  132. package/dist/templates/command.d.ts.map +1 -0
  133. package/dist/templates/command.js +65 -0
  134. package/dist/templates/command.js.map +1 -0
  135. package/dist/templates/controller.d.ts +3 -0
  136. package/dist/templates/controller.d.ts.map +1 -0
  137. package/dist/templates/controller.js +41 -0
  138. package/dist/templates/controller.js.map +1 -0
  139. package/dist/templates/index.d.ts +4 -0
  140. package/dist/templates/index.d.ts.map +1 -0
  141. package/dist/templates/index.js +18 -0
  142. package/dist/templates/index.js.map +1 -0
  143. package/dist/templates/module.d.ts +3 -0
  144. package/dist/templates/module.d.ts.map +1 -0
  145. package/dist/templates/module.js +41 -0
  146. package/dist/templates/module.js.map +1 -0
  147. package/dist/templates/project.d.ts +3 -0
  148. package/dist/templates/project.d.ts.map +1 -0
  149. package/dist/templates/project.js +280 -0
  150. package/dist/templates/project.js.map +1 -0
  151. package/dist/templates/repository.d.ts +3 -0
  152. package/dist/templates/repository.d.ts.map +1 -0
  153. package/dist/templates/repository.js +66 -0
  154. package/dist/templates/repository.js.map +1 -0
  155. package/dist/templates/schema.d.ts +3 -0
  156. package/dist/templates/schema.d.ts.map +1 -0
  157. package/dist/templates/schema.js +36 -0
  158. package/dist/templates/schema.js.map +1 -0
  159. package/dist/templates/types.d.ts +25 -0
  160. package/dist/templates/types.d.ts.map +1 -0
  161. package/dist/templates/types.js +17 -0
  162. package/dist/templates/types.js.map +1 -0
  163. package/package.json +72 -0
  164. package/src/__fixtures__/http-client/package.json +5 -0
  165. package/src/__fixtures__/http-client/src/contract.ts +85 -0
  166. package/src/__fixtures__/http-client/src/models.ts +12 -0
  167. package/src/__fixtures__/http-client/src/schema.ts +3 -0
  168. package/src/__fixtures__/http-client/src/unrelated.ts +1 -0
  169. package/src/__fixtures__/http-client/tsconfig.json +17 -0
  170. package/src/__fixtures__/http-client/zmdb.config.ts +12 -0
  171. package/src/__fixtures__/project/package.json +5 -0
  172. package/src/__fixtures__/project/src/schema.ts +6 -0
  173. package/src/__fixtures__/project/tsconfig.json +24 -0
  174. package/src/__fixtures__/project/zmdb.config.ts +57 -0
  175. package/src/application-loader.ts +108 -0
  176. package/src/args.ts +391 -0
  177. package/src/atomic.ts +43 -0
  178. package/src/bin.ts +5 -0
  179. package/src/commands/check.ts +11 -0
  180. package/src/commands/client.ts +415 -0
  181. package/src/commands/codegen.ts +73 -0
  182. package/src/commands/embed.ts +36 -0
  183. package/src/commands/export.ts +10 -0
  184. package/src/commands/generate.ts +14 -0
  185. package/src/commands/migrate.ts +38 -0
  186. package/src/commands/new.ts +48 -0
  187. package/src/commands/pull.ts +32 -0
  188. package/src/commands/push.ts +21 -0
  189. package/src/commands/studio.ts +200 -0
  190. package/src/commands/upgrade.ts +14 -0
  191. package/src/database.ts +9 -0
  192. package/src/errors.ts +19 -0
  193. package/src/index.ts +710 -0
  194. package/src/lifecycle.ts +73 -0
  195. package/src/migration-project.ts +91 -0
  196. package/src/output.ts +77 -0
  197. package/src/repl.ts +328 -0
  198. package/src/scaffold.ts +485 -0
  199. package/src/studio/index.ts +674 -0
  200. package/src/templates/command.ts +66 -0
  201. package/src/templates/controller.ts +42 -0
  202. package/src/templates/index.ts +29 -0
  203. package/src/templates/module.ts +42 -0
  204. package/src/templates/project.ts +281 -0
  205. package/src/templates/repository.ts +67 -0
  206. package/src/templates/schema.ts +37 -0
  207. package/src/templates/types.ts +46 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ResolvedConfig } from '@zmdb/compiler/config';
2
+ /** Own only the driver requested during this invocation, including non-enumerable disposal methods. */
3
+ export declare function withConfiguredDriver<T>(config: ResolvedConfig, run: (config: ResolvedConfig) => Promise<T>): Promise<T>;
4
+ /** Translate process termination into the command's existing cancellable lifetime. */
5
+ export declare function withSignals<T>(run: (until: Promise<void>) => Promise<T>): Promise<T | undefined>;
6
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,uGAAuG;AACvG,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAC1C,OAAO,CAAC,CAAC,CAAC,CAsCZ;AAED,sFAAsF;AACtF,wBAAsB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAyBtG"}
@@ -0,0 +1,75 @@
1
+ /** Own only the driver requested during this invocation, including non-enumerable disposal methods. */
2
+ export async function withConfiguredDriver(config, run) {
3
+ const create = config.driver;
4
+ if (create === undefined)
5
+ return run(config);
6
+ let opened;
7
+ let pending;
8
+ let outcome;
9
+ try {
10
+ outcome = {
11
+ ok: true,
12
+ value: await run({
13
+ ...config,
14
+ driver() {
15
+ pending ??= Promise.resolve()
16
+ .then(create)
17
+ .then(driver => {
18
+ opened = driver;
19
+ return driver;
20
+ });
21
+ return pending;
22
+ },
23
+ }),
24
+ };
25
+ }
26
+ catch (error) {
27
+ outcome = { ok: false, error };
28
+ }
29
+ try {
30
+ if (opened !== undefined) {
31
+ const disposeAsync = Reflect.get(opened, Symbol.asyncDispose);
32
+ const dispose = Reflect.get(opened, Symbol.dispose);
33
+ if (typeof disposeAsync === 'function')
34
+ await disposeAsync.call(opened);
35
+ else if (typeof dispose === 'function')
36
+ dispose.call(opened);
37
+ }
38
+ }
39
+ catch (cleanupError) {
40
+ if (!outcome.ok)
41
+ throw new SuppressedError(cleanupError, outcome.error, 'command and driver cleanup failed');
42
+ throw cleanupError;
43
+ }
44
+ if (!outcome.ok)
45
+ throw outcome.error;
46
+ return outcome.value;
47
+ }
48
+ /** Translate process termination into the command's existing cancellable lifetime. */
49
+ export async function withSignals(run) {
50
+ const until = Promise.withResolvers();
51
+ let interrupted = false;
52
+ const stop = () => {
53
+ interrupted = true;
54
+ until.resolve();
55
+ };
56
+ process.once('SIGINT', stop);
57
+ process.once('SIGTERM', stop);
58
+ try {
59
+ return await run(until.promise);
60
+ }
61
+ catch (error) {
62
+ // A terminal signal also terminates the TypeScript child in the same process group.
63
+ // The watch has already run its cleanup before this closed-channel error arrives.
64
+ if (interrupted &&
65
+ error instanceof Error &&
66
+ error.message.startsWith('Unexpected EOF while reading from child process'))
67
+ return undefined;
68
+ throw error;
69
+ }
70
+ finally {
71
+ process.off('SIGINT', stop);
72
+ process.off('SIGTERM', stop);
73
+ }
74
+ }
75
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ResolvedConfig } from '@zmdb/compiler/config';
2
+ import type { MigrationDriver, MigrationProject, SnapshotableSchema } from '@zmdb/migrations';
3
+ import { type Introspector } from '@zmdb/sql';
4
+ interface MigrationProjectOptions {
5
+ readonly schemas?: readonly SnapshotableSchema[];
6
+ readonly driver?: MigrationDriver;
7
+ readonly introspector?: Introspector;
8
+ }
9
+ export declare function migrationProject(config: ResolvedConfig, options?: MigrationProjectOptions): MigrationProject;
10
+ export declare function reflectedMigrationProject(config: ResolvedConfig, driver?: MigrationDriver): MigrationProject;
11
+ export declare function configuredMigrationDriver(config: ResolvedConfig): Promise<MigrationDriver>;
12
+ export declare function rethrowProjectError(error: unknown): never;
13
+ export {};
14
+ //# sourceMappingURL=migration-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-project.d.ts","sourceRoot":"","sources":["../src/migration-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE9F,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAuB3D,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACtC;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,GAAE,uBAA4B,GAAG,gBAAgB,CAahH;AAWD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,gBAAgB,CAU5G;AAED,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAchG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAKzD"}
@@ -0,0 +1,74 @@
1
+ import { schemasFromFiles } from '@zmdb/compiler/testing';
2
+ import { emitDeclarations } from '@zmdb/migrations/declarations';
3
+ import { dialectName } from '@zmdb/sql';
4
+ import { configuredIntrospector } from './database.js';
5
+ import { CliInvocationError } from './errors.js';
6
+ const FORMAT_OPTIONS = {
7
+ arrowParens: 'avoid',
8
+ bracketSpacing: true,
9
+ endOfLine: 'lf',
10
+ insertFinalNewline: true,
11
+ objectWrap: 'preserve',
12
+ printWidth: 120,
13
+ quoteProps: 'as-needed',
14
+ semi: true,
15
+ singleQuote: true,
16
+ sortImports: true,
17
+ sortPackageJson: true,
18
+ tabWidth: 2,
19
+ trailingComma: 'all',
20
+ useTabs: false,
21
+ };
22
+ export function migrationProject(config, options = {}) {
23
+ return {
24
+ configPath: config.configPath,
25
+ outDir: config.outDir,
26
+ dialect: config.dialect,
27
+ schemas: options.schemas ?? [],
28
+ emitDeclarations,
29
+ formatSource,
30
+ ...(config.migrations === undefined ? {} : { migrations: config.migrations }),
31
+ ...(config.introspect === undefined ? {} : { introspect: config.introspect }),
32
+ ...(options.driver === undefined ? {} : { driver: options.driver }),
33
+ ...(options.introspector === undefined ? {} : { introspector: options.introspector }),
34
+ };
35
+ }
36
+ async function formatSource(path, source) {
37
+ const { format } = await import('oxfmt');
38
+ const result = await format(path, source, FORMAT_OPTIONS);
39
+ if (result.errors.length > 0) {
40
+ throw new TypeError(`oxfmt could not format generated ${path}: ${JSON.stringify(result.errors)}`);
41
+ }
42
+ return result.code;
43
+ }
44
+ export function reflectedMigrationProject(config, driver) {
45
+ const schemas = schemasFromFiles(config.schemaFiles, {
46
+ project: config.project,
47
+ naming: config.resolvedNaming,
48
+ });
49
+ return migrationProject(config, {
50
+ schemas,
51
+ ...(driver === undefined ? {} : { driver }),
52
+ ...(driver === undefined ? {} : { introspector: configuredIntrospector(driver.dialect) }),
53
+ });
54
+ }
55
+ export async function configuredMigrationDriver(config) {
56
+ if (config.driver === undefined) {
57
+ throw new CliInvocationError(`config ${config.configPath} needs a driver for this command`);
58
+ }
59
+ const driver = await config.driver();
60
+ if (driver.dialect === undefined) {
61
+ throw new CliInvocationError(`config ${config.configPath} driver needs an explicit database dialect object`);
62
+ }
63
+ if (dialectName(driver.dialect) !== dialectName(config.dialect)) {
64
+ throw new CliInvocationError(`config ${config.configPath} declares ${dialectName(config.dialect)} but its driver declares ${dialectName(driver.dialect)}`);
65
+ }
66
+ return { ...driver, dialect: driver.dialect };
67
+ }
68
+ export function rethrowProjectError(error) {
69
+ if (error instanceof Error && error.name === 'MigrationProjectError') {
70
+ throw new CliInvocationError(error.message);
71
+ }
72
+ throw error;
73
+ }
74
+ //# sourceMappingURL=migration-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-project.js","sourceRoot":"","sources":["../src/migration-project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAqB,MAAM,WAAW,CAAC;AAG3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,cAAc,GAAiB;IACnC,WAAW,EAAE,OAAO;IACpB,cAAc,EAAE,IAAI;IACpB,SAAS,EAAE,IAAI;IACf,kBAAkB,EAAE,IAAI;IACxB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,WAAW;IACvB,IAAI,EAAE,IAAI;IACV,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,eAAe,EAAE,IAAI;IACrB,QAAQ,EAAE,CAAC;IACX,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,KAAK;CACf,CAAC;AAQF,MAAM,UAAU,gBAAgB,CAAC,MAAsB,EAAE,OAAO,GAA4B,EAAE;IAC5F,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,gBAAgB;QAChB,YAAY;QACZ,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QAC7E,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QAC7E,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACnE,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;KACtF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,MAAc;IACtD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,oCAAoC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAsB,EAAE,MAAwB;IACxF,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE;QACnD,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,cAAc;KAC9B,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC,MAAM,EAAE;QAC9B,OAAO;QACP,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3C,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;KAC1F,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,MAAsB;IACpE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,kBAAkB,CAAC,UAAU,MAAM,CAAC,UAAU,kCAAkC,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IACrC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,kBAAkB,CAAC,UAAU,MAAM,CAAC,UAAU,mDAAmD,CAAC,CAAC;IAC/G,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,kBAAkB,CAC1B,UAAU,MAAM,CAAC,UAAU,aAAa,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,4BAA4B,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAC7H,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QACrE,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,KAAK,CAAC;AACd,CAAC"}
@@ -0,0 +1,27 @@
1
+ export interface CliResult<T> {
2
+ readonly ok: boolean;
3
+ readonly command: string;
4
+ readonly config: string;
5
+ readonly result?: T;
6
+ readonly errors?: readonly {
7
+ readonly message: string;
8
+ readonly path?: string;
9
+ }[];
10
+ }
11
+ export interface OutputStreams {
12
+ readonly stdout: (text: string) => void;
13
+ readonly stderr: (text: string) => void;
14
+ }
15
+ /** The only place a non-interactive command decides which stream receives text. */
16
+ export declare class CliOutput {
17
+ #private;
18
+ constructor(command: string, config: string, json: boolean, streams: OutputStreams);
19
+ withConfig(config: string): CliOutput;
20
+ help(text: string): number;
21
+ writeStdout(text: string): void;
22
+ writeStderr(text: string): void;
23
+ progress(text: string): void;
24
+ result<T>(value: T, human: string, exitCode?: number): number;
25
+ failure(message: string, exitCode: 1 | 2, path?: string): number;
26
+ }
27
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,mFAAmF;AACnF,qBAAa,SAAS;;IAMpB,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAKjF;IAED,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAEpC;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzB;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE9B;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE9B;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAG3B;IAED,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,MAAM,CAavD;IAED,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAY/D;CACF"}
package/dist/output.js ADDED
@@ -0,0 +1,60 @@
1
+ /** The only place a non-interactive command decides which stream receives text. */
2
+ export class CliOutput {
3
+ #command;
4
+ #config;
5
+ #json;
6
+ #streams;
7
+ constructor(command, config, json, streams) {
8
+ this.#command = command;
9
+ this.#config = config;
10
+ this.#json = json;
11
+ this.#streams = streams;
12
+ }
13
+ withConfig(config) {
14
+ return new CliOutput(this.#command, config, this.#json, this.#streams);
15
+ }
16
+ help(text) {
17
+ return this.result({ help: text }, text);
18
+ }
19
+ writeStdout(text) {
20
+ this.#streams.stdout(text);
21
+ }
22
+ writeStderr(text) {
23
+ this.#streams.stderr(text);
24
+ }
25
+ progress(text) {
26
+ if (this.#json)
27
+ this.writeStderr(text);
28
+ else
29
+ this.writeStdout(text);
30
+ }
31
+ result(value, human, exitCode = 0) {
32
+ if (this.#json) {
33
+ const body = {
34
+ ok: exitCode === 0,
35
+ command: this.#command,
36
+ config: this.#config,
37
+ result: value,
38
+ };
39
+ this.writeStdout(`${JSON.stringify(body)}\n`);
40
+ }
41
+ else {
42
+ this.writeStdout(human);
43
+ }
44
+ return exitCode;
45
+ }
46
+ failure(message, exitCode, path) {
47
+ if (this.#json) {
48
+ const body = {
49
+ ok: false,
50
+ command: this.#command,
51
+ config: this.#config,
52
+ errors: [{ message, ...(path === undefined ? {} : { path }) }],
53
+ };
54
+ this.writeStdout(`${JSON.stringify(body)}\n`);
55
+ }
56
+ this.writeStderr(`zmdb ${this.#command}: ${message}\n`);
57
+ return exitCode;
58
+ }
59
+ }
60
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAaA,mFAAmF;AACnF,MAAM,OAAO,SAAS;IACX,QAAQ,CAAS;IACjB,OAAO,CAAS;IAChB,KAAK,CAAU;IACf,QAAQ,CAAgB;IAEjC,YAAY,OAAe,EAAE,MAAc,EAAE,IAAa,EAAE,OAAsB;QAChF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;YAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAI,KAAQ,EAAE,KAAa,EAAE,QAAQ,GAAG,CAAC;QAC7C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAiB;gBACzB,EAAE,EAAE,QAAQ,KAAK,CAAC;gBAClB,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,MAAM,EAAE,KAAK;aACd,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,OAAe,EAAE,QAAe,EAAE,IAAa;QACrD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAqB;gBAC7B,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;aAC/D,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC;QACxD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
package/dist/repl.d.ts ADDED
@@ -0,0 +1,48 @@
1
+ import { type REPLServer } from 'node:repl';
2
+ import type { Token } from '@zmdb/app/di';
3
+ import { type ModuleClass } from '@zmdb/app/modules';
4
+ import { type WebApplication } from '@zmdb/web/app';
5
+ import { type GraphDescription } from '@zmdb/web/devtools';
6
+ import type { WebRequest, WebResponse } from '@zmdb/web/pipeline';
7
+ export interface ReplGet {
8
+ <T>(token: Token<T>): T;
9
+ (description: string): unknown;
10
+ }
11
+ export interface ReplScope {
12
+ readonly app: WebApplication;
13
+ readonly container: WebApplication['container'];
14
+ readonly get: ReplGet;
15
+ readonly tokens: readonly string[];
16
+ readonly describe: () => string;
17
+ readonly request: (request: WebRequest | string) => Promise<WebResponse>;
18
+ readonly load: (name: string) => Promise<void>;
19
+ }
20
+ export interface ReplSessionOptions {
21
+ readonly configPath: string;
22
+ readonly moduleSpec: string;
23
+ readonly cwd?: string;
24
+ readonly input?: NodeJS.ReadableStream;
25
+ readonly output?: NodeJS.WritableStream;
26
+ readonly stderr?: (text: string) => void;
27
+ readonly historyPath?: string | null;
28
+ readonly terminal?: boolean;
29
+ }
30
+ export interface ReplSession extends AsyncDisposable {
31
+ readonly app: WebApplication;
32
+ readonly graph: GraphDescription;
33
+ readonly scope: ReplScope;
34
+ readonly server: REPLServer;
35
+ readonly closed: Promise<void>;
36
+ evaluate(source: string): Promise<unknown>;
37
+ }
38
+ /**
39
+ * Boot the real application and start a local, stream-only Node REPL.
40
+ *
41
+ * No socket or adapter is created. The caller owns the returned async resource;
42
+ * disposing it closes the prompt and runs the application's normal shutdown
43
+ * lifecycle.
44
+ */
45
+ export declare function createReplSession(rootModule: ModuleClass, options: ReplSessionOptions): Promise<ReplSession>;
46
+ /** Resolve the default history path without ever making it relative to the project. */
47
+ export declare function replHistoryPath(environment?: Readonly<Record<string, string | undefined>>, homeDirectory?: string): string;
48
+ //# sourceMappingURL=repl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAIA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAElE,MAAM,WAAW,OAAO;IACtB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACzE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C;AAOD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAoHlH;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAC7B,WAAW,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,EACvE,aAAa,GAAE,MAAkB,GAChC,MAAM,CAMR"}