@rudderjs/cli 4.11.0 → 4.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/add.js +1 -1
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/fresh.d.ts +18 -0
- package/dist/commands/fresh.d.ts.map +1 -0
- package/dist/commands/fresh.js +75 -0
- package/dist/commands/fresh.js.map +1 -0
- package/dist/commands/make/_shared.d.ts +7 -0
- package/dist/commands/make/_shared.d.ts.map +1 -1
- package/dist/commands/make/_shared.js +36 -0
- package/dist/commands/make/_shared.js.map +1 -1
- package/dist/commands/make/command.d.ts.map +1 -1
- package/dist/commands/make/command.js +1 -0
- package/dist/commands/make/command.js.map +1 -1
- package/dist/commands/make/controller.d.ts.map +1 -1
- package/dist/commands/make/controller.js +1 -0
- package/dist/commands/make/controller.js.map +1 -1
- package/dist/commands/make/event.d.ts.map +1 -1
- package/dist/commands/make/event.js +1 -0
- package/dist/commands/make/event.js.map +1 -1
- package/dist/commands/make/exception.d.ts +6 -0
- package/dist/commands/make/exception.d.ts.map +1 -0
- package/dist/commands/make/exception.js +53 -0
- package/dist/commands/make/exception.js.map +1 -0
- package/dist/commands/make/job.d.ts.map +1 -1
- package/dist/commands/make/job.js +1 -0
- package/dist/commands/make/job.js.map +1 -1
- package/dist/commands/make/listener.d.ts.map +1 -1
- package/dist/commands/make/listener.js +1 -0
- package/dist/commands/make/listener.js.map +1 -1
- package/dist/commands/make/mail.d.ts.map +1 -1
- package/dist/commands/make/mail.js +1 -0
- package/dist/commands/make/mail.js.map +1 -1
- package/dist/commands/make/middleware.d.ts.map +1 -1
- package/dist/commands/make/middleware.js +1 -0
- package/dist/commands/make/middleware.js.map +1 -1
- package/dist/commands/make/model.d.ts.map +1 -1
- package/dist/commands/make/model.js +1 -0
- package/dist/commands/make/model.js.map +1 -1
- package/dist/commands/make/provider.d.ts.map +1 -1
- package/dist/commands/make/provider.js +1 -0
- package/dist/commands/make/provider.js.map +1 -1
- package/dist/commands/make/request.d.ts.map +1 -1
- package/dist/commands/make/request.js +1 -0
- package/dist/commands/make/request.js.map +1 -1
- package/dist/commands/make/test-stubs.d.ts +24 -0
- package/dist/commands/make/test-stubs.d.ts.map +1 -0
- package/dist/commands/make/test-stubs.js +50 -0
- package/dist/commands/make/test-stubs.js.map +1 -0
- package/dist/commands/make/test.d.ts +2 -14
- package/dist/commands/make/test.d.ts.map +1 -1
- package/dist/commands/make/test.js +2 -41
- package/dist/commands/make/test.js.map +1 -1
- package/dist/commands/make.d.ts.map +1 -1
- package/dist/commands/make.js +2 -0
- package/dist/commands/make.js.map +1 -1
- package/dist/commands/module/publish.d.ts +9 -0
- package/dist/commands/module/publish.d.ts.map +1 -1
- package/dist/commands/module/publish.js +20 -5
- package/dist/commands/module/publish.js.map +1 -1
- package/dist/commands/optimize-clear.d.ts +28 -0
- package/dist/commands/optimize-clear.d.ts.map +1 -0
- package/dist/commands/optimize-clear.js +50 -0
- package/dist/commands/optimize-clear.js.map +1 -0
- package/dist/commands/vendor-publish.d.ts.map +1 -1
- package/dist/commands/vendor-publish.js +5 -1
- package/dist/commands/vendor-publish.js.map +1 -1
- package/dist/doctor/built-in/structure.js +40 -0
- package/dist/doctor/built-in/structure.js.map +1 -1
- package/dist/index.js +27 -3
- package/dist/index.js.map +1 -1
- package/dist/native-driver-cache.d.ts +17 -0
- package/dist/native-driver-cache.d.ts.map +1 -0
- package/dist/native-driver-cache.js +45 -0
- package/dist/native-driver-cache.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test-file stubs shared by `make:test` and the `--with-test` flag on the
|
|
3
|
+
* other `make:*` generators. Kept import-free so `_shared.ts` (the generator
|
|
4
|
+
* harness) and `test.ts` (the make:test command) can both use them without a
|
|
5
|
+
* module cycle.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Feature test — boots the app via `AppTestCase` and exercises HTTP / DB /
|
|
9
|
+
* services. The convention assumed here matches `docs/guide/testing.md`:
|
|
10
|
+
* apps export `class AppTestCase extends TestCase` from `tests/TestCase.ts`.
|
|
11
|
+
* The generated file uses Node's built-in `node:test` runner (the documented
|
|
12
|
+
* runner — runs via `tsx --test tests/**\/*.test.ts`).
|
|
13
|
+
*
|
|
14
|
+
* @param sourceRel — when set (the `--with-test` flow), a `// Covers …`
|
|
15
|
+
* comment points the test back at the file it was generated alongside.
|
|
16
|
+
*/
|
|
17
|
+
export function featureStub(testName, sourceRel) {
|
|
18
|
+
return `import { describe, it, before, after } from 'node:test'
|
|
19
|
+
import { AppTestCase } from './TestCase.js'
|
|
20
|
+
${sourceRel ? `\n// Covers ${sourceRel}` : ''}
|
|
21
|
+
describe('${testName}', () => {
|
|
22
|
+
let t: AppTestCase
|
|
23
|
+
|
|
24
|
+
before(async () => { t = await AppTestCase.create() })
|
|
25
|
+
after (async () => { await t.teardown() })
|
|
26
|
+
|
|
27
|
+
it('does something', async () => {
|
|
28
|
+
const res = await t.get('/')
|
|
29
|
+
res.assertOk()
|
|
30
|
+
})
|
|
31
|
+
})
|
|
32
|
+
`;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Unit test — plain `node:test` + `assert`. No app boot, no TestCase,
|
|
36
|
+
* no `@rudderjs/testing`. The right shape for pure functions, validators,
|
|
37
|
+
* domain logic, or anything that shouldn't pay the boot cost.
|
|
38
|
+
*/
|
|
39
|
+
export function unitStub(testName, sourceRel) {
|
|
40
|
+
return `import { describe, it } from 'node:test'
|
|
41
|
+
import assert from 'node:assert/strict'
|
|
42
|
+
${sourceRel ? `\n// Covers ${sourceRel}` : ''}
|
|
43
|
+
describe('${testName}', () => {
|
|
44
|
+
it('does something', () => {
|
|
45
|
+
assert.equal(1 + 1, 2)
|
|
46
|
+
})
|
|
47
|
+
})
|
|
48
|
+
`;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=test-stubs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-stubs.js","sourceRoot":"","sources":["../../../src/commands/make/test-stubs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,SAAkB;IAC9D,OAAO;;EAEP,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;YACjC,QAAQ;;;;;;;;;;;CAWnB,CAAA;AACD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB,EAAE,SAAkB;IAC3D,OAAO;;EAEP,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;YACjC,QAAQ;;;;;CAKnB,CAAA;AACD,CAAC"}
|
|
@@ -1,17 +1,5 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* services. The convention assumed here matches `docs/guide/testing.md`:
|
|
5
|
-
* apps export `class AppTestCase extends TestCase` from `tests/TestCase.ts`.
|
|
6
|
-
* The generated file uses Node's built-in `node:test` runner (the documented
|
|
7
|
-
* runner — runs via `tsx --test tests/**\/*.test.ts`).
|
|
8
|
-
*/
|
|
9
|
-
export declare function featureStub(testName: string): string;
|
|
10
|
-
/**
|
|
11
|
-
* Unit test — plain `node:test` + `assert`. No app boot, no TestCase,
|
|
12
|
-
* no `@rudderjs/testing`. The right shape for pure functions, validators,
|
|
13
|
-
* domain logic, or anything that shouldn't pay the boot cost.
|
|
14
|
-
*/
|
|
15
|
-
export declare function unitStub(testName: string): string;
|
|
2
|
+
import { featureStub, unitStub } from './test-stubs.js';
|
|
3
|
+
export { featureStub, unitStub };
|
|
16
4
|
export declare function makeTest(program: Command): void;
|
|
17
5
|
//# sourceMappingURL=test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/commands/make/test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/commands/make/test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;AAqBhC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwB/C"}
|
|
@@ -2,47 +2,8 @@ import { existsSync } from 'node:fs';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { registerMake } from './_shared.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* Feature test — boots the app via `AppTestCase` and exercises HTTP / DB /
|
|
8
|
-
* services. The convention assumed here matches `docs/guide/testing.md`:
|
|
9
|
-
* apps export `class AppTestCase extends TestCase` from `tests/TestCase.ts`.
|
|
10
|
-
* The generated file uses Node's built-in `node:test` runner (the documented
|
|
11
|
-
* runner — runs via `tsx --test tests/**\/*.test.ts`).
|
|
12
|
-
*/
|
|
13
|
-
export function featureStub(testName) {
|
|
14
|
-
return `import { describe, it, before, after } from 'node:test'
|
|
15
|
-
import { AppTestCase } from './TestCase.js'
|
|
16
|
-
|
|
17
|
-
describe('${testName}', () => {
|
|
18
|
-
let t: AppTestCase
|
|
19
|
-
|
|
20
|
-
before(async () => { t = await AppTestCase.create() })
|
|
21
|
-
after (async () => { await t.teardown() })
|
|
22
|
-
|
|
23
|
-
it('does something', async () => {
|
|
24
|
-
const res = await t.get('/')
|
|
25
|
-
res.assertOk()
|
|
26
|
-
})
|
|
27
|
-
})
|
|
28
|
-
`;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Unit test — plain `node:test` + `assert`. No app boot, no TestCase,
|
|
32
|
-
* no `@rudderjs/testing`. The right shape for pure functions, validators,
|
|
33
|
-
* domain logic, or anything that shouldn't pay the boot cost.
|
|
34
|
-
*/
|
|
35
|
-
export function unitStub(testName) {
|
|
36
|
-
return `import { describe, it } from 'node:test'
|
|
37
|
-
import assert from 'node:assert/strict'
|
|
38
|
-
|
|
39
|
-
describe('${testName}', () => {
|
|
40
|
-
it('does something', () => {
|
|
41
|
-
assert.equal(1 + 1, 2)
|
|
42
|
-
})
|
|
43
|
-
})
|
|
44
|
-
`;
|
|
45
|
-
}
|
|
5
|
+
import { featureStub, unitStub } from './test-stubs.js';
|
|
6
|
+
export { featureStub, unitStub };
|
|
46
7
|
// ── Helpers ───────────────────────────────────────────────────
|
|
47
8
|
/**
|
|
48
9
|
* Trim a trailing `.test` so `make:test User` produces a `describe('User', …)`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/make/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/make/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;AAEhC,iEAAiE;AAEjE;;;;;GAKG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACvE,CAAC;AAED,SAAS,QAAQ,CAAC,SAAiB,EAAE,IAA6B;IAChE,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;IAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;AAClE,CAAC;AAED,iEAAiE;AAEjE,MAAM,UAAU,QAAQ,CAAC,OAAgB;IACvC,YAAY,CAAC,OAAO,EAAE;QACpB,OAAO,EAAM,WAAW;QACxB,WAAW,EAAE,0FAA0F;QACvG,KAAK,EAAQ,cAAc;QAC3B,sEAAsE;QACtE,mEAAmE;QACnE,8DAA8D;QAC9D,MAAM,EAAO,OAAO;QACpB,SAAS,EAAI,OAAO;QACpB,IAAI,EAAS,QAAQ;QACrB,YAAY,EAAE;YACZ,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,kEAAkE,EAAE;SACzG;QACD,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;YAChD,uEAAuE;YACvE,2DAA2D;YAC3D,IAAI,IAAI,CAAC,MAAM,CAAC;gBAAE,OAAM;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,CAAA;YACxE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uFAAuF,CAAC,CAAC,CAAA;YACpH,CAAC;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,yCAAyC;AACzC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,WAAW;IACX,QAAQ;IACR,eAAe;IACf,QAAQ;CACT,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../src/commands/make.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../src/commands/make.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgBxC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+BlD"}
|
package/dist/commands/make.js
CHANGED
|
@@ -8,6 +8,7 @@ import { makeRequest } from './make/request.js';
|
|
|
8
8
|
import { makeProvider } from './make/provider.js';
|
|
9
9
|
import { makeCommandCmd } from './make/command.js';
|
|
10
10
|
import { makeEvent } from './make/event.js';
|
|
11
|
+
import { makeException } from './make/exception.js';
|
|
11
12
|
import { makeListener } from './make/listener.js';
|
|
12
13
|
import { makeMail } from './make/mail.js';
|
|
13
14
|
import { makeTest } from './make/test.js';
|
|
@@ -21,6 +22,7 @@ export function makeCommand(program) {
|
|
|
21
22
|
makeProvider(program);
|
|
22
23
|
makeCommandCmd(program);
|
|
23
24
|
makeEvent(program);
|
|
25
|
+
makeException(program);
|
|
24
26
|
makeListener(program);
|
|
25
27
|
makeMail(program);
|
|
26
28
|
makeTest(program);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make.js","sourceRoot":"","sources":["../../src/commands/make.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,gCAAgC;IAChC,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,SAAS,CAAC,OAAO,CAAC,CAAA;IAClB,OAAO,CAAC,OAAO,CAAC,CAAA;IAChB,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,WAAW,CAAC,OAAO,CAAC,CAAA;IACpB,YAAY,CAAC,OAAO,CAAC,CAAA;IACrB,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,SAAS,CAAC,OAAO,CAAC,CAAA;IAClB,YAAY,CAAC,OAAO,CAAC,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,CAAA;IACjB,QAAQ,CAAC,OAAO,CAAC,CAAA;IAEjB,qEAAqE;IACrE,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,EAAE,CAAC;QAClC,OAAO;aACJ,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS,CAAC;aACjC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;aAC7B,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC;aACzD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAyB,EAAE,EAAE;YACxD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAA;gBACzD,OAAM;YACR,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;IACN,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"make.js","sourceRoot":"","sources":["../../src/commands/make.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,gCAAgC;IAChC,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,SAAS,CAAC,OAAO,CAAC,CAAA;IAClB,OAAO,CAAC,OAAO,CAAC,CAAA;IAChB,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,WAAW,CAAC,OAAO,CAAC,CAAA;IACpB,YAAY,CAAC,OAAO,CAAC,CAAA;IACrB,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,SAAS,CAAC,OAAO,CAAC,CAAA;IAClB,aAAa,CAAC,OAAO,CAAC,CAAA;IACtB,YAAY,CAAC,OAAO,CAAC,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,CAAA;IACjB,QAAQ,CAAC,OAAO,CAAC,CAAA;IAEjB,qEAAqE;IACrE,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,EAAE,CAAC;QAClC,OAAO;aACJ,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS,CAAC;aACjC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;aAC7B,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC;aACzD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAyB,EAAE,EAAE;YACxD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAA;gBACzD,OAAM;YACR,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;IACN,CAAC;AACH,CAAC"}
|
|
@@ -10,5 +10,14 @@ export declare function buildMergedBlock(shards: Array<{
|
|
|
10
10
|
file: string;
|
|
11
11
|
content: string;
|
|
12
12
|
}>): string;
|
|
13
|
+
/**
|
|
14
|
+
* Where the merged module block lands. Scaffolded apps (and the playground)
|
|
15
|
+
* use Prisma's multi-file layout — `prisma.config.ts` points `schema` at the
|
|
16
|
+
* `prisma/schema/` DIRECTORY — so merging into a sibling `prisma/schema.prisma`
|
|
17
|
+
* would write a file Prisma never reads and the publish would be a silent
|
|
18
|
+
* no-op. Multi-file layout → `prisma/schema/modules.prisma` (picked up like
|
|
19
|
+
* any other shard); legacy single-file layout → `prisma/schema.prisma`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveSchemaTarget(cwd: string): string;
|
|
13
22
|
export declare function publishModule(program: Command): void;
|
|
14
23
|
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/commands/module/publish.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,eAAO,MAAM,UAAU,QAAsE,CAAA;AAI7F,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAsBlJ;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAMzG;AAeD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/commands/module/publish.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,eAAO,MAAM,UAAU,QAAsE,CAAA;AAI7F,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAsBlJ;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAMzG;AAeD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgFpD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFile, writeFile, readdir } from 'node:fs/promises';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
|
-
import { resolve, join } from 'node:path';
|
|
3
|
+
import { resolve, join, relative } from 'node:path';
|
|
4
4
|
import { spawn } from 'node:child_process';
|
|
5
5
|
import { intro, outro, spinner, log } from '@clack/prompts';
|
|
6
6
|
export const MARKERS_RE = /\/\/ <rudderjs:modules:start>[\s\S]*?\/\/ <rudderjs:modules:end>/m;
|
|
@@ -46,10 +46,24 @@ function runCommand(cmd, args, cwd) {
|
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
// ─── Command ───────────────────────────────────────────────
|
|
49
|
+
/**
|
|
50
|
+
* Where the merged module block lands. Scaffolded apps (and the playground)
|
|
51
|
+
* use Prisma's multi-file layout — `prisma.config.ts` points `schema` at the
|
|
52
|
+
* `prisma/schema/` DIRECTORY — so merging into a sibling `prisma/schema.prisma`
|
|
53
|
+
* would write a file Prisma never reads and the publish would be a silent
|
|
54
|
+
* no-op. Multi-file layout → `prisma/schema/modules.prisma` (picked up like
|
|
55
|
+
* any other shard); legacy single-file layout → `prisma/schema.prisma`.
|
|
56
|
+
*/
|
|
57
|
+
export function resolveSchemaTarget(cwd) {
|
|
58
|
+
const schemaDir = resolve(cwd, 'prisma/schema');
|
|
59
|
+
return existsSync(schemaDir)
|
|
60
|
+
? join(schemaDir, 'modules.prisma')
|
|
61
|
+
: resolve(cwd, 'prisma/schema.prisma');
|
|
62
|
+
}
|
|
49
63
|
export function publishModule(program) {
|
|
50
64
|
program
|
|
51
65
|
.command('module:publish [module]')
|
|
52
|
-
.description('Merge module Prisma shards into prisma/schema.prisma')
|
|
66
|
+
.description('Merge module Prisma shards into the app Prisma schema (prisma/schema/modules.prisma, or prisma/schema.prisma on single-file layouts)')
|
|
53
67
|
.option('--generate', 'Run prisma generate after merging')
|
|
54
68
|
.option('--migrate', 'Run prisma migrate dev after merging')
|
|
55
69
|
.option('--name <name>', 'Migration name (used with --migrate)', 'auto')
|
|
@@ -57,7 +71,7 @@ export function publishModule(program) {
|
|
|
57
71
|
intro('Publishing module Prisma shards');
|
|
58
72
|
const cwd = process.cwd();
|
|
59
73
|
const modulesDir = resolve(cwd, 'app/Modules');
|
|
60
|
-
const schemaPath =
|
|
74
|
+
const schemaPath = resolveSchemaTarget(cwd);
|
|
61
75
|
const s = spinner();
|
|
62
76
|
s.start('Scanning for .prisma files');
|
|
63
77
|
const shards = await findPrismaFiles(modulesDir, moduleFilter);
|
|
@@ -87,10 +101,11 @@ export function publishModule(program) {
|
|
|
87
101
|
else {
|
|
88
102
|
schema = mergedBlock + '\n';
|
|
89
103
|
}
|
|
104
|
+
const schemaRel = relative(cwd, schemaPath);
|
|
90
105
|
const s2 = spinner();
|
|
91
|
-
s2.start(
|
|
106
|
+
s2.start(`Writing ${schemaRel}`);
|
|
92
107
|
await writeFile(schemaPath, schema);
|
|
93
|
-
s2.stop(
|
|
108
|
+
s2.stop(`${schemaRel} updated`);
|
|
94
109
|
if (opts.generate) {
|
|
95
110
|
const sg = spinner();
|
|
96
111
|
sg.start('Running prisma generate');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/commands/module/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/commands/module/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
interface ClearResult {
|
|
3
|
+
/** Path relative to the app root, e.g. `bootstrap/cache/` */
|
|
4
|
+
target: string;
|
|
5
|
+
/** What the target holds — shown next to the checkmark */
|
|
6
|
+
label: string;
|
|
7
|
+
cleared: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Remove the framework's filesystem caches. Everything here is regenerated
|
|
11
|
+
* automatically: the provider manifest self-heals at boot, and Vite rebuilds
|
|
12
|
+
* its dep-optimizer cache on the next dev server start.
|
|
13
|
+
*
|
|
14
|
+
* Deliberately NOT cleared: `.rudder/types/` and `pages/__view/` (committed,
|
|
15
|
+
* regenerated by scanners — wiping them breaks a fresh-clone typecheck) and
|
|
16
|
+
* `dist/` (build output, that's `pnpm clean`'s job).
|
|
17
|
+
*/
|
|
18
|
+
export declare function clearFrameworkCaches(cwd: string): ClearResult[];
|
|
19
|
+
/** Print one line per target — ✔ cleared / dim already-empty. */
|
|
20
|
+
export declare function reportClearResults(results: ClearResult[]): void;
|
|
21
|
+
/**
|
|
22
|
+
* `rudder optimize:clear` — Laravel-parity name for "wipe the framework's
|
|
23
|
+
* filesystem caches". Skip-boot: it must work when a corrupt cache is the
|
|
24
|
+
* reason the app can't boot.
|
|
25
|
+
*/
|
|
26
|
+
export declare function optimizeClearCommand(program: Command): void;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=optimize-clear.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimize-clear.d.ts","sourceRoot":"","sources":["../../src/commands/optimize-clear.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,UAAU,WAAW;IACnB,6DAA6D;IAC7D,MAAM,EAAG,MAAM,CAAA;IACf,0DAA0D;IAC1D,KAAK,EAAI,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE,CAY/D;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAQ/D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAO3D"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { rmSync, existsSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
/**
|
|
5
|
+
* Remove the framework's filesystem caches. Everything here is regenerated
|
|
6
|
+
* automatically: the provider manifest self-heals at boot, and Vite rebuilds
|
|
7
|
+
* its dep-optimizer cache on the next dev server start.
|
|
8
|
+
*
|
|
9
|
+
* Deliberately NOT cleared: `.rudder/types/` and `pages/__view/` (committed,
|
|
10
|
+
* regenerated by scanners — wiping them breaks a fresh-clone typecheck) and
|
|
11
|
+
* `dist/` (build output, that's `pnpm clean`'s job).
|
|
12
|
+
*/
|
|
13
|
+
export function clearFrameworkCaches(cwd) {
|
|
14
|
+
const targets = [
|
|
15
|
+
{ target: 'bootstrap/cache/', label: 'provider manifest (self-heals at boot)' },
|
|
16
|
+
{ target: 'node_modules/.vite/', label: 'Vite dep-optimizer cache' },
|
|
17
|
+
];
|
|
18
|
+
return targets.map(({ target, label }) => {
|
|
19
|
+
const abs = path.join(cwd, target);
|
|
20
|
+
if (!existsSync(abs))
|
|
21
|
+
return { target, label, cleared: false };
|
|
22
|
+
rmSync(abs, { recursive: true, force: true });
|
|
23
|
+
return { target, label, cleared: true };
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/** Print one line per target — ✔ cleared / dim already-empty. */
|
|
27
|
+
export function reportClearResults(results) {
|
|
28
|
+
for (const r of results) {
|
|
29
|
+
if (r.cleared) {
|
|
30
|
+
console.log(chalk.green(' ✔ Cleared:'), chalk.cyan(r.target), chalk.dim(`— ${r.label}`));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
console.log(chalk.dim(` - ${r.target} already empty`));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* `rudder optimize:clear` — Laravel-parity name for "wipe the framework's
|
|
39
|
+
* filesystem caches". Skip-boot: it must work when a corrupt cache is the
|
|
40
|
+
* reason the app can't boot.
|
|
41
|
+
*/
|
|
42
|
+
export function optimizeClearCommand(program) {
|
|
43
|
+
program
|
|
44
|
+
.command('optimize:clear')
|
|
45
|
+
.description('Remove framework filesystem caches (provider manifest, Vite dep-optimizer cache)')
|
|
46
|
+
.action(() => {
|
|
47
|
+
reportClearResults(clearFrameworkCaches(process.cwd()));
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=optimize-clear.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimize-clear.js","sourceRoot":"","sources":["../../src/commands/optimize-clear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,OAAO,GAAwC;QACnD,EAAE,MAAM,EAAE,kBAAkB,EAAK,KAAK,EAAE,wCAAwC,EAAE;QAClF,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,0BAA0B,EAAE;KACrE,CAAA;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAC9D,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACvD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC3F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,gBAAgB,CAAC,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,kFAAkF,CAAC;SAC/F,MAAM,CAAC,GAAG,EAAE;QACX,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendor-publish.d.ts","sourceRoot":"","sources":["../../src/commands/vendor-publish.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"vendor-publish.d.ts","sourceRoot":"","sources":["../../src/commands/vendor-publish.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiCxC,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAsB,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,IAAI,CAsBlG;AAID,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4H3D"}
|
|
@@ -2,7 +2,9 @@ import { cp, mkdir, readdir, stat } from 'node:fs/promises';
|
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import { resolve, join } from 'node:path';
|
|
4
4
|
import { intro, outro, log, spinner } from '@clack/prompts';
|
|
5
|
-
/** Detect which ORM is installed by checking package.json dependencies.
|
|
5
|
+
/** Detect which ORM is installed by checking package.json dependencies.
|
|
6
|
+
* An adapter package wins; a data-layer package without one means the
|
|
7
|
+
* built-in native engine. */
|
|
6
8
|
function detectORM(cwd = process.cwd()) {
|
|
7
9
|
try {
|
|
8
10
|
const pkg = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf8'));
|
|
@@ -11,6 +13,8 @@ function detectORM(cwd = process.cwd()) {
|
|
|
11
13
|
return 'prisma';
|
|
12
14
|
if ('@rudderjs/orm-drizzle' in deps)
|
|
13
15
|
return 'drizzle';
|
|
16
|
+
if ('@rudderjs/orm' in deps || '@rudderjs/database' in deps)
|
|
17
|
+
return 'native';
|
|
14
18
|
return null;
|
|
15
19
|
}
|
|
16
20
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendor-publish.js","sourceRoot":"","sources":["../../src/commands/vendor-publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAI3D
|
|
1
|
+
{"version":3,"file":"vendor-publish.js","sourceRoot":"","sources":["../../src/commands/vendor-publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,46 @@ registerDoctorCheck({
|
|
|
64
64
|
return { status: 'ok', message: have.join(', ') };
|
|
65
65
|
},
|
|
66
66
|
});
|
|
67
|
+
registerDoctorCheck({
|
|
68
|
+
id: 'structure:rudder-types-tsconfig',
|
|
69
|
+
category: 'structure',
|
|
70
|
+
title: '.rudder/ generated types in tsconfig',
|
|
71
|
+
run() {
|
|
72
|
+
// `.rudder/types/` holds the generated type registries (typed views /
|
|
73
|
+
// routes / models). They only work when tsc includes the directory —
|
|
74
|
+
// and dot-directories are invisible to bare `**/*` globs AND to
|
|
75
|
+
// bare-directory include entries, so the glob form is required.
|
|
76
|
+
if (!anyExists(['.rudder/types'])) {
|
|
77
|
+
return { status: 'ok', message: 'no .rudder/ yet (created on first dev/build)' };
|
|
78
|
+
}
|
|
79
|
+
const text = readFileSafe('tsconfig.json');
|
|
80
|
+
if (text === null) {
|
|
81
|
+
return {
|
|
82
|
+
status: 'warn',
|
|
83
|
+
message: '.rudder/ exists but tsconfig.json is missing or unreadable',
|
|
84
|
+
fix: 'Add a tsconfig.json with ".rudder/**/*" in its include array',
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// A working entry references a path UNDER .rudder/ (e.g. ".rudder/**/*").
|
|
88
|
+
if (/["']\.?\/?\.rudder\/[^"']*["']/.test(text)) {
|
|
89
|
+
return { status: 'ok', message: 'included' };
|
|
90
|
+
}
|
|
91
|
+
// The bare directory form does NOT work — tsc only auto-expands
|
|
92
|
+
// non-dotted directory names.
|
|
93
|
+
if (/["']\.?\/?\.rudder["']/.test(text)) {
|
|
94
|
+
return {
|
|
95
|
+
status: 'warn',
|
|
96
|
+
message: 'tsconfig lists bare ".rudder" — tsc ignores dotted directory includes',
|
|
97
|
+
fix: 'Change the include entry to ".rudder/**/*"',
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
status: 'warn',
|
|
102
|
+
message: '.rudder/ exists but tsconfig include does not cover it — typed view()/route()/Model.for<>() will not resolve',
|
|
103
|
+
fix: 'Add ".rudder/**/*" to the tsconfig.json include array',
|
|
104
|
+
};
|
|
105
|
+
},
|
|
106
|
+
});
|
|
67
107
|
registerDoctorCheck({
|
|
68
108
|
id: 'structure:welcome-view',
|
|
69
109
|
category: 'structure',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure.js","sourceRoot":"","sources":["../../../src/doctor/built-in/structure.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"structure.js","sourceRoot":"","sources":["../../../src/doctor/built-in/structure.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import path from 'node:path';
|
|
|
4
4
|
import fs from 'node:fs/promises';
|
|
5
5
|
import { createRequire } from 'node:module';
|
|
6
6
|
import { makeCommand } from './commands/make.js';
|
|
7
|
+
import { disposeNativeDriverCache } from './native-driver-cache.js';
|
|
7
8
|
import { moduleCommand } from './commands/module.js';
|
|
8
9
|
import { vendorPublishCommand } from './commands/vendor-publish.js';
|
|
9
10
|
import { providersDiscoverCommand } from './commands/providers-discover.js';
|
|
@@ -16,6 +17,8 @@ import { aboutCommand } from './commands/about.js';
|
|
|
16
17
|
import { testCommand } from './commands/test.js';
|
|
17
18
|
import { doctorCommand } from './commands/doctor.js';
|
|
18
19
|
import { tinkerCommand } from './commands/tinker.js';
|
|
20
|
+
import { optimizeClearCommand } from './commands/optimize-clear.js';
|
|
21
|
+
import { freshCommand } from './commands/fresh.js';
|
|
19
22
|
import { rudder, parseSignature, CancelledError, commandObservers } from '@rudderjs/console';
|
|
20
23
|
import { CliError } from './errors.js';
|
|
21
24
|
// The `rudder` CLI's own version, read from its package.json at runtime — works
|
|
@@ -214,8 +217,9 @@ async function loadPackageCommands() {
|
|
|
214
217
|
const register = mod['registerSchemaTypesCommand'];
|
|
215
218
|
register(rudder, { bootApp });
|
|
216
219
|
},
|
|
217
|
-
// @rudderjs/orm → db:show, db:table.
|
|
218
|
-
// bootApp on demand, like schema:types)
|
|
220
|
+
// @rudderjs/orm → db:show, db:table, db:query. The inspect pair resolves
|
|
221
|
+
// the native engine (via bootApp on demand, like schema:types); db:query
|
|
222
|
+
// rides the DB facade on whatever adapter the app runs.
|
|
219
223
|
async () => {
|
|
220
224
|
const mod = await tryImport('@rudderjs/orm', 'commands/db-inspect');
|
|
221
225
|
const register = mod['registerDbInspectCommands'];
|
|
@@ -282,6 +286,12 @@ async function loadPackageCommands() {
|
|
|
282
286
|
const register = mod['registerRoutesSyncCommand'];
|
|
283
287
|
register(rudder);
|
|
284
288
|
},
|
|
289
|
+
// @rudderjs/vite → env:sync
|
|
290
|
+
async () => {
|
|
291
|
+
const mod = await tryImport('@rudderjs/vite', 'commands/env-sync');
|
|
292
|
+
const register = mod['registerEnvSyncCommand'];
|
|
293
|
+
register(rudder);
|
|
294
|
+
},
|
|
285
295
|
];
|
|
286
296
|
await Promise.all(loaders.map(fn => fn().catch(() => { })));
|
|
287
297
|
}
|
|
@@ -359,6 +369,8 @@ async function main() {
|
|
|
359
369
|
testCommand(program);
|
|
360
370
|
doctorCommand(program, { bootApp });
|
|
361
371
|
tinkerCommand(program);
|
|
372
|
+
optimizeClearCommand(program);
|
|
373
|
+
freshCommand(program);
|
|
362
374
|
// Commands that scan files / manage tooling state must work even when the
|
|
363
375
|
// app cannot boot (e.g. fresh clone, missing manifest, broken provider config).
|
|
364
376
|
// List them here to skip the bootApp() phase entirely.
|
|
@@ -384,11 +396,16 @@ async function main() {
|
|
|
384
396
|
// - `remove` uninstalls a package — the about-to-be-deleted provider
|
|
385
397
|
// may still be in node_modules but is being torn out; booting would
|
|
386
398
|
// be wasted work at best and surface confusing errors at worst.
|
|
399
|
+
// - `optimize:clear` must work when a corrupt cache is the reason the
|
|
400
|
+
// app can't boot. `fresh` is an orchestrator — each step that needs
|
|
401
|
+
// the app boots its own child process, so `fresh` itself never holds
|
|
402
|
+
// connections to the database it is about to drop.
|
|
387
403
|
const NO_BOOT_EXACT = new Set([
|
|
388
|
-
'providers:discover', 'module:publish', 'view:sync', 'routes:sync',
|
|
404
|
+
'providers:discover', 'module:publish', 'view:sync', 'routes:sync', 'env:sync',
|
|
389
405
|
'db:generate', 'db:push',
|
|
390
406
|
'migrate', 'migrate:fresh', 'migrate:status', 'migrate:rollback', 'migrate:refresh',
|
|
391
407
|
'add', 'remove', 'upgrade', 'key:generate', 'about', 'test',
|
|
408
|
+
'optimize:clear', 'fresh',
|
|
392
409
|
// `doctor` fast-path runs filesystem/env checks only. `--deep` is handled
|
|
393
410
|
// inside the command's handler, which boots the app on demand (Phase 4).
|
|
394
411
|
'doctor',
|
|
@@ -494,6 +511,13 @@ async function main() {
|
|
|
494
511
|
process.exitCode = 1;
|
|
495
512
|
});
|
|
496
513
|
await program.parseAsync();
|
|
514
|
+
// Native pg/mysql drivers hold pooled sockets that keep the event loop alive
|
|
515
|
+
// after a one-shot command's handler resolves — without this, `rudder migrate`
|
|
516
|
+
// (and any command booting an app whose default connection is native pg/mysql)
|
|
517
|
+
// hangs until killed. sqlite never hangs (better-sqlite3 is synchronous), which
|
|
518
|
+
// is why this only surfaced with native pg scaffolds. Long-running commands
|
|
519
|
+
// (queue:work, schedule:work) only reach here on shutdown.
|
|
520
|
+
await disposeNativeDriverCache();
|
|
497
521
|
}
|
|
498
522
|
main().catch((err) => {
|
|
499
523
|
if (err instanceof CancelledError) {
|