@kosmic/cli 0.0.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 (98) hide show
  1. package/dist/src/build/cli.d.ts +3 -0
  2. package/dist/src/build/cli.d.ts.map +1 -0
  3. package/dist/src/build/cli.js +42 -0
  4. package/dist/src/build/cli.js.map +1 -0
  5. package/dist/src/build-vite-plugin/cli.d.ts +3 -0
  6. package/dist/src/build-vite-plugin/cli.d.ts.map +1 -0
  7. package/dist/src/build-vite-plugin/cli.js +34 -0
  8. package/dist/src/build-vite-plugin/cli.js.map +1 -0
  9. package/dist/src/check/cli.d.ts +3 -0
  10. package/dist/src/check/cli.d.ts.map +1 -0
  11. package/dist/src/check/cli.js +34 -0
  12. package/dist/src/check/cli.js.map +1 -0
  13. package/dist/src/clean/cli.d.ts +3 -0
  14. package/dist/src/clean/cli.d.ts.map +1 -0
  15. package/dist/src/clean/cli.js +34 -0
  16. package/dist/src/clean/cli.js.map +1 -0
  17. package/dist/src/compile/cli.d.ts +3 -0
  18. package/dist/src/compile/cli.d.ts.map +1 -0
  19. package/dist/src/compile/cli.js +38 -0
  20. package/dist/src/compile/cli.js.map +1 -0
  21. package/dist/src/compile-cp/cli.d.ts +3 -0
  22. package/dist/src/compile-cp/cli.d.ts.map +1 -0
  23. package/dist/src/compile-cp/cli.js +34 -0
  24. package/dist/src/compile-cp/cli.js.map +1 -0
  25. package/dist/src/compile-tsc/cli.d.ts +3 -0
  26. package/dist/src/compile-tsc/cli.d.ts.map +1 -0
  27. package/dist/src/compile-tsc/cli.js +34 -0
  28. package/dist/src/compile-tsc/cli.js.map +1 -0
  29. package/dist/src/compile-vite/cli.d.ts +3 -0
  30. package/dist/src/compile-vite/cli.d.ts.map +1 -0
  31. package/dist/src/compile-vite/cli.js +34 -0
  32. package/dist/src/compile-vite/cli.js.map +1 -0
  33. package/dist/src/create/cli.d.ts +3 -0
  34. package/dist/src/create/cli.d.ts.map +1 -0
  35. package/dist/src/create/cli.js +167 -0
  36. package/dist/src/create/cli.js.map +1 -0
  37. package/dist/src/create/scaffold.d.ts +15 -0
  38. package/dist/src/create/scaffold.d.ts.map +1 -0
  39. package/dist/src/create/scaffold.js +49 -0
  40. package/dist/src/create/scaffold.js.map +1 -0
  41. package/dist/src/create/templates/auth.d.ts +2 -0
  42. package/dist/src/create/templates/auth.d.ts.map +1 -0
  43. package/dist/src/create/templates/auth.js +355 -0
  44. package/dist/src/create/templates/auth.js.map +1 -0
  45. package/dist/src/create/templates/base.d.ts +2 -0
  46. package/dist/src/create/templates/base.d.ts.map +1 -0
  47. package/dist/src/create/templates/base.js +221 -0
  48. package/dist/src/create/templates/base.js.map +1 -0
  49. package/dist/src/dev/cli.d.ts +3 -0
  50. package/dist/src/dev/cli.d.ts.map +1 -0
  51. package/dist/src/dev/cli.js +82 -0
  52. package/dist/src/dev/cli.js.map +1 -0
  53. package/dist/src/dev/ts-watch.d.ts +3 -0
  54. package/dist/src/dev/ts-watch.d.ts.map +1 -0
  55. package/dist/src/dev/ts-watch.js +29 -0
  56. package/dist/src/dev/ts-watch.js.map +1 -0
  57. package/dist/src/index.d.ts +3 -0
  58. package/dist/src/index.d.ts.map +1 -0
  59. package/dist/src/index.js +138 -0
  60. package/dist/src/index.js.map +1 -0
  61. package/dist/src/lint/cli.d.ts +3 -0
  62. package/dist/src/lint/cli.d.ts.map +1 -0
  63. package/dist/src/lint/cli.js +34 -0
  64. package/dist/src/lint/cli.js.map +1 -0
  65. package/dist/src/migrate/cli.d.ts +3 -0
  66. package/dist/src/migrate/cli.d.ts.map +1 -0
  67. package/dist/src/migrate/cli.js +120 -0
  68. package/dist/src/migrate/cli.js.map +1 -0
  69. package/dist/src/migrate/helpers.d.ts +6 -0
  70. package/dist/src/migrate/helpers.d.ts.map +1 -0
  71. package/dist/src/migrate/helpers.js +23 -0
  72. package/dist/src/migrate/helpers.js.map +1 -0
  73. package/dist/src/migrate/index.d.ts +3 -0
  74. package/dist/src/migrate/index.d.ts.map +1 -0
  75. package/dist/src/migrate/index.js +3 -0
  76. package/dist/src/migrate/index.js.map +1 -0
  77. package/dist/src/migrate/migrator.d.ts +25 -0
  78. package/dist/src/migrate/migrator.d.ts.map +1 -0
  79. package/dist/src/migrate/migrator.js +73 -0
  80. package/dist/src/migrate/migrator.js.map +1 -0
  81. package/dist/src/start/cli.d.ts +3 -0
  82. package/dist/src/start/cli.d.ts.map +1 -0
  83. package/dist/src/start/cli.js +37 -0
  84. package/dist/src/start/cli.js.map +1 -0
  85. package/dist/src/test-watch/cli.d.ts +3 -0
  86. package/dist/src/test-watch/cli.d.ts.map +1 -0
  87. package/dist/src/test-watch/cli.js +44 -0
  88. package/dist/src/test-watch/cli.js.map +1 -0
  89. package/dist/src/test_/cli.d.ts +3 -0
  90. package/dist/src/test_/cli.d.ts.map +1 -0
  91. package/dist/src/test_/cli.js +40 -0
  92. package/dist/src/test_/cli.js.map +1 -0
  93. package/dist/test/index.test.d.ts +2 -0
  94. package/dist/test/index.test.d.ts.map +1 -0
  95. package/dist/test/index.test.js +3 -0
  96. package/dist/test/index.test.js.map +1 -0
  97. package/dist/tsconfig.tsbuildinfo +1 -0
  98. package/package.json +52 -0
