@rudderjs/cli 4.7.1 → 4.9.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/about.d.ts +36 -0
- package/dist/commands/about.d.ts.map +1 -0
- package/dist/commands/about.js +190 -0
- package/dist/commands/about.js.map +1 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +8 -3
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +3 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/key-generate.d.ts +34 -0
- package/dist/commands/key-generate.d.ts.map +1 -0
- package/dist/commands/key-generate.js +137 -0
- package/dist/commands/key-generate.js.map +1 -0
- package/dist/commands/make/_shared.d.ts.map +1 -1
- package/dist/commands/make/_shared.js +13 -7
- package/dist/commands/make/_shared.js.map +1 -1
- package/dist/commands/make/test.d.ts +17 -0
- package/dist/commands/make/test.d.ts.map +1 -0
- package/dist/commands/make/test.js +94 -0
- package/dist/commands/make/test.js.map +1 -0
- 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/make.d.ts.map +1 -1
- package/dist/commands/module/make.js +17 -10
- package/dist/commands/module/make.js.map +1 -1
- package/dist/commands/module/publish.d.ts.map +1 -1
- package/dist/commands/module/publish.js +12 -8
- package/dist/commands/module/publish.js.map +1 -1
- package/dist/commands/test.d.ts +34 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +111 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/upgrade.d.ts +79 -0
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +315 -3
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/doctor/built-in/env-vars.js +2 -2
- package/dist/doctor/built-in/env-vars.js.map +1 -1
- package/dist/doctor/built-in/index.d.ts +1 -0
- package/dist/doctor/built-in/index.d.ts.map +1 -1
- package/dist/doctor/built-in/index.js +1 -0
- package/dist/doctor/built-in/index.js.map +1 -1
- package/dist/doctor/built-in/production.d.ts +2 -0
- package/dist/doctor/built-in/production.d.ts.map +1 -0
- package/dist/doctor/built-in/production.js +218 -0
- package/dist/doctor/built-in/production.js.map +1 -0
- package/dist/doctor/orchestrator.d.ts +5 -0
- package/dist/doctor/orchestrator.d.ts.map +1 -1
- package/dist/doctor/orchestrator.js +4 -0
- package/dist/doctor/orchestrator.js.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +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;AAMxC;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgBpD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUjD;AAqBD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwB/C"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { registerMake } from './_shared.js';
|
|
5
|
+
// ── Stubs ─────────────────────────────────────────────────────
|
|
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
|
+
}
|
|
46
|
+
// ── Helpers ───────────────────────────────────────────────────
|
|
47
|
+
/**
|
|
48
|
+
* Trim a trailing `.test` so `make:test User` produces a `describe('User', …)`
|
|
49
|
+
* label even though the file lives at `tests/User.test.ts`. The `.test`
|
|
50
|
+
* suffix is forced into the filename via `MakeSpec.suffix` so the
|
|
51
|
+
* generated file matches the documented `tests/**\/*.test.ts` glob.
|
|
52
|
+
*/
|
|
53
|
+
function stripTestSuffix(name) {
|
|
54
|
+
return name.endsWith('.test') ? name.slice(0, -'.test'.length) : name;
|
|
55
|
+
}
|
|
56
|
+
function pickStub(className, opts) {
|
|
57
|
+
const testName = stripTestSuffix(className);
|
|
58
|
+
return opts['unit'] ? unitStub(testName) : featureStub(testName);
|
|
59
|
+
}
|
|
60
|
+
// ── Command ───────────────────────────────────────────────────
|
|
61
|
+
export function makeTest(program) {
|
|
62
|
+
registerMake(program, {
|
|
63
|
+
command: 'make:test',
|
|
64
|
+
description: 'Create a new test file (feature by default; --unit for plain node:test without app boot)',
|
|
65
|
+
label: 'Test created',
|
|
66
|
+
// `suffix: '.test'` produces `<name>.test.ts` so the file matches the
|
|
67
|
+
// documented `tsx --test tests/**\/*.test.ts` glob. registerMake's
|
|
68
|
+
// existing logic appends the suffix when not already present.
|
|
69
|
+
suffix: '.test',
|
|
70
|
+
directory: 'tests',
|
|
71
|
+
stub: pickStub,
|
|
72
|
+
extraOptions: [
|
|
73
|
+
{ flags: '-u, --unit', description: 'Generate a unit test (plain node:test, no app boot, no TestCase)' },
|
|
74
|
+
],
|
|
75
|
+
afterCreate: async (_className, _relPath, opts) => {
|
|
76
|
+
// Hint when feature-test convention isn't set up yet. Unit tests don't
|
|
77
|
+
// need TestCase.ts — only the default (feature) flow does.
|
|
78
|
+
if (opts['unit'])
|
|
79
|
+
return;
|
|
80
|
+
const testCasePath = path.resolve(process.cwd(), 'tests', 'TestCase.ts');
|
|
81
|
+
if (!existsSync(testCasePath)) {
|
|
82
|
+
console.log(chalk.yellow(' ! tests/TestCase.ts is missing — see docs/guide/testing.md for the setup snippet.'));
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/** @internal — exposed for unit tests */
|
|
88
|
+
export const _internal = {
|
|
89
|
+
featureStub,
|
|
90
|
+
unitStub,
|
|
91
|
+
stripTestSuffix,
|
|
92
|
+
pickStub,
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +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;AAE3C,iEAAiE;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO;;;YAGG,QAAQ;;;;;;;;;;;CAWnB,CAAA;AACD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACvC,OAAO;;;YAGG,QAAQ;;;;;CAKnB,CAAA;AACD,CAAC;AAED,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;AAexC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8BlD"}
|
package/dist/commands/make.js
CHANGED
|
@@ -10,6 +10,7 @@ import { makeCommandCmd } from './make/command.js';
|
|
|
10
10
|
import { makeEvent } from './make/event.js';
|
|
11
11
|
import { makeListener } from './make/listener.js';
|
|
12
12
|
import { makeMail } from './make/mail.js';
|
|
13
|
+
import { makeTest } from './make/test.js';
|
|
13
14
|
export function makeCommand(program) {
|
|
14
15
|
// CLI-owned generic scaffolders
|
|
15
16
|
makeController(program);
|
|
@@ -22,6 +23,7 @@ export function makeCommand(program) {
|
|
|
22
23
|
makeEvent(program);
|
|
23
24
|
makeListener(program);
|
|
24
25
|
makeMail(program);
|
|
26
|
+
makeTest(program);
|
|
25
27
|
// Package-contributed scaffolders (registered via registerMakeSpecs)
|
|
26
28
|
for (const spec of getMakeSpecs()) {
|
|
27
29
|
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;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;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,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../../src/commands/module/make.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../../src/commands/module/make.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkB/C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwBhD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiCjD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiB7C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAID,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CnF;AAID,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkDjD"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { writeFile, mkdir, readFile } from 'node:fs/promises';
|
|
2
|
-
import { existsSync } from 'node:fs';
|
|
3
2
|
import { resolve, dirname } from 'node:path';
|
|
4
3
|
import { intro, outro, spinner, log } from '@clack/prompts';
|
|
5
4
|
// ─── File stubs ────────────────────────────────────────────
|
|
@@ -118,13 +117,15 @@ import type { Application } from '@rudderjs/core'
|
|
|
118
117
|
|
|
119
118
|
export const providers: (new (app: Application) => ServiceProvider)[] = []\n`;
|
|
120
119
|
let content;
|
|
121
|
-
|
|
120
|
+
try {
|
|
121
|
+
content = await readFile(bootstrapPath, 'utf8');
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
if (err.code !== 'ENOENT')
|
|
125
|
+
throw err;
|
|
122
126
|
await mkdir(dirname(bootstrapPath), { recursive: true });
|
|
123
127
|
content = template;
|
|
124
128
|
}
|
|
125
|
-
else {
|
|
126
|
-
content = await readFile(bootstrapPath, 'utf8');
|
|
127
|
-
}
|
|
128
129
|
// Skip if already registered
|
|
129
130
|
if (content.includes(`${name}ServiceProvider`))
|
|
130
131
|
return;
|
|
@@ -166,12 +167,18 @@ export function makeModule(program) {
|
|
|
166
167
|
s.start('Generating files');
|
|
167
168
|
await mkdir(moduleDir, { recursive: true });
|
|
168
169
|
for (const file of files) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
170
|
+
try {
|
|
171
|
+
// `wx` makes "create unless exists" atomic; `--force` truncates.
|
|
172
|
+
await writeFile(file.path, file.content, { flag: opts.force ? 'w' : 'wx' });
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
if (err.code === 'EEXIST') {
|
|
176
|
+
s.stop('Aborted');
|
|
177
|
+
log.error(`File already exists: ${file.path}\nUse --force to overwrite.`);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
throw err;
|
|
173
181
|
}
|
|
174
|
-
await writeFile(file.path, file.content);
|
|
175
182
|
log.success(`Created ${file.path.replace(process.cwd() + '/', '')}`);
|
|
176
183
|
}
|
|
177
184
|
s.stop('Files generated');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make.js","sourceRoot":"","sources":["../../../src/commands/module/make.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"make.js","sourceRoot":"","sources":["../../../src/commands/module/make.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+EpD"}
|
|
@@ -71,14 +71,18 @@ export function publishModule(program) {
|
|
|
71
71
|
}
|
|
72
72
|
const mergedBlock = buildMergedBlock(shards);
|
|
73
73
|
let schema;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
74
|
+
let existing = null;
|
|
75
|
+
try {
|
|
76
|
+
existing = await readFile(schemaPath, 'utf8');
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
if (err.code !== 'ENOENT')
|
|
80
|
+
throw err;
|
|
81
|
+
}
|
|
82
|
+
if (existing !== null) {
|
|
83
|
+
schema = MARKERS_RE.test(existing)
|
|
84
|
+
? existing.replace(MARKERS_RE, mergedBlock)
|
|
85
|
+
: existing.trimEnd() + '\n\n' + mergedBlock + '\n';
|
|
82
86
|
}
|
|
83
87
|
else {
|
|
84
88
|
schema = mergedBlock + '\n';
|
|
@@ -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;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAE3D,MAAM,CAAC,MAAM,UAAU,GAAG,mEAAmE,CAAA;AAE7F,8DAA8D;AAE9D,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAAkB,EAAE,YAAqB;IAC7E,MAAM,OAAO,GAA6D,EAAE,CAAA;IAE5E,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAA;IAE3C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IAClE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAQ;QAClC,IAAI,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;YAAE,SAAQ;QAEzD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAA;QAE5C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,SAAQ;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;YACnC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAChD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAgE;IAC/F,MAAM,KAAK,GAAG,MAAM;SACjB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACnE,IAAI,CAAC,MAAM,CAAC,CAAA;IAEf,OAAO,gCAAgC,KAAK,6BAA6B,CAAA;AAC3E,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,IAAc,EAAE,GAAW;IAC1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACrE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACtB,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAA;;gBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,8DAA8D;AAE9D,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,yBAAyB,CAAC;SAClC,WAAW,CAAC,sDAAsD,CAAC;SACnE,MAAM,CAAC,YAAY,EAAE,mCAAmC,CAAC;SACzD,MAAM,CAAC,WAAW,EAAE,sCAAsC,CAAC;SAC3D,MAAM,CAAC,eAAe,EAAE,sCAAsC,EAAE,MAAM,CAAC;SACvE,MAAM,CAAC,KAAK,EACX,YAAgC,EAChC,IAA6D,EAC7D,EAAE;QACF,KAAK,CAAC,iCAAiC,CAAC,CAAA;QAExC,MAAM,GAAG,GAAU,OAAO,CAAC,GAAG,EAAE,CAAA;QAChC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;QAEvD,MAAM,CAAC,GAAG,OAAO,EAAE,CAAA;QACnB,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;QACrC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;QAC9D,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,WAAW,CAAC,CAAA;QAEzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;YACnD,OAAM;QACR,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAChD,CAAC;QAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;QAE5C,IAAI,MAAc,CAAA;QAClB,IAAI,
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/commands/module/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
export interface TestOptions {
|
|
3
|
+
watch?: boolean;
|
|
4
|
+
bail?: boolean;
|
|
5
|
+
coverage?: boolean;
|
|
6
|
+
only?: boolean;
|
|
7
|
+
reporter?: string;
|
|
8
|
+
filter?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Locate the `tsx` binary the app uses to run TypeScript. Most Rudder apps
|
|
12
|
+
* already have it (the `pnpm rudder` script itself runs through tsx). We
|
|
13
|
+
* walk from `cwd` upward so monorepo-hoisted deps surface too — same shape
|
|
14
|
+
* as how doctor finds the user's tooling.
|
|
15
|
+
*
|
|
16
|
+
* Returns `null` when not found; the caller prints an install hint.
|
|
17
|
+
*/
|
|
18
|
+
export declare function findTsx(cwd: string): string | null;
|
|
19
|
+
/**
|
|
20
|
+
* Translate the rudder-level positional + flags into the `tsx --test ...`
|
|
21
|
+
* argv that Node's built-in runner expects. Kept pure (no I/O) so it can
|
|
22
|
+
* be unit-tested without spawning a subprocess.
|
|
23
|
+
*
|
|
24
|
+
* Positional arg semantics:
|
|
25
|
+
* - Ends in `.ts` / `.test.ts` → treated as a file path; Node runs that
|
|
26
|
+
* file directly, ignoring directory discovery.
|
|
27
|
+
* - Anything else → passed to `--test-name-pattern` (matches `describe`
|
|
28
|
+
* and `it` labels), and Node discovers tests under `tests/`.
|
|
29
|
+
*
|
|
30
|
+
* When no positional is provided, Node discovers everything under `tests/`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildTestArgs(positional: string | undefined, opts: TestOptions): string[];
|
|
33
|
+
export declare function testCommand(program: Command): void;
|
|
34
|
+
//# sourceMappingURL=test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAK,OAAO,CAAA;IAClB,IAAI,CAAC,EAAM,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAM,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAI,MAAM,CAAA;CAClB;AAID;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUlD;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CA8BzF;AAID,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgClD"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { spawn } from 'node:child_process';
|
|
4
|
+
// ── tsx resolution ────────────────────────────────────────────
|
|
5
|
+
/**
|
|
6
|
+
* Locate the `tsx` binary the app uses to run TypeScript. Most Rudder apps
|
|
7
|
+
* already have it (the `pnpm rudder` script itself runs through tsx). We
|
|
8
|
+
* walk from `cwd` upward so monorepo-hoisted deps surface too — same shape
|
|
9
|
+
* as how doctor finds the user's tooling.
|
|
10
|
+
*
|
|
11
|
+
* Returns `null` when not found; the caller prints an install hint.
|
|
12
|
+
*/
|
|
13
|
+
export function findTsx(cwd) {
|
|
14
|
+
let dir = cwd;
|
|
15
|
+
while (dir) {
|
|
16
|
+
const candidate = path.join(dir, 'node_modules', '.bin', 'tsx');
|
|
17
|
+
if (existsSync(candidate))
|
|
18
|
+
return candidate;
|
|
19
|
+
const parent = path.dirname(dir);
|
|
20
|
+
if (parent === dir)
|
|
21
|
+
break;
|
|
22
|
+
dir = parent;
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
// ── Argument builder ──────────────────────────────────────────
|
|
27
|
+
/**
|
|
28
|
+
* Translate the rudder-level positional + flags into the `tsx --test ...`
|
|
29
|
+
* argv that Node's built-in runner expects. Kept pure (no I/O) so it can
|
|
30
|
+
* be unit-tested without spawning a subprocess.
|
|
31
|
+
*
|
|
32
|
+
* Positional arg semantics:
|
|
33
|
+
* - Ends in `.ts` / `.test.ts` → treated as a file path; Node runs that
|
|
34
|
+
* file directly, ignoring directory discovery.
|
|
35
|
+
* - Anything else → passed to `--test-name-pattern` (matches `describe`
|
|
36
|
+
* and `it` labels), and Node discovers tests under `tests/`.
|
|
37
|
+
*
|
|
38
|
+
* When no positional is provided, Node discovers everything under `tests/`.
|
|
39
|
+
*/
|
|
40
|
+
export function buildTestArgs(positional, opts) {
|
|
41
|
+
const out = ['--test'];
|
|
42
|
+
if (opts.watch)
|
|
43
|
+
out.push('--watch');
|
|
44
|
+
if (opts.coverage)
|
|
45
|
+
out.push('--experimental-test-coverage');
|
|
46
|
+
if (opts.only)
|
|
47
|
+
out.push('--test-only');
|
|
48
|
+
if (opts.bail)
|
|
49
|
+
out.push('--test-force-exit'); // stops the process on first failure
|
|
50
|
+
if (opts.reporter)
|
|
51
|
+
out.push(`--test-reporter=${opts.reporter}`);
|
|
52
|
+
// `--filter` is an alias for `--test-name-pattern`. Both can be used,
|
|
53
|
+
// explicit `--filter` wins when also passed alongside a positional.
|
|
54
|
+
let namePattern = opts.filter;
|
|
55
|
+
let pathArg;
|
|
56
|
+
if (positional) {
|
|
57
|
+
if (/\.ts$/.test(positional)) {
|
|
58
|
+
pathArg = positional;
|
|
59
|
+
}
|
|
60
|
+
else if (!namePattern) {
|
|
61
|
+
namePattern = positional;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (namePattern)
|
|
65
|
+
out.push(`--test-name-pattern=${namePattern}`);
|
|
66
|
+
// Always end with the path arg (specific file) OR the `tests/` directory
|
|
67
|
+
// so Node has something to discover. Without this Node walks cwd and
|
|
68
|
+
// discovers unrelated test files (e.g. inside node_modules) — slow + wrong.
|
|
69
|
+
out.push(pathArg ?? 'tests');
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
// ── Command ───────────────────────────────────────────────────
|
|
73
|
+
export function testCommand(program) {
|
|
74
|
+
program
|
|
75
|
+
.command('test [filter]')
|
|
76
|
+
.description('Run the app\'s test suite (wraps `tsx --test tests/`)')
|
|
77
|
+
.option('-w, --watch', 're-run tests on file changes')
|
|
78
|
+
.option('-b, --bail', 'stop on first failure')
|
|
79
|
+
.option('--coverage', 'collect test coverage (Node --experimental-test-coverage)')
|
|
80
|
+
.option('--only', 'run only tests marked with .only()')
|
|
81
|
+
.option('--filter <pattern>', 'filter by test name (regex passed to Node --test-name-pattern)')
|
|
82
|
+
.option('--reporter <name>', 'Node test reporter name (spec / dot / tap / junit)')
|
|
83
|
+
.action((positional, opts) => {
|
|
84
|
+
const cwd = process.cwd();
|
|
85
|
+
const tsx = findTsx(cwd);
|
|
86
|
+
if (!tsx) {
|
|
87
|
+
console.error('[rudder test] tsx not found in node_modules/.bin.');
|
|
88
|
+
console.error(' Run `pnpm add -D tsx` (or yarn/npm/bun equivalent) and re-try.');
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
const args = buildTestArgs(positional, opts);
|
|
92
|
+
const child = spawn(tsx, args, {
|
|
93
|
+
cwd,
|
|
94
|
+
stdio: 'inherit',
|
|
95
|
+
// Windows can't exec node_modules/.bin/tsx (a .CMD shim) without a
|
|
96
|
+
// shell. Other platforms execute the script directly.
|
|
97
|
+
shell: process.platform === 'win32',
|
|
98
|
+
});
|
|
99
|
+
child.on('close', (code) => process.exit(code ?? 0));
|
|
100
|
+
child.on('error', (err) => {
|
|
101
|
+
console.error('[rudder test] failed to spawn tsx:', err.message);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/** @internal — exposed for unit tests */
|
|
107
|
+
export const _internal = {
|
|
108
|
+
findTsx,
|
|
109
|
+
buildTestArgs,
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,82 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
|
+
interface ParsedVersion {
|
|
3
|
+
major: number;
|
|
4
|
+
minor: number;
|
|
5
|
+
patch: number;
|
|
6
|
+
}
|
|
7
|
+
interface NpmManifest {
|
|
8
|
+
version: string;
|
|
9
|
+
peerDependencies?: Record<string, string>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Per-version entry parsed from a changesets-style CHANGELOG.md. `headline` is
|
|
13
|
+
* the first meaningful bullet (changesets cite-prefix `abc1234: ` is stripped;
|
|
14
|
+
* "Updated dependencies" lines are skipped); empty string when no usable line
|
|
15
|
+
* exists.
|
|
16
|
+
*/
|
|
17
|
+
export interface ChangelogEntry {
|
|
18
|
+
version: string;
|
|
19
|
+
parsed: ParsedVersion;
|
|
20
|
+
headline: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Walk a changesets-format CHANGELOG.md, returning one entry per `## X.Y.Z`
|
|
24
|
+
* header whose version is in `(from, to]`. Entries are returned in the order
|
|
25
|
+
* they appear in the file (newest first, since changesets prepends).
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseChangelog(md: string, from: ParsedVersion, to: ParsedVersion): ChangelogEntry[];
|
|
28
|
+
interface ConsumerPeer {
|
|
29
|
+
range: string;
|
|
30
|
+
section: 'dependencies' | 'devDependencies' | 'peerDependencies';
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Read every consumer-side dep into a flat map for peer-dep lookups. Used to
|
|
34
|
+
* answer: "does the consumer's `vite` range satisfy `@rudderjs/vite@2.7`'s
|
|
35
|
+
* `peerDependencies.vite` requirement?". A `peer` appearing in multiple
|
|
36
|
+
* sections (rare but possible) resolves with `dependencies` ≻
|
|
37
|
+
* `devDependencies` ≻ `peerDependencies` precedence — what npm picks at
|
|
38
|
+
* install time.
|
|
39
|
+
*/
|
|
40
|
+
export declare function readConsumerPeers(pkg: Record<string, unknown>): Map<string, ConsumerPeer>;
|
|
41
|
+
interface PeerMismatch {
|
|
42
|
+
peer: string;
|
|
43
|
+
causedBy: string;
|
|
44
|
+
consumerRange: string;
|
|
45
|
+
consumerSection: ConsumerPeer['section'] | null;
|
|
46
|
+
requiredRange: string;
|
|
47
|
+
reason: string;
|
|
48
|
+
}
|
|
49
|
+
type FetchManifestFn = (pkg: string, version: string) => Promise<NpmManifest | null>;
|
|
50
|
+
/**
|
|
51
|
+
* Walk every bump in the plan, fetch its manifest at the target version, and
|
|
52
|
+
* collect any peerDependencies that disagree with the consumer's declared
|
|
53
|
+
* ranges. Same peer triggered by multiple framework packages dedups on the
|
|
54
|
+
* first one found.
|
|
55
|
+
*
|
|
56
|
+
* Network: one extra registry call per bumped package, in parallel — but
|
|
57
|
+
* the `fetcher` argument is pluggable so tests can drive it with synthetic
|
|
58
|
+
* manifests.
|
|
59
|
+
*/
|
|
60
|
+
export declare function collectPeerMismatches(rows: PlanRow[], consumer: Map<string, ConsumerPeer>, fetcher: FetchManifestFn): Promise<PeerMismatch[]>;
|
|
61
|
+
interface DepEntry {
|
|
62
|
+
name: string;
|
|
63
|
+
range: string;
|
|
64
|
+
section: 'dependencies' | 'devDependencies' | 'peerDependencies';
|
|
65
|
+
}
|
|
66
|
+
interface PlanRow {
|
|
67
|
+
name: string;
|
|
68
|
+
section: DepEntry['section'];
|
|
69
|
+
current: ParsedVersion;
|
|
70
|
+
latest: ParsedVersion;
|
|
71
|
+
target: ParsedVersion;
|
|
72
|
+
newRange: string;
|
|
73
|
+
}
|
|
74
|
+
type FetchChangelogFn = (pkg: string) => Promise<string | null>;
|
|
75
|
+
/**
|
|
76
|
+
* Walk the plan, fetch + parse each package's CHANGELOG in parallel, return a
|
|
77
|
+
* map of `pkgName → entries-in-range`. Pluggable fetcher for testability.
|
|
78
|
+
*/
|
|
79
|
+
export declare function collectChangelogs(rows: PlanRow[], fetcher: FetchChangelogFn): Promise<Map<string, ChangelogEntry[]>>;
|
|
2
80
|
export declare function upgradeCommand(program: Command): void;
|
|
81
|
+
export {};
|
|
3
82
|
//# sourceMappingURL=upgrade.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6BxC,UAAU,aAAa;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAyGvE,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC1C;AA8CD;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAG,MAAM,CAAA;IAChB,MAAM,EAAI,aAAa,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAyBD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAI,MAAM,EACZ,IAAI,EAAE,aAAa,EACnB,EAAE,EAAI,aAAa,GAClB,cAAc,EAAE,CAuBlB;AA2BD,UAAU,YAAY;IACpB,KAAK,EAAI,MAAM,CAAA;IACf,OAAO,EAAE,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,CAAA;CACjE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAUzF;AAED,UAAU,YAAY;IACpB,IAAI,EAAa,MAAM,CAAA;IACvB,QAAQ,EAAS,MAAM,CAAA;IACvB,aAAa,EAAI,MAAM,CAAA;IACvB,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;IAC/C,aAAa,EAAI,MAAM,CAAA;IACvB,MAAM,EAAW,MAAM,CAAA;CACxB;AAED,KAAK,eAAe,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;AAEpF;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAM,OAAO,EAAE,EACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACnC,OAAO,EAAG,eAAe,GACxB,OAAO,CAAC,YAAY,EAAE,CAAC,CA+BzB;AAMD,UAAU,QAAQ;IAChB,IAAI,EAAK,MAAM,CAAA;IACf,KAAK,EAAI,MAAM,CAAA;IACf,OAAO,EAAE,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,CAAA;CACjE;AAED,UAAU,OAAO;IACf,IAAI,EAAM,MAAM,CAAA;IAChB,OAAO,EAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC7B,OAAO,EAAG,aAAa,CAAA;IACvB,MAAM,EAAI,aAAa,CAAA;IACvB,MAAM,EAAI,aAAa,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAoED,KAAK,gBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;AAE/D;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAK,OAAO,EAAE,EAClB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CASxC;AAiCD,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuLrD"}
|