@telorun/analyzer 0.57.0 → 0.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +91 -9
- package/dist/cel-environment.d.ts.map +1 -1
- package/dist/cel-environment.js +6 -3
- package/dist/definition-registry.d.ts +5 -0
- package/dist/definition-registry.d.ts.map +1 -1
- package/dist/definition-registry.js +9 -0
- package/dist/index.d.ts +11 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/invocation-contract.d.ts +58 -13
- package/dist/invocation-contract.d.ts.map +1 -1
- package/dist/invocation-contract.js +123 -46
- package/dist/loaded-types.d.ts +13 -0
- package/dist/loaded-types.d.ts.map +1 -1
- package/dist/manifest-loader.d.ts +8 -1
- package/dist/manifest-loader.d.ts.map +1 -1
- package/dist/manifest-loader.js +33 -6
- package/dist/migrations/driver.d.ts +69 -0
- package/dist/migrations/driver.d.ts.map +1 -0
- package/dist/migrations/driver.js +200 -0
- package/dist/migrations/entries/index.d.ts +3 -0
- package/dist/migrations/entries/index.d.ts.map +1 -0
- package/dist/migrations/entries/index.js +9 -0
- package/dist/migrations/entries/normalize-value-types.json +48 -0
- package/dist/migrations/entries/ref-slot-scalar-type.json +20 -0
- package/dist/migrations/entry-data.d.ts +25 -0
- package/dist/migrations/entry-data.d.ts.map +1 -0
- package/dist/migrations/entry-data.js +171 -0
- package/dist/migrations/index.d.ts +22 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +19 -0
- package/dist/migrations/match.d.ts +162 -0
- package/dist/migrations/match.d.ts.map +1 -0
- package/dist/migrations/match.js +295 -0
- package/dist/migrations/patch.d.ts +68 -0
- package/dist/migrations/patch.d.ts.map +1 -0
- package/dist/migrations/patch.js +236 -0
- package/dist/migrations/provenance.d.ts +25 -0
- package/dist/migrations/provenance.d.ts.map +1 -0
- package/dist/migrations/provenance.js +118 -0
- package/dist/migrations/registry.d.ts +35 -0
- package/dist/migrations/registry.d.ts.map +1 -0
- package/dist/migrations/registry.js +35 -0
- package/dist/migrations/report.d.ts +28 -0
- package/dist/migrations/report.d.ts.map +1 -0
- package/dist/migrations/report.js +144 -0
- package/dist/migrations/types.d.ts +115 -0
- package/dist/migrations/types.d.ts.map +1 -0
- package/dist/migrations/types.js +24 -0
- package/dist/migrations/yaml-edit.d.ts +21 -0
- package/dist/migrations/yaml-edit.d.ts.map +1 -0
- package/dist/migrations/yaml-edit.js +245 -0
- package/dist/parse-loaded-file.d.ts +8 -0
- package/dist/parse-loaded-file.d.ts.map +1 -1
- package/dist/parse-loaded-file.js +22 -13
- package/dist/resolve-schema-type-refs.d.ts +29 -12
- package/dist/resolve-schema-type-refs.d.ts.map +1 -1
- package/dist/resolve-schema-type-refs.js +89 -16
- package/dist/schema-compat.d.ts +53 -9
- package/dist/schema-compat.d.ts.map +1 -1
- package/dist/schema-compat.js +245 -66
- package/dist/schema-region.d.ts +33 -0
- package/dist/schema-region.d.ts.map +1 -0
- package/dist/schema-region.js +45 -0
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/validate-cel-context.d.ts.map +1 -1
- package/dist/validate-cel-context.js +97 -15
- package/dist/validate-step-inputs.d.ts +8 -1
- package/dist/validate-step-inputs.d.ts.map +1 -1
- package/dist/validate-step-inputs.js +47 -2
- package/dist/validate-value-type-slots.d.ts +43 -0
- package/dist/validate-value-type-slots.d.ts.map +1 -0
- package/dist/validate-value-type-slots.js +142 -0
- package/dist/value-type-keyword.d.ts +60 -0
- package/dist/value-type-keyword.d.ts.map +1 -0
- package/dist/value-type-keyword.js +119 -0
- package/dist/yaml-source-edit.d.ts +56 -0
- package/dist/yaml-source-edit.d.ts.map +1 -0
- package/dist/yaml-source-edit.js +93 -0
- package/package.json +3 -3
- package/src/analyzer.ts +99 -6
- package/src/cel-environment.ts +6 -3
- package/src/definition-registry.ts +10 -0
- package/src/index.ts +34 -3
- package/src/invocation-contract.ts +134 -48
- package/src/loaded-types.ts +13 -0
- package/src/manifest-loader.ts +37 -6
- package/src/migrations/driver.ts +262 -0
- package/src/migrations/entries/index.ts +10 -0
- package/src/migrations/entries/normalize-value-types.json +48 -0
- package/src/migrations/entries/ref-slot-scalar-type.json +20 -0
- package/src/migrations/entry-data.ts +207 -0
- package/src/migrations/index.ts +22 -0
- package/src/migrations/match.ts +382 -0
- package/src/migrations/patch.ts +265 -0
- package/src/migrations/provenance.ts +167 -0
- package/src/migrations/registry.ts +40 -0
- package/src/migrations/report.ts +169 -0
- package/src/migrations/types.ts +144 -0
- package/src/migrations/yaml-edit.ts +260 -0
- package/src/parse-loaded-file.ts +31 -12
- package/src/resolve-schema-type-refs.ts +93 -16
- package/src/schema-compat.ts +277 -75
- package/src/schema-region.ts +46 -0
- package/src/types.ts +17 -0
- package/src/validate-cel-context.ts +117 -15
- package/src/validate-step-inputs.ts +56 -1
- package/src/validate-value-type-slots.ts +182 -0
- package/src/value-type-keyword.ts +135 -0
- package/src/yaml-source-edit.ts +106 -0
- package/dist/binary-slot.d.ts +0 -39
- package/dist/binary-slot.d.ts.map +0 -1
- package/dist/binary-slot.js +0 -58
- package/src/binary-slot.ts +0 -71
package/dist/analyzer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
|
package/dist/analyzer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { canonicalTypeSchemaId, OBSERVED_STATE_KEY } from "@telorun/sdk";
|
|
2
|
-
import { defaultRegistry, isRefSentinel, isTaggedSentinel, } from "@telorun/templating";
|
|
2
|
+
import { defaultRegistry, isRefSentinel, isTaggedSentinel, plainChainOf, } from "@telorun/templating";
|
|
3
3
|
import { AliasResolver, moduleScopedDefResolver, scopeResolverForModule, } from "./alias-resolver.js";
|
|
4
4
|
import { buildCelEnvironment, buildImportInputCelEnvironment, buildTypedCelEnvironment, } from "./cel-environment.js";
|
|
5
5
|
import { DefinitionRegistry } from "./definition-registry.js";
|
|
@@ -19,10 +19,11 @@ import { resolveSchemaRefKinds } from "./resolve-schema-ref-kinds.js";
|
|
|
19
19
|
import { runZoneAnalysis } from "./resolve-zone-requirements.js";
|
|
20
20
|
import { validateZoneSlotDeclarations } from "./validate-zone-slots.js";
|
|
21
21
|
import { validateDynamicSelectors, validateRefSlotDeclarations, } from "./validate-ref-slots.js";
|
|
22
|
+
import { validateValueTypeSlots, } from "./validate-value-type-slots.js";
|
|
22
23
|
import { resolveSchemaTypeRefs } from "./resolve-schema-type-refs.js";
|
|
23
24
|
import { validateSchemaTypeRefs } from "./validate-schema-type-refs.js";
|
|
24
25
|
import { rewriteSyntheticOrigins } from "./rewrite-synthetic-origins.js";
|
|
25
|
-
import { celTypeSatisfiesJsonSchema, substituteCelFields, validateAgainstSchema, } from "./schema-compat.js";
|
|
26
|
+
import { celTypeSatisfiesJsonSchema, checkSchemaCompatibility, navigateSchemaToExprPath, substituteCelFields, validateAgainstSchema, } from "./schema-compat.js";
|
|
26
27
|
import { collectValueSchemaIssues } from "./validate-value-schema.js";
|
|
27
28
|
import { DiagnosticSeverity } from "./types.js";
|
|
28
29
|
import { extractAccessChains, extractCelRegionScopes, getManifestItem, pathMatchesScope, resolveContextAnnotations, resolveTypeFieldToSchema, } from "./validate-cel-context.js";
|
|
@@ -983,6 +984,18 @@ export class StaticAnalyzer {
|
|
|
983
984
|
const refConstraintIssues = [];
|
|
984
985
|
const refSlotIssues = [];
|
|
985
986
|
const zoneSlotIssues = [];
|
|
987
|
+
// `x-telo-type` is checked on EVERY manifest, not only on definition docs: a
|
|
988
|
+
// schema fragment is written wherever a kind declares a schema-valued field,
|
|
989
|
+
// so an inline `inputType:` on an ordinary resource carries one just as a
|
|
990
|
+
// definition's `schema:` does. Same scoping as every other schema issue —
|
|
991
|
+
// the entry's own modules, since a dependency is not the consumer's to fix.
|
|
992
|
+
const valueTypeSlotIssues = [];
|
|
993
|
+
for (const m of manifests) {
|
|
994
|
+
const declaringModule = m.metadata?.module;
|
|
995
|
+
if (!declaringModule || rootModules.has(declaringModule)) {
|
|
996
|
+
valueTypeSlotIssues.push(...validateValueTypeSlots(m));
|
|
997
|
+
}
|
|
998
|
+
}
|
|
986
999
|
for (const m of manifests) {
|
|
987
1000
|
if (m.kind !== "Telo.Definition" && m.kind !== "Telo.Abstract")
|
|
988
1001
|
continue;
|
|
@@ -1117,6 +1130,26 @@ export class StaticAnalyzer {
|
|
|
1117
1130
|
// mid-migration, and this reports what leniency would silently absorb.
|
|
1118
1131
|
for (const issue of refSlotIssues)
|
|
1119
1132
|
diagnostics.push(refSlotIssueDiagnostic(issue));
|
|
1133
|
+
// The same split for `x-telo-type`. Its reader returns a slot with no
|
|
1134
|
+
// entry for a name it does not know, which is what an unrecognized brand
|
|
1135
|
+
// used to do SILENTLY — the slot simply lost its identity.
|
|
1136
|
+
for (const issue of valueTypeSlotIssues) {
|
|
1137
|
+
diagnostics.push({
|
|
1138
|
+
severity: DiagnosticSeverity.Error,
|
|
1139
|
+
code: issue.code,
|
|
1140
|
+
source: SOURCE,
|
|
1141
|
+
message: issue.message,
|
|
1142
|
+
data: {
|
|
1143
|
+
resource: {
|
|
1144
|
+
kind: issue.manifest.kind,
|
|
1145
|
+
name: issue.manifest.metadata?.name,
|
|
1146
|
+
},
|
|
1147
|
+
filePath: issue.manifest.metadata?.source,
|
|
1148
|
+
path: issue.path,
|
|
1149
|
+
...(issue.fix ? { fix: issue.fix } : {}),
|
|
1150
|
+
},
|
|
1151
|
+
});
|
|
1152
|
+
}
|
|
1120
1153
|
// Same split for the two zone annotations. Unreadable ones fail in
|
|
1121
1154
|
// OPPOSITE directions — a dropped requirement is silently unenforced, a
|
|
1122
1155
|
// dropped provision invents failures — so neither can be left to
|
|
@@ -1371,6 +1404,11 @@ export class StaticAnalyzer {
|
|
|
1371
1404
|
// `collectCelValueSlots`.
|
|
1372
1405
|
const celReturnSlots = [];
|
|
1373
1406
|
const celTypeByPath = new Map();
|
|
1407
|
+
// The schema an expression RESOLVES TO, beside the CEL type it carries. Both
|
|
1408
|
+
// are needed and neither replaces the other: the CEL type answers "does this
|
|
1409
|
+
// fit the slot at all", the schema answers "do their type arguments agree",
|
|
1410
|
+
// which cel-js cannot express because it types by constructor identity.
|
|
1411
|
+
const celSourceSchemaByPath = new Map();
|
|
1374
1412
|
// Context-free typed environments, one per manifest. Reused across every
|
|
1375
1413
|
// expression in it — see the build site for why a matched context opts out.
|
|
1376
1414
|
const typedEnvByManifest = new Map();
|
|
@@ -1638,12 +1676,14 @@ export class StaticAnalyzer {
|
|
|
1638
1676
|
if (e.definition?.schema) {
|
|
1639
1677
|
const stepName = m.metadata?.name;
|
|
1640
1678
|
const stepFile = m.metadata?.source;
|
|
1641
|
-
for (const issue of collectStepInputIssues(m, e.definition.schema, allManifests, defs, aliases, { aliasesByModule, rootModules })) {
|
|
1679
|
+
for (const issue of collectStepInputIssues(m, e.definition.schema, allManifests, defs, aliases, { aliasesByModule, rootModules }, celStepContextSchema)) {
|
|
1642
1680
|
diagnostics.push({
|
|
1643
1681
|
severity: DiagnosticSeverity.Error,
|
|
1644
|
-
code: "CONTRACT_INPUTS_MISMATCH",
|
|
1682
|
+
code: issue.code ?? "CONTRACT_INPUTS_MISMATCH",
|
|
1645
1683
|
source: SOURCE,
|
|
1646
|
-
message:
|
|
1684
|
+
message: issue.code
|
|
1685
|
+
? `${m.kind}/${stepName}: inputs at '${issue.path}' flow into ${issue.targetLabel} with disagreeing type arguments: ${issue.message}`
|
|
1686
|
+
: `${m.kind}/${stepName}: inputs at '${issue.path}' do not satisfy ${issue.targetLabel}'s declared inputType: ${issue.message}`,
|
|
1647
1687
|
data: {
|
|
1648
1688
|
resource: { kind: m.kind, name: stepName ?? "" },
|
|
1649
1689
|
filePath: stepFile,
|
|
@@ -1895,6 +1935,30 @@ export class StaticAnalyzer {
|
|
|
1895
1935
|
celTypeByPath.set(m, (byPath = new Map()));
|
|
1896
1936
|
byPath.set(path, result.type);
|
|
1897
1937
|
}
|
|
1938
|
+
// The producer half of the type-argument check. A CEL type is a bare
|
|
1939
|
+
// name — cel-js types by constructor identity, so a byte stream and a
|
|
1940
|
+
// string stream are one CEL type and always will be — so the argument
|
|
1941
|
+
// comparison is a parallel pass over the SCHEMAS the analyzer already
|
|
1942
|
+
// walks. This is where the producer's schema is in hand: navigating
|
|
1943
|
+
// the expression's chain into its context schema is exactly "the
|
|
1944
|
+
// producer's outputType at the expression's tail".
|
|
1945
|
+
//
|
|
1946
|
+
// Only a PLAIN CHAIN is navigated — `steps.encode.result.output`, the
|
|
1947
|
+
// shape a wiring site actually takes. An expression that computes
|
|
1948
|
+
// rather than names has no schema to read off the context, so it
|
|
1949
|
+
// records nothing and no argument check fires: silence where the
|
|
1950
|
+
// analyzer knows least is the conservative direction, and the same one
|
|
1951
|
+
// `x-telo-step-context`'s pure-`value` typing takes.
|
|
1952
|
+
const chain = effectiveContext ? plainChainOf(`\${{${expr}}}`) : undefined;
|
|
1953
|
+
if (chain) {
|
|
1954
|
+
const produced = navigateSchemaToExprPath(effectiveContext, chain);
|
|
1955
|
+
if (produced) {
|
|
1956
|
+
let byPath = celSourceSchemaByPath.get(m);
|
|
1957
|
+
if (!byPath)
|
|
1958
|
+
celSourceSchemaByPath.set(m, (byPath = new Map()));
|
|
1959
|
+
byPath.set(path, produced);
|
|
1960
|
+
}
|
|
1961
|
+
}
|
|
1898
1962
|
// A non-deterministic call in a compile-eval field is baked once at
|
|
1899
1963
|
// load: `nowIso()` there freezes at boot. Sometimes that is the
|
|
1900
1964
|
// intent (a boot timestamp, a run id), so it warns rather than
|
|
@@ -1965,14 +2029,32 @@ export class StaticAnalyzer {
|
|
|
1965
2029
|
const type = celTypeByPath.get(slot.manifest)?.get(slot.path);
|
|
1966
2030
|
if (type === undefined)
|
|
1967
2031
|
continue;
|
|
1968
|
-
if (celTypeSatisfiesJsonSchema(type.split("<")[0], slot.schema))
|
|
2032
|
+
if (!celTypeSatisfiesJsonSchema(type.split("<")[0], slot.schema)) {
|
|
2033
|
+
const expected = slot.schema["x-telo-type"] ?? slot.schema.type ?? "unknown";
|
|
2034
|
+
diagnostics.push({
|
|
2035
|
+
severity: DiagnosticSeverity.Error,
|
|
2036
|
+
code: "CEL_TYPE_ERROR",
|
|
2037
|
+
source: SOURCE,
|
|
2038
|
+
message: `${slot.resource.kind}/${slot.resource.name}: CEL at '${slot.path}' returns '${type}' but the field expects '${expected}'.`,
|
|
2039
|
+
data: { resource: slot.resource, filePath: slot.filePath, path: slot.path },
|
|
2040
|
+
});
|
|
2041
|
+
continue;
|
|
2042
|
+
}
|
|
2043
|
+
// The type fits; do its ARGUMENTS agree? Covariant and gradual — an
|
|
2044
|
+
// omitted argument is *any* in both directions, so an unmigrated producer
|
|
2045
|
+
// or consumer is never reported, and only a definite conflict is.
|
|
2046
|
+
const produced = celSourceSchemaByPath.get(slot.manifest)?.get(slot.path);
|
|
2047
|
+
if (!produced)
|
|
2048
|
+
continue;
|
|
2049
|
+
const { compatible, issues } = checkSchemaCompatibility(produced, slot.schema, (ref) => defs.schemaForId(ref));
|
|
2050
|
+
if (compatible)
|
|
1969
2051
|
continue;
|
|
1970
|
-
const expected = slot.schema["x-telo-type"] ?? slot.schema.type ?? "unknown";
|
|
1971
2052
|
diagnostics.push({
|
|
1972
2053
|
severity: DiagnosticSeverity.Error,
|
|
1973
|
-
code: "
|
|
2054
|
+
code: "CEL_TYPE_ARGUMENT_MISMATCH",
|
|
1974
2055
|
source: SOURCE,
|
|
1975
|
-
message: `${slot.resource.kind}/${slot.resource.name}: CEL at '${slot.path}'
|
|
2056
|
+
message: `${slot.resource.kind}/${slot.resource.name}: CEL at '${slot.path}' produces a value ` +
|
|
2057
|
+
`whose type arguments disagree with the field's: ${issues.join("; ")}.`,
|
|
1976
2058
|
data: { resource: slot.resource, filePath: slot.filePath, path: slot.path },
|
|
1977
2059
|
});
|
|
1978
2060
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cel-environment.d.ts","sourceRoot":"","sources":["../src/cel-environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"cel-environment.d.ts","sourceRoot":"","sources":["../src/cel-environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAarD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;uEASuE;AACvE,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,gBAAgB,EAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAI/C,kBAAkB,CAAC,EAAE,gBAAgB,GACpC,WAAW,CAsEb;AAuBD;;;;;;8DAM8D;AAC9D,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,WAAW,EACpB,cAAc,EAAE,gBAAgB,GAAG,SAAS,GAC3C,WAAW,CAwBb"}
|
package/dist/cel-environment.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { jsonSchemaToCelType, VALUE_BRAND_BASE } from "./schema-compat.js";
|
|
2
2
|
/** Transport protocol on a `ports` entry → the nominal CEL brand its resolved
|
|
3
|
-
* value carries. Mirrors the `protocol` enum in the Application schema
|
|
3
|
+
* value carries. Mirrors the `protocol` enum in the Application schema, and
|
|
4
|
+
* names the value types by their canonical `Telo.`-qualified names — the same
|
|
5
|
+
* spelling an author writes at `x-telo-type`, so a branded port and a branded
|
|
6
|
+
* field are comparable by name with nothing in between to translate. */
|
|
4
7
|
const PORT_PROTOCOL_BRAND = {
|
|
5
|
-
tcp: "TcpPort",
|
|
6
|
-
udp: "UdpPort",
|
|
8
|
+
tcp: "Telo.TcpPort",
|
|
9
|
+
udp: "Telo.UdpPort",
|
|
7
10
|
};
|
|
8
11
|
export { buildCelEnvironment } from "@telorun/templating";
|
|
9
12
|
/** Clone `baseEnv` and register typed variable declarations so that
|
|
@@ -55,6 +55,11 @@ export declare class DefinitionRegistry {
|
|
|
55
55
|
/** True when a schema is registered under `id` (a canonical `telo://` type id
|
|
56
56
|
* or a definition `$id`). Used to flag schema `$ref`s that resolve to nothing. */
|
|
57
57
|
hasSchemaId(id: string): boolean;
|
|
58
|
+
/** The schema registered under `id`, for a structural comparison that must see
|
|
59
|
+
* THROUGH a named shape. Declaring a shape once and referencing it is the
|
|
60
|
+
* sanctioned way to reuse one, so a comparator that cannot follow the
|
|
61
|
+
* reference judges two opaque nodes and learns nothing. */
|
|
62
|
+
schemaForId(id: string): Record<string, any> | undefined;
|
|
58
63
|
/** Validates data against a schema using this registry's AJV instance, which has all
|
|
59
64
|
* registered definition schemas loaded — enabling cross-module $ref resolution.
|
|
60
65
|
* A compile failure returns `[]` here; it is surfaced loudly (once, on the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition-registry.d.ts","sourceRoot":"","sources":["../src/definition-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAIlC,+EAA+E;AAC/E,qBAAa,kBAAkB;;IAK7B;;sFAEkF;IAClF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD;;mFAE+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IAEzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyC;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAClE,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAC1D;;;;wEAIoE;IACpE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IAEzD,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAoC9C,OAAO,CAAC,aAAa;IASrB;;;;;;;;;;;;;2FAauF;IACvF,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAK1E;;;;;;;;;;gFAU4E;IAC5E,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IAQzE;uFACmF;IACnF,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;oFAIgF;IAChF,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE;IAWtE;;;;;;iCAM6B;IAC7B,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS;IASnE;;;;4EAIwE;IACxE,OAAO,CAAC,iBAAiB;IAkBzB;;;;;;;;;;;;;;4BAcwB;IACxB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAShD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIrD;;;uCAGmC;IACnC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAWxD,gGAAgG;IAChG,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,GACvD,iBAAiB,GAAG,SAAS;IAOhC;;;;;;;;qFAQiF;IACjF,2BAA2B,CACzB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,aAAa,EACtB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GAC1C,iBAAiB,GAAG,SAAS;IAkChC,OAAO,CAAC,uBAAuB;IA+B/B;;qEAEiE;IACjE,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAgBxD,KAAK,IAAI,MAAM,EAAE;CAGlB"}
|
|
1
|
+
{"version":3,"file":"definition-registry.d.ts","sourceRoot":"","sources":["../src/definition-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAIlC,+EAA+E;AAC/E,qBAAa,kBAAkB;;IAK7B;;sFAEkF;IAClF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD;;mFAE+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IAEzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyC;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAClE,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAC1D;;;;wEAIoE;IACpE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IAEzD,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAoC9C,OAAO,CAAC,aAAa;IASrB;;;;;;;;;;;;;2FAauF;IACvF,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAK1E;;;;;;;;;;gFAU4E;IAC5E,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IAQzE;uFACmF;IACnF,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIhC;;;gEAG4D;IAC5D,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS;IAMxD;;;;oFAIgF;IAChF,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE;IAWtE;;;;;;iCAM6B;IAC7B,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS;IASnE;;;;4EAIwE;IACxE,OAAO,CAAC,iBAAiB;IAkBzB;;;;;;;;;;;;;;4BAcwB;IACxB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAShD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIrD;;;uCAGmC;IACnC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAWxD,gGAAgG;IAChG,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,GACvD,iBAAiB,GAAG,SAAS;IAOhC;;;;;;;;qFAQiF;IACjF,2BAA2B,CACzB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,aAAa,EACtB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GAC1C,iBAAiB,GAAG,SAAS;IAkChC,OAAO,CAAC,uBAAuB;IA+B/B;;qEAEiE;IACjE,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAgBxD,KAAK,IAAI,MAAM,EAAE;CAGlB"}
|
|
@@ -117,6 +117,15 @@ export class DefinitionRegistry {
|
|
|
117
117
|
hasSchemaId(id) {
|
|
118
118
|
return this.registeredSchemaIds.has(id) || this.ajv.getSchema(id) !== undefined;
|
|
119
119
|
}
|
|
120
|
+
/** The schema registered under `id`, for a structural comparison that must see
|
|
121
|
+
* THROUGH a named shape. Declaring a shape once and referencing it is the
|
|
122
|
+
* sanctioned way to reuse one, so a comparator that cannot follow the
|
|
123
|
+
* reference judges two opaque nodes and learns nothing. */
|
|
124
|
+
schemaForId(id) {
|
|
125
|
+
const compiled = this.ajv.getSchema(id);
|
|
126
|
+
const schema = compiled?.schema;
|
|
127
|
+
return schema && typeof schema === "object" ? schema : undefined;
|
|
128
|
+
}
|
|
120
129
|
/** Validates data against a schema using this registry's AJV instance, which has all
|
|
121
130
|
* registered definition schemas loaded — enabling cross-module $ref resolution.
|
|
122
131
|
* A compile failure returns `[]` here; it is surfaced loudly (once, on the
|
package/dist/index.d.ts
CHANGED
|
@@ -13,8 +13,8 @@ export { moduleScopedDefResolver, scopeResolverForModule } from "./alias-resolve
|
|
|
13
13
|
export type { ModuleScopes } from "./alias-resolver.js";
|
|
14
14
|
export { ancestorChain, contractDeclarer, controllerBearingAncestor, effectiveAuthorSchema, effectiveContractField, effectiveStatusSchema, hasOwnControllerOrTemplate, inheritedCapability, isInheritedDelegation, mappingFieldFor, needsContractMapping, resolveParent, } from "./extends-resolution.js";
|
|
15
15
|
export type { ContractDirection, DefResolver } from "./extends-resolution.js";
|
|
16
|
-
export { defaultBearingPaths, PERMISSIVE_CONTRACT, resolveContract, resolveContractSchema,
|
|
17
|
-
export type { ContractOrigin, ContractScope, ResolvedContract } from "./invocation-contract.js";
|
|
16
|
+
export { defaultBearingPaths, declaredScalarPaths, PERMISSIVE_CONTRACT, resolveContract, resolveContractSchema, withLiveValuesSkipped, } from "./invocation-contract.js";
|
|
17
|
+
export type { ContractOrigin, ContractScope, DeclaredScalarForm, DeclaredScalarPath, ResolvedContract, } from "./invocation-contract.js";
|
|
18
18
|
export { hasIntermediateWildcard, parseRedactionPath, RedactionPathError, } from "./redaction-path.js";
|
|
19
19
|
export type { RedactionSegment } from "./redaction-path.js";
|
|
20
20
|
export { buildCallGraph, projectToPairs, resourceId } from "./call-graph.js";
|
|
@@ -23,7 +23,9 @@ export { buildReferenceFieldMap, isRefEntry, isScopeEntry } from "./reference-fi
|
|
|
23
23
|
export type { ReferenceFieldMap, RefFieldEntry } from "./reference-field-map.js";
|
|
24
24
|
export { hasDeclaredUse, isRefSlot, isRefUse, possibleUses, readRefSlot, REF_USES, refSlotAnnotation, rewriteRefSlotKinds, transfersControl, } from "./ref-slot.js";
|
|
25
25
|
export type { RefSlot, RefUse, RefUseCases } from "./ref-slot.js";
|
|
26
|
-
export {
|
|
26
|
+
export { ANNOTATION_KEYWORDS, registerTeloKeywords, valueTypeKeyword, } from "./value-type-keyword.js";
|
|
27
|
+
export { applyTextEdits, isPlainSafe, quoteStyleOf, renderFixReplacement, } from "./yaml-source-edit.js";
|
|
28
|
+
export type { QuoteStyle, TextEdit } from "./yaml-source-edit.js";
|
|
27
29
|
export { hasProvidesZone, hasRequiresZone, readProvidesZone, readRequiresZone, rewriteRequiresZoneKind, } from "./zone-slot.js";
|
|
28
30
|
export type { ProvidesZoneSlot, RequiresZoneSlot } from "./zone-slot.js";
|
|
29
31
|
export { deriveLibraryExportRequirements, projectZoneRequirements, runZoneAnalysis, zoneDocumentsSignature, } from "./resolve-zone-requirements.js";
|
|
@@ -33,6 +35,10 @@ export { validateZoneSlotDeclarations } from "./validate-zone-slots.js";
|
|
|
33
35
|
export type { ZoneSlotIssue } from "./validate-zone-slots.js";
|
|
34
36
|
export { validateDynamicSelectors, validateRefSlotDeclarations } from "./validate-ref-slots.js";
|
|
35
37
|
export type { RefSlotIssue } from "./validate-ref-slots.js";
|
|
38
|
+
export { validateValueTypeSlots } from "./validate-value-type-slots.js";
|
|
39
|
+
export type { ValueTypeSlotIssue } from "./validate-value-type-slots.js";
|
|
40
|
+
export { checkSchemaCompatibility, selectUnionBranch } from "./schema-compat.js";
|
|
41
|
+
export type { CompatibilityResult } from "./schema-compat.js";
|
|
36
42
|
export { visitManifest } from "./manifest-visitor.js";
|
|
37
43
|
export type { CelSiteEvent, ManifestVisitor, RefSiteEvent, ResourceEnterEvent, ResourceExitEvent, ScopeBoundaryEvent, SchemaFromSiteEvent, VisitOptions, } from "./manifest-visitor.js";
|
|
38
44
|
export { Loader } from "./manifest-loader.js";
|
|
@@ -40,6 +46,8 @@ export { isModuleKind, MODULE_KINDS } from "./module-kinds.js";
|
|
|
40
46
|
export type { ModuleKind } from "./module-kinds.js";
|
|
41
47
|
export { parseLoadedFile } from "./parse-loaded-file.js";
|
|
42
48
|
export type { ParseOptions } from "./parse-loaded-file.js";
|
|
49
|
+
export { CORE_MIGRATIONS, migrateFileText, migrateManifests, NO_MIGRATIONS, parseMigrationEntry, remapMigratedPaths, } from "./migrations/index.js";
|
|
50
|
+
export type { FileMigrations, MigrationEntry, MigrationRewrite } from "./migrations/index.js";
|
|
43
51
|
export { desugarLoadedFile, inlineImportManifests } from "./inline-imports.js";
|
|
44
52
|
export type { SyntheticImport } from "./inline-imports.js";
|
|
45
53
|
export { compareModuleVersions, compareParsedModuleVersions, isNewerModuleVersion, isSameModuleVersion, newestModuleVersion, parseModuleVersion, } from "./module-version-order.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,YAAY,EACR,cAAc,EACd,UAAU,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,UAAU,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,gCAAgC,EAChC,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,iCAAiC,EACjC,wBAAwB,EACxB,iBAAiB,EACjB,iCAAiC,EACjC,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACtF,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,20 +7,24 @@ export { BINDINGS_ANNOTATION, bindingContextProperties, bindingDependencies, fin
|
|
|
7
7
|
export { applyObservedStateNode, buildObservedStateIndex, buildObservedStateResourcesSchema, collectRunReachableNames, observedStateRead, validateObservedStateDeclarations, OBSERVED_STATE_SCHEMA, } from "./validate-observed-state.js";
|
|
8
8
|
export { moduleScopedDefResolver, scopeResolverForModule } from "./alias-resolver.js";
|
|
9
9
|
export { ancestorChain, contractDeclarer, controllerBearingAncestor, effectiveAuthorSchema, effectiveContractField, effectiveStatusSchema, hasOwnControllerOrTemplate, inheritedCapability, isInheritedDelegation, mappingFieldFor, needsContractMapping, resolveParent, } from "./extends-resolution.js";
|
|
10
|
-
export { defaultBearingPaths, PERMISSIVE_CONTRACT, resolveContract, resolveContractSchema,
|
|
10
|
+
export { defaultBearingPaths, declaredScalarPaths, PERMISSIVE_CONTRACT, resolveContract, resolveContractSchema, withLiveValuesSkipped, } from "./invocation-contract.js";
|
|
11
11
|
export { hasIntermediateWildcard, parseRedactionPath, RedactionPathError, } from "./redaction-path.js";
|
|
12
12
|
export { buildCallGraph, projectToPairs, resourceId } from "./call-graph.js";
|
|
13
13
|
export { buildReferenceFieldMap, isRefEntry, isScopeEntry } from "./reference-field-map.js";
|
|
14
14
|
export { hasDeclaredUse, isRefSlot, isRefUse, possibleUses, readRefSlot, REF_USES, refSlotAnnotation, rewriteRefSlotKinds, transfersControl, } from "./ref-slot.js";
|
|
15
|
-
export {
|
|
15
|
+
export { ANNOTATION_KEYWORDS, registerTeloKeywords, valueTypeKeyword, } from "./value-type-keyword.js";
|
|
16
|
+
export { applyTextEdits, isPlainSafe, quoteStyleOf, renderFixReplacement, } from "./yaml-source-edit.js";
|
|
16
17
|
export { hasProvidesZone, hasRequiresZone, readProvidesZone, readRequiresZone, rewriteRequiresZoneKind, } from "./zone-slot.js";
|
|
17
18
|
export { deriveLibraryExportRequirements, projectZoneRequirements, runZoneAnalysis, zoneDocumentsSignature, } from "./resolve-zone-requirements.js";
|
|
18
19
|
export { validateZoneSlotDeclarations } from "./validate-zone-slots.js";
|
|
19
20
|
export { validateDynamicSelectors, validateRefSlotDeclarations } from "./validate-ref-slots.js";
|
|
21
|
+
export { validateValueTypeSlots } from "./validate-value-type-slots.js";
|
|
22
|
+
export { checkSchemaCompatibility, selectUnionBranch } from "./schema-compat.js";
|
|
20
23
|
export { visitManifest } from "./manifest-visitor.js";
|
|
21
24
|
export { Loader } from "./manifest-loader.js";
|
|
22
25
|
export { isModuleKind, MODULE_KINDS } from "./module-kinds.js";
|
|
23
26
|
export { parseLoadedFile } from "./parse-loaded-file.js";
|
|
27
|
+
export { CORE_MIGRATIONS, migrateFileText, migrateManifests, NO_MIGRATIONS, parseMigrationEntry, remapMigratedPaths, } from "./migrations/index.js";
|
|
24
28
|
export { desugarLoadedFile, inlineImportManifests } from "./inline-imports.js";
|
|
25
29
|
export { compareModuleVersions, compareParsedModuleVersions, isNewerModuleVersion, isSameModuleVersion, newestModuleVersion, parseModuleVersion, } from "./module-version-order.js";
|
|
26
30
|
export { reconcileModuleVersions } from "./reconcile-module-versions.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ResourceDefinition } from "@telorun/sdk";
|
|
2
2
|
import { type ContractDirection, type DefResolver } from "./extends-resolution.js";
|
|
3
3
|
export type { ContractDirection };
|
|
4
4
|
/**
|
|
@@ -65,26 +65,34 @@ export declare function resolveContract(direction: ContractDirection, manifest:
|
|
|
65
65
|
* to needing to know whether one was declared. */
|
|
66
66
|
export declare function resolveContractSchema(direction: ContractDirection, manifest: Record<string, any> | undefined, definition: ResourceDefinition | undefined, scope: ContractScope): Record<string, any>;
|
|
67
67
|
/**
|
|
68
|
-
* A copy of `schema` with every `
|
|
69
|
-
*
|
|
68
|
+
* A copy of `schema` with every `live`-typed node left unconstrained, for
|
|
69
|
+
* validating a runtime value against.
|
|
70
70
|
*
|
|
71
|
-
*
|
|
72
|
-
* `inputType` and lists it in `required`, and `Record.Stream`, `Ai`, `Tar`
|
|
73
|
-
* `Console` do the same — so a one-directional skip would walk a live
|
|
74
|
-
* with AJV on the hottest path in the runtime. That is the same defect
|
|
75
|
-
* `stripCompiledValues` walking a live `ResourceInstance` in a ref slot: a
|
|
76
|
-
* object in a declared slot is not data to be traversed.
|
|
77
|
-
*
|
|
71
|
+
* Live values travel in BOTH directions — `Codec.Encoder` declares a stream on
|
|
72
|
+
* its `inputType` and lists it in `required`, and `Record.Stream`, `Ai`, `Tar`
|
|
73
|
+
* and `Console` do the same — so a one-directional skip would walk a live
|
|
74
|
+
* `Stream` with AJV on the hottest path in the runtime. That is the same defect
|
|
75
|
+
* as `stripCompiledValues` walking a live `ResourceInstance` in a ref slot: a
|
|
76
|
+
* live object in a declared slot is not data to be traversed.
|
|
77
|
+
*
|
|
78
|
+
* EXEMPTION IS A PROPERTY OF THE TYPE, not of a position. This used to neutralize
|
|
79
|
+
* only a key it found in a `properties` map, so an array-OF-streams element was
|
|
80
|
+
* reached and left constrained even though the walk descended into `items`.
|
|
81
|
+
* Reading the exemption off the declared value type makes an item, a union branch
|
|
82
|
+
* and a property the same case, and it is one rule instead of three.
|
|
83
|
+
*
|
|
84
|
+
* The exemption is from VALIDATION, never from TYPING: a live type's declared
|
|
85
|
+
* arguments still travel through every schema-typing walk the analyzer performs.
|
|
78
86
|
*
|
|
79
87
|
* Structural (returns a new object, never mutates), and shared so the analyzer
|
|
80
88
|
* and the kernel exempt the same set.
|
|
81
89
|
*/
|
|
82
|
-
export declare function
|
|
90
|
+
export declare function withLiveValuesSkipped(schema: Record<string, any>,
|
|
83
91
|
/** Resolves a `$ref` to the schema it names. Required to see through the
|
|
84
92
|
* reference form the runtime deliberately KEEPS intact for its validator: a
|
|
85
93
|
* contract written as `{ $ref: "telo:mod/Type" }` has none of its own
|
|
86
94
|
* properties, so a walk that cannot follow the reference exempts nothing and
|
|
87
|
-
* the
|
|
95
|
+
* the live value is traversed after all. */
|
|
88
96
|
resolveRef?: (ref: string) => Record<string, any> | undefined): Record<string, any>;
|
|
89
97
|
/** Every property path in `schema` that can receive a `default:` — the paths a
|
|
90
98
|
* defaults pass may write to, and therefore exactly how far the caller's inputs
|
|
@@ -93,8 +101,45 @@ resolveRef?: (ref: string) => Record<string, any> | undefined): Record<string, a
|
|
|
93
101
|
* default would mutate the structure the caller still holds. Bounded by the
|
|
94
102
|
* schema's defaults rather than by the size of the payload. */
|
|
95
103
|
export declare function defaultBearingPaths(schema: Record<string, any>,
|
|
96
|
-
/** See {@link
|
|
104
|
+
/** See {@link withLiveValuesSkipped} — a contract kept in `$ref` form
|
|
97
105
|
* declares its defaults behind the reference, and a walk that cannot follow
|
|
98
106
|
* it would report none, leaving the caller's data shared where a fill lands. */
|
|
99
107
|
resolveRef?: (ref: string) => Record<string, any> | undefined): string[][];
|
|
108
|
+
/** The scalar form a declared node's value takes at runtime. `int64` and
|
|
109
|
+
* `double` are the two JSON scalars whose runtime representation is NOT decided
|
|
110
|
+
* by the value that arrives: a CEL integer is a BigInt and a CEL double a JS
|
|
111
|
+
* number, and both are `typeof "number" | "bigint"` away from what a declaration
|
|
112
|
+
* says they are. Everything else — string, boolean, object, array, and every
|
|
113
|
+
* `instance` value type — is already its own representation, so it is not
|
|
114
|
+
* listed and never rewritten. */
|
|
115
|
+
export type DeclaredScalarForm = "int64" | "double";
|
|
116
|
+
export interface DeclaredScalarPath {
|
|
117
|
+
readonly path: string[];
|
|
118
|
+
readonly form: DeclaredScalarForm;
|
|
119
|
+
}
|
|
120
|
+
/** Every path in `schema` whose declared type fixes a scalar representation —
|
|
121
|
+
* the leaves a value must carry in that form for the contract to be TRUE, not
|
|
122
|
+
* merely to pass.
|
|
123
|
+
*
|
|
124
|
+
* A declared shape says what the value IS, the same service a JSON Schema gives
|
|
125
|
+
* an HTTP response serializer. Telo's CEL layer takes it literally:
|
|
126
|
+
* `jsonSchemaToCelType` maps `integer` to CEL `int` and `number` to `double`,
|
|
127
|
+
* and a CEL int IS a BigInt — so a controller handing back a plain JS number at
|
|
128
|
+
* an `integer` slot makes the declaration a lie that surfaces nowhere until an
|
|
129
|
+
* expression composes it, as `result.n + 1` type-checking statically and then
|
|
130
|
+
* dying at dispatch with `no such overload: dyn<double> + int`.
|
|
131
|
+
*
|
|
132
|
+
* A VALUE TYPE is read through the same rule rather than beside it: a `json`
|
|
133
|
+
* representation refines a JSON type and contributes its `base` (so
|
|
134
|
+
* `Telo.TcpPort` is an `int64` slot), while an `instance` representation
|
|
135
|
+
* REPLACES the JSON layer — a byte buffer and a stream handle are already their
|
|
136
|
+
* own representation, nothing converts to them, and the walk stops there rather
|
|
137
|
+
* than descending into a value that is not a plain container.
|
|
138
|
+
*
|
|
139
|
+
* Bounded by the schema's declarations rather than by the size of the payload,
|
|
140
|
+
* exactly as {@link defaultBearingPaths} is: a contract declaring no such
|
|
141
|
+
* scalar walks nothing at dispatch. A union counts when it names exactly one of
|
|
142
|
+
* the two — `["integer", "null"]` is still the integer branch, while
|
|
143
|
+
* `["integer", "number"]` fixes nothing and is left alone. */
|
|
144
|
+
export declare function declaredScalarPaths(schema: Record<string, any>, resolveRef?: (ref: string) => Record<string, any> | undefined): DeclaredScalarPath[];
|
|
100
145
|
//# sourceMappingURL=invocation-contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invocation-contract.d.ts","sourceRoot":"","sources":["../src/invocation-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"invocation-contract.d.ts","sourceRoot":"","sources":["../src/invocation-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,kBAAkB,EAAe,MAAM,cAAc,CAAC;AAChF,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,WAAW,EAEjB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC;;;;;;;;;;;;GAYG;AAEH;;oCAEoC;AACpC,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB;gFAC4E;IAC5E,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B;;kEAE8D;IAC9D,iBAAiB,EAAE,WAAW,CAAC;IAC/B;;;;;;;;;OASG;IACH,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CAC9E;AAED;;uCAEuC;AACvC,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAGnD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACzC,UAAU,EAAE,kBAAkB,GAAG,SAAS,EAC1C,KAAK,EAAE,aAAa,GACnB,gBAAgB,GAAG,SAAS,CAa9B;AAED;;mDAEmD;AACnD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACzC,UAAU,EAAE,kBAAkB,GAAG,SAAS,EAC1C,KAAK,EAAE,aAAa,GACnB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAErB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;AAC3B;;;;6CAI6C;AAC7C,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAC5D,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAErB;AAoFD;;;;;gEAKgE;AAChE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;AAC3B;;iFAEiF;AACjF,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAC5D,MAAM,EAAE,EAAE,CA+BZ;AAED;;;;;;kCAMkC;AAClC,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;+DAuB+D;AAC/D,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAC5D,kBAAkB,EAAE,CAoCtB"}
|