@@ -0,0 +1,3 @@
1
+ import ts from 'typescript';
2
+ export declare function tsWatch(callback?: () => Promise<void>): ts.WatchOfConfigFile<ts.EmitAndSemanticDiagnosticsBuilderProgram>;
3
+ //# sourceMappingURL=ts-watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-watch.d.ts","sourceRoot":"","sources":["../../../src/dev/ts-watch.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,wBAAgB,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,qEA8BrD"}
@@ -0,0 +1,29 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-type-assertion */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
3
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
4
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
5
+ import ts from 'typescript';
6
+ const noop = async () => undefined;
7
+ export function tsWatch(callback) {
8
+ const configPath = ts.findConfigFile('./', ts.sys.fileExists, 'tsconfig.json');
9
+ if (!configPath) {
10
+ throw new Error("Could not find a valid 'tsconfig.json'.");
11
+ }
12
+ const origWatchStatusReporter =
13
+ // @ts-expect-error private API for no reason
14
+ ts.createWatchStatusReporter(ts.sys, true);
15
+ const origWatchDiagnosticReporter =
16
+ // @ts-expect-error private API for no reason
17
+ ts.createDiagnosticReporter(ts.sys, true);
18
+ // Note that there is another overload for `createWatchCompilerHost` that takes a set of root files.
19
+ const host = ts.createWatchCompilerHost(configPath, { preserveWatchOutput: true, noEmitOnError: true }, ts.sys, ts.createEmitAndSemanticDiagnosticsBuilderProgram, origWatchDiagnosticReporter,
20
+ // eslint-disable-next-line @typescript-eslint/strict-void-return
21
+ createWatchStatusChanged(origWatchStatusReporter, callback ?? noop));
22
+ return ts.createWatchProgram(host);
23
+ }
24
+ function createWatchStatusChanged(watchStatusReporter, onSuccess) {
25
+ return async function (diagnostic, ...args) {
26
+ return onSuccess().then(() => watchStatusReporter.call(this, diagnostic, ...args));
27
+ };
28
+ }
29
+ //# sourceMappingURL=ts-watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-watch.js","sourceRoot":"","sources":["../../../src/dev/ts-watch.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,wDAAwD;AACxD,0DAA0D;AAC1D,sDAAsD;AAEtD,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;AAEnC,MAAM,UAAU,OAAO,CAAC,QAA8B;IACpD,MAAM,UAAU,GAAG,EAAE,CAAC,cAAc,CAClC,IAAI,EACJ,EAAE,CAAC,GAAG,CAAC,UAAU,EACjB,eAAe,CAChB,CAAC;IACF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,uBAAuB;IAC3B,6CAA6C;IAC7C,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAA2B,CAAC;IAEvE,MAAM,2BAA2B;IAC/B,6CAA6C;IAC7C,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAA0B,CAAC;IAErE,oGAAoG;IACpG,MAAM,IAAI,GAAG,EAAE,CAAC,uBAAuB,CACrC,UAAU,EACV,EAAC,mBAAmB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAC,EAChD,EAAE,CAAC,GAAG,EACN,EAAE,CAAC,8CAA8C,EACjD,2BAA2B;IAC3B,iEAAiE;IACjE,wBAAwB,CAAC,uBAAuB,EAAE,QAAQ,IAAI,IAAI,CAAC,CACpE,CAAC;IAEF,OAAO,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,wBAAwB,CAC/B,mBAAuE,EACvE,SAA8B;IAE9B,OAAO,KAAK,WAAsB,UAAyB,EAAE,GAAG,IAAW;QACzE,OAAO,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAC3B,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CACpD,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,138 @@
1
+ #!/usr/bin/env node
2
+ import process from 'node:process';
3
+ import { parseArgs } from 'node:util';
4
+ const COMMANDS = {
5
+ build: 'build',
6
+ buildVitePlugin: 'build:vite-plugin',
7
+ check: 'check',
8
+ clean: 'clean',
9
+ compile: 'compile',
10
+ compileCp: 'compile:cp',
11
+ compileTsc: 'compile:tsc',
12
+ compileVite: 'compile:vite',
13
+ create: 'create',
14
+ dev: 'dev',
15
+ lint: 'lint',
16
+ migrate: 'migrate',
17
+ prepublishOnly: 'prepublishOnly',
18
+ start: 'start',
19
+ test: 'test',
20
+ testWatch: 'test:watch',
21
+ };
22
+ const helpText = `
23
+ kos
24
+
25
+ Cli for kosmic server framework.
26
+
27
+ Usage
28
+ $ kos <command> [options]
29
+
30
+ Commands
31
+ build
32
+ build:vite-plugin
33
+ check
34
+ clean
35
+ compile
36
+ compile:cp
37
+ compile:tsc
38
+ compile:vite
39
+ create
40
+ dev
41
+ lint
42
+ migrate
43
+ prepublishOnly
44
+ start
45
+ test
46
+ test:watch
47
+
48
+ Options
49
+ --help, -h Show this help message
50
+ `.trim();
51
+ const cli = parseArgs({
52
+ allowPositionals: true,
53
+ strict: false,
54
+ options: {
55
+ help: {
56
+ type: 'boolean',
57
+ short: 'h',
58
+ },
59
+ },
60
+ });
61
+ const [command] = cli.positionals;
62
+ if (!command) {
63
+ if (cli.values.help) {
64
+ console.log(helpText);
65
+ process.exit(0);
66
+ }
67
+ console.error('No command provided.');
68
+ console.log(helpText);
69
+ process.exit(1);
70
+ }
71
+ switch (command) {
72
+ case COMMANDS.build: {
73
+ await import("./build/cli.js");
74
+ break;
75
+ }
76
+ case COMMANDS.buildVitePlugin: {
77
+ await import("./build-vite-plugin/cli.js");
78
+ break;
79
+ }
80
+ case COMMANDS.check: {
81
+ await import("./check/cli.js");
82
+ break;
83
+ }
84
+ case COMMANDS.clean: {
85
+ await import("./clean/cli.js");
86
+ break;
87
+ }
88
+ case COMMANDS.compile: {
89
+ await import("./compile/cli.js");
90
+ break;
91
+ }
92
+ case COMMANDS.compileCp: {
93
+ await import("./compile-cp/cli.js");
94
+ break;
95
+ }
96
+ case COMMANDS.compileTsc: {
97
+ await import("./compile-tsc/cli.js");
98
+ break;
99
+ }
100
+ case COMMANDS.compileVite: {
101
+ await import("./compile-vite/cli.js");
102
+ break;
103
+ }
104
+ case COMMANDS.create: {
105
+ await import("./create/cli.js");
106
+ break;
107
+ }
108
+ case COMMANDS.dev: {
109
+ await import("./dev/cli.js");
110
+ break;
111
+ }
112
+ case COMMANDS.lint: {
113
+ await import("./lint/cli.js");
114
+ break;
115
+ }
116
+ case COMMANDS.migrate: {
117
+ await import("./migrate/cli.js");
118
+ break;
119
+ }
120
+ case COMMANDS.start: {
121
+ await import("./start/cli.js");
122
+ break;
123
+ }
124
+ case COMMANDS.test: {
125
+ await import("./test_/cli.js");
126
+ break;
127
+ }
128
+ case COMMANDS.testWatch: {
129
+ await import("./test-watch/cli.js");
130
+ break;
131
+ }
132
+ default: {
133
+ console.error(`Unknown command: ${command}`);
134
+ console.log(helpText);
135
+ process.exit(1);
136
+ }
137
+ }
138
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/lint/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+ import process from 'node:process';
3
+ import { parseArgs } from 'node:util';
4
+ import { execa } from 'execa';
5
+ const HELP_TEXT = `
6
+ Run lint checks for a kosmic application.
7
+
8
+ Usage
9
+ $ kosmic lint [options]
10
+
11
+ Options
12
+ --cwd Working directory (default: process.cwd())
13
+ --help, -h Show this help message
14
+ `.trim();
15
+ const cli = parseArgs({
16
+ allowPositionals: true,
17
+ options: {
18
+ cwd: {
19
+ type: 'string',
20
+ },
21
+ help: {
22
+ type: 'boolean',
23
+ short: 'h',
24
+ },
25
+ },
26
+ });
27
+ if (cli.values.help) {
28
+ console.log(HELP_TEXT);
29
+ process.exit(0);
30
+ }
31
+ const cwd = cli.values.cwd ?? process.cwd();
32
+ const $$ = execa({ cwd, stdio: 'inherit' });
33
+ await $$ `xo`;
34
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/lint/cli.ts"],"names":[],"mappings":";AAEA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAC;AACpC,OAAO,EAAC,KAAK,EAAC,MAAM,OAAO,CAAC;AAE5B,MAAM,SAAS,GAAG;;;;;;;;;CASjB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,GAAG,GAAG,SAAS,CAAC;IACpB,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE;QACP,GAAG,EAAE;YACH,IAAI,EAAE,QAAQ;SACf;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,GAAG;SACX;KACF;CACF,CAAC,CAAC;AAEH,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;AAE1C,MAAM,EAAE,CAAA,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/migrate/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/env node
2
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
3
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
4
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
5
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
6
+ });
7
+ }
8
+ return path;
9
+ };
10
+ import fs from 'node:fs/promises';
11
+ import process from 'node:process';
12
+ import path from 'node:path';
13
+ import { parseArgs } from 'node:util';
14
+ import { execa } from 'execa';
15
+ import { NO_MIGRATIONS } from 'kysely';
16
+ import { pino } from 'pino';
17
+ import { createMigrator } from "./migrator.js";
18
+ const HELP_TEXT = `
19
+ Usage
20
+ $ migrate <command> [options]
21
+
22
+ Commands
23
+ up Run all pending migrations (default)
24
+ down Rollback the last migration
25
+ reset Rollback all migrations
26
+
27
+ Options
28
+ --db, -d Path to the module exporting the kysely db instance, resolved from the cwd argument
29
+ --migrations, -m Path to the migrations directory, resolved from the cwd argument
30
+ --cwd The working directory to resolve the db-module and migrations paths from (default: process.cwd())
31
+ This command cleans dist and runs tsc --build before executing migrations.
32
+ --help, -h Show this help message
33
+ `.trim();
34
+ const logger = pino({
35
+ name: 'kosmic-migrate',
36
+ level: process.env.LOG_LEVEL ?? 'info',
37
+ transport: { target: 'pino-princess' },
38
+ });
39
+ process.on('unhandledRejection', (error) => {
40
+ logger.error(error);
41
+ process.exit(1);
42
+ });
43
+ process.on('uncaughtException', (error) => {
44
+ logger.error(error);
45
+ process.exit(1);
46
+ });
47
+ const cli = parseArgs({
48
+ allowPositionals: true,
49
+ options: {
50
+ db: {
51
+ type: 'string',
52
+ short: 'd',
53
+ },
54
+ migrations: {
55
+ type: 'string',
56
+ short: 'm',
57
+ },
58
+ cwd: {
59
+ type: 'string',
60
+ },
61
+ help: {
62
+ type: 'boolean',
63
+ short: 'h',
64
+ },
65
+ },
66
+ });
67
+ if (cli.values.help === true) {
68
+ console.log(HELP_TEXT);
69
+ process.exit(0);
70
+ }
71
+ const cwd = cli.values.cwd ?? process.cwd();
72
+ const fullDbModulePath = path.resolve(cwd, cli.values.db ?? path.join('src', 'db', 'index.ts'));
73
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
74
+ const dbModule = (await import(__rewriteRelativeImportExtension(fullDbModulePath)));
75
+ const migrationsPath = path.resolve(cwd, cli.values.migrations ?? path.join('src', 'db', 'migrations.ts'));
76
+ const migrator = createMigrator({
77
+ db: dbModule.db,
78
+ migrationsPath,
79
+ logger,
80
+ });
81
+ const command = cli.positionals.slice(1)[0] ?? 'up';
82
+ switch (command) {
83
+ case 'up': {
84
+ logger.info('Migrating up');
85
+ const { error, results } = await migrator.migrateToLatest();
86
+ if (error) {
87
+ logger.error(error);
88
+ process.exit(1);
89
+ }
90
+ logger.info({ results }, 'Migration results:');
91
+ break;
92
+ }
93
+ case 'down': {
94
+ logger.info('Rolling back last migration');
95
+ const { error, results } = await migrator.migrateDown();
96
+ if (error) {
97
+ logger.error(error);
98
+ process.exit(1);
99
+ }
100
+ logger.info({ results }, 'Migration results:');
101
+ break;
102
+ }
103
+ case 'reset': {
104
+ logger.info('Resetting Database (rolling back all migrations)');
105
+ const { error, results } = await migrator.migrateTo(NO_MIGRATIONS);
106
+ if (error) {
107
+ logger.error(error);
108
+ process.exit(1);
109
+ }
110
+ logger.info({ results }, 'Migration results:');
111
+ break;
112
+ }
113
+ default: {
114
+ logger.error(`Unknown command: ${command}`);
115
+ console.log(HELP_TEXT);
116
+ process.exit(1);
117
+ }
118
+ }
119
+ process.exit();
120
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/migrate/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type Kysely, type CreateTableBuilder } from 'kysely';
2
+ export declare function createTimestampTrigger(db: Kysely<any>, tableName: string): Promise<import("kysely").QueryResult<unknown>>;
3
+ export declare function dropTimestampTrigger(db: Kysely<any>, tableName: string): Promise<import("kysely").QueryResult<unknown>>;
4
+ export declare function addTimestampsColumns(ctb: CreateTableBuilder<any, any>): CreateTableBuilder<any, any>;
5
+ export declare function addIdColumn(ctb: CreateTableBuilder<any, any>): CreateTableBuilder<any, any>;
6
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/migrate/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,MAAM,EAAO,KAAK,kBAAkB,EAAC,MAAM,QAAQ,CAAC;AAEjE,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EACf,SAAS,EAAE,MAAM,kDAQlB;AAED,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,kDAI5E;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,gCAQrE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,gCAI5D"}
@@ -0,0 +1,23 @@
1
+ import { sql } from 'kysely';
2
+ export async function createTimestampTrigger(db, tableName) {
3
+ return sql `
4
+ CREATE TRIGGER update_${sql.raw(tableName)}_updated_at
5
+ BEFORE UPDATE ON ${sql.table(tableName)}
6
+ FOR EACH ROW
7
+ EXECUTE PROCEDURE update_timestamp();
8
+ `.execute(db);
9
+ }
10
+ export async function dropTimestampTrigger(db, tableName) {
11
+ return sql `
12
+ DROP TRIGGER IF EXISTS update_${sql.raw(tableName)}_updated_at ON ${sql.table(tableName)};
13
+ `.execute(db);
14
+ }
15
+ export function addTimestampsColumns(ctb) {
16
+ return ctb
17
+ .addColumn('created_at', 'timestamp', (col) => col.notNull().defaultTo(sql `CURRENT_TIMESTAMP`))
18
+ .addColumn('updated_at', 'timestamp', (col) => col.notNull().defaultTo(sql `CURRENT_TIMESTAMP`));
19
+ }
20
+ export function addIdColumn(ctb) {
21
+ return ctb.addColumn('id', 'integer', (col) => col.primaryKey().generatedAlwaysAsIdentity());
22
+ }
23
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/migrate/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,GAAG,EAA0B,MAAM,QAAQ,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,EAAe,EACf,SAAiB;IAEjB,OAAO,GAAG,CAAA;4BACgB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;uBACvB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;;;GAGxC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EAAe,EAAE,SAAiB;IAC3E,OAAO,GAAG,CAAA;oCACwB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;GACzF,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAiC;IACpE,OAAO,GAAG;SACP,SAAS,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAC5C,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,GAAG,CAAA,mBAAmB,CAAC,CAChD;SACA,SAAS,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAC5C,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,GAAG,CAAA,mBAAmB,CAAC,CAChD,CAAC;AACN,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAiC;IAC3D,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAC5C,GAAG,CAAC,UAAU,EAAE,CAAC,yBAAyB,EAAE,CAC7C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createMigrator, ESMFileMigrationProvider, type KosmicMigration, type MigratorOptions, } from './migrator.ts';
2
+ export { createTimestampTrigger, dropTimestampTrigger, addTimestampsColumns, addIdColumn, } from './helpers.ts';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,GACZ,MAAM,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createMigrator, ESMFileMigrationProvider, } from "./migrator.js";
2
+ export { createTimestampTrigger, dropTimestampTrigger, addTimestampsColumns, addIdColumn, } from "./helpers.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,wBAAwB,GAGzB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,GACZ,MAAM,cAAc,CAAC"}
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ import { type Kysely, type Migration, type MigrationProvider, Migrator } from 'kysely';
3
+ export type KosmicMigration = Migration & {
4
+ sequence: string;
5
+ };
6
+ export declare class ESMFileMigrationProvider implements MigrationProvider {
7
+ private readonly migrationsPath;
8
+ private readonly logger?;
9
+ constructor(migrationsPath: string, logger?: {
10
+ info: (message: string) => void;
11
+ warn: (message: string) => void;
12
+ } | undefined);
13
+ getMigrations(): Promise<Record<string, Migration>>;
14
+ }
15
+ export type MigratorOptions = {
16
+ db: Kysely<any>;
17
+ migrationsPath: string;
18
+ allowUnorderedMigrations?: boolean;
19
+ logger?: {
20
+ warn: (message: string) => void;
21
+ info: (message: string) => void;
22
+ };
23
+ };
24
+ export declare function createMigrator(options: MigratorOptions): Migrator;
25
+ //# sourceMappingURL=migrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../../src/migrate/migrator.ts"],"names":[],"mappings":";AAKA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,QAAQ,EACT,MAAM,QAAQ,CAAC;AAEhB,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IACxC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAGF,qBAAa,wBAAyB,YAAW,iBAAiB;IAE9D,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBADP,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAChC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACjC,YAAA;IAKG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAiE1D;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,MAAM,CAAC,EAAE;QAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;KAAC,CAAC;CAC7E,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAQjE"}
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env node
2
+ /* eslint-disable no-await-in-loop */
3
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
4
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
5
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
6
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
7
+ });
8
+ }
9
+ return path;
10
+ };
11
+ import path from 'node:path';
12
+ import fs from 'node:fs/promises';
13
+ import { Migrator, } from 'kysely';
14
+ // https://github.com/kysely-org/kysely/issues/277#issuecomment-1385995789
15
+ export class ESMFileMigrationProvider {
16
+ migrationsPath;
17
+ logger;
18
+ constructor(migrationsPath, logger) {
19
+ this.migrationsPath = migrationsPath;
20
+ this.logger = logger;
21
+ //
22
+ }
23
+ async getMigrations() {
24
+ this.logger?.info(`Loading migrations from: ${this.migrationsPath}`);
25
+ let migrations = {};
26
+ const resolvedPath = this.migrationsPath;
27
+ let files = [];
28
+ try {
29
+ files = await fs.readdir(resolvedPath);
30
+ }
31
+ catch {
32
+ this.logger?.warn(`Migration directory not found: ${resolvedPath}. Please create it.`);
33
+ }
34
+ const standaloneMigrationFile = resolvedPath;
35
+ try {
36
+ await fs.access(standaloneMigrationFile);
37
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
38
+ migrations = (await import(__rewriteRelativeImportExtension(standaloneMigrationFile)));
39
+ migrations = Object.fromEntries(Object.entries(migrations).map(([key, value]) => {
40
+ if (!('sequence' in value))
41
+ return [key, value];
42
+ const { sequence, ...migration } = value;
43
+ return [`${sequence}_${key}`, migration];
44
+ }));
45
+ }
46
+ catch {
47
+ this.logger?.warn(`No standalone migration file found at ${standaloneMigrationFile}. Looking for individual migration files in the directory instead.`);
48
+ // Standalone migration file doesn't exist, which is fine
49
+ }
50
+ if (Array.isArray(files) && files.length > 0) {
51
+ const jsFiles = files.filter((file) => file.endsWith('.ts'));
52
+ for (const fileName of jsFiles) {
53
+ const importPath = path
54
+ .join(resolvedPath, fileName)
55
+ .replaceAll('\\', '/');
56
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
57
+ const migration = (await import(__rewriteRelativeImportExtension(importPath)));
58
+ const migrationKey = fileName.slice(0, Math.max(0, fileName.lastIndexOf('.')));
59
+ migrations[migrationKey] = migration;
60
+ }
61
+ }
62
+ return migrations;
63
+ }
64
+ }
65
+ export function createMigrator(options) {
66
+ const { db, migrationsPath, allowUnorderedMigrations = true, logger } = options;
67
+ return new Migrator({
68
+ db,
69
+ provider: new ESMFileMigrationProvider(migrationsPath, logger),
70
+ allowUnorderedMigrations,
71
+ });
72
+ }
73
+ //# sourceMappingURL=migrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../../src/migrate/migrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/start/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env node
2
+ import path from 'node:path';
3
+ import process from 'node:process';
4
+ import { parseArgs } from 'node:util';
5
+ import { execa } from 'execa';
6
+ const HELP_TEXT = `
7
+ Start the kosmic server from build output.
8
+
9
+ Usage
10
+ $ kosmic start [options]
11
+
12
+ Options
13
+ --cwd Working directory (default: process.cwd())
14
+ --help, -h Show this help message
15
+ `.trim();
16
+ const cli = parseArgs({
17
+ allowPositionals: true,
18
+ options: {
19
+ cwd: {
20
+ type: 'string',
21
+ },
22
+ help: {
23
+ type: 'boolean',
24
+ short: 'h',
25
+ },
26
+ },
27
+ });
28
+ if (cli.values.help) {
29
+ console.log(HELP_TEXT);
30
+ process.exit(0);
31
+ }
32
+ const cwd = cli.values.cwd ?? process.cwd();
33
+ const $$ = execa({ cwd, stdio: 'inherit' });
34
+ await $$({
35
+ env: { ...process.env, NODE_ENV: 'production', KOSMIC_ENV: 'production' },
36
+ }) `node ${path.join('dist', 'src', 'index.js')}`;
37
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/start/cli.ts"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAC;AACpC,OAAO,EAAC,KAAK,EAAC,MAAM,OAAO,CAAC;AAE5B,MAAM,SAAS,GAAG;;;;;;;;;CASjB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,GAAG,GAAG,SAAS,CAAC;IACpB,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE;QACP,GAAG,EAAE;YACH,IAAI,EAAE,QAAQ;SACf;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,GAAG;SACX;KACF;CACF,CAAC,CAAC;AAEH,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;AAE1C,MAAM,EAAE,CAAC;IACP,GAAG,EAAE,EAAC,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAC;CACxE,CAAC,CAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/test-watch/cli.ts"],"names":[],"mappings":""}