arkgate 4.8.22 → 4.8.24
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/CHANGELOG.md +91 -0
- package/README.md +7 -5
- package/bin/ark-check-runtime.mjs +27 -78
- package/bin/ark-dashboard.mjs +56 -53
- package/bin/ark-layer-match.mjs +1117 -38
- package/bin/ark-mcp-runtime.mjs +412 -138
- package/bin/ark-mcp.mjs +68 -4
- package/bin/ark-shared.mjs +39 -0
- package/bin/ark.mjs +65 -97
- package/bin/lib/adapter-contract-types.mjs +5 -0
- package/bin/lib/adapter-contract.mjs +15 -0
- package/bin/lib/agent-projection-command.mjs +5 -1
- package/bin/lib/analysis-engine.mjs +15 -11
- package/bin/lib/architecture-scan.mjs +50 -6
- package/bin/lib/ark-order-doctor.mjs +1 -1
- package/bin/lib/ark-order-facts.mjs +410 -15
- package/bin/lib/ark-order-invariants.mjs +51 -9
- package/bin/lib/ark-order-sensors.mjs +28 -101
- package/bin/lib/ark-order-types.mjs +2 -0
- package/bin/lib/ark-run-doctor.mjs +14 -0
- package/bin/lib/ark-run-facts.mjs +434 -11
- package/bin/lib/ark-run-sensors.mjs +5 -3
- package/bin/lib/arkgate-pins.mjs +91 -0
- package/bin/lib/arkrules-sensors.mjs +50 -249
- package/bin/lib/check-args.mjs +23 -1
- package/bin/lib/ci-and-commands.mjs +16 -6
- package/bin/lib/class-source-scan.mjs +479 -0
- package/bin/lib/codex-home.mjs +4 -2
- package/bin/lib/config-contract-slices.mjs +701 -0
- package/bin/lib/config-contract.mjs +5 -2
- package/bin/lib/config-warnings.mjs +32 -0
- package/bin/lib/dashboard-cli.mjs +62 -0
- package/bin/lib/design-delta.mjs +1 -1
- package/bin/lib/diagnostic-catalog.mjs +45 -6
- package/bin/lib/doctor-advisories.mjs +84 -1
- package/bin/lib/doctor-next-actions.mjs +17 -2
- package/bin/lib/doctor-plan.mjs +7 -9
- package/bin/lib/effective-contract-load.mjs +121 -59
- package/bin/lib/enforcement-honesty.mjs +22 -0
- package/bin/lib/enforcement-profiles.mjs +40 -4
- package/bin/lib/first-run-help.mjs +3 -2
- package/bin/lib/flat-parent-importers.mjs +137 -0
- package/bin/lib/flat-parent-pilot.mjs +192 -0
- package/bin/lib/gate-files.mjs +29 -2
- package/bin/lib/git-change-scope.mjs +109 -0
- package/bin/lib/github-enforcement.mjs +1 -1
- package/bin/lib/hook-templates.mjs +18 -16
- package/bin/lib/host-support-matrix.mjs +3 -1
- package/bin/lib/html-report-advisories.mjs +2 -0
- package/bin/lib/html-report-depth.mjs +3 -1
- package/bin/lib/import-resolve.mjs +13 -1
- package/bin/lib/install-migrate.mjs +50 -73
- package/bin/lib/invariant-coverage.mjs +59 -11
- package/bin/lib/mcp-adoption.mjs +9 -1
- package/bin/lib/mcp-hook-payload.mjs +401 -61
- package/bin/lib/package-manager.mjs +59 -1
- package/bin/lib/passthrough-commands.mjs +83 -0
- package/bin/lib/persistence-write-hint.mjs +81 -0
- package/bin/lib/physical-cohesion.mjs +16 -18
- package/bin/lib/pilot-loop.mjs +21 -8
- package/bin/lib/pin-dependent-gates.mjs +117 -0
- package/bin/lib/policy-delta-io.mjs +168 -10
- package/bin/lib/prepare-change.mjs +120 -6
- package/bin/lib/prepare-write.mjs +1 -0
- package/bin/lib/presets.mjs +3 -5
- package/bin/lib/remediation.mjs +23 -4
- package/bin/lib/resolved-candidate-facts.mjs +315 -55
- package/bin/lib/rules-inventory.mjs +22 -3
- package/bin/lib/rules-under-contract.mjs +179 -5
- package/bin/lib/scan-files.mjs +32 -0
- package/bin/lib/snippet-analysis.mjs +140 -6
- package/bin/lib/source-policy.mjs +34 -0
- package/bin/lib/stable-hash.mjs +90 -0
- package/bin/lib/start-install-recovery.mjs +71 -1
- package/bin/lib/start-preview.mjs +30 -0
- package/bin/lib/status-command.mjs +33 -4
- package/bin/lib/status-manifest.mjs +32 -4
- package/bin/lib/team-parliament-io.mjs +79 -75
- package/bin/lib/team-parliament.mjs +6 -1
- package/bin/lib/write-path-capabilities.mjs +4 -2
- package/dist/chunk-A5EIY3HI.cjs +5 -0
- package/dist/chunk-MBXCFLO4.js +16 -0
- package/dist/chunk-RNQHRDCQ.cjs +16 -0
- package/dist/chunk-SVSQVGFJ.js +5 -0
- package/dist/{configTypes-CTELo87-.d.ts → configTypes-BJbaeoj4.d.cts} +53 -4
- package/dist/configTypes-BJbaeoj4.d.ts +246 -0
- package/dist/eslint/index.cjs +17 -4
- package/dist/eslint/index.d.cts +359 -0
- package/dist/eslint/index.d.ts +178 -158
- package/dist/eslint/index.js +10 -4
- package/dist/index.cjs +38 -37
- package/dist/index.d.cts +5475 -0
- package/dist/index.d.ts +3408 -296
- package/dist/index.js +38 -37
- package/dist/inspectorListen-6DQVJ4DC.js +1 -0
- package/dist/inspectorListen-KGMIQ2TF.cjs +1 -0
- package/dist/nestjs/index.cjs +1 -18
- package/dist/nestjs/index.d.cts +22 -0
- package/dist/nestjs/index.d.ts +1 -3
- package/dist/nestjs/index.js +1 -18
- package/dist/order/index.cjs +1 -1
- package/dist/order/index.d.cts +155 -0
- package/dist/order/index.d.ts +15 -3
- package/dist/order/index.js +1 -1
- package/dist/runtime/index.cjs +13 -30
- package/dist/{diagnosticCatalog-WD2TPSwZ.d.ts → runtime/index.d.cts} +814 -290
- package/dist/runtime/index.d.ts +2678 -108
- package/dist/runtime/index.js +13 -30
- package/dist/{types-yDNEQ603.d.ts → types-DRinG-vT.d.cts} +576 -140
- package/dist/types-DRinG-vT.d.ts +1792 -0
- package/docs/README.md +3 -1
- package/docs/agent-guide.md +92 -15
- package/docs/ai-gates.md +160 -26
- package/docs/arkorder.md +32 -15
- package/docs/brownfield-adoption.md +5 -1
- package/docs/configuration.md +273 -12
- package/docs/develop.md +2 -1
- package/docs/diagnostics.md +122 -13
- package/docs/package-surface.md +31 -8
- package/docs/product-voice.md +1 -1
- package/package.json +59 -18
- package/schemas/ark.analysis-result.schema.json +15 -0
- package/schemas/ark.config.schema.json +163 -4
- package/schemas/ark.resolved-candidate-facts.schema.json +1 -1
- package/schemas/ark.status-manifest.schema.json +22 -0
- package/server.json +3 -9
- package/templates/agent-skills/README.md +1 -1
- package/templates/agent-skills/ark-adopt/SKILL.md +4 -1
- package/templates/agent-skills/ark-order/SKILL.md +4 -2
- package/templates/agent-skills/ark-runtime/SKILL.md +6 -1
- package/templates/arkrules/PersistenceAdapters.json +1 -1
- package/templates/arkrules/PresentationAdapters.json +1 -1
- package/templates/skills/ark-adopt.md +4 -1
- package/templates/skills/ark-order.md +4 -2
- package/templates/skills/ark-runtime.md +6 -1
- package/dist/types-fQ9-KrBj.d.ts +0 -183
package/dist/eslint/index.d.ts
CHANGED
|
@@ -1,32 +1,4 @@
|
|
|
1
|
-
import { A as ArkConfig } from '../configTypes-
|
|
2
|
-
|
|
3
|
-
type RuleContext$1 = {
|
|
4
|
-
report(descriptor: Record<string, unknown>): void;
|
|
5
|
-
filename?: string;
|
|
6
|
-
physicalFilename?: string;
|
|
7
|
-
getFilename?: () => string;
|
|
8
|
-
options?: unknown[];
|
|
9
|
-
};
|
|
10
|
-
type AstNode$1 = {
|
|
11
|
-
type?: string;
|
|
12
|
-
name?: string;
|
|
13
|
-
value?: unknown;
|
|
14
|
-
source?: AstNode$1;
|
|
15
|
-
callee?: AstNode$1;
|
|
16
|
-
object?: AstNode$1;
|
|
17
|
-
property?: AstNode$1;
|
|
18
|
-
arguments?: AstNode$1[];
|
|
19
|
-
importKind?: string;
|
|
20
|
-
exportKind?: string;
|
|
21
|
-
specifiers?: AstNode$1[];
|
|
22
|
-
loc?: {
|
|
23
|
-
start?: {
|
|
24
|
-
line?: number;
|
|
25
|
-
column?: number;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
computed?: boolean;
|
|
29
|
-
};
|
|
1
|
+
import { A as ArkConfig } from '../configTypes-BJbaeoj4.js';
|
|
30
2
|
|
|
31
3
|
/**
|
|
32
4
|
* Pure layer-glob matching for ark.config.json.
|
|
@@ -48,7 +20,8 @@ type LayerConfig = {
|
|
|
48
20
|
* - `path` (default, also the absent value): every literal and every star
|
|
49
21
|
* binding. `lib/features` plus two stars → `lib/features/projects/rfi`.
|
|
50
22
|
* Byte-identical to the ids baselines and `allowedCrossSlice` already use.
|
|
51
|
-
* - `stars`: last literal segment plus
|
|
23
|
+
* - `stars`: last literal segment plus every star binding (a star before the
|
|
24
|
+
* last literal is kept too: `modules` / `*` / `api` / `*` → `orders/api/v1`).
|
|
52
25
|
* `lib/features` plus two stars, and `lib/repositories/features` plus two
|
|
53
26
|
* stars, both → `features/projects/rfi`.
|
|
54
27
|
* Prefix stripping stays inside `bindAnchoredSlice`. Bare names are unchanged.
|
|
@@ -83,15 +56,16 @@ type EdgeRule = {
|
|
|
83
56
|
* also when the key is absent) the slice id includes the literal prefix
|
|
84
57
|
* plus the directories the stars bind (`lib/features/projects/rfi`), so
|
|
85
58
|
* parallel trees get different ids. With `"stars"` it is the last literal
|
|
86
|
-
* plus
|
|
59
|
+
* plus every star binding, so the same feature has one id across parallel
|
|
87
60
|
* trees.
|
|
88
61
|
* When omitted, inferred from the layer's glob patterns (segment before a wildcard).
|
|
89
62
|
*/
|
|
90
63
|
sliceFolders?: string[];
|
|
91
64
|
/**
|
|
92
65
|
* How a starred `sliceFolders` prefix is named. Absent and `"path"` keep
|
|
93
|
-
* today's ids. `"stars"` is the last literal plus
|
|
94
|
-
*
|
|
66
|
+
* today's ids. `"stars"` is the last literal plus every star binding, in
|
|
67
|
+
* path order (`modules` / `*` / `api` / `*` binds `orders/api/v1`), so the same feature
|
|
68
|
+
* has one id across parallel trees.
|
|
95
69
|
*/
|
|
96
70
|
sliceIdentity?: SliceIdentity;
|
|
97
71
|
/**
|
|
@@ -118,17 +92,81 @@ type EdgeRule = {
|
|
|
118
92
|
* (`features/auth`) or by bare slice name (`auth`), case-insensitively — a bare
|
|
119
93
|
* name matches that name under *any* slice folder, so write the full id in a repo
|
|
120
94
|
* with several slice parents. Everything not declared still denies.
|
|
95
|
+
* `*` is a literal character on this list, not a wildcard.
|
|
121
96
|
*/
|
|
122
97
|
allowedCrossSlice?: CrossSliceEdge[];
|
|
123
98
|
/**
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
99
|
+
* `"deny"`: a shared root may not import a slice. `"deny-cross-parent"` leaves
|
|
100
|
+
* that hop allowed; a whole-graph pass then reports a slice that reaches
|
|
101
|
+
* another universe only through shared. Absent keeps the hop allowed.
|
|
102
|
+
* `allowedCrossSlice` does not excuse `"deny"`. The object form
|
|
103
|
+
* `{ mode: "deny-cross-parent", stopAt }` names composition roots the walk
|
|
104
|
+
* never starts at or passes through. Read it through
|
|
105
|
+
* {@link sharedImportsSliceMode} / {@link sharedImportsSliceStopAt}.
|
|
106
|
+
*/
|
|
107
|
+
sharedImportsSlice?: SharedImportsSliceSetting;
|
|
108
|
+
/**
|
|
109
|
+
* Optional inner wall under this rule's universe wall. Absent: the universe
|
|
110
|
+
* wall is the whole decision and check output stays byte-identical.
|
|
111
|
+
* Present: a universe cross-slice deny is `CROSS_PARENT_SLICE`. An edge the
|
|
112
|
+
* universe wall allows may still deny on the child wall.
|
|
127
113
|
*/
|
|
128
|
-
|
|
114
|
+
childSlices?: ChildSlices;
|
|
129
115
|
/** Optional override message for scanners / write-gate. */
|
|
130
116
|
message?: string;
|
|
131
117
|
};
|
|
118
|
+
/**
|
|
119
|
+
* Inner slice wall. `sliceFolders` names children under the universe.
|
|
120
|
+
* A side with no child id (a flat file, or a `commonFolders` directory) is
|
|
121
|
+
* universe common. `siblings` is `deny`, `advisory`, or `{ default, enforce }`.
|
|
122
|
+
* Cross-parent has no knob. `parentMayImportChild` defaults to false.
|
|
123
|
+
* `allowedCrossSlice` here may use a whole-segment `*`. It clears only a
|
|
124
|
+
* sibling crossing, and only after the universe wall has allowed the edge.
|
|
125
|
+
*/
|
|
126
|
+
/** A folder outside the slice trees, borrowed onto a child id until it moves. */
|
|
127
|
+
type SliceAlias = {
|
|
128
|
+
/** Source path glob. Only files the slice folders do not already classify. */
|
|
129
|
+
from: string;
|
|
130
|
+
/** Child slice id: the universe id plus one child segment. */
|
|
131
|
+
to: string;
|
|
132
|
+
};
|
|
133
|
+
type ChildSlices = {
|
|
134
|
+
sliceFolders: string[];
|
|
135
|
+
sliceIdentity?: SliceIdentity;
|
|
136
|
+
commonFolders?: string[];
|
|
137
|
+
siblings?: ChildSliceSiblings;
|
|
138
|
+
parentMayImportChild?: boolean;
|
|
139
|
+
/** Text for inner-wall findings (sibling, common → child). Absent: ArkGate default, never the rule message. */
|
|
140
|
+
message?: string;
|
|
141
|
+
/** Directed child allowances. `*` matches one whole segment. Never a universe excuse. */
|
|
142
|
+
allowedCrossSlice?: CrossSliceEdge[];
|
|
143
|
+
/** Unclassified files governed as this child. Debt, not a destination. */
|
|
144
|
+
sliceAliases?: SliceAlias[];
|
|
145
|
+
};
|
|
146
|
+
/** How the child wall treats a sibling crossing. Absent means `deny`. */
|
|
147
|
+
type ChildSliceSiblingsMode = 'deny' | 'advisory';
|
|
148
|
+
/**
|
|
149
|
+
* Per-subtree sibling enforcement. `default` is everyone not listed.
|
|
150
|
+
* `enforce` names child slice ids or subtree paths. The list never loosens deny.
|
|
151
|
+
*/
|
|
152
|
+
type ChildSliceSiblingsEnforce = {
|
|
153
|
+
default: ChildSliceSiblingsMode;
|
|
154
|
+
enforce?: string[];
|
|
155
|
+
/**
|
|
156
|
+
* Anti-growth for advisory crossings against a baseline. Absent: on only when
|
|
157
|
+
* the baseline already records an advisory crossing of this rule. `true`:
|
|
158
|
+
* always when a baseline is in use. `false`: measure only.
|
|
159
|
+
*/
|
|
160
|
+
ratchet?: boolean;
|
|
161
|
+
};
|
|
162
|
+
type ChildSliceSiblings = ChildSliceSiblingsMode | ChildSliceSiblingsEnforce;
|
|
163
|
+
/** `sharedImportsSlice` string modes. */
|
|
164
|
+
type SharedImportsSliceMode = 'deny' | 'deny-cross-parent';
|
|
165
|
+
/** String mode, or the object form that carries composition-root stops. */
|
|
166
|
+
type SharedImportsSliceSetting = SharedImportsSliceMode | {
|
|
167
|
+
mode: 'deny-cross-parent';
|
|
168
|
+
stopAt: string[];
|
|
169
|
+
};
|
|
132
170
|
/** A directed slice-to-slice edge the repo declares on purpose (peerIsolation). */
|
|
133
171
|
type CrossSliceEdge = {
|
|
134
172
|
/** Importing slice id (`features/checkout`) or bare slice name (`checkout`). */
|
|
@@ -158,37 +196,11 @@ declare function patternSpecificity(pattern: string, relPath?: string): number;
|
|
|
158
196
|
declare function layerForRelativePath(relPath: string, layers: LayerConfig[] | undefined): string | undefined;
|
|
159
197
|
declare function isEdgeDenied(rules: EdgeRule[] | undefined, from: string, to: string, options?: EdgeCheckOptions): boolean;
|
|
160
198
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
physicalFilename?: string;
|
|
167
|
-
/** ESLint ≤8 API — still present on some hosts; removed in ESLint 10. */
|
|
168
|
-
getFilename?: () => string;
|
|
169
|
-
/** ESLint 9+ source/scope API. */
|
|
170
|
-
sourceCode?: SourceCode;
|
|
171
|
-
/** ESLint ≤8 source/scope API. */
|
|
172
|
-
getSourceCode?: () => SourceCode;
|
|
173
|
-
options?: unknown[];
|
|
174
|
-
};
|
|
175
|
-
type ScopeVariable = {
|
|
176
|
-
defs?: unknown[];
|
|
177
|
-
};
|
|
178
|
-
type ScopeReference = {
|
|
179
|
-
identifier?: AstNode;
|
|
180
|
-
resolved?: ScopeVariable | null;
|
|
181
|
-
isValueReference?: boolean;
|
|
182
|
-
};
|
|
183
|
-
type Scope = {
|
|
184
|
-
set?: Map<string, ScopeVariable>;
|
|
185
|
-
references?: ScopeReference[];
|
|
186
|
-
upper?: Scope | null;
|
|
187
|
-
};
|
|
188
|
-
type SourceCode = {
|
|
189
|
-
getScope?: (node: AstNode) => Scope;
|
|
190
|
-
};
|
|
191
|
-
type RuleListener = Record<string, (node: AstNode) => void>;
|
|
199
|
+
/**
|
|
200
|
+
* Shared ESLint adapter plumbing: context shapes, filename / source helpers, and the
|
|
201
|
+
* adapter-diagnostic report path. Channel routing lives in reportChannels.ts.
|
|
202
|
+
*/
|
|
203
|
+
|
|
192
204
|
type AstNode = {
|
|
193
205
|
type?: string;
|
|
194
206
|
name?: string;
|
|
@@ -207,14 +219,62 @@ type AstNode = {
|
|
|
207
219
|
specifiers?: AstNode[];
|
|
208
220
|
parent?: AstNode;
|
|
209
221
|
init?: AstNode;
|
|
222
|
+
id?: AstNode;
|
|
223
|
+
left?: AstNode;
|
|
224
|
+
argument?: AstNode;
|
|
225
|
+
expression?: AstNode;
|
|
226
|
+
quasis?: Array<{
|
|
227
|
+
value?: {
|
|
228
|
+
cooked?: string | null;
|
|
229
|
+
};
|
|
230
|
+
}>;
|
|
231
|
+
expressions?: unknown[];
|
|
210
232
|
computed?: boolean;
|
|
233
|
+
optional?: boolean;
|
|
211
234
|
loc?: {
|
|
212
235
|
start?: {
|
|
213
236
|
line?: number;
|
|
214
237
|
column?: number;
|
|
215
238
|
};
|
|
239
|
+
end?: {
|
|
240
|
+
line?: number;
|
|
241
|
+
column?: number;
|
|
242
|
+
};
|
|
216
243
|
};
|
|
217
244
|
};
|
|
245
|
+
type ScopeVariable = {
|
|
246
|
+
defs?: unknown[];
|
|
247
|
+
};
|
|
248
|
+
type ScopeReference = {
|
|
249
|
+
identifier?: AstNode;
|
|
250
|
+
resolved?: ScopeVariable | null;
|
|
251
|
+
isValueReference?: boolean;
|
|
252
|
+
};
|
|
253
|
+
type Scope = {
|
|
254
|
+
set?: Map<string, ScopeVariable>;
|
|
255
|
+
references?: ScopeReference[];
|
|
256
|
+
upper?: Scope | null;
|
|
257
|
+
};
|
|
258
|
+
type SourceCode = {
|
|
259
|
+
getScope?: (node: AstNode) => Scope;
|
|
260
|
+
getText?: () => string;
|
|
261
|
+
text?: string;
|
|
262
|
+
};
|
|
263
|
+
type RuleContext = {
|
|
264
|
+
report(descriptor: Record<string, unknown>): void;
|
|
265
|
+
/** ESLint 9+ / 10: preferred path on the context object. */
|
|
266
|
+
filename?: string;
|
|
267
|
+
/** ESLint 8-style physical path when linting with processors / virtual files. */
|
|
268
|
+
physicalFilename?: string;
|
|
269
|
+
/** ESLint ≤8 API — still present on some hosts; removed in ESLint 10. */
|
|
270
|
+
getFilename?: () => string;
|
|
271
|
+
/** ESLint 9+ source/scope API. */
|
|
272
|
+
sourceCode?: SourceCode;
|
|
273
|
+
/** ESLint ≤8 source/scope API. */
|
|
274
|
+
getSourceCode?: () => SourceCode;
|
|
275
|
+
options?: unknown[];
|
|
276
|
+
};
|
|
277
|
+
type RuleListener = Record<string, (node: AstNode) => void>;
|
|
218
278
|
type ArkRule = {
|
|
219
279
|
meta: {
|
|
220
280
|
type: 'problem';
|
|
@@ -226,112 +286,72 @@ type ArkRule = {
|
|
|
226
286
|
};
|
|
227
287
|
create(context: RuleContext): RuleListener;
|
|
228
288
|
};
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
configs?: Record<string, unknown>;
|
|
232
|
-
};
|
|
289
|
+
|
|
290
|
+
/** Nearest `ark.config.json` at or above the linted file (memoized per directory). */
|
|
233
291
|
declare function findConfigPath(startFile: string): string | null;
|
|
292
|
+
/**
|
|
293
|
+
* Parse the root config (public helper; throws ArkConfigValidationError on invalid config).
|
|
294
|
+
* Rules use `loadArkContract`, which never throws.
|
|
295
|
+
*/
|
|
234
296
|
declare function loadArkConfig(configPath: string): ArkConfig | null;
|
|
235
297
|
/**
|
|
236
|
-
*
|
|
237
|
-
*
|
|
238
|
-
*
|
|
298
|
+
* Fingerprint of the Ark contract that applies under `startDir` (default: cwd). ESLint
|
|
299
|
+
* hashes `settings`, so a recommended config carrying this value invalidates `--cache`
|
|
300
|
+
* results when ark.config.json or a referenced ArkRules file changes.
|
|
239
301
|
*/
|
|
240
|
-
declare function
|
|
302
|
+
declare function contractFingerprint(startDir?: string): string | null;
|
|
303
|
+
|
|
304
|
+
type TsconfigAlias = {
|
|
305
|
+
/** Pattern text before `*` (whole pattern when it has no `*`). */
|
|
306
|
+
from: string;
|
|
307
|
+
/** First target with the trailing `*` removed (legacy shape). */
|
|
308
|
+
to: string;
|
|
309
|
+
/** Text after `*` in the pattern ('' for trailing-star patterns). */
|
|
310
|
+
suffix: string;
|
|
311
|
+
wildcard: boolean;
|
|
312
|
+
/** All substitution targets, in declaration order. */
|
|
313
|
+
targets: string[];
|
|
314
|
+
};
|
|
315
|
+
type TsconfigAliasSet = {
|
|
241
316
|
baseUrl: string;
|
|
242
|
-
aliases:
|
|
243
|
-
from: string;
|
|
244
|
-
to: string;
|
|
245
|
-
}>;
|
|
317
|
+
aliases: TsconfigAlias[];
|
|
246
318
|
};
|
|
319
|
+
/**
|
|
320
|
+
* Read tsconfig paths/baseUrl for ESLint alias parity (P0-C) from the nearest tsconfig.json
|
|
321
|
+
* at or above `startDir`.
|
|
322
|
+
*/
|
|
323
|
+
declare function readTsconfigPathAliases(startDir: string): TsconfigAliasSet;
|
|
247
324
|
/** Resolve relative import specifier to an absolute path candidate (TS-oriented). */
|
|
248
325
|
declare function resolveRelativeImport(fromFile: string, specifier: string): string | null;
|
|
249
326
|
/**
|
|
250
327
|
* Resolve relative or tsconfig path-alias import to an on-disk file.
|
|
251
|
-
*
|
|
328
|
+
* The tsconfig is the one nearest to `fromFile` (same as the CLI). `projectRoot` is only a
|
|
329
|
+
* fallback start directory when `fromFile` is empty. Bare packages return null.
|
|
252
330
|
*/
|
|
253
331
|
declare function resolveImportSpecifier(fromFile: string, specifier: string, projectRoot?: string | null): string | null;
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
332
|
+
|
|
333
|
+
type ArkEslintPlugin = {
|
|
334
|
+
meta: {
|
|
335
|
+
name: string;
|
|
336
|
+
version: string;
|
|
337
|
+
};
|
|
338
|
+
rules: Record<string, ArkRule>;
|
|
339
|
+
configs?: Record<string, unknown>;
|
|
340
|
+
};
|
|
259
341
|
declare const noDomainInfraImports: ArkRule;
|
|
260
342
|
declare const noRawEventPublish: ArkRule;
|
|
261
343
|
declare const requirePublishSource: ArkRule;
|
|
262
344
|
declare const noForbiddenGlobals: ArkRule;
|
|
263
345
|
declare const noDeniedCapabilities: ArkRule;
|
|
264
|
-
declare const noArkRunKernelInDomain:
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
};
|
|
273
|
-
create(context: RuleContext$1): {
|
|
274
|
-
[x: string]: (node: AstNode$1) => void;
|
|
275
|
-
};
|
|
276
|
-
};
|
|
277
|
-
declare const noArkRunDirectNew: {
|
|
278
|
-
meta: {
|
|
279
|
-
type: "problem";
|
|
280
|
-
docs: {
|
|
281
|
-
description: string;
|
|
282
|
-
};
|
|
283
|
-
messages: Record<string, string>;
|
|
284
|
-
schema: unknown[];
|
|
285
|
-
};
|
|
286
|
-
create(context: RuleContext$1): {
|
|
287
|
-
[x: string]: (node: AstNode$1) => void;
|
|
288
|
-
};
|
|
289
|
-
};
|
|
290
|
-
declare const noArkRunTransportBypass: {
|
|
291
|
-
meta: {
|
|
292
|
-
type: "problem";
|
|
293
|
-
docs: {
|
|
294
|
-
description: string;
|
|
295
|
-
};
|
|
296
|
-
messages: Record<string, string>;
|
|
297
|
-
schema: unknown[];
|
|
298
|
-
};
|
|
299
|
-
create(context: RuleContext$1): {
|
|
300
|
-
[x: string]: (node: AstNode$1) => void;
|
|
301
|
-
};
|
|
302
|
-
};
|
|
303
|
-
|
|
304
|
-
declare const noArkOrderKernelInDomain: {
|
|
305
|
-
meta: {
|
|
306
|
-
type: "problem";
|
|
307
|
-
docs: {
|
|
308
|
-
description: "ARKORDER_KERNEL_IN_DOMAIN" | "ARKORDER_GENERIC_UPDATE";
|
|
309
|
-
};
|
|
310
|
-
messages: {
|
|
311
|
-
denied: string;
|
|
312
|
-
};
|
|
313
|
-
schema: never[];
|
|
314
|
-
};
|
|
315
|
-
create(context: RuleContext$1): {
|
|
316
|
-
[x: string]: (node: AstNode$1) => void;
|
|
317
|
-
};
|
|
318
|
-
};
|
|
319
|
-
declare const noArkOrderGenericUpdate: {
|
|
320
|
-
meta: {
|
|
321
|
-
type: "problem";
|
|
322
|
-
docs: {
|
|
323
|
-
description: "ARKORDER_KERNEL_IN_DOMAIN" | "ARKORDER_GENERIC_UPDATE";
|
|
324
|
-
};
|
|
325
|
-
messages: {
|
|
326
|
-
denied: string;
|
|
327
|
-
};
|
|
328
|
-
schema: never[];
|
|
329
|
-
};
|
|
330
|
-
create(context: RuleContext$1): {
|
|
331
|
-
[x: string]: (node: AstNode$1) => void;
|
|
332
|
-
};
|
|
333
|
-
};
|
|
334
|
-
|
|
346
|
+
declare const noArkRunKernelInDomain: ArkRule;
|
|
347
|
+
declare const noArkRunDirectNew: ArkRule;
|
|
348
|
+
declare const noArkRunTransportBypass: ArkRule;
|
|
349
|
+
declare const noArkOrderKernelInDomain: ArkRule;
|
|
350
|
+
declare const noArkOrderGenericUpdate: ArkRule;
|
|
351
|
+
declare const arkRulesStructureRule: ArkRule;
|
|
352
|
+
declare const architectureAdvisory: ArkRule;
|
|
353
|
+
declare const rules: Record<string, ArkRule>;
|
|
335
354
|
declare const plugin: ArkEslintPlugin;
|
|
355
|
+
declare const configs: Record<string, unknown>;
|
|
336
356
|
|
|
337
|
-
export { plugin as default, findConfigPath, globToRegExp, isEdgeDenied, layerForRelativePath, loadArkConfig, noArkOrderGenericUpdate, noArkOrderKernelInDomain, noArkRunDirectNew, noArkRunKernelInDomain, noArkRunTransportBypass, noDeniedCapabilities, noDomainInfraImports, noForbiddenGlobals, noRawEventPublish, patternSpecificity, plugin, readTsconfigPathAliases, requirePublishSource, resolveImportSpecifier, resolveRelativeImport };
|
|
357
|
+
export { architectureAdvisory, arkRulesStructureRule, configs, contractFingerprint, plugin as default, findConfigPath, globToRegExp, isEdgeDenied, layerForRelativePath, loadArkConfig, noArkOrderGenericUpdate, noArkOrderKernelInDomain, noArkRunDirectNew, noArkRunKernelInDomain, noArkRunTransportBypass, noDeniedCapabilities, noDomainInfraImports, noForbiddenGlobals, noRawEventPublish, patternSpecificity, plugin, readTsconfigPathAliases, requirePublishSource, resolveImportSpecifier, resolveRelativeImport, rules };
|