@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.
- package/dist/src/build/cli.d.ts +3 -0
- package/dist/src/build/cli.d.ts.map +1 -0
- package/dist/src/build/cli.js +42 -0
- package/dist/src/build/cli.js.map +1 -0
- package/dist/src/build-vite-plugin/cli.d.ts +3 -0
- package/dist/src/build-vite-plugin/cli.d.ts.map +1 -0
- package/dist/src/build-vite-plugin/cli.js +34 -0
- package/dist/src/build-vite-plugin/cli.js.map +1 -0
- package/dist/src/check/cli.d.ts +3 -0
- package/dist/src/check/cli.d.ts.map +1 -0
- package/dist/src/check/cli.js +34 -0
- package/dist/src/check/cli.js.map +1 -0
- package/dist/src/clean/cli.d.ts +3 -0
- package/dist/src/clean/cli.d.ts.map +1 -0
- package/dist/src/clean/cli.js +34 -0
- package/dist/src/clean/cli.js.map +1 -0
- package/dist/src/compile/cli.d.ts +3 -0
- package/dist/src/compile/cli.d.ts.map +1 -0
- package/dist/src/compile/cli.js +38 -0
- package/dist/src/compile/cli.js.map +1 -0
- package/dist/src/compile-cp/cli.d.ts +3 -0
- package/dist/src/compile-cp/cli.d.ts.map +1 -0
- package/dist/src/compile-cp/cli.js +34 -0
- package/dist/src/compile-cp/cli.js.map +1 -0
- package/dist/src/compile-tsc/cli.d.ts +3 -0
- package/dist/src/compile-tsc/cli.d.ts.map +1 -0
- package/dist/src/compile-tsc/cli.js +34 -0
- package/dist/src/compile-tsc/cli.js.map +1 -0
- package/dist/src/compile-vite/cli.d.ts +3 -0
- package/dist/src/compile-vite/cli.d.ts.map +1 -0
- package/dist/src/compile-vite/cli.js +34 -0
- package/dist/src/compile-vite/cli.js.map +1 -0
- package/dist/src/create/cli.d.ts +3 -0
- package/dist/src/create/cli.d.ts.map +1 -0
- package/dist/src/create/cli.js +167 -0
- package/dist/src/create/cli.js.map +1 -0
- package/dist/src/create/scaffold.d.ts +15 -0
- package/dist/src/create/scaffold.d.ts.map +1 -0
- package/dist/src/create/scaffold.js +49 -0
- package/dist/src/create/scaffold.js.map +1 -0
- package/dist/src/create/templates/auth.d.ts +2 -0
- package/dist/src/create/templates/auth.d.ts.map +1 -0
- package/dist/src/create/templates/auth.js +355 -0
- package/dist/src/create/templates/auth.js.map +1 -0
- package/dist/src/create/templates/base.d.ts +2 -0
- package/dist/src/create/templates/base.d.ts.map +1 -0
- package/dist/src/create/templates/base.js +221 -0
- package/dist/src/create/templates/base.js.map +1 -0
- package/dist/src/dev/cli.d.ts +3 -0
- package/dist/src/dev/cli.d.ts.map +1 -0
- package/dist/src/dev/cli.js +82 -0
- package/dist/src/dev/cli.js.map +1 -0
- package/dist/src/dev/ts-watch.d.ts +3 -0
- package/dist/src/dev/ts-watch.d.ts.map +1 -0
- package/dist/src/dev/ts-watch.js +29 -0
- package/dist/src/dev/ts-watch.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +138 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lint/cli.d.ts +3 -0
- package/dist/src/lint/cli.d.ts.map +1 -0
- package/dist/src/lint/cli.js +34 -0
- package/dist/src/lint/cli.js.map +1 -0
- package/dist/src/migrate/cli.d.ts +3 -0
- package/dist/src/migrate/cli.d.ts.map +1 -0
- package/dist/src/migrate/cli.js +120 -0
- package/dist/src/migrate/cli.js.map +1 -0
- package/dist/src/migrate/helpers.d.ts +6 -0
- package/dist/src/migrate/helpers.d.ts.map +1 -0
- package/dist/src/migrate/helpers.js +23 -0
- package/dist/src/migrate/helpers.js.map +1 -0
- package/dist/src/migrate/index.d.ts +3 -0
- package/dist/src/migrate/index.d.ts.map +1 -0
- package/dist/src/migrate/index.js +3 -0
- package/dist/src/migrate/index.js.map +1 -0
- package/dist/src/migrate/migrator.d.ts +25 -0
- package/dist/src/migrate/migrator.d.ts.map +1 -0
- package/dist/src/migrate/migrator.js +73 -0
- package/dist/src/migrate/migrator.js.map +1 -0
- package/dist/src/start/cli.d.ts +3 -0
- package/dist/src/start/cli.d.ts.map +1 -0
- package/dist/src/start/cli.js +37 -0
- package/dist/src/start/cli.js.map +1 -0
- package/dist/src/test-watch/cli.d.ts +3 -0
- package/dist/src/test-watch/cli.d.ts.map +1 -0
- package/dist/src/test-watch/cli.js +44 -0
- package/dist/src/test-watch/cli.js.map +1 -0
- package/dist/src/test_/cli.d.ts +3 -0
- package/dist/src/test_/cli.d.ts.map +1 -0
- package/dist/src/test_/cli.js +40 -0
- package/dist/src/test_/cli.js.map +1 -0
- package/dist/test/index.test.d.ts +2 -0
- package/dist/test/index.test.d.ts.map +1 -0
- package/dist/test/index.test.js +3 -0
- package/dist/test/index.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +52 -0
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/test-watch/cli.ts"],"names":[],"mappings":""}
|