@hublo/sentinel 1.2.0-alpha.36 → 1.2.0-alpha.37
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/bin/sentinel.js +1 -1
- package/dist/{chunk-U2KUKV4C.js → chunk-MQR7FYM5.js} +42 -7
- package/dist/chunk-NKFGYPIQ.js +13 -0
- package/dist/index.js +1 -1
- package/dist/roles/test/setup/msw-server.d.ts +15 -0
- package/dist/roles/test/setup/msw-server.js +7 -0
- package/dist/roles/test/setup/nest.d.ts +2 -15
- package/dist/roles/test/setup/nest.js +5 -8
- package/package.json +7 -2
package/dist/bin/sentinel.js
CHANGED
|
@@ -5799,7 +5799,7 @@ function readTestAdoption(cwd) {
|
|
|
5799
5799
|
}
|
|
5800
5800
|
|
|
5801
5801
|
// src/roles/test/codemod/migrate-file.ts
|
|
5802
|
-
import { parseSync as
|
|
5802
|
+
import { parseSync as parseSync6 } from "oxc-parser";
|
|
5803
5803
|
|
|
5804
5804
|
// src/roles/test/codemod/scope.ts
|
|
5805
5805
|
function readIdentifiers(node) {
|
|
@@ -6224,6 +6224,38 @@ function applyNamedRules(source, program) {
|
|
|
6224
6224
|
return { source: applyEdits(source, edits), applied: [...applied].sort() };
|
|
6225
6225
|
}
|
|
6226
6226
|
|
|
6227
|
+
// src/roles/test/codemod/repoint-msw.ts
|
|
6228
|
+
import { parseSync as parseSync5 } from "oxc-parser";
|
|
6229
|
+
var SENTINEL_MSW_SERVER = "@hublo/sentinel/test/msw";
|
|
6230
|
+
var MSW_SERVER_MODULE = /(^|\/)msw\/server$/;
|
|
6231
|
+
function importsServer(declaration) {
|
|
6232
|
+
return (declaration.specifiers ?? []).some((specifier) => {
|
|
6233
|
+
const imported = specifier.imported;
|
|
6234
|
+
const local = specifier.local;
|
|
6235
|
+
return imported?.name === "server" || imported === void 0 && local?.name === "server";
|
|
6236
|
+
});
|
|
6237
|
+
}
|
|
6238
|
+
function repointMswServer(fileName, source) {
|
|
6239
|
+
const { program, errors } = parseSync5(fileName, source, { sourceType: "module" });
|
|
6240
|
+
if (errors.length > 0) return { source, repointed: false };
|
|
6241
|
+
const edits = [];
|
|
6242
|
+
walk(program, (node) => {
|
|
6243
|
+
if (node.type !== "ImportDeclaration") return;
|
|
6244
|
+
const specifier = node.source;
|
|
6245
|
+
if (specifier?.value === void 0) return;
|
|
6246
|
+
if (!MSW_SERVER_MODULE.test(specifier.value)) return;
|
|
6247
|
+
if (!importsServer(node)) return;
|
|
6248
|
+
edits.push({ start: specifier.start, end: specifier.end });
|
|
6249
|
+
});
|
|
6250
|
+
if (edits.length === 0) return { source, repointed: false };
|
|
6251
|
+
let rewritten = source;
|
|
6252
|
+
for (const edit of edits.sort((left, right) => right.start - left.start)) {
|
|
6253
|
+
const quote = source[edit.start] === '"' ? '"' : "'";
|
|
6254
|
+
rewritten = rewritten.slice(0, edit.start) + `${quote}${SENTINEL_MSW_SERVER}${quote}` + rewritten.slice(edit.end);
|
|
6255
|
+
}
|
|
6256
|
+
return { source: rewritten, repointed: true };
|
|
6257
|
+
}
|
|
6258
|
+
|
|
6227
6259
|
// src/roles/test/codemod/migrate-file.ts
|
|
6228
6260
|
function mockFactories(program) {
|
|
6229
6261
|
const factories = [];
|
|
@@ -6242,7 +6274,7 @@ function mockFactories(program) {
|
|
|
6242
6274
|
return factories;
|
|
6243
6275
|
}
|
|
6244
6276
|
function parse2(fileName, source) {
|
|
6245
|
-
const { program, errors } =
|
|
6277
|
+
const { program, errors } = parseSync6(fileName, source, { sourceType: "module" });
|
|
6246
6278
|
return errors.length > 0 ? void 0 : program;
|
|
6247
6279
|
}
|
|
6248
6280
|
function migrateTestFile(fileName, source) {
|
|
@@ -6253,7 +6285,8 @@ function migrateTestFile(fileName, source) {
|
|
|
6253
6285
|
hoisted: [],
|
|
6254
6286
|
unhandled: [],
|
|
6255
6287
|
refusals: [],
|
|
6256
|
-
rulesApplied: []
|
|
6288
|
+
rulesApplied: [],
|
|
6289
|
+
mswRepointed: false
|
|
6257
6290
|
};
|
|
6258
6291
|
const original = parse2(fileName, source);
|
|
6259
6292
|
if (original === void 0) return untouched;
|
|
@@ -6269,14 +6302,16 @@ function migrateTestFile(fileName, source) {
|
|
|
6269
6302
|
importedNames(program)
|
|
6270
6303
|
);
|
|
6271
6304
|
const withImport = injectTypeImport(fileName, hoist.source, renamed.typeImports);
|
|
6305
|
+
const repointed = repointMswServer(fileName, withImport);
|
|
6272
6306
|
return {
|
|
6273
|
-
source:
|
|
6274
|
-
changed:
|
|
6307
|
+
source: repointed.source,
|
|
6308
|
+
changed: repointed.source !== source,
|
|
6275
6309
|
renamed: renamed.rewritten,
|
|
6276
6310
|
hoisted: hoist.hoisted,
|
|
6277
6311
|
unhandled: renamed.unhandled,
|
|
6278
6312
|
refusals: hoist.refusals,
|
|
6279
|
-
rulesApplied: ruled.applied
|
|
6313
|
+
rulesApplied: ruled.applied,
|
|
6314
|
+
mswRepointed: repointed.repointed
|
|
6280
6315
|
};
|
|
6281
6316
|
}
|
|
6282
6317
|
|
|
@@ -7921,4 +7956,4 @@ export {
|
|
|
7921
7956
|
detectFramework,
|
|
7922
7957
|
dispatch
|
|
7923
7958
|
};
|
|
7924
|
-
//# sourceMappingURL=chunk-
|
|
7959
|
+
//# sourceMappingURL=chunk-MQR7FYM5.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// src/roles/test/setup/msw.ts
|
|
2
|
+
import { setupServer } from "msw/node";
|
|
3
|
+
var server = setupServer();
|
|
4
|
+
function installMswLifecycle(hooks) {
|
|
5
|
+
hooks.beforeAll(() => server.listen({ onUnhandledRequest: "error" }));
|
|
6
|
+
hooks.afterAll(() => server.close());
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export {
|
|
10
|
+
server,
|
|
11
|
+
installMswLifecycle
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=chunk-NKFGYPIQ.js.map
|
package/dist/index.js
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as msw_node from 'msw/node';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* No default handlers, deliberately.
|
|
5
|
+
*
|
|
6
|
+
* The repo's own server had `defaultHandlers = []` too, so nothing is lost. A handler here would
|
|
7
|
+
* be a Hublo endpoint inside a package meant to be usable by anyone, which is the line between
|
|
8
|
+
* what sentinel owns (the config) and what an app owns (what it mocks).
|
|
9
|
+
*
|
|
10
|
+
* A suite adds its own with `server.use(...)`, which is how all 600 files that touch this already
|
|
11
|
+
* work.
|
|
12
|
+
*/
|
|
13
|
+
declare const server: msw_node.SetupServer;
|
|
14
|
+
|
|
15
|
+
export { server };
|
|
@@ -1,15 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* No default handlers, deliberately.
|
|
5
|
-
*
|
|
6
|
-
* The repo's own server had `defaultHandlers = []` too, so nothing is lost. A handler here would
|
|
7
|
-
* be a Hublo endpoint inside a package meant to be usable by anyone, which is the line between
|
|
8
|
-
* what sentinel owns (the config) and what an app owns (what it mocks).
|
|
9
|
-
*
|
|
10
|
-
* A suite adds its own with `server.use(...)`, which is how all 600 files that touch this already
|
|
11
|
-
* work.
|
|
12
|
-
*/
|
|
13
|
-
declare const server: msw_node.SetupServer;
|
|
14
|
-
|
|
15
|
-
export { server };
|
|
1
|
+
export { server } from './msw-server.js';
|
|
2
|
+
import 'msw/node';
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
installMswLifecycle,
|
|
3
|
+
server
|
|
4
|
+
} from "../../../chunk-NKFGYPIQ.js";
|
|
5
|
+
|
|
1
6
|
// src/roles/test/setup/nest.ts
|
|
2
7
|
import { afterAll, afterEach, beforeAll } from "vitest";
|
|
3
8
|
|
|
4
|
-
// src/roles/test/setup/msw.ts
|
|
5
|
-
import { setupServer } from "msw/node";
|
|
6
|
-
var server = setupServer();
|
|
7
|
-
function installMswLifecycle(hooks) {
|
|
8
|
-
hooks.beforeAll(() => server.listen({ onUnhandledRequest: "error" }));
|
|
9
|
-
hooks.afterAll(() => server.close());
|
|
10
|
-
}
|
|
11
|
-
|
|
12
9
|
// src/roles/test/setup/workspace.ts
|
|
13
10
|
function isMissingModule(error) {
|
|
14
11
|
return error?.code === "ERR_MODULE_NOT_FOUND";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hublo/sentinel",
|
|
3
|
-
"version": "1.2.0-alpha.
|
|
3
|
+
"version": "1.2.0-alpha.37",
|
|
4
4
|
"description": "One CLI that guards code health across Hublo repos: shared lint/typescript/build/test presets, static & dynamic analysis, and architecture checks.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -57,6 +57,10 @@
|
|
|
57
57
|
"./test/setup/nest": {
|
|
58
58
|
"types": "./dist/roles/test/setup/nest.d.ts",
|
|
59
59
|
"import": "./dist/roles/test/setup/nest.js"
|
|
60
|
+
},
|
|
61
|
+
"./test/msw": {
|
|
62
|
+
"types": "./dist/roles/test/setup/msw-server.d.ts",
|
|
63
|
+
"import": "./dist/roles/test/setup/msw-server.js"
|
|
60
64
|
}
|
|
61
65
|
},
|
|
62
66
|
"files": [
|
|
@@ -87,7 +91,8 @@
|
|
|
87
91
|
"typescript": "5.9.3",
|
|
88
92
|
"vite": "8.2.2",
|
|
89
93
|
"vite-plugin-svgr": "5.2.0",
|
|
90
|
-
"vitest": "4.1.4"
|
|
94
|
+
"vitest": "4.1.4",
|
|
95
|
+
"vitest-mock-extended": "5.1.1"
|
|
91
96
|
},
|
|
92
97
|
"devDependencies": {
|
|
93
98
|
"@hublo/sentinel": "link:.",
|