@pikku/inspector 0.12.75 → 0.12.81
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 +330 -0
- package/dist/add/add-analytics.d.ts +9 -0
- package/dist/add/add-analytics.js +178 -0
- package/dist/add/add-auth.js +0 -54
- package/dist/add/add-feature-flag.d.ts +2 -0
- package/dist/add/add-feature-flag.js +162 -0
- package/dist/add/add-wire-addon.js +1 -0
- package/dist/add/add-wire-remote-addon.js +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/inspector.js +4 -0
- package/dist/surface/collect-surface.d.ts +58 -0
- package/dist/surface/collect-surface.js +613 -0
- package/dist/types.d.ts +20 -11
- package/dist/utils/filter-inspector-state.js +14 -0
- package/dist/utils/post-process.js +15 -0
- package/dist/utils/read-module-specifiers.d.ts +8 -0
- package/dist/utils/read-module-specifiers.js +23 -0
- package/dist/utils/read-tsconfig-out-dir.d.ts +5 -0
- package/dist/utils/read-tsconfig-out-dir.js +12 -0
- package/dist/utils/resolve-deploy-target.d.ts +7 -0
- package/dist/utils/resolve-deploy-target.js +15 -7
- package/dist/utils/serialize-inspector-state.d.ts +5 -0
- package/dist/utils/serialize-inspector-state.js +8 -0
- package/dist/visit.js +4 -0
- package/package.json +16 -6
- package/run-tests.sh +21 -6
- package/src/add/add-addon-bans.ts +0 -85
- package/src/add/add-agent-scorer.test.ts +0 -197
- package/src/add/add-agent-scorer.ts +0 -83
- package/src/add/add-agent.test.ts +0 -87
- package/src/add/add-agent.ts +0 -638
- package/src/add/add-approval-description.ts +0 -76
- package/src/add/add-auth.test.ts +0 -791
- package/src/add/add-auth.ts +0 -424
- package/src/add/add-channel.ts +0 -778
- package/src/add/add-cli-renderers.test.ts +0 -74
- package/src/add/add-cli.ts +0 -1006
- package/src/add/add-credential.ts +0 -186
- package/src/add/add-feature.test.ts +0 -306
- package/src/add/add-feature.ts +0 -253
- package/src/add/add-file-extends-core-type.ts +0 -66
- package/src/add/add-file-with-config.ts +0 -45
- package/src/add/add-file-with-factory.test.ts +0 -134
- package/src/add/add-file-with-factory.ts +0 -288
- package/src/add/add-functions.test.ts +0 -743
- package/src/add/add-functions.ts +0 -1548
- package/src/add/add-gateway.ts +0 -143
- package/src/add/add-http-route-ref.test.ts +0 -149
- package/src/add/add-http-route.ts +0 -530
- package/src/add/add-http-routes.ts +0 -471
- package/src/add/add-keyed-wiring.ts +0 -180
- package/src/add/add-mcp-prompt.ts +0 -157
- package/src/add/add-mcp-resource.ts +0 -175
- package/src/add/add-middleware.test.ts +0 -196
- package/src/add/add-middleware.ts +0 -879
- package/src/add/add-permission-auth.test.ts +0 -59
- package/src/add/add-permission.ts +0 -311
- package/src/add/add-personas.test.ts +0 -406
- package/src/add/add-personas.ts +0 -287
- package/src/add/add-queue-worker.ts +0 -117
- package/src/add/add-rpc-invocations.test.ts +0 -287
- package/src/add/add-rpc-invocations.ts +0 -221
- package/src/add/add-scenario-step.test.ts +0 -509
- package/src/add/add-schedule.ts +0 -120
- package/src/add/add-scope.test.ts +0 -419
- package/src/add/add-scope.ts +0 -221
- package/src/add/add-secret.ts +0 -10
- package/src/add/add-subject-scenario-steps.test.ts +0 -161
- package/src/add/add-system-role.test.ts +0 -297
- package/src/add/add-system-role.ts +0 -162
- package/src/add/add-trigger.ts +0 -165
- package/src/add/add-variable.ts +0 -10
- package/src/add/add-wire-addon.test.ts +0 -185
- package/src/add/add-wire-addon.ts +0 -146
- package/src/add/add-wire-remote-addon.ts +0 -80
- package/src/add/add-workflow-edge-cases.test.ts +0 -201
- package/src/add/add-workflow-fanout.test.ts +0 -166
- package/src/add/add-workflow-graph-foreach.test.ts +0 -174
- package/src/add/add-workflow-graph-input.test.ts +0 -94
- package/src/add/add-workflow-graph-notes.test.ts +0 -74
- package/src/add/add-workflow-graph.ts +0 -644
- package/src/add/add-workflow-on-error.test.ts +0 -118
- package/src/add/add-workflow-return-switch.test.ts +0 -121
- package/src/add/add-workflow-silent-drops.test.ts +0 -261
- package/src/add/add-workflow-sleep-expression.test.ts +0 -96
- package/src/add/add-workflow.test.ts +0 -155
- package/src/add/add-workflow.ts +0 -482
- package/src/add/addon-bans.test.ts +0 -121
- package/src/add/addon-contracts.test.ts +0 -221
- package/src/add/allow-escape-hatches.test.ts +0 -144
- package/src/add/audit-meta.test.ts +0 -75
- package/src/add/classified-sink-check.test.ts +0 -347
- package/src/add/config-value-metadata.test.ts +0 -263
- package/src/add/dynamic-import-check.test.ts +0 -119
- package/src/add/expect-eventually-scenario-only.test.ts +0 -108
- package/src/add/function-body-span.test.ts +0 -96
- package/src/add/inline-wiring-function.test.ts +0 -104
- package/src/add/pii-check.test.ts +0 -258
- package/src/add/rpc-type-cast.test.ts +0 -123
- package/src/add/scenario-instrumentation.test.ts +0 -89
- package/src/add/scenario-instrumentation.ts +0 -42
- package/src/add/scenario-marker.test.ts +0 -89
- package/src/add/scenario-not-extractable.test.ts +0 -159
- package/src/add/scenario-services.test.ts +0 -103
- package/src/add/scenario-skip.test.ts +0 -83
- package/src/add/validate-workflow-graph-addons.test.ts +0 -102
- package/src/add/wire-name-literal.test.ts +0 -117
- package/src/error-codes-emitted.test.ts +0 -76
- package/src/error-codes.ts +0 -145
- package/src/index.ts +0 -66
- package/src/inspector.ts +0 -575
- package/src/schema-generator.ts +0 -1
- package/src/source-file-cache.ts +0 -73
- package/src/tsconfig-paths.test.ts +0 -90
- package/src/types-map.ts +0 -141
- package/src/types.ts +0 -775
- package/src/utils/annotate-http-route-auth.test.ts +0 -161
- package/src/utils/annotate-http-route-auth.ts +0 -53
- package/src/utils/check-classified-sinks.ts +0 -215
- package/src/utils/check-pii-output.ts +0 -120
- package/src/utils/compute-diagnostics.test.ts +0 -106
- package/src/utils/compute-required-schemas.ts +0 -48
- package/src/utils/contract-hashes.test.ts +0 -553
- package/src/utils/contract-hashes.ts +0 -387
- package/src/utils/custom-types-generator.test.ts +0 -124
- package/src/utils/custom-types-generator.ts +0 -150
- package/src/utils/detect-schema-vendor.test.ts +0 -123
- package/src/utils/detect-schema-vendor.ts +0 -120
- package/src/utils/does-type-extend-core-type.ts +0 -53
- package/src/utils/ensure-function-metadata.ts +0 -385
- package/src/utils/extract-function-name.ts +0 -612
- package/src/utils/extract-function-node.ts +0 -70
- package/src/utils/extract-node-value.test.ts +0 -117
- package/src/utils/extract-node-value.ts +0 -172
- package/src/utils/extract-secret-usage.test.ts +0 -81
- package/src/utils/extract-secret-usage.ts +0 -73
- package/src/utils/extract-services.ts +0 -70
- package/src/utils/extract-surface-usage.test.ts +0 -147
- package/src/utils/extract-surface-usage.ts +0 -121
- package/src/utils/filter-inspector-state.test.ts +0 -2232
- package/src/utils/filter-inspector-state.ts +0 -1298
- package/src/utils/filter-utils.test.ts +0 -843
- package/src/utils/filter-utils.ts +0 -161
- package/src/utils/find-root-dir.ts +0 -68
- package/src/utils/find-zod-transform.test.ts +0 -70
- package/src/utils/find-zod-transform.ts +0 -103
- package/src/utils/get-exported-variable-name.ts +0 -48
- package/src/utils/get-files-and-methods.ts +0 -157
- package/src/utils/get-property-value.test.ts +0 -141
- package/src/utils/get-property-value.ts +0 -331
- package/src/utils/hash.ts +0 -26
- package/src/utils/literal-properties.ts +0 -97
- package/src/utils/load-addon-functions-meta.test.ts +0 -157
- package/src/utils/load-addon-functions-meta.ts +0 -508
- package/src/utils/load-addon-scopes.test.ts +0 -138
- package/src/utils/middleware.test.ts +0 -204
- package/src/utils/middleware.ts +0 -303
- package/src/utils/nested-project-filter.test.ts +0 -53
- package/src/utils/nested-project-filter.ts +0 -28
- package/src/utils/permissions-shorthand.test.ts +0 -79
- package/src/utils/permissions.test.ts +0 -125
- package/src/utils/permissions.ts +0 -129
- package/src/utils/post-process.test.ts +0 -1094
- package/src/utils/post-process.ts +0 -1604
- package/src/utils/resolve-addon-package.ts +0 -106
- package/src/utils/resolve-core-type.test.ts +0 -142
- package/src/utils/resolve-core-type.ts +0 -35
- package/src/utils/resolve-deploy-target.test.ts +0 -135
- package/src/utils/resolve-deploy-target.ts +0 -65
- package/src/utils/resolve-function-meta.ts +0 -25
- package/src/utils/resolve-function-types.ts +0 -42
- package/src/utils/resolve-identifier.ts +0 -46
- package/src/utils/resolve-ref-contract.ts +0 -71
- package/src/utils/resolve-versions.test.ts +0 -499
- package/src/utils/resolve-versions.ts +0 -228
- package/src/utils/schema-cache.test.ts +0 -124
- package/src/utils/schema-generator.test.ts +0 -272
- package/src/utils/schema-generator.ts +0 -780
- package/src/utils/secret-alias-services.test.ts +0 -146
- package/src/utils/secret-alias-services.ts +0 -58
- package/src/utils/serialize-inspector-state.ts +0 -742
- package/src/utils/serialize-mcp-json.ts +0 -150
- package/src/utils/serialize-middleware-groups-meta.ts +0 -36
- package/src/utils/serialize-openapi-json.ts +0 -277
- package/src/utils/serialize-permissions-groups-meta.ts +0 -7
- package/src/utils/single-declaration.ts +0 -57
- package/src/utils/type-utils.ts +0 -145
- package/src/utils/validate-auth-sessionless.ts +0 -30
- package/src/utils/validate-exposed-functions-gated.test.ts +0 -230
- package/src/utils/validate-exposed-functions-gated.ts +0 -103
- package/src/utils/validate-tags-resolve-to-middleware.test.ts +0 -108
- package/src/utils/validate-tags-resolve-to-middleware.ts +0 -48
- package/src/utils/workflow/derive-workflow-plan.test.ts +0 -178
- package/src/utils/workflow/derive-workflow-plan.ts +0 -117
- package/src/utils/workflow/dsl/deserialize-dsl-workflow.ts +0 -1465
- package/src/utils/workflow/dsl/deserialize-fanout-body.test.ts +0 -71
- package/src/utils/workflow/dsl/deserialize-fanout-fidelity.test.ts +0 -99
- package/src/utils/workflow/dsl/deserialize-graph-next.test.ts +0 -161
- package/src/utils/workflow/dsl/deserialize-roundtrip-bindings.test.ts +0 -121
- package/src/utils/workflow/dsl/deserialize-roundtrip-values.test.ts +0 -116
- package/src/utils/workflow/dsl/deserialize-roundtrip.test.ts +0 -145
- package/src/utils/workflow/dsl/extract-approval-policy.test.ts +0 -71
- package/src/utils/workflow/dsl/extract-dsl-workflow.ts +0 -2254
- package/src/utils/workflow/dsl/index.ts +0 -11
- package/src/utils/workflow/dsl/patterns.ts +0 -440
- package/src/utils/workflow/dsl/validation.ts +0 -203
- package/src/utils/workflow/graph/convert-dsl-to-graph-skip.test.ts +0 -35
- package/src/utils/workflow/graph/convert-dsl-to-graph.ts +0 -543
- package/src/utils/workflow/graph/fanout-node-identity.test.ts +0 -105
- package/src/utils/workflow/graph/finalize-workflow-wires.ts +0 -310
- package/src/utils/workflow/graph/finalize-workflows.test.ts +0 -50
- package/src/utils/workflow/graph/finalize-workflows.ts +0 -130
- package/src/utils/workflow/graph/index.ts +0 -28
- package/src/utils/workflow/graph/serialize-workflow-graph.ts +0 -240
- package/src/utils/workflow/graph/workflow-graph.types.ts +0 -281
- package/src/visit.ts +0 -181
- package/tsconfig.json +0 -19
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import * as ts from 'typescript';
|
|
2
|
+
import { getPropertyValue } from '../utils/get-property-value.js';
|
|
3
|
+
import { ErrorCode } from '../error-codes.js';
|
|
4
|
+
const SEPARATOR = ':';
|
|
5
|
+
const DEFINE_FEATURE_FLAGS = 'defineFeatureFlags';
|
|
6
|
+
/**
|
|
7
|
+
* A call is the pikku one when the symbol it resolves to is, whatever the file
|
|
8
|
+
* chose to call it locally — `import { defineFeatureFlags as declare }` is an
|
|
9
|
+
* ordinary thing to write, and matching on the callee's text alone both misses
|
|
10
|
+
* that and claims a same-named local helper.
|
|
11
|
+
*/
|
|
12
|
+
const callsDefineFeatureFlags = (expression, checker) => {
|
|
13
|
+
if (!ts.isIdentifier(expression))
|
|
14
|
+
return false;
|
|
15
|
+
const symbol = checker.getSymbolAtLocation(expression);
|
|
16
|
+
if (!symbol)
|
|
17
|
+
return expression.text === DEFINE_FEATURE_FLAGS;
|
|
18
|
+
// An import specifier names what it imported even when the module itself does
|
|
19
|
+
// not resolve, which is every project whose deps are not installed yet.
|
|
20
|
+
const declaration = symbol.declarations?.[0];
|
|
21
|
+
if (declaration && ts.isImportSpecifier(declaration)) {
|
|
22
|
+
return ((declaration.propertyName ?? declaration.name).text ===
|
|
23
|
+
DEFINE_FEATURE_FLAGS);
|
|
24
|
+
}
|
|
25
|
+
// Only an imported symbol can be pikku's. A local const of the same name is
|
|
26
|
+
// a helper the file wrote for itself, and resolving it by name alone would
|
|
27
|
+
// claim it.
|
|
28
|
+
if (!(symbol.flags & ts.SymbolFlags.Alias))
|
|
29
|
+
return false;
|
|
30
|
+
const resolved = checker.getAliasedSymbol(symbol) ?? symbol;
|
|
31
|
+
return resolved.name === DEFINE_FEATURE_FLAGS;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* The object literal a declaration's value is written as, following one level
|
|
35
|
+
* of indirection.
|
|
36
|
+
*
|
|
37
|
+
* `{ newCheckout }` and `{ newCheckout: flag }` both read naturally with the
|
|
38
|
+
* body declared above, and the flag's `anyOf` is extracted by AST — so the
|
|
39
|
+
* literal has to be found where it was written rather than the property being
|
|
40
|
+
* skipped, which would declare the flag with no capability constraint at all.
|
|
41
|
+
*/
|
|
42
|
+
const resolveObjectLiteral = (property, checker) => {
|
|
43
|
+
if (ts.isShorthandPropertyAssignment(property)) {
|
|
44
|
+
// The name of a shorthand resolves to the property, not to the value it
|
|
45
|
+
// stands for, which is what `getShorthandAssignmentValueSymbol` is for.
|
|
46
|
+
return fromSymbol(checker.getShorthandAssignmentValueSymbol(property), checker);
|
|
47
|
+
}
|
|
48
|
+
const unwrapped = unwrapAs(property.initializer);
|
|
49
|
+
if (ts.isObjectLiteralExpression(unwrapped))
|
|
50
|
+
return unwrapped;
|
|
51
|
+
if (!ts.isIdentifier(unwrapped))
|
|
52
|
+
return undefined;
|
|
53
|
+
return fromSymbol(checker.getSymbolAtLocation(unwrapped), checker);
|
|
54
|
+
};
|
|
55
|
+
const fromSymbol = (symbol, checker) => {
|
|
56
|
+
const resolved = symbol && symbol.flags & ts.SymbolFlags.Alias
|
|
57
|
+
? (checker.getAliasedSymbol(symbol) ?? symbol)
|
|
58
|
+
: symbol;
|
|
59
|
+
for (const declaration of resolved?.declarations ?? []) {
|
|
60
|
+
if (!ts.isVariableDeclaration(declaration) || !declaration.initializer) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const initializer = unwrapAs(declaration.initializer);
|
|
64
|
+
if (ts.isObjectLiteralExpression(initializer))
|
|
65
|
+
return initializer;
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
};
|
|
69
|
+
const unwrapAs = (node) => ts.isAsExpression(node) || ts.isSatisfiesExpression(node)
|
|
70
|
+
? unwrapAs(node.expression)
|
|
71
|
+
: node;
|
|
72
|
+
/**
|
|
73
|
+
* Reads an optional `anyOf: [...]` array of string literals.
|
|
74
|
+
*
|
|
75
|
+
* Absent is not the same as empty: absent means no capability constraint, which
|
|
76
|
+
* is the shape of a pure kill switch, while an empty array satisfies nobody and
|
|
77
|
+
* is rejected downstream as a declaration mistake.
|
|
78
|
+
*/
|
|
79
|
+
const extractAnyOf = (obj, flagName, logger) => {
|
|
80
|
+
const prop = obj.properties.find((p) => ts.isPropertyAssignment(p) &&
|
|
81
|
+
(ts.isIdentifier(p.name) || ts.isStringLiteral(p.name)) &&
|
|
82
|
+
p.name.text === 'anyOf');
|
|
83
|
+
if (!prop) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
if (!ts.isPropertyAssignment(prop) ||
|
|
87
|
+
!ts.isArrayLiteralExpression(prop.initializer)) {
|
|
88
|
+
logger.critical(ErrorCode.INVALID_VALUE, `Feature flag '${flagName}' must declare 'anyOf' as an array literal.`);
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
const scopes = [];
|
|
92
|
+
for (const element of prop.initializer.elements) {
|
|
93
|
+
const unwrapped = unwrapAs(element);
|
|
94
|
+
if (!ts.isStringLiteral(unwrapped)) {
|
|
95
|
+
logger.critical(ErrorCode.INVALID_VALUE, `Feature flag '${flagName}' lists a scope that is not a string literal. ` +
|
|
96
|
+
`Scopes are extracted by AST, so a computed value cannot be checked against the declared set.`);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
scopes.push(unwrapped.text);
|
|
100
|
+
}
|
|
101
|
+
return scopes;
|
|
102
|
+
};
|
|
103
|
+
export const addFeatureFlag = (logger, node, checker, state, _options) => {
|
|
104
|
+
if (!ts.isCallExpression(node)) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (!callsDefineFeatureFlags(node.expression, checker)) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const firstArg = node.arguments[0];
|
|
111
|
+
if (!firstArg) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const unwrapped = unwrapAs(firstArg);
|
|
115
|
+
if (!ts.isObjectLiteralExpression(unwrapped)) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const sourceFile = node.getSourceFile().fileName;
|
|
119
|
+
for (const prop of unwrapped.properties) {
|
|
120
|
+
const shorthand = ts.isShorthandPropertyAssignment(prop);
|
|
121
|
+
if (!shorthand && !ts.isPropertyAssignment(prop)) {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
let name;
|
|
125
|
+
if (ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name)) {
|
|
126
|
+
name = prop.name.text;
|
|
127
|
+
}
|
|
128
|
+
if (name === undefined) {
|
|
129
|
+
logger.critical(ErrorCode.NON_LITERAL_WIRE_NAME, 'A feature flag is declared with a key that is not a literal.');
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (name.length === 0) {
|
|
133
|
+
logger.critical(ErrorCode.INVALID_VALUE, 'A feature flag is declared with an empty name.');
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (name.includes(SEPARATOR)) {
|
|
137
|
+
logger.critical(ErrorCode.INVALID_VALUE, `Feature flag '${name}' contains the '${SEPARATOR}' separator. ` +
|
|
138
|
+
`'${SEPARATOR}' delimits scope ids; a flag named like a scope reads as one.`);
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const body = resolveObjectLiteral(prop, checker);
|
|
142
|
+
if (!body) {
|
|
143
|
+
logger.critical(ErrorCode.INVALID_VALUE, `Feature flag '${name}' must be an object literal, or a variable holding one. ` +
|
|
144
|
+
`'anyOf' is extracted by AST, so a value this file cannot see would declare the flag with no capability constraint.`);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
const anyOf = extractAnyOf(body, name, logger);
|
|
148
|
+
if (anyOf !== undefined && anyOf.length === 0) {
|
|
149
|
+
logger.critical(ErrorCode.INVALID_VALUE, `Feature flag '${name}' declares 'anyOf: []'. An empty list satisfies ` +
|
|
150
|
+
`nobody: omit 'anyOf' for a pure switch, or name the scopes that reveal it.`);
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const description = getPropertyValue(body, 'description');
|
|
154
|
+
state.featureFlags.files.add(sourceFile);
|
|
155
|
+
state.featureFlags.definitions.push({
|
|
156
|
+
name,
|
|
157
|
+
description: description || undefined,
|
|
158
|
+
anyOf,
|
|
159
|
+
sourceFile,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
};
|
|
@@ -57,6 +57,7 @@ export function addWireRemoteAddon(node, state, logger) {
|
|
|
57
57
|
logger.debug(`• Found wireRemoteAddon: ${name} → ${pkg} (remote)`);
|
|
58
58
|
state.rpc.wireAddonDeclarations.set(name, {
|
|
59
59
|
package: pkg,
|
|
60
|
+
file: node.getSourceFile().fileName,
|
|
60
61
|
remote: true,
|
|
61
62
|
hasAuth,
|
|
62
63
|
authCredentialId,
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type { ScenarioInstrumentationFunction } from './add/scenario-instrumenta
|
|
|
10
10
|
export { serializeInspectorState, deserializeInspectorState, } from './utils/serialize-inspector-state.js';
|
|
11
11
|
export type { SerializableInspectorState } from './utils/serialize-inspector-state.js';
|
|
12
12
|
export { filterInspectorState } from './utils/filter-inspector-state.js';
|
|
13
|
-
export { resolveDeployTarget } from './utils/resolve-deploy-target.js';
|
|
13
|
+
export { incompatibleServicesFor, resolveDeployTarget, } from './utils/resolve-deploy-target.js';
|
|
14
14
|
export { generateCustomTypes, sanitizeTypeName, } from './utils/custom-types-generator.js';
|
|
15
15
|
export { unresolvedSchemaReferences } from './utils/post-process.js';
|
|
16
16
|
export type { SurfaceUsageCounts } from './utils/extract-surface-usage.js';
|
|
@@ -24,3 +24,5 @@ export { getFilesAndMethods } from './utils/get-files-and-methods.js';
|
|
|
24
24
|
export { resolveFunctionMeta } from './utils/resolve-function-meta.js';
|
|
25
25
|
export type { SerializedWorkflowGraph, SerializedWorkflowGraphs, } from './utils/workflow/graph/index.js';
|
|
26
26
|
export { resolveCoreType } from './utils/resolve-core-type.js';
|
|
27
|
+
export { readModuleSpecifiers } from './utils/read-module-specifiers.js';
|
|
28
|
+
export { readTsconfigOutDir } from './utils/read-tsconfig-out-dir.js';
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ export { AUTH_HANDLER_FUNC_ID } from './add/add-auth.js';
|
|
|
4
4
|
export { SCENARIO_INSTRUMENTATION_FUNCTIONS, isScenarioInstrumentationFunction, } from './add/scenario-instrumentation.js';
|
|
5
5
|
export { serializeInspectorState, deserializeInspectorState, } from './utils/serialize-inspector-state.js';
|
|
6
6
|
export { filterInspectorState } from './utils/filter-inspector-state.js';
|
|
7
|
-
export { resolveDeployTarget } from './utils/resolve-deploy-target.js';
|
|
7
|
+
export { incompatibleServicesFor, resolveDeployTarget, } from './utils/resolve-deploy-target.js';
|
|
8
8
|
export { generateCustomTypes, sanitizeTypeName, } from './utils/custom-types-generator.js';
|
|
9
9
|
export { unresolvedSchemaReferences } from './utils/post-process.js';
|
|
10
10
|
export { createEmptyManifest, serializeManifest, } from './utils/contract-hashes.js';
|
|
@@ -13,3 +13,5 @@ export { deserializeDslWorkflow, deserializeGraphWorkflow, deserializeAllDslWork
|
|
|
13
13
|
export { getFilesAndMethods } from './utils/get-files-and-methods.js';
|
|
14
14
|
export { resolveFunctionMeta } from './utils/resolve-function-meta.js';
|
|
15
15
|
export { resolveCoreType } from './utils/resolve-core-type.js';
|
|
16
|
+
export { readModuleSpecifiers } from './utils/read-module-specifiers.js';
|
|
17
|
+
export { readTsconfigOutDir } from './utils/read-tsconfig-out-dir.js';
|
package/dist/inspector.js
CHANGED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export type SurfaceKind = 'function' | 'class' | 'interface' | 'type' | 'const' | 'enum' | 'namespace';
|
|
2
|
+
export type SurfaceSymbol = {
|
|
3
|
+
name: string;
|
|
4
|
+
kind: SurfaceKind;
|
|
5
|
+
declaredAt: string;
|
|
6
|
+
/** Absolute path of the declaring file, or null when it could not be found. */
|
|
7
|
+
declaredIn: string | null;
|
|
8
|
+
deprecated: boolean;
|
|
9
|
+
/** The text of the `@deprecated` tag, when it carries one. */
|
|
10
|
+
deprecatedReason?: string;
|
|
11
|
+
/** First paragraph of the symbol's JSDoc. */
|
|
12
|
+
summary?: string;
|
|
13
|
+
/** The symbol's JSDoc in full, paragraphs and examples included. */
|
|
14
|
+
docs?: string;
|
|
15
|
+
/** The type as the checker prints it, so a caller knows how to call it. */
|
|
16
|
+
signature?: string;
|
|
17
|
+
/**
|
|
18
|
+
* The shape written at the call site, one `name?: type` per entry — the
|
|
19
|
+
* properties of the object a function takes, or of the type itself. The
|
|
20
|
+
* signature names that shape; this says what is in it.
|
|
21
|
+
*/
|
|
22
|
+
members?: SurfaceMember[];
|
|
23
|
+
/** The `@example` blocks, which the documentation comment leaves out. */
|
|
24
|
+
examples?: string[];
|
|
25
|
+
/** The HTTP status an error class is registered with. */
|
|
26
|
+
status?: number;
|
|
27
|
+
};
|
|
28
|
+
export type SurfaceEntrypoint = {
|
|
29
|
+
subpath: string;
|
|
30
|
+
specifier: string;
|
|
31
|
+
entryFile: string;
|
|
32
|
+
symbols: SurfaceSymbol[];
|
|
33
|
+
};
|
|
34
|
+
export type CollectSurfaceOptions = {
|
|
35
|
+
/**
|
|
36
|
+
* Read the package's `imports` map instead of its `exports` map, taking the
|
|
37
|
+
* one key given — `#pikku/*` is what an application reaches its generated
|
|
38
|
+
* leaves through, and it is a private specifier rather than a published one.
|
|
39
|
+
*/
|
|
40
|
+
importsSubpath?: string;
|
|
41
|
+
/** Restrict collection to these subpaths, so the program stays small. */
|
|
42
|
+
subpaths?: string[];
|
|
43
|
+
/** The snippet regions an `@example snippet: name` resolves against. */
|
|
44
|
+
snippets?: Map<string, string>;
|
|
45
|
+
};
|
|
46
|
+
export declare class UnknownSnippetError extends Error {
|
|
47
|
+
constructor(name: string, symbol: string, known: string[]);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* One key of an options object: how it is written, and — where the declaring
|
|
51
|
+
* type says so — what it means. `schedule: string` is a shape; "a cron
|
|
52
|
+
* expression" is what a caller actually needs, and only the JSDoc has it.
|
|
53
|
+
*/
|
|
54
|
+
export type SurfaceMember = {
|
|
55
|
+
line: string;
|
|
56
|
+
doc?: string;
|
|
57
|
+
};
|
|
58
|
+
export declare const collectSurface: (packageDir: string, { importsSubpath, subpaths, snippets }?: CollectSurfaceOptions) => Promise<SurfaceEntrypoint[]>;
|