@opensip-cli/checks-typescript 0.1.7 → 0.1.9
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/README.md +2 -2
- package/dist/__tests__/branch-fixtures-3.test.js +41 -0
- package/dist/__tests__/branch-fixtures-3.test.js.map +1 -1
- package/dist/__tests__/branch-fixtures.test.js +1 -3
- package/dist/__tests__/branch-fixtures.test.js.map +1 -1
- package/dist/__tests__/command-handler-host-owned-output.test.d.ts +2 -0
- package/dist/__tests__/command-handler-host-owned-output.test.d.ts.map +1 -0
- package/dist/__tests__/command-handler-host-owned-output.test.js +85 -0
- package/dist/__tests__/command-handler-host-owned-output.test.js.map +1 -0
- package/dist/__tests__/host-tool-runtime-import-boundary.test.js +69 -12
- package/dist/__tests__/host-tool-runtime-import-boundary.test.js.map +1 -1
- package/dist/__tests__/null-safety-typed.test.d.ts +2 -0
- package/dist/__tests__/null-safety-typed.test.d.ts.map +1 -0
- package/dist/__tests__/null-safety-typed.test.js +112 -0
- package/dist/__tests__/null-safety-typed.test.js.map +1 -0
- package/dist/__tests__/shared-program.test.d.ts +2 -0
- package/dist/__tests__/shared-program.test.d.ts.map +1 -0
- package/dist/__tests__/shared-program.test.js +41 -0
- package/dist/__tests__/shared-program.test.js.map +1 -0
- package/dist/__tests__/shipped-allowlists-are-generic.test.d.ts +2 -0
- package/dist/__tests__/shipped-allowlists-are-generic.test.d.ts.map +1 -0
- package/dist/__tests__/shipped-allowlists-are-generic.test.js +64 -0
- package/dist/__tests__/shipped-allowlists-are-generic.test.js.map +1 -0
- package/dist/checks/architecture/command-handler-host-owned-output.d.ts +25 -0
- package/dist/checks/architecture/command-handler-host-owned-output.d.ts.map +1 -0
- package/dist/checks/architecture/command-handler-host-owned-output.js +165 -0
- package/dist/checks/architecture/command-handler-host-owned-output.js.map +1 -0
- package/dist/checks/architecture/host-tool-runtime-import-boundary.d.ts +24 -7
- package/dist/checks/architecture/host-tool-runtime-import-boundary.d.ts.map +1 -1
- package/dist/checks/architecture/host-tool-runtime-import-boundary.js +114 -33
- package/dist/checks/architecture/host-tool-runtime-import-boundary.js.map +1 -1
- package/dist/checks/architecture/index.d.ts +30 -0
- package/dist/checks/architecture/index.d.ts.map +1 -1
- package/dist/checks/architecture/index.js +30 -0
- package/dist/checks/architecture/index.js.map +1 -1
- package/dist/checks/quality/code-structure/duplicate-utility-functions.d.ts +13 -1
- package/dist/checks/quality/code-structure/duplicate-utility-functions.d.ts.map +1 -1
- package/dist/checks/quality/code-structure/duplicate-utility-functions.js +7 -3
- package/dist/checks/quality/code-structure/duplicate-utility-functions.js.map +1 -1
- package/dist/checks/quality/data-integrity/null-safety.d.ts +63 -2
- package/dist/checks/quality/data-integrity/null-safety.d.ts.map +1 -1
- package/dist/checks/quality/data-integrity/null-safety.js +191 -102
- package/dist/checks/quality/data-integrity/null-safety.js.map +1 -1
- package/dist/checks/quality/patterns/result-pattern-consistency.d.ts +21 -0
- package/dist/checks/quality/patterns/result-pattern-consistency.d.ts.map +1 -1
- package/dist/checks/quality/patterns/result-pattern-consistency.js +16 -15
- package/dist/checks/quality/patterns/result-pattern-consistency.js.map +1 -1
- package/dist/checks/resilience/detached-promises.d.ts.map +1 -1
- package/dist/checks/resilience/detached-promises.js +4 -0
- package/dist/checks/resilience/detached-promises.js.map +1 -1
- package/dist/checks/resilience/no-raw-fetch.d.ts +14 -0
- package/dist/checks/resilience/no-raw-fetch.d.ts.map +1 -1
- package/dist/checks/resilience/no-raw-fetch.js +7 -7
- package/dist/checks/resilience/no-raw-fetch.js.map +1 -1
- package/dist/display/architecture.d.ts.map +1 -1
- package/dist/display/architecture.js +1 -0
- package/dist/display/architecture.js.map +1 -1
- package/dist/shared/type-program.d.ts +23 -0
- package/dist/shared/type-program.d.ts.map +1 -0
- package/dist/shared/type-program.js +35 -0
- package/dist/shared/type-program.js.map +1 -0
- package/package.json +5 -5
|
@@ -1,64 +1,128 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview
|
|
2
|
+
* @fileoverview Mechanize the ADR-0054 M4-G CAPSTONE invariant: no
|
|
3
|
+
* `importToolRuntime(...)` for external-provenance tools in the HOST process.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* boundary.
|
|
5
|
+
* After the capstone, external tool runtime code NEVER loads in the host. The
|
|
6
|
+
* host registers a manifest-derived synthetic Tool (command shells from the
|
|
7
|
+
* static manifest) and mounts its commands without importing the runtime; the
|
|
8
|
+
* forked dispatch WORKER imports the untrusted runtime when a command actually
|
|
9
|
+
* dispatches. This is no longer a transition guardrail — it is the enforced
|
|
10
|
+
* boundary. The check asserts three things across the CLI host package:
|
|
11
|
+
*
|
|
12
|
+
* 1. `importToolRuntime` may be called only from the admission/discovery
|
|
13
|
+
* boundary or the worker-owned dispatch plane (the allowlisted files).
|
|
14
|
+
* Any other host-process call site is a violation.
|
|
15
|
+
* 2. A HOST import must pass a BUNDLED policy — `hostRuntimeImportPolicyFor(...)`
|
|
16
|
+
* (type-narrowed to `'bundled'`) or a literal `{ source: 'bundled' }`. A
|
|
17
|
+
* non-bundled host policy is a violation (the type already forbids it; this
|
|
18
|
+
* catches a hand-rolled literal that bypasses the constructor).
|
|
19
|
+
* 3. `workerRuntimeImportPolicyFor(...)` — the policy that authorizes loading an
|
|
20
|
+
* EXTERNAL runtime — is permitted only on the worker-owned plane (the
|
|
21
|
+
* discovery leg gated behind `isHostRuntimeImportForbidden`, the worker entry,
|
|
22
|
+
* and the admission module that defines it). Using it elsewhere would import
|
|
23
|
+
* an external runtime in the host.
|
|
24
|
+
*
|
|
25
|
+
* The `adr0054Transition` exception is gone: the worker is now the only path for
|
|
26
|
+
* external runtime import, and the host import policy is bundled-only.
|
|
10
27
|
*/
|
|
11
|
-
// @fitness-ignore-file shipped-checks-must-be-generic -- dogfood check for this repo's ADR-0054
|
|
28
|
+
// @fitness-ignore-file shipped-checks-must-be-generic -- dogfood check for this repo's ADR-0054 capstone boundary; AST precision keeps the host/worker import distinction mechanically exact.
|
|
12
29
|
import { defineCheck, isTestFile } from '@opensip-cli/fitness';
|
|
13
30
|
import { getSharedSourceFile } from '@opensip-cli/lang-typescript';
|
|
14
31
|
import * as ts from 'typescript';
|
|
15
32
|
const CLI_HOST_PATH = 'packages/cli/src/';
|
|
16
33
|
const IMPORT_RUNTIME = 'importToolRuntime';
|
|
17
|
-
const
|
|
34
|
+
const HOST_POLICY_HELPER = 'hostRuntimeImportPolicyFor';
|
|
35
|
+
const WORKER_POLICY_HELPER = 'workerRuntimeImportPolicyFor';
|
|
36
|
+
/**
|
|
37
|
+
* The files permitted to call `importToolRuntime` at all (admission/discovery +
|
|
38
|
+
* the worker-owned dispatch plane). Any other host file is a hard violation.
|
|
39
|
+
*/
|
|
18
40
|
const ALLOWED_CALLSITE_SUFFIXES = new Set([
|
|
19
41
|
'packages/cli/src/bootstrap/admit-tool-package.ts',
|
|
20
42
|
'packages/cli/src/bootstrap/register-tools.ts',
|
|
21
43
|
'packages/cli/src/bootstrap/register-tools-discovery.ts',
|
|
44
|
+
// Authored (project-local / user-global) tool registration: same host-vs-worker
|
|
45
|
+
// discovery split as register-tools-discovery (the import runs only in the
|
|
46
|
+
// worker, gated by isHostRuntimeImportForbidden).
|
|
47
|
+
'packages/cli/src/bootstrap/register-authored-tools.ts',
|
|
48
|
+
// ADR-0054 worker-owned dispatch plane: this entry runs in the FORKED worker
|
|
49
|
+
// process (not the host), so importing the external runtime here is the
|
|
50
|
+
// isolation goal. It uses the worker policy.
|
|
51
|
+
'packages/cli/src/bootstrap/tool-command-worker-entry.ts',
|
|
52
|
+
]);
|
|
53
|
+
/**
|
|
54
|
+
* The files permitted to construct/pass the WORKER policy
|
|
55
|
+
* (`workerRuntimeImportPolicyFor`) — the policy that authorizes loading an
|
|
56
|
+
* EXTERNAL runtime. This is the worker-owned plane: the discovery leg (which
|
|
57
|
+
* gates the import behind `isHostRuntimeImportForbidden`, so it runs only inside
|
|
58
|
+
* the worker), the worker entry, and the admission module that defines the
|
|
59
|
+
* constructor + runs the bundled/probe runtime-load section. Using the worker
|
|
60
|
+
* policy anywhere else would import an external runtime in the host.
|
|
61
|
+
*/
|
|
62
|
+
const ALLOWED_WORKER_POLICY_SUFFIXES = new Set([
|
|
63
|
+
'packages/cli/src/bootstrap/admit-tool-package.ts',
|
|
64
|
+
'packages/cli/src/bootstrap/register-tools-discovery.ts',
|
|
65
|
+
'packages/cli/src/bootstrap/register-authored-tools.ts',
|
|
66
|
+
'packages/cli/src/bootstrap/tool-command-worker-entry.ts',
|
|
22
67
|
]);
|
|
23
68
|
function normalized(path) {
|
|
24
69
|
return path.replaceAll('\\', '/');
|
|
25
70
|
}
|
|
26
|
-
function
|
|
71
|
+
function endsWithAny(filePath, suffixes) {
|
|
27
72
|
const p = normalized(filePath);
|
|
28
|
-
for (const suffix of
|
|
73
|
+
for (const suffix of suffixes) {
|
|
29
74
|
if (p.endsWith(suffix))
|
|
30
75
|
return true;
|
|
31
76
|
}
|
|
32
77
|
return false;
|
|
33
78
|
}
|
|
79
|
+
function isAllowedCallsite(filePath) {
|
|
80
|
+
return endsWithAny(filePath, ALLOWED_CALLSITE_SUFFIXES);
|
|
81
|
+
}
|
|
82
|
+
function isWorkerPolicyAllowed(filePath) {
|
|
83
|
+
return endsWithAny(filePath, ALLOWED_WORKER_POLICY_SUFFIXES);
|
|
84
|
+
}
|
|
34
85
|
function propertyNameText(name) {
|
|
35
86
|
if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {
|
|
36
87
|
return name.text;
|
|
37
88
|
}
|
|
38
89
|
return undefined;
|
|
39
90
|
}
|
|
40
|
-
|
|
41
|
-
|
|
91
|
+
/** A call to a named policy helper, e.g. `hostRuntimeImportPolicyFor(source)`. */
|
|
92
|
+
function helperCallName(arg) {
|
|
93
|
+
if (ts.isCallExpression(arg) && ts.isIdentifier(arg.expression))
|
|
94
|
+
return arg.expression.text;
|
|
95
|
+
return undefined;
|
|
42
96
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return arg.expression.text === POLICY_HELPER;
|
|
46
|
-
}
|
|
97
|
+
/** Whether an object literal is exactly `{ source: 'bundled' }` (the host policy). */
|
|
98
|
+
function isBundledLiteral(arg) {
|
|
47
99
|
if (!ts.isObjectLiteralExpression(arg))
|
|
48
100
|
return false;
|
|
49
|
-
let
|
|
50
|
-
let hasTransition = false;
|
|
101
|
+
let bundled = false;
|
|
51
102
|
for (const prop of arg.properties) {
|
|
52
103
|
if (!ts.isPropertyAssignment(prop))
|
|
53
|
-
|
|
104
|
+
return false;
|
|
54
105
|
const name = propertyNameText(prop.name);
|
|
55
|
-
if (name
|
|
56
|
-
|
|
57
|
-
if (
|
|
58
|
-
|
|
59
|
-
|
|
106
|
+
if (name !== 'source')
|
|
107
|
+
return false;
|
|
108
|
+
if (!ts.isStringLiteral(prop.initializer) || prop.initializer.text !== 'bundled')
|
|
109
|
+
return false;
|
|
110
|
+
bundled = true;
|
|
60
111
|
}
|
|
61
|
-
return
|
|
112
|
+
return bundled;
|
|
113
|
+
}
|
|
114
|
+
/** Classify the policy argument of an `importToolRuntime(dir, policy)` call. */
|
|
115
|
+
function classifyPolicyArg(arg) {
|
|
116
|
+
if (arg === undefined)
|
|
117
|
+
return 'other';
|
|
118
|
+
const helper = helperCallName(arg);
|
|
119
|
+
if (helper === HOST_POLICY_HELPER)
|
|
120
|
+
return 'host-bundled';
|
|
121
|
+
if (helper === WORKER_POLICY_HELPER)
|
|
122
|
+
return 'worker';
|
|
123
|
+
if (isBundledLiteral(arg))
|
|
124
|
+
return 'host-bundled';
|
|
125
|
+
return 'other';
|
|
62
126
|
}
|
|
63
127
|
function localRuntimeImportNames(sourceFile) {
|
|
64
128
|
const names = new Set();
|
|
@@ -93,27 +157,44 @@ export function analyzeHostToolRuntimeImportBoundary(content, filePath) {
|
|
|
93
157
|
if (runtimeNames.size === 0)
|
|
94
158
|
return violations;
|
|
95
159
|
const allowedFile = isAllowedCallsite(filePath);
|
|
160
|
+
const workerPolicyAllowed = isWorkerPolicyAllowed(filePath);
|
|
96
161
|
const visit = (node) => {
|
|
97
162
|
if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {
|
|
98
163
|
const callee = node.expression.text;
|
|
99
164
|
if (runtimeNames.has(callee)) {
|
|
100
165
|
const line = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1;
|
|
166
|
+
const kind = classifyPolicyArg(node.arguments[1]);
|
|
101
167
|
if (!allowedFile) {
|
|
102
168
|
violations.push({
|
|
103
169
|
message: `importToolRuntime may only be called from the tool admission/discovery boundary ` +
|
|
104
|
-
`(ADR-0054
|
|
170
|
+
`or the worker-owned dispatch plane (ADR-0054 M4-G capstone). Found host-process ` +
|
|
171
|
+
`runtime import in ${normalized(filePath)}.`,
|
|
172
|
+
severity: 'error',
|
|
173
|
+
line,
|
|
174
|
+
suggestion: 'External tool runtimes load ONLY behind the worker boundary. Register a ' +
|
|
175
|
+
'manifest-derived synthetic Tool in the host; import the runtime in the worker.',
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
else if (kind === 'other') {
|
|
179
|
+
violations.push({
|
|
180
|
+
message: 'importToolRuntime must pass an explicit policy — a bundled HOST policy ' +
|
|
181
|
+
"(hostRuntimeImportPolicyFor or { source: 'bundled' }) or workerRuntimeImportPolicyFor " +
|
|
182
|
+
'on the worker-owned plane (ADR-0054 M4-G).',
|
|
105
183
|
severity: 'error',
|
|
106
184
|
line,
|
|
107
|
-
suggestion: '
|
|
185
|
+
suggestion: 'Pass hostRuntimeImportPolicyFor(...) for a bundled host import, or ' +
|
|
186
|
+
'workerRuntimeImportPolicyFor(source) on the worker plane.',
|
|
108
187
|
});
|
|
109
188
|
}
|
|
110
|
-
else if (
|
|
189
|
+
else if (kind === 'worker' && !workerPolicyAllowed) {
|
|
111
190
|
violations.push({
|
|
112
|
-
message:
|
|
113
|
-
|
|
191
|
+
message: `workerRuntimeImportPolicyFor authorizes loading an EXTERNAL tool runtime; it is ` +
|
|
192
|
+
`permitted only on the worker-owned dispatch plane, not in ${normalized(filePath)} ` +
|
|
193
|
+
`(ADR-0054 M4-G capstone: external runtimes never import in the host).`,
|
|
114
194
|
severity: 'error',
|
|
115
195
|
line,
|
|
116
|
-
suggestion: '
|
|
196
|
+
suggestion: 'In the host, register a manifest-derived synthetic Tool instead. Import the ' +
|
|
197
|
+
'external runtime only in the dispatch worker.',
|
|
117
198
|
});
|
|
118
199
|
}
|
|
119
200
|
}
|
|
@@ -126,7 +207,7 @@ export function analyzeHostToolRuntimeImportBoundary(content, filePath) {
|
|
|
126
207
|
export const hostToolRuntimeImportBoundary = defineCheck({
|
|
127
208
|
id: 'b7554963-e24e-4d80-b3e0-edbb97bbdba3',
|
|
128
209
|
slug: 'host-tool-runtime-import-boundary',
|
|
129
|
-
description: '
|
|
210
|
+
description: 'External tool runtimes never import in the host: importToolRuntime stays in the admission/discovery boundary, host imports are bundled-only, and the external worker policy is confined to the worker plane (ADR-0054 M4-G capstone)',
|
|
130
211
|
scope: { languages: ['typescript'], concerns: ['backend'] },
|
|
131
212
|
tags: ['architecture'],
|
|
132
213
|
fileTypes: ['ts', 'tsx'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-tool-runtime-import-boundary.js","sourceRoot":"","sources":["../../../src/checks/architecture/host-tool-runtime-import-boundary.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"host-tool-runtime-import-boundary.js","sourceRoot":"","sources":["../../../src/checks/architecture/host-tool-runtime-import-boundary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Architecture checks barrel.
|
|
3
|
+
*
|
|
4
|
+
* Tool/host SEAM-DISCIPLINE — shipped vs project-local (audit M5):
|
|
5
|
+
*
|
|
6
|
+
* SHIPPED here (generic; fire on any adopter authoring a Tool plugin, keyed on
|
|
7
|
+
* the public command-authoring contract, no host path gating):
|
|
8
|
+
* - host-tool-runtime-import-boundary — the host loads tool runtimes only
|
|
9
|
+
* through the admission boundary with an explicit source policy.
|
|
10
|
+
* - command-handler-host-owned-output — a tool command handler lets the host
|
|
11
|
+
* own rendering / --json / exit; no direct stdout/console/process.exit inside
|
|
12
|
+
* a non-raw-stream defineCommand handler (the declared escape hatch is
|
|
13
|
+
* output:'raw-stream' + rawStreamReason).
|
|
14
|
+
*
|
|
15
|
+
* KEPT PROJECT-LOCAL (opensip-cli/fit/checks/*.mjs) — opensip-internal facts that
|
|
16
|
+
* are inert/meaningless for an adopter, so they would just clutter their `fit
|
|
17
|
+
* list`. Each is path-gated to opensip's own monorepo layout
|
|
18
|
+
* (packages/{fitness,graph,simulation}/engine/src/, packages/cli/src/...) and/or
|
|
19
|
+
* cites an internal decision/spec section:
|
|
20
|
+
* - only-documented-toolcli-seams, no-direct-stdout-in-tool-engine,
|
|
21
|
+
* no-local-exit-or-stdout (the *principles* are shipped above in their
|
|
22
|
+
* contract-keyed, path-independent form; these dogfood the opensip tree).
|
|
23
|
+
* - restrict-raw-db-access, capability-by-manifest, no-tool-owned-session-timing,
|
|
24
|
+
* no-module-singleton, etc. — coupled to opensip's own DataStore/registry/
|
|
25
|
+
* manifest internals.
|
|
26
|
+
* The shipped-checks-must-be-generic project-local gate enforces this split: a
|
|
27
|
+
* check carrying opensip paths / ADR refs / §-sections / internal-engine imports
|
|
28
|
+
* cannot live in a shipped pack.
|
|
29
|
+
*/
|
|
1
30
|
export * from './circular-import-detection.js';
|
|
31
|
+
export * from './command-handler-host-owned-output.js';
|
|
2
32
|
export * from './contracts-schema-consistency.js';
|
|
3
33
|
export * from './drizzle-orm-migration-guardrails.js';
|
|
4
34
|
export * from './host-tool-runtime-import-boundary.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC"}
|
|
@@ -1,4 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Architecture checks barrel.
|
|
3
|
+
*
|
|
4
|
+
* Tool/host SEAM-DISCIPLINE — shipped vs project-local (audit M5):
|
|
5
|
+
*
|
|
6
|
+
* SHIPPED here (generic; fire on any adopter authoring a Tool plugin, keyed on
|
|
7
|
+
* the public command-authoring contract, no host path gating):
|
|
8
|
+
* - host-tool-runtime-import-boundary — the host loads tool runtimes only
|
|
9
|
+
* through the admission boundary with an explicit source policy.
|
|
10
|
+
* - command-handler-host-owned-output — a tool command handler lets the host
|
|
11
|
+
* own rendering / --json / exit; no direct stdout/console/process.exit inside
|
|
12
|
+
* a non-raw-stream defineCommand handler (the declared escape hatch is
|
|
13
|
+
* output:'raw-stream' + rawStreamReason).
|
|
14
|
+
*
|
|
15
|
+
* KEPT PROJECT-LOCAL (opensip-cli/fit/checks/*.mjs) — opensip-internal facts that
|
|
16
|
+
* are inert/meaningless for an adopter, so they would just clutter their `fit
|
|
17
|
+
* list`. Each is path-gated to opensip's own monorepo layout
|
|
18
|
+
* (packages/{fitness,graph,simulation}/engine/src/, packages/cli/src/...) and/or
|
|
19
|
+
* cites an internal decision/spec section:
|
|
20
|
+
* - only-documented-toolcli-seams, no-direct-stdout-in-tool-engine,
|
|
21
|
+
* no-local-exit-or-stdout (the *principles* are shipped above in their
|
|
22
|
+
* contract-keyed, path-independent form; these dogfood the opensip tree).
|
|
23
|
+
* - restrict-raw-db-access, capability-by-manifest, no-tool-owned-session-timing,
|
|
24
|
+
* no-module-singleton, etc. — coupled to opensip's own DataStore/registry/
|
|
25
|
+
* manifest internals.
|
|
26
|
+
* The shipped-checks-must-be-generic project-local gate enforces this split: a
|
|
27
|
+
* check carrying opensip paths / ADR refs / §-sections / internal-engine imports
|
|
28
|
+
* cannot live in a shipped pack.
|
|
29
|
+
*/
|
|
1
30
|
export * from './circular-import-detection.js';
|
|
31
|
+
export * from './command-handler-host-owned-output.js';
|
|
2
32
|
export * from './contracts-schema-consistency.js';
|
|
3
33
|
export * from './drizzle-orm-migration-guardrails.js';
|
|
4
34
|
export * from './host-tool-runtime-import-boundary.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checks/architecture/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checks/architecture/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* names that are deliberately distinct implementations sharing a name.
|
|
13
13
|
*
|
|
14
14
|
* Project-specific functions like `getCurrentCorrelationId`, `formatDuration`,
|
|
15
|
-
* `getRemoteUrl`, `
|
|
15
|
+
* `getRemoteUrl`, `sanitizeFilename`, etc. belong in a recipe's
|
|
16
16
|
* `checks.config['duplicate-utility-functions'].additionalDomainSpecificFunctions`
|
|
17
17
|
* block, NOT in built-in defaults.
|
|
18
18
|
*/
|
|
@@ -20,6 +20,18 @@ export interface DuplicateUtilityFunctionsConfig extends Record<string, unknown>
|
|
|
20
20
|
/** Function names that should be skipped (treated as domain-specific by design). */
|
|
21
21
|
additionalDomainSpecificFunctions?: readonly string[];
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Functions that are intentionally domain-specific and should NOT be flagged
|
|
25
|
+
* as duplicates. Limited to genuinely generic identifiers — config / factory
|
|
26
|
+
* / logger / common type-guard names — that almost any TS codebase will hit.
|
|
27
|
+
*
|
|
28
|
+
* Project-specific names (e.g. opensip's `getCurrentCorrelationId`,
|
|
29
|
+
* `formatDuration`, `getRemoteUrl`, `sanitizeFilename`) belong in a recipe's
|
|
30
|
+
* `checks.config['duplicate-utility-functions'].additionalDomainSpecificFunctions`
|
|
31
|
+
* block. The check reads that list via {@link getCheckConfig} and merges it
|
|
32
|
+
* with these defaults.
|
|
33
|
+
*/
|
|
34
|
+
export declare const DOMAIN_SPECIFIC_FUNCTION_NAMES: readonly string[];
|
|
23
35
|
/**
|
|
24
36
|
* Check: quality/duplicate-utility-functions
|
|
25
37
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-utility-functions.d.ts","sourceRoot":"","sources":["../../../../src/checks/quality/code-structure/duplicate-utility-functions.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAcH;;;;;;;;;GASG;AACH,MAAM,WAAW,+BAAgC,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9E,oFAAoF;IACpF,iCAAiC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvD;
|
|
1
|
+
{"version":3,"file":"duplicate-utility-functions.d.ts","sourceRoot":"","sources":["../../../../src/checks/quality/code-structure/duplicate-utility-functions.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAcH;;;;;;;;;GASG;AACH,MAAM,WAAW,+BAAgC,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9E,oFAAoF;IACpF,iCAAiC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvD;AAiCD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,8BAA8B,EAAE,SAAS,MAAM,EA0C3D,CAAC;AAkYF;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,sCAkCpC,CAAC"}
|
|
@@ -49,12 +49,12 @@ const MIN_FUNCTION_BODY_LENGTH = 50;
|
|
|
49
49
|
* / logger / common type-guard names — that almost any TS codebase will hit.
|
|
50
50
|
*
|
|
51
51
|
* Project-specific names (e.g. opensip's `getCurrentCorrelationId`,
|
|
52
|
-
* `formatDuration`, `getRemoteUrl`, `
|
|
52
|
+
* `formatDuration`, `getRemoteUrl`, `sanitizeFilename`) belong in a recipe's
|
|
53
53
|
* `checks.config['duplicate-utility-functions'].additionalDomainSpecificFunctions`
|
|
54
54
|
* block. The check reads that list via {@link getCheckConfig} and merges it
|
|
55
55
|
* with these defaults.
|
|
56
56
|
*/
|
|
57
|
-
const
|
|
57
|
+
export const DOMAIN_SPECIFIC_FUNCTION_NAMES = [
|
|
58
58
|
// Config / factory pattern - each domain has its own configuration
|
|
59
59
|
'getConfig',
|
|
60
60
|
'getDefaultConfig',
|
|
@@ -96,7 +96,11 @@ const DOMAIN_SPECIFIC_FUNCTIONS = new Set([
|
|
|
96
96
|
'isIdentChar',
|
|
97
97
|
// Assertion validation — fitness engine + simulation engine each own one
|
|
98
98
|
'validateAssertions',
|
|
99
|
-
]
|
|
99
|
+
];
|
|
100
|
+
// Built once at module load from the immutable name list above. Kept private (a
|
|
101
|
+
// module-level `new Set()` is mutable shared state); the de-leak guard test
|
|
102
|
+
// imports the readonly DOMAIN_SPECIFIC_FUNCTION_NAMES instead.
|
|
103
|
+
const DOMAIN_SPECIFIC_FUNCTIONS = new Set(DOMAIN_SPECIFIC_FUNCTION_NAMES);
|
|
100
104
|
/**
|
|
101
105
|
* Build the effective domain-specific set by merging built-in defaults with
|
|
102
106
|
* the recipe-provided augmentation for `duplicate-utility-functions`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-utility-functions.js","sourceRoot":"","sources":["../../../../src/checks/quality/code-structure/duplicate-utility-functions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"duplicate-utility-functions.js","sourceRoot":"","sources":["../../../../src/checks/quality/code-structure/duplicate-utility-functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
* Detects unsafe property and method access without null checks.
|
|
5
5
|
*/
|
|
6
6
|
import { type CheckViolation } from '@opensip-cli/fitness';
|
|
7
|
+
import * as ts from 'typescript';
|
|
7
8
|
/**
|
|
8
9
|
* Recipe-config shape for null-safety. Project-specific safe-by-construction
|
|
9
|
-
* paths
|
|
10
|
-
* `checks.config['null-safety']` block, not in built-in defaults.
|
|
10
|
+
* paths and factory/builder symbols belong in a recipe's
|
|
11
|
+
* `checks.config['null-safety']` block, not in the check's built-in defaults.
|
|
11
12
|
*/
|
|
12
13
|
export interface NullSafetyConfig extends Record<string, unknown> {
|
|
13
14
|
/**
|
|
@@ -15,7 +16,53 @@ export interface NullSafetyConfig extends Record<string, unknown> {
|
|
|
15
16
|
* is compiled to a case-insensitive RegExp via `new RegExp(entry, 'i')`.
|
|
16
17
|
*/
|
|
17
18
|
additionalSafeNullPaths?: readonly string[];
|
|
19
|
+
/**
|
|
20
|
+
* Additional call-text prefixes treated as non-null by construction (a
|
|
21
|
+
* property access on a matching call result is not flagged). Use this for
|
|
22
|
+
* PROJECT-SPECIFIC factory/builder functions whose non-null contract is
|
|
23
|
+
* local to your codebase — do not hardcode them into the shipped check.
|
|
24
|
+
* Matched via `String.prototype.startsWith` against the full call text.
|
|
25
|
+
*/
|
|
26
|
+
additionalSafeBuilders?: readonly string[];
|
|
27
|
+
/**
|
|
28
|
+
* Use TYPE-AWARE analysis (a real `ts.Program` + `TypeChecker`): a property
|
|
29
|
+
* access on a call/element-access result is flagged only when the receiver's
|
|
30
|
+
* ACTUAL static type includes `null`/`undefined` (`any`/`unknown`/unresolved →
|
|
31
|
+
* not flagged; the checker also handles control-flow narrowing, builder/Zod
|
|
32
|
+
* return types, and chain depth, so the verb-prefix convention does not apply).
|
|
33
|
+
* `additionalSafeBuilders` remains a manual escape hatch for symbols the checker
|
|
34
|
+
* cannot resolve.
|
|
35
|
+
*
|
|
36
|
+
* **Default `true`** (D2). Set `false` to fall back to the legacy
|
|
37
|
+
* name/convention heuristic (faster, no Program build, but higher
|
|
38
|
+
* false-negative rate — it trusts any `get*`/`find*`/… call as non-null).
|
|
39
|
+
*/
|
|
40
|
+
typeAware?: boolean;
|
|
18
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Call prefixes whose results are non-null by construction, so a property
|
|
44
|
+
* access on them needs no guard. Scope is deliberately limited to facts that
|
|
45
|
+
* hold for ANY codebase:
|
|
46
|
+
*
|
|
47
|
+
* 1. Language / runtime guarantees — `Object.*`, `Array.*`, `JSON.*`,
|
|
48
|
+
* `new URL()`, Node `crypto`/`child_process`, `Intl`, the TS compiler API.
|
|
49
|
+
* 2. Widely-used libraries whose builder/query APIs are documented non-null
|
|
50
|
+
* — Zod, TypeORM, Drizzle, better-sqlite3, neverthrow `Result`, Express.
|
|
51
|
+
* 3. Generic builder-pattern conventions — `builder.`, `*ResultBuilder.`.
|
|
52
|
+
*
|
|
53
|
+
* PROJECT-SPECIFIC safe symbols must NOT be hardcoded here: baking one
|
|
54
|
+
* codebase's invariants into a generic check silently suppresses real null
|
|
55
|
+
* bugs in every other codebase (e.g. an adopter whose own `getThing()` can
|
|
56
|
+
* return null). Adopters extend this set with their own factories via the
|
|
57
|
+
* `additionalSafeBuilders` recipe-config key — see `buildEffectiveSafeBuilders`.
|
|
58
|
+
*/
|
|
59
|
+
export declare const SAFE_BUILDER_PREFIXES: string[];
|
|
60
|
+
/**
|
|
61
|
+
* Common method name prefixes that indicate safe (non-null) return values.
|
|
62
|
+
* Methods starting with these prefixes are conventionally designed to always
|
|
63
|
+
* return a value or throw, never return null/undefined.
|
|
64
|
+
*/
|
|
65
|
+
export declare const SAFE_METHOD_PREFIXES: string[];
|
|
19
66
|
/**
|
|
20
67
|
* @param {*} content
|
|
21
68
|
* @param {*} filePath
|
|
@@ -24,6 +71,20 @@ export interface NullSafetyConfig extends Record<string, unknown> {
|
|
|
24
71
|
* suite (see `__tests__/null-safety-fp.test.ts`).
|
|
25
72
|
*/
|
|
26
73
|
export declare function analyzeNullSafety(content: string, filePath: string): CheckViolation[];
|
|
74
|
+
/**
|
|
75
|
+
* Type-aware variant (D2): walk the Program's SourceFile and flag a property
|
|
76
|
+
* access on a call/element-access result ONLY when the receiver's actual type
|
|
77
|
+
* includes `null`/`undefined`. The TypeChecker subsumes every heuristic the
|
|
78
|
+
* convention path uses — control-flow narrowing (guards), builder/Zod return
|
|
79
|
+
* types, and chain depth all fall out of real types — so this detector is
|
|
80
|
+
* deliberately minimal. Fail-open: `any`/`unknown`/unresolved types are not
|
|
81
|
+
* nullable per `isTypeNullable`, so "the compiler doesn't know" never flags.
|
|
82
|
+
*
|
|
83
|
+
* Reads the same path skip + escape-hatch config as the convention path
|
|
84
|
+
* (`additionalSafeNullPaths`, `additionalSafeBuilders`). Exported for the
|
|
85
|
+
* type-aware test suite.
|
|
86
|
+
*/
|
|
87
|
+
export declare function analyzeNullSafetyTyped(sourceFile: ts.SourceFile, checker: ts.TypeChecker, filePath: string): CheckViolation[];
|
|
27
88
|
/**
|
|
28
89
|
* Check: quality/null-safety
|
|
29
90
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"null-safety.d.ts","sourceRoot":"","sources":["../../../../src/checks/quality/data-integrity/null-safety.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"null-safety.d.ts","sourceRoot":"","sources":["../../../../src/checks/quality/data-integrity/null-safety.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAEH,OAAO,EAIL,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAIjC;;;;GAIG;AACH,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D;;;OAGG;IACH,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAaD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,qBAAqB,UA4DjC,CAAC;AAiTF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,UAwChC,CAAC;AAoOF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAmFrF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,QAAQ,EAAE,MAAM,GACf,cAAc,EAAE,CA4ClB;AAyBD;;;;GAIG;AACH,eAAO,MAAM,UAAU,sCA+CrB,CAAC"}
|