@contractspec/module.workspace 1.56.0 → 1.57.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/ai/prompts/code-generation.d.ts.map +1 -1
- package/dist/ai/prompts/spec-creation.d.ts +0 -1
- package/dist/ai/prompts/spec-creation.d.ts.map +1 -1
- package/dist/analysis/deps/graph.d.ts +0 -1
- package/dist/analysis/deps/graph.d.ts.map +1 -1
- package/dist/analysis/deps/parse-imports.d.ts.map +1 -1
- package/dist/analysis/diff/deep-diff.d.ts +0 -1
- package/dist/analysis/diff/deep-diff.d.ts.map +1 -1
- package/dist/analysis/diff/semantic.d.ts +0 -1
- package/dist/analysis/diff/semantic.d.ts.map +1 -1
- package/dist/analysis/example-scan.d.ts +0 -1
- package/dist/analysis/example-scan.d.ts.map +1 -1
- package/dist/analysis/feature-scan.d.ts +0 -1
- package/dist/analysis/feature-scan.d.ts.map +1 -1
- package/dist/analysis/grouping.d.ts +5 -12
- package/dist/analysis/grouping.d.ts.map +1 -1
- package/dist/analysis/grouping.js +2 -2
- package/dist/analysis/grouping.js.map +1 -1
- package/dist/analysis/impact/classifier.d.ts +0 -1
- package/dist/analysis/impact/classifier.d.ts.map +1 -1
- package/dist/analysis/impact/rules.d.ts +0 -1
- package/dist/analysis/impact/rules.d.ts.map +1 -1
- package/dist/analysis/impact/types.d.ts.map +1 -1
- package/dist/analysis/snapshot/normalizer.d.ts.map +1 -1
- package/dist/analysis/snapshot/snapshot.d.ts +0 -1
- package/dist/analysis/snapshot/snapshot.d.ts.map +1 -1
- package/dist/analysis/snapshot/types.d.ts +0 -1
- package/dist/analysis/snapshot/types.d.ts.map +1 -1
- package/dist/analysis/spec-parser.d.ts +0 -1
- package/dist/analysis/spec-parser.d.ts.map +1 -1
- package/dist/analysis/spec-parsing-utils.d.ts +0 -1
- package/dist/analysis/spec-parsing-utils.d.ts.map +1 -1
- package/dist/analysis/spec-parsing-utils.js +3 -3
- package/dist/analysis/spec-parsing-utils.js.map +1 -1
- package/dist/analysis/spec-scan.d.ts +0 -1
- package/dist/analysis/spec-scan.d.ts.map +1 -1
- package/dist/analysis/utils/matchers.js +3 -3
- package/dist/analysis/utils/matchers.js.map +1 -1
- package/dist/analysis/validate/spec-structure.d.ts +0 -1
- package/dist/analysis/validate/spec-structure.d.ts.map +1 -1
- package/dist/formatter.d.ts +0 -1
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatters/spec-markdown.d.ts +0 -1
- package/dist/formatters/spec-markdown.d.ts.map +1 -1
- package/dist/formatters/spec-to-docblock.d.ts +0 -1
- package/dist/formatters/spec-to-docblock.d.ts.map +1 -1
- package/dist/templates/app-config.d.ts.map +1 -1
- package/dist/templates/data-view.d.ts.map +1 -1
- package/dist/templates/event.d.ts +0 -1
- package/dist/templates/event.d.ts.map +1 -1
- package/dist/templates/experiment.d.ts.map +1 -1
- package/dist/templates/handler.d.ts.map +1 -1
- package/dist/templates/integration-utils.js +0 -3
- package/dist/templates/integration-utils.js.map +1 -1
- package/dist/templates/integration.d.ts.map +1 -1
- package/dist/templates/knowledge.d.ts.map +1 -1
- package/dist/templates/knowledge.js +0 -1
- package/dist/templates/knowledge.js.map +1 -1
- package/dist/templates/migration.d.ts.map +1 -1
- package/dist/templates/migration.js +0 -1
- package/dist/templates/migration.js.map +1 -1
- package/dist/templates/operation.d.ts +0 -1
- package/dist/templates/operation.d.ts.map +1 -1
- package/dist/templates/presentation.d.ts +0 -1
- package/dist/templates/presentation.d.ts.map +1 -1
- package/dist/templates/telemetry.d.ts.map +1 -1
- package/dist/templates/utils.d.ts.map +1 -1
- package/dist/templates/workflow-runner.d.ts.map +1 -1
- package/dist/templates/workflow.d.ts +0 -1
- package/dist/templates/workflow.d.ts.map +1 -1
- package/dist/types/analysis-types.d.ts +0 -1
- package/dist/types/analysis-types.d.ts.map +1 -1
- package/dist/types/generation-types.d.ts +0 -1
- package/dist/types/generation-types.d.ts.map +1 -1
- package/dist/types/llm-types.d.ts +0 -1
- package/dist/types/llm-types.d.ts.map +1 -1
- package/dist/types/rulesync-types.d.ts +0 -1
- package/dist/types/rulesync-types.d.ts.map +1 -1
- package/dist/types/spec-types.d.ts +1 -2
- package/dist/types/spec-types.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-generation.d.ts","names":[],"sources":["../../../src/ai/prompts/code-generation.ts"],"
|
|
1
|
+
{"version":3,"file":"code-generation.d.ts","names":[],"sources":["../../../src/ai/prompts/code-generation.ts"],"mappings":";;AAGA;;iBAAgB,kBAAA,CAAmB,QAAA;;;AA0BnC;iBAAgB,oBAAA,CAAqB,QAAA;;;;iBA0BrB,eAAA,CAAgB,QAAA;;;;iBA2BhB,eAAA,CACd,QAAA,UACA,kBAAA,UACA,QAAA;AAHF;;;AAAA,iBA2CgB,sBAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-creation.d.ts","names":[],"sources":["../../../src/ai/prompts/spec-creation.ts"],"
|
|
1
|
+
{"version":3,"file":"spec-creation.d.ts","names":[],"sources":["../../../src/ai/prompts/spec-creation.ts"],"mappings":";;;;;;AAMA;iBAAgB,wBAAA,CACd,WAAA,UACA,IAAA,EAAM,MAAA;;;;iBA0BQ,oBAAA,CAAqB,WAAA;;;;iBAqBrB,2BAAA,CACd,WAAA,UACA,IAAA,EAAM,gBAAA;;;;iBAkCQ,eAAA,CAAA;AApChB;;;AAAA,iBAqDgB,iBAAA,CACd,UAAA,UACA,QAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","names":[],"sources":["../../../src/analysis/deps/graph.ts"],"
|
|
1
|
+
{"version":3,"file":"graph.d.ts","names":[],"sources":["../../../src/analysis/deps/graph.ts"],"mappings":";;;;;AAkCA;iBAtBgB,iBAAA,CAAkB,KAAA,EAAO,aAAA;;;;iBAsBzB,YAAA,CAAa,KAAA,EAAO,aAAA;;;;iBAoCpB,uBAAA,CACd,KAAA,EAAO,aAAA;EACJ,QAAA;EAAkB,OAAA;AAAA;;;AAgBvB;iBAAgB,KAAA,CAAM,KAAA,EAAO,aAAA;;;;iBAsBb,mBAAA,CAAA,GAAuB,aAAA;;;;iBAOvB,eAAA,CACd,KAAA,EAAO,aAAA,EACP,GAAA,UACA,IAAA,UACA,YAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-imports.d.ts","names":[],"sources":["../../../src/analysis/deps/parse-imports.ts"],"
|
|
1
|
+
{"version":3,"file":"parse-imports.d.ts","names":[],"sources":["../../../src/analysis/deps/parse-imports.ts"],"mappings":";;AAaA;;;;;;;;;;;iBAAgB,sBAAA,CACd,UAAA,UACA,aAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-diff.d.ts","names":[],"sources":["../../../src/analysis/diff/deep-diff.ts"],"
|
|
1
|
+
{"version":3,"file":"deep-diff.d.ts","names":[],"sources":["../../../src/analysis/diff/deep-diff.ts"],"mappings":";;;;;AAuBA;;UAViB,eAAA;EAWT;EATN,YAAA;EAWS;EATT,UAAA;AAAA;;;;iBAMc,aAAA,CACd,IAAA,EAAM,UAAA,EACN,IAAA,EAAM,UAAA,EACN,OAAA,GAAS,eAAA,GACR,gBAAA;;;;iBAmBa,iBAAA,CACd,UAAA,EAAY,MAAA,SAAe,aAAA,GAC3B,UAAA,EAAY,MAAA,SAAe,aAAA,GAC3B,UAAA,UACA,OAAA,GAAS,eAAA,GACR,gBAAA;;;AALH;iBAiEgB,gBAAA,CACd,IAAA,EAAM,aAAA,EACN,IAAA,EAAM,aAAA,EACN,IAAA,UACA,QAAA,GAAU,eAAA,GACT,gBAAA;;;;iBAwGa,gBAAA,CACd,IAAA,EAAM,gBAAA,EACN,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.d.ts","names":[],"sources":["../../../src/analysis/diff/semantic.ts"],"
|
|
1
|
+
{"version":3,"file":"semantic.d.ts","names":[],"sources":["../../../src/analysis/diff/semantic.ts"],"mappings":";;;;;;iBAegB,mBAAA,CACd,KAAA,UACA,KAAA,UACA,KAAA,UACA,KAAA,UACA,OAAA,GAAS,mBAAA,GACR,gBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"example-scan.d.ts","names":[],"sources":["../../src/analysis/example-scan.ts"],"
|
|
1
|
+
{"version":3,"file":"example-scan.d.ts","names":[],"sources":["../../src/analysis/example-scan.ts"],"mappings":";;;;;AAWA;iBAAgB,aAAA,CAAc,QAAA;;;;iBAOd,iBAAA,CACd,IAAA,UACA,QAAA,WACC,iBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-scan.d.ts","names":[],"sources":["../../src/analysis/feature-scan.ts"],"
|
|
1
|
+
{"version":3,"file":"feature-scan.d.ts","names":[],"sources":["../../src/analysis/feature-scan.ts"],"mappings":";;;;;AAWA;iBAAgB,aAAA,CAAc,QAAA;;;;iBAOd,iBAAA,CACd,IAAA,UACA,QAAA,WACC,iBAAA"}
|
|
@@ -2,7 +2,6 @@ import { Stability } from "../types/spec-types.js";
|
|
|
2
2
|
import { FeatureScanResult, SpecScanResult } from "../types/analysis-types.js";
|
|
3
3
|
|
|
4
4
|
//#region src/analysis/grouping.d.ts
|
|
5
|
-
|
|
6
5
|
/**
|
|
7
6
|
* Filter criteria for spec scan results.
|
|
8
7
|
*/
|
|
@@ -33,17 +32,11 @@ interface GroupedItems<T> {
|
|
|
33
32
|
* Pre-built grouping strategies for spec scan results.
|
|
34
33
|
*/
|
|
35
34
|
declare const SpecGroupingStrategies: {
|
|
36
|
-
/** Group by first tag. */
|
|
37
|
-
|
|
38
|
-
/** Group by
|
|
39
|
-
|
|
40
|
-
/** Group by
|
|
41
|
-
byDomain: (item: SpecScanResult) => string;
|
|
42
|
-
/** Group by stability. */
|
|
43
|
-
byStability: (item: SpecScanResult) => string;
|
|
44
|
-
/** Group by spec type. */
|
|
45
|
-
bySpecType: (item: SpecScanResult) => string;
|
|
46
|
-
/** Group by file directory. */
|
|
35
|
+
/** Group by first tag. */byTag: (item: SpecScanResult) => string; /** Group by first owner. */
|
|
36
|
+
byOwner: (item: SpecScanResult) => string; /** Group by domain (first segment of name). */
|
|
37
|
+
byDomain: (item: SpecScanResult) => string; /** Group by stability. */
|
|
38
|
+
byStability: (item: SpecScanResult) => string; /** Group by spec type. */
|
|
39
|
+
bySpecType: (item: SpecScanResult) => string; /** Group by file directory. */
|
|
47
40
|
byDirectory: (item: SpecScanResult) => string;
|
|
48
41
|
};
|
|
49
42
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grouping.d.ts","names":[],"sources":["../../src/analysis/grouping.ts"],"
|
|
1
|
+
{"version":3,"file":"grouping.d.ts","names":[],"sources":["../../src/analysis/grouping.ts"],"mappings":";;;;;;;UAciB,UAAA;EAMf;EAJA,IAAA;EAMA;EAJA,MAAA;EAMA;EAJA,SAAA,GAAY,SAAA;EAID;EAFX,QAAA,GAAW,cAAA;EAQS;EANpB,WAAA;AAAA;;;;KAMU,UAAA,OAAiB,IAAA,EAAM,CAAA;;AAKnC;;UAAiB,YAAA;EACf,GAAA;EACA,KAAA,EAAO,CAAA;AAAA;;;;cAMI,sBAAA;EAAA,wCAEG,cAAA;kBAGE,cAAA,aAAA;mBAGC,cAAA,aASG;sBAAA,cAAA,aAMA;qBAHD,cAAA,aAGe;sBAAd,cAAA;AAAA;;;;iBAUN,WAAA,CACd,KAAA,EAAO,cAAA,IACP,MAAA,EAAQ,UAAA,GACP,cAAA;;;;iBAiDa,UAAA,GAAA,CACd,KAAA,EAAO,CAAA,IACP,KAAA,EAAO,UAAA,CAAW,CAAA,IACjB,GAAA,SAAY,CAAA;;;;iBAmBC,iBAAA,GAAA,CACd,KAAA,EAAO,CAAA,IACP,KAAA,EAAO,UAAA,CAAW,CAAA,IACjB,YAAA,CAAa,CAAA;;;;iBAUA,iBAAA,CAAkB,KAAA,EAAO,cAAA;;;AAvFzC;iBAoGgB,mBAAA,CAAoB,KAAA,EAAO,cAAA;;;;iBAa3B,oBAAA,CAAqB,KAAA,EAAO,cAAA;;;;iBAW5B,cAAA,CACd,QAAA,EAAU,iBAAA,IACV,MAAA,EAAQ,UAAA,GACP,iBAAA"}
|
|
@@ -59,9 +59,9 @@ function groupSpecs(items, keyFn) {
|
|
|
59
59
|
*/
|
|
60
60
|
function groupSpecsToArray(items, keyFn) {
|
|
61
61
|
const map = groupSpecs(items, keyFn);
|
|
62
|
-
return Array.from(map.entries()).map(([key, items
|
|
62
|
+
return Array.from(map.entries()).map(([key, items]) => ({
|
|
63
63
|
key,
|
|
64
|
-
items
|
|
64
|
+
items
|
|
65
65
|
})).sort((a, b) => a.key.localeCompare(b.key));
|
|
66
66
|
}
|
|
67
67
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grouping.js","names":[
|
|
1
|
+
{"version":3,"file":"grouping.js","names":[],"sources":["../../src/analysis/grouping.ts"],"sourcesContent":["/**\n * Grouping and filtering utilities for ContractSpec workspace analysis.\n * Provides services to filter and group scan results.\n */\n\nimport type {\n FeatureScanResult,\n SpecScanResult,\n} from '../types/analysis-types';\nimport type { Stability } from '../types/spec-types';\n\n/**\n * Filter criteria for spec scan results.\n */\nexport interface SpecFilter {\n /** Filter by tags (item must have at least one matching tag) */\n tags?: string[];\n /** Filter by owners (item must have at least one matching owner) */\n owners?: string[];\n /** Filter by stability levels */\n stability?: Stability[];\n /** Filter by spec type */\n specType?: SpecScanResult['specType'][];\n /** Filter by name pattern (glob) */\n namePattern?: string;\n}\n\n/**\n * Grouping key function type.\n */\nexport type GroupKeyFn<T> = (item: T) => string;\n\n/**\n * Grouped items result.\n */\nexport interface GroupedItems<T> {\n key: string;\n items: T[];\n}\n\n/**\n * Pre-built grouping strategies for spec scan results.\n */\nexport const SpecGroupingStrategies = {\n /** Group by first tag. */\n byTag: (item: SpecScanResult): string => item.tags?.[0] ?? 'untagged',\n\n /** Group by first owner. */\n byOwner: (item: SpecScanResult): string => item.owners?.[0] ?? 'unowned',\n\n /** Group by domain (first segment of name). */\n byDomain: (item: SpecScanResult): string => {\n const key = item.key ?? '';\n if (key.includes('.')) {\n return key.split('.')[0] ?? 'default';\n }\n return 'default';\n },\n\n /** Group by stability. */\n byStability: (item: SpecScanResult): string => item.stability ?? 'stable',\n\n /** Group by spec type. */\n bySpecType: (item: SpecScanResult): string => item.specType,\n\n /** Group by file directory. */\n byDirectory: (item: SpecScanResult): string => {\n const parts = item.filePath.split('/');\n // Return parent directory\n return parts.slice(0, -1).join('/') || '.';\n },\n};\n\n/**\n * Filter specs by criteria.\n */\nexport function filterSpecs(\n specs: SpecScanResult[],\n filter: SpecFilter\n): SpecScanResult[] {\n return specs.filter((spec) => {\n // Filter by tags\n if (filter.tags?.length) {\n const hasMatchingTag = filter.tags.some((tag) =>\n spec.tags?.includes(tag)\n );\n if (!hasMatchingTag) return false;\n }\n\n // Filter by owners\n if (filter.owners?.length) {\n const hasMatchingOwner = filter.owners.some((owner) =>\n spec.owners?.includes(owner)\n );\n if (!hasMatchingOwner) return false;\n }\n\n // Filter by stability\n if (filter.stability?.length) {\n if (!filter.stability.includes(spec.stability ?? 'stable')) {\n return false;\n }\n }\n\n // Filter by spec type\n if (filter.specType?.length) {\n if (!filter.specType.includes(spec.specType)) {\n return false;\n }\n }\n\n // Filter by name pattern\n if (filter.namePattern) {\n const key = spec.key ?? '';\n const pattern = filter.namePattern\n .replace(/\\*/g, '.*')\n .replace(/\\?/g, '.');\n const regex = new RegExp(`^${pattern}$`, 'i');\n if (!regex.test(key)) return false;\n }\n\n return true;\n });\n}\n\n/**\n * Group specs by key function.\n */\nexport function groupSpecs<T>(\n items: T[],\n keyFn: GroupKeyFn<T>\n): Map<string, T[]> {\n const groups = new Map<string, T[]>();\n\n for (const item of items) {\n const key = keyFn(item);\n const existing = groups.get(key);\n if (existing) {\n existing.push(item);\n } else {\n groups.set(key, [item]);\n }\n }\n\n return groups;\n}\n\n/**\n * Group specs and return as array.\n */\nexport function groupSpecsToArray<T>(\n items: T[],\n keyFn: GroupKeyFn<T>\n): GroupedItems<T>[] {\n const map = groupSpecs(items, keyFn);\n return Array.from(map.entries())\n .map(([key, items]) => ({ key, items }))\n .sort((a, b) => a.key.localeCompare(b.key));\n}\n\n/**\n * Get unique tags from spec results.\n */\nexport function getUniqueSpecTags(specs: SpecScanResult[]): string[] {\n const tags = new Set<string>();\n for (const spec of specs) {\n for (const tag of spec.tags ?? []) {\n tags.add(tag);\n }\n }\n return Array.from(tags).sort();\n}\n\n/**\n * Get unique owners from spec results.\n */\nexport function getUniqueSpecOwners(specs: SpecScanResult[]): string[] {\n const owners = new Set<string>();\n for (const spec of specs) {\n for (const owner of spec.owners ?? []) {\n owners.add(owner);\n }\n }\n return Array.from(owners).sort();\n}\n\n/**\n * Get unique domains from spec results.\n */\nexport function getUniqueSpecDomains(specs: SpecScanResult[]): string[] {\n const domains = new Set<string>();\n for (const spec of specs) {\n domains.add(SpecGroupingStrategies.byDomain(spec));\n }\n return Array.from(domains).sort();\n}\n\n/**\n * Filter features by criteria.\n */\nexport function filterFeatures(\n features: FeatureScanResult[],\n filter: SpecFilter\n): FeatureScanResult[] {\n return features.filter((feature) => {\n // Filter by tags\n if (filter.tags?.length) {\n const hasMatchingTag = filter.tags.some((tag) =>\n feature.tags?.includes(tag)\n );\n if (!hasMatchingTag) return false;\n }\n\n // Filter by owners\n if (filter.owners?.length) {\n const hasMatchingOwner = filter.owners.some((owner) =>\n feature.owners?.includes(owner)\n );\n if (!hasMatchingOwner) return false;\n }\n\n // Filter by stability\n if (filter.stability?.length) {\n if (!filter.stability.includes(feature.stability ?? 'stable')) {\n return false;\n }\n }\n\n // Filter by name pattern\n if (filter.namePattern) {\n const pattern = filter.namePattern\n .replace(/\\*/g, '.*')\n .replace(/\\?/g, '.');\n const regex = new RegExp(`^${pattern}$`, 'i');\n if (!regex.test(feature.key)) return false;\n }\n\n return true;\n });\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classifier.d.ts","names":[],"sources":["../../../src/analysis/impact/classifier.ts"],"
|
|
1
|
+
{"version":3,"file":"classifier.d.ts","names":[],"sources":["../../../src/analysis/impact/classifier.ts"],"mappings":";;;;;;;;;;;;;;iBA0BgB,cAAA,CACd,SAAA,EAAW,YAAA,IACX,SAAA,EAAW,YAAA,IACX,KAAA,EAAO,gBAAA,IACP,OAAA,GAAS,eAAA,GACR,YAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","names":[],"sources":["../../../src/analysis/impact/rules.ts"],"
|
|
1
|
+
{"version":3,"file":"rules.d.ts","names":[],"sources":["../../../src/analysis/impact/rules.ts"],"mappings":";;;;;AA4FA;cAjFa,cAAA,EAAgB,UAAA;;;;cAiFhB,kBAAA,EAAoB,UAAA;;;;cA2CpB,UAAA,EAAY,UAAA;AA8BzB;;;AAAA,cAAa,aAAA,EAAe,UAAA;;AAS5B;;iBAAgB,kBAAA,CAAmB,QAAA,EAAU,cAAA,GAAiB,UAAA;;;;iBAO9C,gBAAA,CACd,KAAA;EAAS,IAAA;EAAc,WAAA;EAAqB,IAAA;AAAA,GAC5C,KAAA,GAAO,UAAA,KACN,UAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/analysis/impact/types.ts"],"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/analysis/impact/types.ts"],"mappings":";;AAOA;;;;;KAAY,cAAA;;KAGA,YAAA;;UAGK,WAAA;EAAA;EAEf,OAAA;;EAEA,WAAA;EAFA;EAIA,QAAA;EAAA;EAEA,IAAA;EAEA;EAAA,QAAA,EAAU,cAAA;EAEV;EAAA,IAAA;EAIA;EAFA,WAAA;EAIQ;EAFR,QAAA;EAMe;EAJf,QAAA;AAAA;;UAIe,aAAA;EACf,QAAA;EACA,WAAA;EACA,IAAA;EACA,KAAA;EACA,OAAA;AAAA;AAIF;AAAA,UAAiB,YAAA;;EAEf,MAAA,EAAQ,YAAA;EAMC;EAJT,WAAA;EAMmB;EAJnB,cAAA;EAJA;EAMA,OAAA,EAAS,aAAA;EAJT;EAMA,MAAA,EAAQ,WAAA;EAFR;EAIA,UAAA;IAAc,GAAA;IAAa,OAAA;IAAiB,IAAA;EAAA;EAAjB;EAE3B,YAAA;IACE,GAAA;IACA,OAAA;IACA,IAAA;EAAA;EAGF;EAAA,OAAA;EAIA;EAFA,OAAA;EAES;EAAT,SAAA;AAAA;;UAIe,eAAA;EAEf;EAAA,WAAA,GAAc,UAAA;EAEd;EAAA,oBAAA;AAAA;AAIF;AAAA,UAAiB,UAAA;;EAEf,EAAA;EAAA;EAEA,WAAA;EAEA;EAAA,QAAA,EAAU,cAAA;EAEV;EAAA,OAAA,GAAU,KAAA;IACR,IAAA;IACA,WAAA;IACA,IAAA;EAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizer.d.ts","names":[],"sources":["../../../src/analysis/snapshot/normalizer.ts"],"
|
|
1
|
+
{"version":3,"file":"normalizer.d.ts","names":[],"sources":["../../../src/analysis/snapshot/normalizer.ts"],"mappings":";;AAgBA;;;;;AA+BA;;;;;AAOA;AAPA,iBA/BgB,cAAA,CAAe,KAAA;;;;iBA+Bf,eAAA,CAAgB,KAAA;;;;iBAOhB,WAAA,CAAY,KAAA;;;;iBAQZ,SAAA;EAAsB,GAAA;EAAa,OAAA;AAAA,EAAA,CACjD,KAAA,EAAO,CAAA,KACN,CAAA;AAWH;;;AAAA,iBAAgB,UAAA,CACd,MAAA,EAAQ,MAAA,oBACP,MAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","names":[],"sources":["../../../src/analysis/snapshot/snapshot.ts"],"
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","names":[],"sources":["../../../src/analysis/snapshot/snapshot.ts"],"mappings":";;;;;;;;;;iBA2BgB,gBAAA,CACd,KAAA;EAAS,IAAA;EAAc,OAAA;AAAA,KACvB,OAAA,GAAS,eAAA,GACR,gBAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { EventRef } from "@contractspec/lib.contracts";
|
|
2
2
|
|
|
3
3
|
//#region src/analysis/snapshot/types.d.ts
|
|
4
|
-
|
|
5
4
|
/** Field type in a schema */
|
|
6
5
|
type FieldType = 'string' | 'number' | 'boolean' | 'object' | 'array' | 'enum' | 'union' | 'literal' | 'date' | 'unknown';
|
|
7
6
|
/** Schema field definition */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/analysis/snapshot/types.ts"],"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/analysis/snapshot/types.ts"],"mappings":";;;;KAUY,SAAA;;UAaK,aAAA;EACf,IAAA;EACA,IAAA,EAAM,SAAA;EACN,QAAA;EACA,QAAA;EACA,WAAA;EACA,UAAA;EACA,YAAA;EACA,KAAA,GAAQ,aAAA;EACR,UAAA,GAAa,MAAA,SAAe,aAAA;EAC5B,UAAA,GAAa,aAAA;AAAA;;UAIE,UAAA;EACf,KAAA,EAAO,MAAA,SAAe,aAAA;EACtB,MAAA,EAAQ,MAAA,SAAe,aAAA;AAAA;;UAIR,mBAAA;EACf,MAAA;EACA,IAAA;AAAA;;UAIe,iBAAA;EACf,IAAA;EACA,GAAA;EACA,OAAA;EACA,IAAA;EACA,SAAA;EACA,IAAA,GAAO,mBAAA;EACP,EAAA,EAAI,UAAA;EACJ,SAAA;EACA,aAAA,GAAgB,QAAA;AAAA;;UAID,aAAA;EACf,IAAA;EACA,GAAA;EACA,OAAA;EACA,SAAA;EACA,OAAA,EAAS,MAAA,SAAe,aAAA;AAAA;AAxB1B;AAAA,KA4BY,YAAA,GAAe,iBAAA,GAAoB,aAAA;;UAG9B,gBAAA;EA7BX;EA+BJ,OAAA;EA3BgC;EA6BhC,WAAA;EAvBO;EAyBP,SAAA;EAtBgB;EAwBhB,KAAA,EAAO,YAAA;EAxBiB;EA0BxB,IAAA;AAAA;;UAIe,eAAA;EAlCf;EAoCA,OAAA;EAnCO;EAqCP,KAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-parser.d.ts","names":[],"sources":["../../src/analysis/spec-parser.ts"],"
|
|
1
|
+
{"version":3,"file":"spec-parser.d.ts","names":[],"sources":["../../src/analysis/spec-parser.ts"],"mappings":";;;;;;iBAoBsB,kBAAA,CACpB,QAAA,WACC,OAAA,CAAQ,UAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-parsing-utils.d.ts","names":[],"sources":["../../src/analysis/spec-parsing-utils.ts"],"
|
|
1
|
+
{"version":3,"file":"spec-parsing-utils.d.ts","names":[],"sources":["../../src/analysis/spec-parsing-utils.ts"],"mappings":";;;;;;iBA0EgB,iBAAA,CACd,IAAA;EAEI,IAAA;EAAgC,GAAA;EAAa,OAAA;AAAA;;;;;;;;iBA8DnC,mBAAA,CAAoB,IAAA;EAClC,UAAA;EACA,QAAA;AAAA"}
|
|
@@ -7,7 +7,7 @@ function parsePolicy(code) {
|
|
|
7
7
|
return extractRefList(policyBlock[1], "policies") ?? [];
|
|
8
8
|
}
|
|
9
9
|
function extractRefList(code, field) {
|
|
10
|
-
const regex =
|
|
10
|
+
const regex = new RegExp(`${escapeRegex(field)}\\s*:\\s*\\[([\\s\\S]*?)\\]`);
|
|
11
11
|
const match = code.match(regex);
|
|
12
12
|
if (!match?.[1]) return void 0;
|
|
13
13
|
const inner = match[1];
|
|
@@ -24,7 +24,7 @@ function extractRefList(code, field) {
|
|
|
24
24
|
return items.length > 0 ? items : void 0;
|
|
25
25
|
}
|
|
26
26
|
function extractTestRefs(code) {
|
|
27
|
-
const regex =
|
|
27
|
+
const regex = new RegExp(`testRefs\\s*:\\s*\\[([\\s\\S]*?)\\]`);
|
|
28
28
|
const match = code.match(regex);
|
|
29
29
|
if (!match?.[1]) return void 0;
|
|
30
30
|
const inner = match[1];
|
|
@@ -64,7 +64,7 @@ function extractTestTarget(code) {
|
|
|
64
64
|
key: flatKey,
|
|
65
65
|
version: matchVersionField(targetBlock, "version")
|
|
66
66
|
};
|
|
67
|
-
const refBlockMatch = targetBlock.match(
|
|
67
|
+
const refBlockMatch = targetBlock.match(new RegExp(`${type}\\s*:\\s*\\{([\\s\\S]*?)\\}`));
|
|
68
68
|
if (!refBlockMatch?.[1]) return void 0;
|
|
69
69
|
const refBlock = refBlockMatch[1];
|
|
70
70
|
const key = matchStringField(refBlock, "key");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-parsing-utils.js","names":[],"sources":["../../src/analysis/spec-parsing-utils.ts"],"sourcesContent":["import {\n escapeRegex,\n matchStringField,\n matchVersionField,\n findMatchingDelimiter,\n} from './utils/matchers';\n\nexport function parsePolicy(code: string): { key: string; version: string }[] {\n const policyBlock = code.match(/policy\\s*:\\s*\\{([\\s\\S]*?)\\}/);\n if (!policyBlock?.[1]) return [];\n\n return extractRefList(policyBlock[1], 'policies') ?? [];\n}\n\nexport function extractRefList(\n code: string,\n field: string\n): { key: string; version: string }[] | undefined {\n const regex = new RegExp(`${escapeRegex(field)}\\\\s*:\\\\s*\\\\[([\\\\s\\\\S]*?)\\\\]`);\n const match = code.match(regex);\n if (!match?.[1]) return undefined;\n\n const inner = match[1];\n const items: { key: string; version: string }[] = [];\n\n const parts = inner.match(/\\{[\\s\\S]*?\\}/g);\n if (parts) {\n for (const part of parts) {\n const k = matchStringField(part, 'key');\n const v = matchVersionField(part, 'version');\n if (k) {\n items.push({ key: k, version: v ?? '1.0.0' });\n }\n }\n }\n\n return items.length > 0 ? items : undefined;\n}\n\nexport function extractTestRefs(\n code: string\n): { key: string; version: string; type: 'success' | 'error' }[] | undefined {\n const regex = new RegExp(`testRefs\\\\s*:\\\\s*\\\\[([\\\\s\\\\S]*?)\\\\]`);\n const match = code.match(regex);\n if (!match?.[1]) return undefined;\n\n const inner = match[1];\n const items: { key: string; version: string; type: 'success' | 'error' }[] =\n [];\n\n const parts = inner.match(/\\{[\\s\\S]*?\\}/g);\n if (parts) {\n for (const part of parts) {\n const k = matchStringField(part, 'key');\n const v = matchVersionField(part, 'version');\n const t = matchStringField(part, 'type');\n if (k) {\n items.push({\n key: k,\n version: v ?? '1.0.0',\n type: t === 'error' ? 'error' : 'success',\n });\n }\n }\n }\n\n return items.length > 0 ? items : undefined;\n}\n\n/**\n * Extract test target from a TestSpec source.\n * Parses the `target: { type: 'operation', key, version }` field OR\n * the nested format `target: { type: 'operation', operation: { key, version } }`.\n */\nexport function extractTestTarget(\n code: string\n):\n | { type: 'operation' | 'workflow'; key: string; version: string | undefined }\n | undefined {\n // Find target block start\n const targetStartMatch = code.match(/target\\s*:\\s*\\{/);\n if (!targetStartMatch || targetStartMatch.index === undefined)\n return undefined;\n\n const openBraceIndex =\n targetStartMatch.index + targetStartMatch[0].length - 1;\n const closeBraceIndex = findMatchingDelimiter(code, openBraceIndex, '{', '}');\n\n if (closeBraceIndex === -1) return undefined;\n\n const targetBlock = code.substring(openBraceIndex + 1, closeBraceIndex);\n\n // Extract the type\n const typeMatch = targetBlock.match(/type\\s*:\\s*['\"](\\w+)['\"]/);\n if (!typeMatch?.[1]) return undefined;\n\n const type = typeMatch[1];\n if (type !== 'operation' && type !== 'workflow') return undefined;\n\n // Try flat format first: { type: 'operation', key: '...', version: '...' }\n const flatKey = matchStringField(targetBlock, 'key');\n if (flatKey) {\n const flatVersion = matchVersionField(targetBlock, 'version');\n return {\n type,\n key: flatKey,\n version: flatVersion,\n };\n }\n\n // Try nested format: { type: 'operation', operation: { key: '...', version: '...' } }\n const refBlockMatch = targetBlock.match(\n new RegExp(`${type}\\\\s*:\\\\s*\\\\{([\\\\s\\\\S]*?)\\\\}`)\n );\n\n if (!refBlockMatch?.[1]) return undefined;\n\n const refBlock = refBlockMatch[1];\n\n // Extract key and version from the ref block\n const key = matchStringField(refBlock, 'key');\n if (!key) return undefined;\n\n const version = matchVersionField(refBlock, 'version');\n\n return {\n type,\n key,\n version,\n };\n}\n\n/**\n * Extract test coverage info from a TestSpec source.\n * Checks for presence of success (expectOutput) and failure (expectError) scenarios.\n * Supports both formats:\n * - New: `expectOutput: {}` and `expectError: {}`\n * - Old: `{ type: 'expectOutput', ... }` and `{ type: 'expectError', ... }`\n */\nexport function extractTestCoverage(code: string): {\n hasSuccess: boolean;\n hasError: boolean;\n} {\n // Check new format: expectOutput: or expectError: as keys\n const hasSuccessNew = /expectOutput\\s*:/.test(code);\n const hasErrorNew = /expectError\\s*:/.test(code);\n\n // Check old format: { type: 'expectOutput' } or { type: 'expectError' }\n const hasSuccessOld = /(['\"]?)type\\1\\s*:\\s*['\"]expectOutput['\"]/.test(code);\n const hasErrorOld = /(['\"]?)type\\1\\s*:\\s*['\"]expectError['\"]/.test(code);\n\n return {\n hasSuccess: hasSuccessNew || hasSuccessOld,\n hasError: hasErrorNew || hasErrorOld,\n };\n}\n"],"mappings":";;;AAOA,SAAgB,YAAY,MAAkD;CAC5E,MAAM,cAAc,KAAK,MAAM,8BAA8B;AAC7D,KAAI,CAAC,cAAc,GAAI,QAAO,EAAE;AAEhC,QAAO,eAAe,YAAY,IAAI,WAAW,IAAI,EAAE;;AAGzD,SAAgB,eACd,MACA,OACgD;CAChD,MAAM,
|
|
1
|
+
{"version":3,"file":"spec-parsing-utils.js","names":[],"sources":["../../src/analysis/spec-parsing-utils.ts"],"sourcesContent":["import {\n escapeRegex,\n matchStringField,\n matchVersionField,\n findMatchingDelimiter,\n} from './utils/matchers';\n\nexport function parsePolicy(code: string): { key: string; version: string }[] {\n const policyBlock = code.match(/policy\\s*:\\s*\\{([\\s\\S]*?)\\}/);\n if (!policyBlock?.[1]) return [];\n\n return extractRefList(policyBlock[1], 'policies') ?? [];\n}\n\nexport function extractRefList(\n code: string,\n field: string\n): { key: string; version: string }[] | undefined {\n const regex = new RegExp(`${escapeRegex(field)}\\\\s*:\\\\s*\\\\[([\\\\s\\\\S]*?)\\\\]`);\n const match = code.match(regex);\n if (!match?.[1]) return undefined;\n\n const inner = match[1];\n const items: { key: string; version: string }[] = [];\n\n const parts = inner.match(/\\{[\\s\\S]*?\\}/g);\n if (parts) {\n for (const part of parts) {\n const k = matchStringField(part, 'key');\n const v = matchVersionField(part, 'version');\n if (k) {\n items.push({ key: k, version: v ?? '1.0.0' });\n }\n }\n }\n\n return items.length > 0 ? items : undefined;\n}\n\nexport function extractTestRefs(\n code: string\n): { key: string; version: string; type: 'success' | 'error' }[] | undefined {\n const regex = new RegExp(`testRefs\\\\s*:\\\\s*\\\\[([\\\\s\\\\S]*?)\\\\]`);\n const match = code.match(regex);\n if (!match?.[1]) return undefined;\n\n const inner = match[1];\n const items: { key: string; version: string; type: 'success' | 'error' }[] =\n [];\n\n const parts = inner.match(/\\{[\\s\\S]*?\\}/g);\n if (parts) {\n for (const part of parts) {\n const k = matchStringField(part, 'key');\n const v = matchVersionField(part, 'version');\n const t = matchStringField(part, 'type');\n if (k) {\n items.push({\n key: k,\n version: v ?? '1.0.0',\n type: t === 'error' ? 'error' : 'success',\n });\n }\n }\n }\n\n return items.length > 0 ? items : undefined;\n}\n\n/**\n * Extract test target from a TestSpec source.\n * Parses the `target: { type: 'operation', key, version }` field OR\n * the nested format `target: { type: 'operation', operation: { key, version } }`.\n */\nexport function extractTestTarget(\n code: string\n):\n | { type: 'operation' | 'workflow'; key: string; version: string | undefined }\n | undefined {\n // Find target block start\n const targetStartMatch = code.match(/target\\s*:\\s*\\{/);\n if (!targetStartMatch || targetStartMatch.index === undefined)\n return undefined;\n\n const openBraceIndex =\n targetStartMatch.index + targetStartMatch[0].length - 1;\n const closeBraceIndex = findMatchingDelimiter(code, openBraceIndex, '{', '}');\n\n if (closeBraceIndex === -1) return undefined;\n\n const targetBlock = code.substring(openBraceIndex + 1, closeBraceIndex);\n\n // Extract the type\n const typeMatch = targetBlock.match(/type\\s*:\\s*['\"](\\w+)['\"]/);\n if (!typeMatch?.[1]) return undefined;\n\n const type = typeMatch[1];\n if (type !== 'operation' && type !== 'workflow') return undefined;\n\n // Try flat format first: { type: 'operation', key: '...', version: '...' }\n const flatKey = matchStringField(targetBlock, 'key');\n if (flatKey) {\n const flatVersion = matchVersionField(targetBlock, 'version');\n return {\n type,\n key: flatKey,\n version: flatVersion,\n };\n }\n\n // Try nested format: { type: 'operation', operation: { key: '...', version: '...' } }\n const refBlockMatch = targetBlock.match(\n new RegExp(`${type}\\\\s*:\\\\s*\\\\{([\\\\s\\\\S]*?)\\\\}`)\n );\n\n if (!refBlockMatch?.[1]) return undefined;\n\n const refBlock = refBlockMatch[1];\n\n // Extract key and version from the ref block\n const key = matchStringField(refBlock, 'key');\n if (!key) return undefined;\n\n const version = matchVersionField(refBlock, 'version');\n\n return {\n type,\n key,\n version,\n };\n}\n\n/**\n * Extract test coverage info from a TestSpec source.\n * Checks for presence of success (expectOutput) and failure (expectError) scenarios.\n * Supports both formats:\n * - New: `expectOutput: {}` and `expectError: {}`\n * - Old: `{ type: 'expectOutput', ... }` and `{ type: 'expectError', ... }`\n */\nexport function extractTestCoverage(code: string): {\n hasSuccess: boolean;\n hasError: boolean;\n} {\n // Check new format: expectOutput: or expectError: as keys\n const hasSuccessNew = /expectOutput\\s*:/.test(code);\n const hasErrorNew = /expectError\\s*:/.test(code);\n\n // Check old format: { type: 'expectOutput' } or { type: 'expectError' }\n const hasSuccessOld = /(['\"]?)type\\1\\s*:\\s*['\"]expectOutput['\"]/.test(code);\n const hasErrorOld = /(['\"]?)type\\1\\s*:\\s*['\"]expectError['\"]/.test(code);\n\n return {\n hasSuccess: hasSuccessNew || hasSuccessOld,\n hasError: hasErrorNew || hasErrorOld,\n };\n}\n"],"mappings":";;;AAOA,SAAgB,YAAY,MAAkD;CAC5E,MAAM,cAAc,KAAK,MAAM,8BAA8B;AAC7D,KAAI,CAAC,cAAc,GAAI,QAAO,EAAE;AAEhC,QAAO,eAAe,YAAY,IAAI,WAAW,IAAI,EAAE;;AAGzD,SAAgB,eACd,MACA,OACgD;CAChD,MAAM,QAAQ,IAAI,OAAO,GAAG,YAAY,MAAM,CAAC,6BAA6B;CAC5E,MAAM,QAAQ,KAAK,MAAM,MAAM;AAC/B,KAAI,CAAC,QAAQ,GAAI,QAAO;CAExB,MAAM,QAAQ,MAAM;CACpB,MAAM,QAA4C,EAAE;CAEpD,MAAM,QAAQ,MAAM,MAAM,gBAAgB;AAC1C,KAAI,MACF,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,IAAI,iBAAiB,MAAM,MAAM;EACvC,MAAM,IAAI,kBAAkB,MAAM,UAAU;AAC5C,MAAI,EACF,OAAM,KAAK;GAAE,KAAK;GAAG,SAAS,KAAK;GAAS,CAAC;;AAKnD,QAAO,MAAM,SAAS,IAAI,QAAQ;;AAGpC,SAAgB,gBACd,MAC2E;CAC3E,MAAM,QAAQ,IAAI,OAAO,sCAAsC;CAC/D,MAAM,QAAQ,KAAK,MAAM,MAAM;AAC/B,KAAI,CAAC,QAAQ,GAAI,QAAO;CAExB,MAAM,QAAQ,MAAM;CACpB,MAAM,QACJ,EAAE;CAEJ,MAAM,QAAQ,MAAM,MAAM,gBAAgB;AAC1C,KAAI,MACF,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,IAAI,iBAAiB,MAAM,MAAM;EACvC,MAAM,IAAI,kBAAkB,MAAM,UAAU;EAC5C,MAAM,IAAI,iBAAiB,MAAM,OAAO;AACxC,MAAI,EACF,OAAM,KAAK;GACT,KAAK;GACL,SAAS,KAAK;GACd,MAAM,MAAM,UAAU,UAAU;GACjC,CAAC;;AAKR,QAAO,MAAM,SAAS,IAAI,QAAQ;;;;;;;AAQpC,SAAgB,kBACd,MAGY;CAEZ,MAAM,mBAAmB,KAAK,MAAM,kBAAkB;AACtD,KAAI,CAAC,oBAAoB,iBAAiB,UAAU,OAClD,QAAO;CAET,MAAM,iBACJ,iBAAiB,QAAQ,iBAAiB,GAAG,SAAS;CACxD,MAAM,kBAAkB,sBAAsB,MAAM,gBAAgB,KAAK,IAAI;AAE7E,KAAI,oBAAoB,GAAI,QAAO;CAEnC,MAAM,cAAc,KAAK,UAAU,iBAAiB,GAAG,gBAAgB;CAGvE,MAAM,YAAY,YAAY,MAAM,2BAA2B;AAC/D,KAAI,CAAC,YAAY,GAAI,QAAO;CAE5B,MAAM,OAAO,UAAU;AACvB,KAAI,SAAS,eAAe,SAAS,WAAY,QAAO;CAGxD,MAAM,UAAU,iBAAiB,aAAa,MAAM;AACpD,KAAI,QAEF,QAAO;EACL;EACA,KAAK;EACL,SAJkB,kBAAkB,aAAa,UAAU;EAK5D;CAIH,MAAM,gBAAgB,YAAY,MAChC,IAAI,OAAO,GAAG,KAAK,6BAA6B,CACjD;AAED,KAAI,CAAC,gBAAgB,GAAI,QAAO;CAEhC,MAAM,WAAW,cAAc;CAG/B,MAAM,MAAM,iBAAiB,UAAU,MAAM;AAC7C,KAAI,CAAC,IAAK,QAAO;AAIjB,QAAO;EACL;EACA;EACA,SALc,kBAAkB,UAAU,UAAU;EAMrD;;;;;;;;;AAUH,SAAgB,oBAAoB,MAGlC;CAEA,MAAM,gBAAgB,mBAAmB,KAAK,KAAK;CACnD,MAAM,cAAc,kBAAkB,KAAK,KAAK;CAGhD,MAAM,gBAAgB,2CAA2C,KAAK,KAAK;CAC3E,MAAM,cAAc,0CAA0C,KAAK,KAAK;AAExE,QAAO;EACL,YAAY,iBAAiB;EAC7B,UAAU,eAAe;EAC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-scan.d.ts","names":[],"sources":["../../src/analysis/spec-scan.ts"],"
|
|
1
|
+
{"version":3,"file":"spec-scan.d.ts","names":[],"sources":["../../src/analysis/spec-scan.ts"],"mappings":";;;;;;;iBAqCgB,sBAAA,CACd,IAAA,UACA,QAAA,WACC,cAAA;AAAA,iBAmDa,0BAAA,CAA2B,cAAA;EACzC,QAAA,EAAU,gBAAA;EACV,IAAA,EAAM,qBAAA;AAAA;;;;iBAwFQ,cAAA,CAAe,IAAA,UAAc,QAAA,WAAmB,cAAA;;;;iBA+DhD,yBAAA,CACd,QAAA,WACC,cAAA"}
|
|
@@ -9,7 +9,7 @@ function escapeRegex(value) {
|
|
|
9
9
|
* Match a string field in source code.
|
|
10
10
|
*/
|
|
11
11
|
function matchStringField(code, field) {
|
|
12
|
-
const regex =
|
|
12
|
+
const regex = new RegExp(`${escapeRegex(field)}\\s*:\\s*['"]([^'"]+)['"]`);
|
|
13
13
|
return code.match(regex)?.[1] ?? null;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
@@ -22,7 +22,7 @@ function matchStringFieldIn(code, field) {
|
|
|
22
22
|
* Match a version field which can be a string or number.
|
|
23
23
|
*/
|
|
24
24
|
function matchVersionField(code, field) {
|
|
25
|
-
const regex =
|
|
25
|
+
const regex = new RegExp(`${escapeRegex(field)}\\s*:\\s*(?:['"]([^'"]+)['"]|(\\d+(?:\\.\\d+)*))`);
|
|
26
26
|
const match = code.match(regex);
|
|
27
27
|
if (match?.[1]) return match[1];
|
|
28
28
|
if (match?.[2]) return match[2];
|
|
@@ -31,7 +31,7 @@ function matchVersionField(code, field) {
|
|
|
31
31
|
* Match a string array field in source code.
|
|
32
32
|
*/
|
|
33
33
|
function matchStringArrayField(code, field) {
|
|
34
|
-
const regex =
|
|
34
|
+
const regex = new RegExp(`${escapeRegex(field)}\\s*:\\s*\\[([\\s\\S]*?)\\]`);
|
|
35
35
|
const match = code.match(regex);
|
|
36
36
|
if (!match?.[1]) return void 0;
|
|
37
37
|
const inner = match[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchers.js","names":[],"sources":["../../../src/analysis/utils/matchers.ts"],"sourcesContent":["/**\n * Shared regex matchers and parsing utilities for spec scanning.\n */\n\nimport type { Stability } from '../../types/spec-types';\n\n/**\n * Escape regex special characters.\n */\nexport function escapeRegex(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Match a string field in source code.\n */\nexport function matchStringField(code: string, field: string): string | null {\n const regex = new RegExp(`${escapeRegex(field)}\\\\s*:\\\\s*['\"]([^'\"]+)['\"]`);\n const match = code.match(regex);\n return match?.[1] ?? null;\n}\n\n/**\n * Match a string field within a limited scope.\n */\nexport function matchStringFieldIn(code: string, field: string): string | null {\n return matchStringField(code, field);\n}\n\n/**\n * Match a version field which can be a string or number.\n */\nexport function matchVersionField(\n code: string,\n field: string\n): string | undefined {\n const regex = new RegExp(\n `${escapeRegex(field)}\\\\s*:\\\\s*(?:['\"]([^'\"]+)['\"]|(\\\\d+(?:\\\\.\\\\d+)*))`\n );\n const match = code.match(regex);\n if (match?.[1]) return match[1];\n if (match?.[2]) return match[2];\n return undefined;\n}\n\n/**\n * Match a string array field in source code.\n */\nexport function matchStringArrayField(\n code: string,\n field: string\n): string[] | undefined {\n const regex = new RegExp(`${escapeRegex(field)}\\\\s*:\\\\s*\\\\[([\\\\s\\\\S]*?)\\\\]`);\n const match = code.match(regex);\n if (!match?.[1]) return undefined;\n\n const inner = match[1];\n const items = Array.from(inner.matchAll(/['\"]([^'\"]+)['\"]/g))\n .map((m) => m[1])\n .filter(\n (value): value is string => typeof value === 'string' && value.length > 0\n );\n\n return items.length > 0 ? items : undefined;\n}\n\n/**\n * Check if a value is a valid stability.\n */\nexport function isStability(value: string | null): value is Stability {\n return (\n value === 'experimental' ||\n value === 'beta' ||\n value === 'stable' ||\n value === 'deprecated'\n );\n}\n\n/**\n * Find matching closing delimiter for an opening delimiter.\n * Returns the index of the closing delimiter or -1 if not found.\n */\nexport function findMatchingDelimiter(\n code: string,\n startIndex: number,\n openChar: string,\n closeChar: string\n): number {\n let depth = 0;\n let inString = false;\n let stringChar = '';\n\n for (let i = startIndex; i < code.length; i++) {\n const char = code[i];\n const prevChar = i > 0 ? code[i - 1] : '';\n\n // Handle string literals\n if ((char === '\"' || char === \"'\" || char === '`') && prevChar !== '\\\\') {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n }\n continue;\n }\n\n if (inString) continue;\n\n if (char === openChar) {\n depth++;\n } else if (char === closeChar) {\n depth--;\n if (depth === 0) {\n return i;\n }\n }\n }\n\n return -1;\n}\n\n/**\n * Find matching closing brace for an opening brace.\n * Returns the index of the closing brace or -1 if not found.\n */\nexport function findMatchingBrace(code: string, startIndex: number): number {\n return findMatchingDelimiter(code, startIndex, '{', '}');\n}\n"],"mappings":";;;;AASA,SAAgB,YAAY,OAAuB;AACjD,QAAO,MAAM,QAAQ,uBAAuB,OAAO;;;;;AAMrD,SAAgB,iBAAiB,MAAc,OAA8B;CAC3E,MAAM,
|
|
1
|
+
{"version":3,"file":"matchers.js","names":[],"sources":["../../../src/analysis/utils/matchers.ts"],"sourcesContent":["/**\n * Shared regex matchers and parsing utilities for spec scanning.\n */\n\nimport type { Stability } from '../../types/spec-types';\n\n/**\n * Escape regex special characters.\n */\nexport function escapeRegex(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Match a string field in source code.\n */\nexport function matchStringField(code: string, field: string): string | null {\n const regex = new RegExp(`${escapeRegex(field)}\\\\s*:\\\\s*['\"]([^'\"]+)['\"]`);\n const match = code.match(regex);\n return match?.[1] ?? null;\n}\n\n/**\n * Match a string field within a limited scope.\n */\nexport function matchStringFieldIn(code: string, field: string): string | null {\n return matchStringField(code, field);\n}\n\n/**\n * Match a version field which can be a string or number.\n */\nexport function matchVersionField(\n code: string,\n field: string\n): string | undefined {\n const regex = new RegExp(\n `${escapeRegex(field)}\\\\s*:\\\\s*(?:['\"]([^'\"]+)['\"]|(\\\\d+(?:\\\\.\\\\d+)*))`\n );\n const match = code.match(regex);\n if (match?.[1]) return match[1];\n if (match?.[2]) return match[2];\n return undefined;\n}\n\n/**\n * Match a string array field in source code.\n */\nexport function matchStringArrayField(\n code: string,\n field: string\n): string[] | undefined {\n const regex = new RegExp(`${escapeRegex(field)}\\\\s*:\\\\s*\\\\[([\\\\s\\\\S]*?)\\\\]`);\n const match = code.match(regex);\n if (!match?.[1]) return undefined;\n\n const inner = match[1];\n const items = Array.from(inner.matchAll(/['\"]([^'\"]+)['\"]/g))\n .map((m) => m[1])\n .filter(\n (value): value is string => typeof value === 'string' && value.length > 0\n );\n\n return items.length > 0 ? items : undefined;\n}\n\n/**\n * Check if a value is a valid stability.\n */\nexport function isStability(value: string | null): value is Stability {\n return (\n value === 'experimental' ||\n value === 'beta' ||\n value === 'stable' ||\n value === 'deprecated'\n );\n}\n\n/**\n * Find matching closing delimiter for an opening delimiter.\n * Returns the index of the closing delimiter or -1 if not found.\n */\nexport function findMatchingDelimiter(\n code: string,\n startIndex: number,\n openChar: string,\n closeChar: string\n): number {\n let depth = 0;\n let inString = false;\n let stringChar = '';\n\n for (let i = startIndex; i < code.length; i++) {\n const char = code[i];\n const prevChar = i > 0 ? code[i - 1] : '';\n\n // Handle string literals\n if ((char === '\"' || char === \"'\" || char === '`') && prevChar !== '\\\\') {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n }\n continue;\n }\n\n if (inString) continue;\n\n if (char === openChar) {\n depth++;\n } else if (char === closeChar) {\n depth--;\n if (depth === 0) {\n return i;\n }\n }\n }\n\n return -1;\n}\n\n/**\n * Find matching closing brace for an opening brace.\n * Returns the index of the closing brace or -1 if not found.\n */\nexport function findMatchingBrace(code: string, startIndex: number): number {\n return findMatchingDelimiter(code, startIndex, '{', '}');\n}\n"],"mappings":";;;;AASA,SAAgB,YAAY,OAAuB;AACjD,QAAO,MAAM,QAAQ,uBAAuB,OAAO;;;;;AAMrD,SAAgB,iBAAiB,MAAc,OAA8B;CAC3E,MAAM,QAAQ,IAAI,OAAO,GAAG,YAAY,MAAM,CAAC,2BAA2B;AAE1E,QADc,KAAK,MAAM,MAAM,GAChB,MAAM;;;;;AAMvB,SAAgB,mBAAmB,MAAc,OAA8B;AAC7E,QAAO,iBAAiB,MAAM,MAAM;;;;;AAMtC,SAAgB,kBACd,MACA,OACoB;CACpB,MAAM,QAAQ,IAAI,OAChB,GAAG,YAAY,MAAM,CAAC,kDACvB;CACD,MAAM,QAAQ,KAAK,MAAM,MAAM;AAC/B,KAAI,QAAQ,GAAI,QAAO,MAAM;AAC7B,KAAI,QAAQ,GAAI,QAAO,MAAM;;;;;AAO/B,SAAgB,sBACd,MACA,OACsB;CACtB,MAAM,QAAQ,IAAI,OAAO,GAAG,YAAY,MAAM,CAAC,6BAA6B;CAC5E,MAAM,QAAQ,KAAK,MAAM,MAAM;AAC/B,KAAI,CAAC,QAAQ,GAAI,QAAO;CAExB,MAAM,QAAQ,MAAM;CACpB,MAAM,QAAQ,MAAM,KAAK,MAAM,SAAS,oBAAoB,CAAC,CAC1D,KAAK,MAAM,EAAE,GAAG,CAChB,QACE,UAA2B,OAAO,UAAU,YAAY,MAAM,SAAS,EACzE;AAEH,QAAO,MAAM,SAAS,IAAI,QAAQ;;;;;AAMpC,SAAgB,YAAY,OAA0C;AACpE,QACE,UAAU,kBACV,UAAU,UACV,UAAU,YACV,UAAU;;;;;;AAQd,SAAgB,sBACd,MACA,YACA,UACA,WACQ;CACR,IAAI,QAAQ;CACZ,IAAI,WAAW;CACf,IAAI,aAAa;AAEjB,MAAK,IAAI,IAAI,YAAY,IAAI,KAAK,QAAQ,KAAK;EAC7C,MAAM,OAAO,KAAK;EAClB,MAAM,WAAW,IAAI,IAAI,KAAK,IAAI,KAAK;AAGvC,OAAK,SAAS,QAAO,SAAS,OAAO,SAAS,QAAQ,aAAa,MAAM;AACvE,OAAI,CAAC,UAAU;AACb,eAAW;AACX,iBAAa;cACJ,SAAS,WAClB,YAAW;AAEb;;AAGF,MAAI,SAAU;AAEd,MAAI,SAAS,SACX;WACS,SAAS,WAAW;AAC7B;AACA,OAAI,UAAU,EACZ,QAAO;;;AAKb,QAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-structure.d.ts","names":[],"sources":["../../../src/analysis/validate/spec-structure.ts"],"
|
|
1
|
+
{"version":3,"file":"spec-structure.d.ts","names":[],"sources":["../../../src/analysis/validate/spec-structure.ts"],"mappings":";;;;;AA6BA;KALY,YAAA;;;;KAKA,QAAA;;;;UAeK,WAAA;EAKP;;;;EAAR,OAAA,CAAQ,QAAA,UAAkB,QAAA,EAAU,QAAA,GAAW,YAAA;AAAA;AAajD;;;AAAA,iBAAgB,qBAAA,CACd,QAAA,EAAU,IAAA,CAAK,cAAA,4CACf,WAAA,GAAa,WAAA,GACZ,gBAAA"}
|
package/dist/formatter.d.ts
CHANGED
package/dist/formatter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","names":[],"sources":["../src/formatter.ts"],"
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","names":[],"sources":["../src/formatter.ts"],"mappings":";;;UAkBiB,gBAAA;EAEf;EAAA,IAAA,GAAO,aAAA;EAEP;EAAA,IAAA;EAIA;EAFA,GAAA;EAEM;EAAN,MAAA;AAAA;AAAA,UAGe,YAAA;EACf,OAAA;EACA,SAAA;EACA,KAAA;EACA,QAAA;EACA,aAAA,GAAgB,aAAA;AAAA;;;;AAkDlB;iBAAsB,eAAA,CACpB,GAAA,YACC,OAAA,CAAQ,aAAA;AAAA,UA8FM,YAAA;EACf,GAAA,GAAM,OAAA;EACN,IAAA,GAAO,OAAA;EACP,OAAA,GAAU,OAAA;AAAA;;;AAHZ;iBASsB,WAAA,CACpB,KAAA,qBACA,MAAA,GAAS,eAAA,EACT,OAAA,GAAU,gBAAA,EACV,MAAA,GAAS,YAAA,GACR,OAAA,CAAQ,YAAA;;;;iBA8EW,gBAAA,CACpB,KAAA,YACA,MAAA,GAAS,eAAA,EACT,OAAA,GAAU,gBAAA,EACV,MAAA,GAAS,YAAA,GACR,OAAA,CAAQ,YAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-markdown.d.ts","names":[],"sources":["../../src/formatters/spec-markdown.ts"],"
|
|
1
|
+
{"version":3,"file":"spec-markdown.d.ts","names":[],"sources":["../../src/formatters/spec-markdown.ts"],"mappings":";;;;;;;;;;;iBAuBgB,cAAA,CACd,IAAA,EAAM,UAAA,EACN,MAAA,EAAQ,eAAA,EACR,cAAA;EAA2B,KAAA;EAAgB,QAAA;AAAA;;;;iBA2W7B,yBAAA,CACd,IAAA,EAAM,UAAA,EACN,OAAA,EAAS,qBAAA;;;;iBAQK,0BAAA,CACd,KAAA,EAAO,UAAA,IACP,MAAA,EAAQ,eAAA;;;;iBAiCM,oBAAA,CACd,KAAA,EAAO,UAAA,IACP,MAAA,EAAQ,eAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-to-docblock.d.ts","names":[],"sources":["../../src/formatters/spec-to-docblock.ts"],"
|
|
1
|
+
{"version":3,"file":"spec-to-docblock.d.ts","names":[],"sources":["../../src/formatters/spec-to-docblock.ts"],"mappings":";;;;;;AAOA;iBAAgB,qBAAA,CACd,IAAA,EAAM,UAAA,EACN,OAAA;EAAY,QAAA;AAAA,IACX,QAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-config.d.ts","names":[],"sources":["../../src/templates/app-config.ts"],"
|
|
1
|
+
{"version":3,"file":"app-config.d.ts","names":[],"sources":["../../src/templates/app-config.ts"],"mappings":";;;iBAGgB,wBAAA,CAAyB,IAAA,EAAM,oBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-view.d.ts","names":[],"sources":["../../src/templates/data-view.ts"],"
|
|
1
|
+
{"version":3,"file":"data-view.d.ts","names":[],"sources":["../../src/templates/data-view.ts"],"mappings":";;;iBAGgB,oBAAA,CAAqB,IAAA,EAAM,gBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","names":[],"sources":["../../src/templates/event.ts"],"
|
|
1
|
+
{"version":3,"file":"event.d.ts","names":[],"sources":["../../src/templates/event.ts"],"mappings":";;;;;;iBAWgB,iBAAA,CAAkB,IAAA,EAAM,aAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experiment.d.ts","names":[],"sources":["../../src/templates/experiment.ts"],"
|
|
1
|
+
{"version":3,"file":"experiment.d.ts","names":[],"sources":["../../src/templates/experiment.ts"],"mappings":";;;iBAGgB,sBAAA,CAAuB,IAAA,EAAM,kBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","names":[],"sources":["../../src/templates/handler.ts"],"
|
|
1
|
+
{"version":3,"file":"handler.d.ts","names":[],"sources":["../../src/templates/handler.ts"],"mappings":";;AAUA;;;;;AAyCA;iBAzCgB,uBAAA,CACd,QAAA,UACA,IAAA;;;;iBAuCc,yBAAA,CACd,aAAA,UACA,WAAA;;;;iBA2Bc,oBAAA,CACd,UAAA,UACA,IAAA"}
|
|
@@ -32,7 +32,6 @@ ${fields.map((field) => {
|
|
|
32
32
|
switch (field.type) {
|
|
33
33
|
case "number": return ` ${field.key}: 0`;
|
|
34
34
|
case "boolean": return ` ${field.key}: true`;
|
|
35
|
-
case "string":
|
|
36
35
|
default: return ` ${field.key}: '${field.key.toUpperCase()}_VALUE'`;
|
|
37
36
|
}
|
|
38
37
|
}).join(",\n")}
|
|
@@ -69,7 +68,6 @@ function mapConfigType(type) {
|
|
|
69
68
|
switch (type) {
|
|
70
69
|
case "number": return "number";
|
|
71
70
|
case "boolean": return "boolean";
|
|
72
|
-
case "string":
|
|
73
71
|
default: return "string";
|
|
74
72
|
}
|
|
75
73
|
}
|
|
@@ -78,7 +76,6 @@ function stabilityToEnum(stability) {
|
|
|
78
76
|
case "beta": return "Beta";
|
|
79
77
|
case "stable": return "Stable";
|
|
80
78
|
case "deprecated": return "Deprecated";
|
|
81
|
-
case "experimental":
|
|
82
79
|
default: return "Experimental";
|
|
83
80
|
}
|
|
84
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-utils.js","names":[],"sources":["../../src/templates/integration-utils.ts"],"sourcesContent":["import type {\n IntegrationConfigFieldData,\n IntegrationSecretFieldData,\n IntegrationSpecData,\n Stability,\n} from '../types/spec-types';\n\nexport function renderConfigSchema(\n fields: IntegrationConfigFieldData[]\n): string {\n const requiredFields = fields.filter((field) => field.required);\n const requiredBlock =\n requiredFields.length > 0\n ? ` required: [${requiredFields\n .map((field) => `'${field.key}'`)\n .join(', ')}],\n`\n : '';\n\n const properties = fields.length\n ? fields\n .map((field) => {\n const description = field.description\n ? `, description: '${escape(field.description)}'`\n : '';\n return ` ${field.key}: { type: '${mapConfigType(\n field.type\n )}'${description} }`;\n })\n .join(',\\n')\n : '';\n\n return ` schema: {\n type: 'object',\n${requiredBlock} properties: {\n${properties || ' '}\n },\n },\\n`;\n}\n\nexport function renderSecretSchema(\n fields: IntegrationSecretFieldData[]\n): string {\n const requiredFields = fields.filter((field) => field.required);\n const requiredBlock =\n requiredFields.length > 0\n ? ` required: [${requiredFields\n .map((field) => `'${field.key}'`)\n .join(', ')}],\n`\n : '';\n\n const properties = fields.length\n ? fields\n .map((field) => {\n const description = field.description\n ? `, description: '${escape(field.description)}'`\n : '';\n return ` ${field.key}: { type: 'string'${description} }`;\n })\n .join(',\\n')\n : '';\n\n return ` schema: {\n type: 'object',\n${requiredBlock} properties: {\n${properties || ' '}\n },\n },\\n`;\n}\n\nexport function renderConfigExample(\n fields: IntegrationConfigFieldData[]\n): string {\n if (fields.length === 0) {\n return `{}`;\n }\n\n const exampleEntries = fields.map((field) => {\n switch (field.type) {\n case 'number':\n return ` ${field.key}: 0`;\n case 'boolean':\n return ` ${field.key}: true`;\n case 'string':\n default:\n return ` ${field.key}: '${field.key.toUpperCase()}_VALUE'`;\n }\n });\n\n return `{\n${exampleEntries.join(',\\n')}\n }`;\n}\n\nexport function renderSecretExample(\n fields: IntegrationSecretFieldData[]\n): string {\n if (fields.length === 0) {\n return `{}`;\n }\n\n const exampleEntries = fields.map(\n (field) => ` ${field.key}: '${field.key.toUpperCase()}_SECRET'`\n );\n\n return `{\n${exampleEntries.join(',\\n')}\n }`;\n}\n\nexport function renderConstraints(rpm?: number, rph?: number): string {\n if (rpm == null && rph == null) return '';\n const entries: string[] = [];\n if (rpm != null) entries.push(` rpm: ${rpm}`);\n if (rph != null) entries.push(` rph: ${rph}`);\n return ` constraints: {\n rateLimit: {\n${entries.join(',\\n')}\n },\n },\n`;\n}\n\nexport function renderByokSetup(\n modes: string[],\n instructions?: string,\n scopes?: string[]\n): string {\n if (!modes.includes('byok')) {\n return '';\n }\n\n const instructionsLine = instructions\n ? ` setupInstructions: '${escape(instructions)}',\\n`\n : '';\n const scopesLine =\n scopes && scopes.length\n ? ` requiredScopes: [${scopes\n .map((scope) => `'${escape(scope)}'`)\n .join(', ')}],\\n`\n : '';\n\n if (!instructionsLine && !scopesLine) {\n return '';\n }\n\n return ` byokSetup: {\n${instructionsLine}${scopesLine} },\n`;\n}\n\nexport function mapConfigType(\n type: IntegrationConfigFieldData['type']\n): string {\n switch (type) {\n case 'number':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'string':\n default:\n return 'string';\n }\n}\n\nexport function stabilityToEnum(stability: Stability): string {\n switch (stability) {\n case 'beta':\n return 'Beta';\n case 'stable':\n return 'Stable';\n case 'deprecated':\n return 'Deprecated';\n case 'experimental':\n default:\n return 'Experimental';\n }\n}\n\nexport function renderProvides(data: IntegrationSpecData): string {\n return data.capabilitiesProvided\n .map((cap) => ` { key: '${cap.key}', version: ${cap.version} }`)\n .join(',\\n');\n}\n\nexport function renderRequires(data: IntegrationSpecData): string {\n if (data.capabilitiesRequired.length === 0) return '';\n\n return ` requires: [\n${data.capabilitiesRequired\n .map((req) => {\n const version =\n typeof req.version === 'number' ? `, version: ${req.version}` : '';\n const optional = req.optional ? ', optional: true' : '';\n const reason = req.reason ? `, reason: '${escape(req.reason)}'` : '';\n return ` { key: '${req.key}'${version}${optional}${reason} }`;\n })\n .join(',\\n')}\n ],`;\n}\n\nexport function escape(value: string): string {\n return value.replace(/`/g, '\\\\`').replace(/'/g, \"\\\\'\");\n}\n"],"mappings":";AAOA,SAAgB,mBACd,QACQ;CACR,MAAM,iBAAiB,OAAO,QAAQ,UAAU,MAAM,SAAS;AAsB/D,QAAO;;EApBL,eAAe,SAAS,IACpB,oBAAoB,eACjB,KAAK,UAAU,IAAI,MAAM,IAAI,GAAG,CAChC,KAAK,KAAK,CAAC;IAEd,GAiBQ;GAfK,OAAO,SACtB,OACG,KAAK,UAAU;EACd,MAAM,cAAc,MAAM,cACtB,mBAAmB,OAAO,MAAM,YAAY,CAAC,KAC7C;AACJ,SAAO,WAAW,MAAM,IAAI,aAAa,cACvC,MAAM,KACP,CAAC,GAAG,YAAY;GACjB,CACD,KAAK,MAAM,GACd,OAKU,SAAS;;;;AAKzB,SAAgB,mBACd,QACQ;CACR,MAAM,iBAAiB,OAAO,QAAQ,UAAU,MAAM,SAAS;AAoB/D,QAAO;;EAlBL,eAAe,SAAS,IACpB,oBAAoB,eACjB,KAAK,UAAU,IAAI,MAAM,IAAI,GAAG,CAChC,KAAK,KAAK,CAAC;IAEd,GAeQ;GAbK,OAAO,SACtB,OACG,KAAK,UAAU;EACd,MAAM,cAAc,MAAM,cACtB,mBAAmB,OAAO,MAAM,YAAY,CAAC,KAC7C;AACJ,SAAO,WAAW,MAAM,IAAI,oBAAoB,YAAY;GAC5D,CACD,KAAK,MAAM,GACd,OAKU,SAAS;;;;AAKzB,SAAgB,oBACd,QACQ;AACR,KAAI,OAAO,WAAW,EACpB,QAAO;AAeT,QAAO;EAZgB,OAAO,KAAK,UAAU;AAC3C,UAAQ,MAAM,MAAd;GACE,KAAK,SACH,QAAO,OAAO,MAAM,IAAI;GAC1B,KAAK,UACH,QAAO,OAAO,MAAM,IAAI;
|
|
1
|
+
{"version":3,"file":"integration-utils.js","names":[],"sources":["../../src/templates/integration-utils.ts"],"sourcesContent":["import type {\n IntegrationConfigFieldData,\n IntegrationSecretFieldData,\n IntegrationSpecData,\n Stability,\n} from '../types/spec-types';\n\nexport function renderConfigSchema(\n fields: IntegrationConfigFieldData[]\n): string {\n const requiredFields = fields.filter((field) => field.required);\n const requiredBlock =\n requiredFields.length > 0\n ? ` required: [${requiredFields\n .map((field) => `'${field.key}'`)\n .join(', ')}],\n`\n : '';\n\n const properties = fields.length\n ? fields\n .map((field) => {\n const description = field.description\n ? `, description: '${escape(field.description)}'`\n : '';\n return ` ${field.key}: { type: '${mapConfigType(\n field.type\n )}'${description} }`;\n })\n .join(',\\n')\n : '';\n\n return ` schema: {\n type: 'object',\n${requiredBlock} properties: {\n${properties || ' '}\n },\n },\\n`;\n}\n\nexport function renderSecretSchema(\n fields: IntegrationSecretFieldData[]\n): string {\n const requiredFields = fields.filter((field) => field.required);\n const requiredBlock =\n requiredFields.length > 0\n ? ` required: [${requiredFields\n .map((field) => `'${field.key}'`)\n .join(', ')}],\n`\n : '';\n\n const properties = fields.length\n ? fields\n .map((field) => {\n const description = field.description\n ? `, description: '${escape(field.description)}'`\n : '';\n return ` ${field.key}: { type: 'string'${description} }`;\n })\n .join(',\\n')\n : '';\n\n return ` schema: {\n type: 'object',\n${requiredBlock} properties: {\n${properties || ' '}\n },\n },\\n`;\n}\n\nexport function renderConfigExample(\n fields: IntegrationConfigFieldData[]\n): string {\n if (fields.length === 0) {\n return `{}`;\n }\n\n const exampleEntries = fields.map((field) => {\n switch (field.type) {\n case 'number':\n return ` ${field.key}: 0`;\n case 'boolean':\n return ` ${field.key}: true`;\n case 'string':\n default:\n return ` ${field.key}: '${field.key.toUpperCase()}_VALUE'`;\n }\n });\n\n return `{\n${exampleEntries.join(',\\n')}\n }`;\n}\n\nexport function renderSecretExample(\n fields: IntegrationSecretFieldData[]\n): string {\n if (fields.length === 0) {\n return `{}`;\n }\n\n const exampleEntries = fields.map(\n (field) => ` ${field.key}: '${field.key.toUpperCase()}_SECRET'`\n );\n\n return `{\n${exampleEntries.join(',\\n')}\n }`;\n}\n\nexport function renderConstraints(rpm?: number, rph?: number): string {\n if (rpm == null && rph == null) return '';\n const entries: string[] = [];\n if (rpm != null) entries.push(` rpm: ${rpm}`);\n if (rph != null) entries.push(` rph: ${rph}`);\n return ` constraints: {\n rateLimit: {\n${entries.join(',\\n')}\n },\n },\n`;\n}\n\nexport function renderByokSetup(\n modes: string[],\n instructions?: string,\n scopes?: string[]\n): string {\n if (!modes.includes('byok')) {\n return '';\n }\n\n const instructionsLine = instructions\n ? ` setupInstructions: '${escape(instructions)}',\\n`\n : '';\n const scopesLine =\n scopes && scopes.length\n ? ` requiredScopes: [${scopes\n .map((scope) => `'${escape(scope)}'`)\n .join(', ')}],\\n`\n : '';\n\n if (!instructionsLine && !scopesLine) {\n return '';\n }\n\n return ` byokSetup: {\n${instructionsLine}${scopesLine} },\n`;\n}\n\nexport function mapConfigType(\n type: IntegrationConfigFieldData['type']\n): string {\n switch (type) {\n case 'number':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'string':\n default:\n return 'string';\n }\n}\n\nexport function stabilityToEnum(stability: Stability): string {\n switch (stability) {\n case 'beta':\n return 'Beta';\n case 'stable':\n return 'Stable';\n case 'deprecated':\n return 'Deprecated';\n case 'experimental':\n default:\n return 'Experimental';\n }\n}\n\nexport function renderProvides(data: IntegrationSpecData): string {\n return data.capabilitiesProvided\n .map((cap) => ` { key: '${cap.key}', version: ${cap.version} }`)\n .join(',\\n');\n}\n\nexport function renderRequires(data: IntegrationSpecData): string {\n if (data.capabilitiesRequired.length === 0) return '';\n\n return ` requires: [\n${data.capabilitiesRequired\n .map((req) => {\n const version =\n typeof req.version === 'number' ? `, version: ${req.version}` : '';\n const optional = req.optional ? ', optional: true' : '';\n const reason = req.reason ? `, reason: '${escape(req.reason)}'` : '';\n return ` { key: '${req.key}'${version}${optional}${reason} }`;\n })\n .join(',\\n')}\n ],`;\n}\n\nexport function escape(value: string): string {\n return value.replace(/`/g, '\\\\`').replace(/'/g, \"\\\\'\");\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration.d.ts","names":[],"sources":["../../src/templates/integration.ts"],"
|
|
1
|
+
{"version":3,"file":"integration.d.ts","names":[],"sources":["../../src/templates/integration.ts"],"mappings":";;;iBAegB,uBAAA,CAAwB,IAAA,EAAM,mBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge.d.ts","names":[],"sources":["../../src/templates/knowledge.ts"],"
|
|
1
|
+
{"version":3,"file":"knowledge.d.ts","names":[],"sources":["../../src/templates/knowledge.ts"],"mappings":";;;iBAGgB,0BAAA,CACd,IAAA,EAAM,sBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge.js","names":[],"sources":["../../src/templates/knowledge.ts"],"sourcesContent":["import type { KnowledgeSpaceSpecData, Stability } from '../types/spec-types';\nimport { toPascalCase, escapeString } from './utils';\n\nexport function generateKnowledgeSpaceSpec(\n data: KnowledgeSpaceSpecData\n): string {\n const specName = toPascalCase(data.name.split('.').pop() ?? 'KnowledgeSpace');\n const varName = `${specName}KnowledgeSpace`;\n const registerFn = `register${specName}KnowledgeSpace`;\n\n const retention = renderRetention(data);\n const access = renderAccess(data);\n const indexing = renderIndexing(data);\n const policyComment =\n data.policyName && !data.policyVersion\n ? ` // defaults to latest version`\n : '';\n\n return `import { StabilityEnum } from '@contractspec/lib.contracts/ownership';\nimport type { KnowledgeSpaceSpec } from '@contractspec/lib.contracts/knowledge/spec';\nimport type { KnowledgeSpaceRegistry } from '@contractspec/lib.contracts/knowledge/spec';\n\nexport const ${varName}: KnowledgeSpaceSpec = {\n meta: {\n key: '${escapeString(data.name)}',\n version: ${data.version},\n category: '${data.category}',\n displayName: '${escape(data.displayName)}',\n title: '${escape(data.title)}',\n description: '${escape(data.description)}',\n domain: '${escape(data.domain)}',\n owners: [${data.owners.map((owner) => `'${escapeString(owner)}'`).join(', ')}],\n tags: [${data.tags.map((tag) => `'${escapeString(tag)}'`).join(', ')}],\n stability: StabilityEnum.${stabilityToEnum(data.stability)},\n },\n retention: ${retention},\n access: {\n${access}${data.policyName ? ` policy: { name: '${escapeString(data.policyName)}',${data.policyVersion ? ` version: ${data.policyVersion}` : ''} },${policyComment}\\n` : ''} },\n${indexing} description: '${escape(data.description || data.displayName)}',\n};\n\nexport function ${registerFn}(registry: KnowledgeSpaceRegistry): KnowledgeSpaceRegistry {\n return registry.register(${varName});\n}\n`;\n}\n\nfunction renderRetention(data: KnowledgeSpaceSpecData): string {\n const ttl =\n data.retention.ttlDays === null\n ? 'null'\n : typeof data.retention.ttlDays === 'number'\n ? String(data.retention.ttlDays)\n : 'null';\n const archive =\n typeof data.retention.archiveAfterDays === 'number'\n ? `, archiveAfterDays: ${data.retention.archiveAfterDays}`\n : '';\n return `{ ttlDays: ${ttl}${archive} }`;\n}\n\nfunction renderAccess(data: KnowledgeSpaceSpecData): string {\n const trustLine = ` trustLevel: '${data.trustLevel}',\\n`;\n const automationLine = ` automationWritable: ${data.automationWritable},\\n`;\n return `${trustLine}${automationLine}`;\n}\n\nfunction renderIndexing(data: KnowledgeSpaceSpecData): string {\n const entries: string[] = [];\n if (data.embeddingModel) {\n entries.push(` embeddingModel: '${escape(data.embeddingModel)}'`);\n }\n if (typeof data.chunkSize === 'number') {\n entries.push(` chunkSize: ${data.chunkSize}`);\n }\n if (data.vectorDbIntegration) {\n entries.push(\n ` vectorDbIntegration: '${escape(data.vectorDbIntegration)}'`\n );\n }\n if (entries.length === 0) {\n return '';\n }\n return ` indexing: {\\n${entries.join(',\\n')}\\n },\\n`;\n}\n\nfunction stabilityToEnum(stability: Stability): string {\n switch (stability) {\n case 'beta':\n return 'Beta';\n case 'stable':\n return 'Stable';\n case 'deprecated':\n return 'Deprecated';\n case 'experimental':\n default:\n return 'Experimental';\n }\n}\n\nfunction escape(value: string): string {\n return value.replace(/`/g, '\\\\`').replace(/'/g, \"\\\\'\");\n}\n"],"mappings":";;;AAGA,SAAgB,2BACd,MACQ;CACR,MAAM,WAAW,aAAa,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,IAAI,iBAAiB;CAC7E,MAAM,UAAU,GAAG,SAAS;CAC5B,MAAM,aAAa,WAAW,SAAS;CAEvC,MAAM,YAAY,gBAAgB,KAAK;CACvC,MAAM,SAAS,aAAa,KAAK;CACjC,MAAM,WAAW,eAAe,KAAK;CACrC,MAAM,gBACJ,KAAK,cAAc,CAAC,KAAK,gBACrB,mCACA;AAEN,QAAO;;;;eAIM,QAAQ;;YAEX,aAAa,KAAK,KAAK,CAAC;eACrB,KAAK,QAAQ;iBACX,KAAK,SAAS;oBACX,OAAO,KAAK,YAAY,CAAC;cAC/B,OAAO,KAAK,MAAM,CAAC;oBACb,OAAO,KAAK,YAAY,CAAC;eAC9B,OAAO,KAAK,OAAO,CAAC;eACpB,KAAK,OAAO,KAAK,UAAU,IAAI,aAAa,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;aACpE,KAAK,KAAK,KAAK,QAAQ,IAAI,aAAa,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;+BAC1C,gBAAgB,KAAK,UAAU,CAAC;;eAEhD,UAAU;;EAEvB,SAAS,KAAK,aAAa,wBAAwB,aAAa,KAAK,WAAW,CAAC,IAAI,KAAK,gBAAgB,aAAa,KAAK,kBAAkB,GAAG,KAAK,cAAc,MAAM,GAAG;EAC7K,SAAS,kBAAkB,OAAO,KAAK,eAAe,KAAK,YAAY,CAAC;;;kBAGxD,WAAW;6BACA,QAAQ;;;;AAKrC,SAAS,gBAAgB,MAAsC;AAW7D,QAAO,cATL,KAAK,UAAU,YAAY,OACvB,SACA,OAAO,KAAK,UAAU,YAAY,WAChC,OAAO,KAAK,UAAU,QAAQ,GAC9B,SAEN,OAAO,KAAK,UAAU,qBAAqB,WACvC,uBAAuB,KAAK,UAAU,qBACtC,GAC6B;;AAGrC,SAAS,aAAa,MAAsC;AAG1D,QAAO,GAFW,oBAAoB,KAAK,WAAW,QAC/B,2BAA2B,KAAK,mBAAmB;;AAI5E,SAAS,eAAe,MAAsC;CAC5D,MAAM,UAAoB,EAAE;AAC5B,KAAI,KAAK,eACP,SAAQ,KAAK,wBAAwB,OAAO,KAAK,eAAe,CAAC,GAAG;AAEtE,KAAI,OAAO,KAAK,cAAc,SAC5B,SAAQ,KAAK,kBAAkB,KAAK,YAAY;AAElD,KAAI,KAAK,oBACP,SAAQ,KACN,6BAA6B,OAAO,KAAK,oBAAoB,CAAC,GAC/D;AAEH,KAAI,QAAQ,WAAW,EACrB,QAAO;AAET,QAAO,kBAAkB,QAAQ,KAAK,MAAM,CAAC;;AAG/C,SAAS,gBAAgB,WAA8B;AACrD,SAAQ,WAAR;EACE,KAAK,OACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,KAAK,aACH,QAAO;
|
|
1
|
+
{"version":3,"file":"knowledge.js","names":[],"sources":["../../src/templates/knowledge.ts"],"sourcesContent":["import type { KnowledgeSpaceSpecData, Stability } from '../types/spec-types';\nimport { toPascalCase, escapeString } from './utils';\n\nexport function generateKnowledgeSpaceSpec(\n data: KnowledgeSpaceSpecData\n): string {\n const specName = toPascalCase(data.name.split('.').pop() ?? 'KnowledgeSpace');\n const varName = `${specName}KnowledgeSpace`;\n const registerFn = `register${specName}KnowledgeSpace`;\n\n const retention = renderRetention(data);\n const access = renderAccess(data);\n const indexing = renderIndexing(data);\n const policyComment =\n data.policyName && !data.policyVersion\n ? ` // defaults to latest version`\n : '';\n\n return `import { StabilityEnum } from '@contractspec/lib.contracts/ownership';\nimport type { KnowledgeSpaceSpec } from '@contractspec/lib.contracts/knowledge/spec';\nimport type { KnowledgeSpaceRegistry } from '@contractspec/lib.contracts/knowledge/spec';\n\nexport const ${varName}: KnowledgeSpaceSpec = {\n meta: {\n key: '${escapeString(data.name)}',\n version: ${data.version},\n category: '${data.category}',\n displayName: '${escape(data.displayName)}',\n title: '${escape(data.title)}',\n description: '${escape(data.description)}',\n domain: '${escape(data.domain)}',\n owners: [${data.owners.map((owner) => `'${escapeString(owner)}'`).join(', ')}],\n tags: [${data.tags.map((tag) => `'${escapeString(tag)}'`).join(', ')}],\n stability: StabilityEnum.${stabilityToEnum(data.stability)},\n },\n retention: ${retention},\n access: {\n${access}${data.policyName ? ` policy: { name: '${escapeString(data.policyName)}',${data.policyVersion ? ` version: ${data.policyVersion}` : ''} },${policyComment}\\n` : ''} },\n${indexing} description: '${escape(data.description || data.displayName)}',\n};\n\nexport function ${registerFn}(registry: KnowledgeSpaceRegistry): KnowledgeSpaceRegistry {\n return registry.register(${varName});\n}\n`;\n}\n\nfunction renderRetention(data: KnowledgeSpaceSpecData): string {\n const ttl =\n data.retention.ttlDays === null\n ? 'null'\n : typeof data.retention.ttlDays === 'number'\n ? String(data.retention.ttlDays)\n : 'null';\n const archive =\n typeof data.retention.archiveAfterDays === 'number'\n ? `, archiveAfterDays: ${data.retention.archiveAfterDays}`\n : '';\n return `{ ttlDays: ${ttl}${archive} }`;\n}\n\nfunction renderAccess(data: KnowledgeSpaceSpecData): string {\n const trustLine = ` trustLevel: '${data.trustLevel}',\\n`;\n const automationLine = ` automationWritable: ${data.automationWritable},\\n`;\n return `${trustLine}${automationLine}`;\n}\n\nfunction renderIndexing(data: KnowledgeSpaceSpecData): string {\n const entries: string[] = [];\n if (data.embeddingModel) {\n entries.push(` embeddingModel: '${escape(data.embeddingModel)}'`);\n }\n if (typeof data.chunkSize === 'number') {\n entries.push(` chunkSize: ${data.chunkSize}`);\n }\n if (data.vectorDbIntegration) {\n entries.push(\n ` vectorDbIntegration: '${escape(data.vectorDbIntegration)}'`\n );\n }\n if (entries.length === 0) {\n return '';\n }\n return ` indexing: {\\n${entries.join(',\\n')}\\n },\\n`;\n}\n\nfunction stabilityToEnum(stability: Stability): string {\n switch (stability) {\n case 'beta':\n return 'Beta';\n case 'stable':\n return 'Stable';\n case 'deprecated':\n return 'Deprecated';\n case 'experimental':\n default:\n return 'Experimental';\n }\n}\n\nfunction escape(value: string): string {\n return value.replace(/`/g, '\\\\`').replace(/'/g, \"\\\\'\");\n}\n"],"mappings":";;;AAGA,SAAgB,2BACd,MACQ;CACR,MAAM,WAAW,aAAa,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,IAAI,iBAAiB;CAC7E,MAAM,UAAU,GAAG,SAAS;CAC5B,MAAM,aAAa,WAAW,SAAS;CAEvC,MAAM,YAAY,gBAAgB,KAAK;CACvC,MAAM,SAAS,aAAa,KAAK;CACjC,MAAM,WAAW,eAAe,KAAK;CACrC,MAAM,gBACJ,KAAK,cAAc,CAAC,KAAK,gBACrB,mCACA;AAEN,QAAO;;;;eAIM,QAAQ;;YAEX,aAAa,KAAK,KAAK,CAAC;eACrB,KAAK,QAAQ;iBACX,KAAK,SAAS;oBACX,OAAO,KAAK,YAAY,CAAC;cAC/B,OAAO,KAAK,MAAM,CAAC;oBACb,OAAO,KAAK,YAAY,CAAC;eAC9B,OAAO,KAAK,OAAO,CAAC;eACpB,KAAK,OAAO,KAAK,UAAU,IAAI,aAAa,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;aACpE,KAAK,KAAK,KAAK,QAAQ,IAAI,aAAa,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;+BAC1C,gBAAgB,KAAK,UAAU,CAAC;;eAEhD,UAAU;;EAEvB,SAAS,KAAK,aAAa,wBAAwB,aAAa,KAAK,WAAW,CAAC,IAAI,KAAK,gBAAgB,aAAa,KAAK,kBAAkB,GAAG,KAAK,cAAc,MAAM,GAAG;EAC7K,SAAS,kBAAkB,OAAO,KAAK,eAAe,KAAK,YAAY,CAAC;;;kBAGxD,WAAW;6BACA,QAAQ;;;;AAKrC,SAAS,gBAAgB,MAAsC;AAW7D,QAAO,cATL,KAAK,UAAU,YAAY,OACvB,SACA,OAAO,KAAK,UAAU,YAAY,WAChC,OAAO,KAAK,UAAU,QAAQ,GAC9B,SAEN,OAAO,KAAK,UAAU,qBAAqB,WACvC,uBAAuB,KAAK,UAAU,qBACtC,GAC6B;;AAGrC,SAAS,aAAa,MAAsC;AAG1D,QAAO,GAFW,oBAAoB,KAAK,WAAW,QAC/B,2BAA2B,KAAK,mBAAmB;;AAI5E,SAAS,eAAe,MAAsC;CAC5D,MAAM,UAAoB,EAAE;AAC5B,KAAI,KAAK,eACP,SAAQ,KAAK,wBAAwB,OAAO,KAAK,eAAe,CAAC,GAAG;AAEtE,KAAI,OAAO,KAAK,cAAc,SAC5B,SAAQ,KAAK,kBAAkB,KAAK,YAAY;AAElD,KAAI,KAAK,oBACP,SAAQ,KACN,6BAA6B,OAAO,KAAK,oBAAoB,CAAC,GAC/D;AAEH,KAAI,QAAQ,WAAW,EACrB,QAAO;AAET,QAAO,kBAAkB,QAAQ,KAAK,MAAM,CAAC;;AAG/C,SAAS,gBAAgB,WAA8B;AACrD,SAAQ,WAAR;EACE,KAAK,OACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,KAAK,aACH,QAAO;EAET,QACE,QAAO;;;AAIb,SAAS,OAAO,OAAuB;AACrC,QAAO,MAAM,QAAQ,MAAM,MAAM,CAAC,QAAQ,MAAM,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.d.ts","names":[],"sources":["../../src/templates/migration.ts"],"
|
|
1
|
+
{"version":3,"file":"migration.d.ts","names":[],"sources":["../../src/templates/migration.ts"],"mappings":";;;iBAGgB,qBAAA,CAAsB,IAAA,EAAM,iBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.js","names":[],"sources":["../../src/templates/migration.ts"],"sourcesContent":["import type { MigrationSpecData } from '../types/spec-types';\nimport { toPascalCase, escapeString } from './utils';\n\nexport function generateMigrationSpec(data: MigrationSpecData): string {\n const specName = toPascalCase(data.name.split('.').pop() ?? 'Migration');\n const migrationVar = `${specName}Migration`;\n\n const dependencies =\n data.dependencies.length > 0\n ? `dependencies: [${data.dependencies\n .map((dep) => `'${escapeString(dep)}'`)\n .join(', ')}],`\n : '';\n\n return `import type { MigrationSpec } from '@contractspec/lib.contracts/migrations';\n\nexport const ${migrationVar}: MigrationSpec = {\n meta: {\n key: '${escapeString(data.name)}',\n version: ${data.version},\n title: '${escape(data.title)}',\n description: '${escape(data.description ?? '')}',\n domain: '${escape(data.domain)}',\n owners: [${data.owners.map((owner) => `'${escapeString(owner)}'`).join(', ')}],\n tags: [${data.tags.map((tag) => `'${escapeString(tag)}'`).join(', ')}],\n stability: '${data.stability}',\n },\n plan: {\n up: [\n${renderSteps(data.up)}\n ],${\n data.down && data.down.length\n ? `\n down: [\n${renderSteps(data.down)}\n ],`\n : ''\n }\n },\n ${dependencies}\n};\n`;\n}\n\nfunction renderSteps(steps: MigrationSpecData['up']) {\n return steps\n .map((step) => {\n const description = step.description\n ? `description: '${escape(step.description)}',`\n : '';\n switch (step.kind) {\n case 'schema':\n return ` {\n kind: 'schema',\n ${description}\n sql: \\`${escape(step.sql ?? '')}\\`,\n }`;\n case 'data':\n return ` {\n kind: 'data',\n ${description}\n script: \\`${escape(step.script ?? '')}\\`,\n }`;\n case 'validation':\n default:\n return ` {\n kind: 'validation',\n ${description}\n assertion: \\`${escape(step.assertion ?? '')}\\`,\n }`;\n }\n })\n .join(',\\n');\n}\n\nfunction escape(value: string): string {\n return value.replace(/`/g, '\\\\`').replace(/'/g, \"\\\\'\");\n}\n"],"mappings":";;;AAGA,SAAgB,sBAAsB,MAAiC;CAErE,MAAM,eAAe,GADJ,aAAa,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,IAAI,YAAY,CACvC;CAEjC,MAAM,eACJ,KAAK,aAAa,SAAS,IACvB,kBAAkB,KAAK,aACpB,KAAK,QAAQ,IAAI,aAAa,IAAI,CAAC,GAAG,CACtC,KAAK,KAAK,CAAC,MACd;AAEN,QAAO;;eAEM,aAAa;;YAEhB,aAAa,KAAK,KAAK,CAAC;eACrB,KAAK,QAAQ;cACd,OAAO,KAAK,MAAM,CAAC;oBACb,OAAO,KAAK,eAAe,GAAG,CAAC;eACpC,OAAO,KAAK,OAAO,CAAC;eACpB,KAAK,OAAO,KAAK,UAAU,IAAI,aAAa,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;aACpE,KAAK,KAAK,KAAK,QAAQ,IAAI,aAAa,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;kBACvD,KAAK,UAAU;;;;EAI/B,YAAY,KAAK,GAAG,CAAC;QAEjB,KAAK,QAAQ,KAAK,KAAK,SACnB;;EAER,YAAY,KAAK,KAAK,CAAC;UAEf,GACL;;IAED,aAAa;;;;AAKjB,SAAS,YAAY,OAAgC;AACnD,QAAO,MACJ,KAAK,SAAS;EACb,MAAM,cAAc,KAAK,cACrB,iBAAiB,OAAO,KAAK,YAAY,CAAC,MAC1C;AACJ,UAAQ,KAAK,MAAb;GACE,KAAK,SACH,QAAO;;UAEP,YAAY;iBACL,OAAO,KAAK,OAAO,GAAG,CAAC;;GAEhC,KAAK,OACH,QAAO;;UAEP,YAAY;oBACF,OAAO,KAAK,UAAU,GAAG,CAAC;;
|
|
1
|
+
{"version":3,"file":"migration.js","names":[],"sources":["../../src/templates/migration.ts"],"sourcesContent":["import type { MigrationSpecData } from '../types/spec-types';\nimport { toPascalCase, escapeString } from './utils';\n\nexport function generateMigrationSpec(data: MigrationSpecData): string {\n const specName = toPascalCase(data.name.split('.').pop() ?? 'Migration');\n const migrationVar = `${specName}Migration`;\n\n const dependencies =\n data.dependencies.length > 0\n ? `dependencies: [${data.dependencies\n .map((dep) => `'${escapeString(dep)}'`)\n .join(', ')}],`\n : '';\n\n return `import type { MigrationSpec } from '@contractspec/lib.contracts/migrations';\n\nexport const ${migrationVar}: MigrationSpec = {\n meta: {\n key: '${escapeString(data.name)}',\n version: ${data.version},\n title: '${escape(data.title)}',\n description: '${escape(data.description ?? '')}',\n domain: '${escape(data.domain)}',\n owners: [${data.owners.map((owner) => `'${escapeString(owner)}'`).join(', ')}],\n tags: [${data.tags.map((tag) => `'${escapeString(tag)}'`).join(', ')}],\n stability: '${data.stability}',\n },\n plan: {\n up: [\n${renderSteps(data.up)}\n ],${\n data.down && data.down.length\n ? `\n down: [\n${renderSteps(data.down)}\n ],`\n : ''\n }\n },\n ${dependencies}\n};\n`;\n}\n\nfunction renderSteps(steps: MigrationSpecData['up']) {\n return steps\n .map((step) => {\n const description = step.description\n ? `description: '${escape(step.description)}',`\n : '';\n switch (step.kind) {\n case 'schema':\n return ` {\n kind: 'schema',\n ${description}\n sql: \\`${escape(step.sql ?? '')}\\`,\n }`;\n case 'data':\n return ` {\n kind: 'data',\n ${description}\n script: \\`${escape(step.script ?? '')}\\`,\n }`;\n case 'validation':\n default:\n return ` {\n kind: 'validation',\n ${description}\n assertion: \\`${escape(step.assertion ?? '')}\\`,\n }`;\n }\n })\n .join(',\\n');\n}\n\nfunction escape(value: string): string {\n return value.replace(/`/g, '\\\\`').replace(/'/g, \"\\\\'\");\n}\n"],"mappings":";;;AAGA,SAAgB,sBAAsB,MAAiC;CAErE,MAAM,eAAe,GADJ,aAAa,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,IAAI,YAAY,CACvC;CAEjC,MAAM,eACJ,KAAK,aAAa,SAAS,IACvB,kBAAkB,KAAK,aACpB,KAAK,QAAQ,IAAI,aAAa,IAAI,CAAC,GAAG,CACtC,KAAK,KAAK,CAAC,MACd;AAEN,QAAO;;eAEM,aAAa;;YAEhB,aAAa,KAAK,KAAK,CAAC;eACrB,KAAK,QAAQ;cACd,OAAO,KAAK,MAAM,CAAC;oBACb,OAAO,KAAK,eAAe,GAAG,CAAC;eACpC,OAAO,KAAK,OAAO,CAAC;eACpB,KAAK,OAAO,KAAK,UAAU,IAAI,aAAa,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;aACpE,KAAK,KAAK,KAAK,QAAQ,IAAI,aAAa,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;kBACvD,KAAK,UAAU;;;;EAI/B,YAAY,KAAK,GAAG,CAAC;QAEjB,KAAK,QAAQ,KAAK,KAAK,SACnB;;EAER,YAAY,KAAK,KAAK,CAAC;UAEf,GACL;;IAED,aAAa;;;;AAKjB,SAAS,YAAY,OAAgC;AACnD,QAAO,MACJ,KAAK,SAAS;EACb,MAAM,cAAc,KAAK,cACrB,iBAAiB,OAAO,KAAK,YAAY,CAAC,MAC1C;AACJ,UAAQ,KAAK,MAAb;GACE,KAAK,SACH,QAAO;;UAEP,YAAY;iBACL,OAAO,KAAK,OAAO,GAAG,CAAC;;GAEhC,KAAK,OACH,QAAO;;UAEP,YAAY;oBACF,OAAO,KAAK,UAAU,GAAG,CAAC;;GAGtC,QACE,QAAO;;UAEP,YAAY;uBACC,OAAO,KAAK,aAAa,GAAG,CAAC;;;GAG9C,CACD,KAAK,MAAM;;AAGhB,SAAS,OAAO,OAAuB;AACrC,QAAO,MAAM,QAAQ,MAAM,MAAM,CAAC,QAAQ,MAAM,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation.d.ts","names":[],"sources":["../../src/templates/operation.ts"],"
|
|
1
|
+
{"version":3,"file":"operation.d.ts","names":[],"sources":["../../src/templates/operation.ts"],"mappings":";;;;;;iBAWgB,qBAAA,CAAsB,IAAA,EAAM,iBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation.d.ts","names":[],"sources":["../../src/templates/presentation.ts"],"
|
|
1
|
+
{"version":3,"file":"presentation.d.ts","names":[],"sources":["../../src/templates/presentation.ts"],"mappings":";;;;;;iBAWgB,wBAAA,CAAyB,IAAA,EAAM,oBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","names":[],"sources":["../../src/templates/telemetry.ts"],"
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","names":[],"sources":["../../src/templates/telemetry.ts"],"mappings":";;;iBAGgB,qBAAA,CAAsB,IAAA,EAAM,iBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/templates/utils.ts"],"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/templates/utils.ts"],"mappings":";;AAOA;;;;;iBAAgB,WAAA,CAAY,GAAA;;;;iBAQZ,YAAA,CAAa,GAAA;AAU7B;;;AAAA,iBAAgB,WAAA,CAAY,GAAA;;AAU5B;;iBAAgB,UAAA,CAAW,GAAA;;;AAO3B;iBAAgB,YAAA,CAAa,KAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-runner.d.ts","names":[],"sources":["../../src/templates/workflow-runner.ts"],"
|
|
1
|
+
{"version":3,"file":"workflow-runner.d.ts","names":[],"sources":["../../src/templates/workflow-runner.ts"],"mappings":";UAAU,qBAAA;EACR,UAAA;EACA,cAAA;EACA,UAAA;EACA,YAAA;AAAA;AAAA,iBAGc,8BAAA,CAAA;EACd,UAAA;EACA,cAAA;EACA,UAAA;EACA;AAAA,GACC,qBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","names":[],"sources":["../../src/templates/workflow.ts"],"
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","names":[],"sources":["../../src/templates/workflow.ts"],"mappings":";;;;;;iBAWgB,oBAAA,CAAqB,IAAA,EAAM,gBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-types.d.ts","names":[],"sources":["../../src/types/analysis-types.ts"],"
|
|
1
|
+
{"version":3,"file":"analysis-types.d.ts","names":[],"sources":["../../src/types/analysis-types.ts"],"mappings":";;;;;;;;KAWY,gBAAA,GAAmB,gBAAA;;;;KAKnB,OAAA;AAaZ;;;;AAAA,KAAY,qBAAA;AAmBZ;;;AAAA,UAAiB,OAAA;EACf,GAAA;EACA,OAAA;AAAA;;;;;UAOe,mBAAA;EACf,IAAA;EACA,GAAA;EACA,OAAA;AAAA;;;;UAMe,YAAA;EACf,IAAA,EAAM,OAAA;EACN,GAAA;EACA,OAAA;EACA,UAAA;EACA,UAAA;AAAA;AAMF;;;AAAA,UAAiB,cAAA;EACf,QAAA;EACA,QAAA,EAAU,gBAAA;EACV,GAAA;EACA,OAAA;EACA,IAAA,GAAO,qBAAA;EACP,SAAA,GAAY,SAAA;EACZ,WAAA;EACA,IAAA;EACA,OAAA;EACA,MAAA;EACA,IAAA;EAGA,OAAA;EACA,KAAA;EACA,SAAA;EACA,UAAA;EACA,UAAA;EACA,aAAA;EAGA,aAAA,GAAgB,OAAA;EAChB,UAAA,GAAa,OAAA;EACb,QAAA,GAAW,OAAA;EAGX,UAAA,GAAa,mBAAA;EACb,YAAA;IACE,UAAA;IACA,QAAA;EAAA;EAIF,WAAA;AAAA;;;;UAMe,iBAAA;EACf,QAAA;EACA,GAAA;EACA,OAAA;EACA,KAAA;EACA,WAAA;EACA,IAAA;EACA,OAAA;EACA,MAAA;EACA,SAAA,GAAY,SAAA;EACZ,MAAA;EACA,IAAA;EAGA,UAAA,EAAY,OAAA;EACZ,MAAA,EAAQ,OAAA;EACR,aAAA,EAAe,OAAA;EACf,WAAA,EAAa,OAAA;EAGb,YAAA;IACE,QAAA,EAAU,OAAA;IACV,QAAA,EAAU,OAAA;EAAA;EAIZ,qBAAA;IAAyB,EAAA,EAAI,OAAA;IAAS,IAAA,EAAM,OAAA;EAAA;EAG5C,oBAAA;IACE,GAAA;IACA,OAAA;IACA,OAAA,EAAS,MAAA;EAAA;EAIX,WAAA;AAAA;;;;UAMe,iBAAA;EACf,QAAA;EACA,GAAA;EACA,OAAA;EACA,KAAA;EACA,WAAA;EACA,OAAA;EACA,IAAA;EACA,UAAA;EACA,SAAA,GAAY,SAAA;EACZ,MAAA;EACA,IAAA;EACA,MAAA;EAGA,IAAA;IACE,SAAA;IACA,SAAA;IACA,UAAA;EAAA;EAIF,QAAA;IACE,SAAA;IACA,OAAA;MAAW,OAAA;MAAkB,KAAA;IAAA;IAC7B,MAAA;MAAU,OAAA;MAAkB,WAAA;IAAA;IAC5B,GAAA;MAAO,OAAA;IAAA;EAAA;EAIT,WAAA;IACE,WAAA;IACA,OAAA;IACA,SAAA;IACA,SAAA;IACA,aAAA;IACA,QAAA;IACA,EAAA;IACA,IAAA;EAAA;AAAA;;;;KAOQ,gBAAA;;;;UAKK,gBAAA;EACf,IAAA,EAAM,gBAAA;EACN,IAAA;EACA,QAAA;EACA,QAAA;EACA,WAAA;AAAA;;;;UAMe,mBAAA;EACf,YAAA;AAAA;;;;UAMe,YAAA;EACf,GAAA;EACA,IAAA;EACA,YAAA;EACA,UAAA;AAAA;;AA3BF;;KAiCY,aAAA,GAAgB,GAAA,SAAY,YAAA;;;AA5BxC;UAiCiB,gBAAA;EACf,KAAA;EACA,MAAA;EACA,QAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generation-types.d.ts","names":[],"sources":["../../src/types/generation-types.ts"],"
|
|
1
|
+
{"version":3,"file":"generation-types.d.ts","names":[],"sources":["../../src/types/generation-types.ts"],"mappings":";;;;;;;;KAWY,UAAA;AAKZ;;;AAAA,UAAiB,eAAA;EACf,UAAA;EACA,OAAA;EACA,SAAA;EAMA,cAAA;EACA,YAAA;EACA,SAAA;EACA,WAAA;IACE,UAAA;IACA,MAAA;IACA,aAAA;IACA,KAAA;IACA,SAAA;IACA,YAAA;IACA,SAAA;IACA,UAAA;IACA,SAAA;IACA,WAAA;IACA,SAAA;IACA,YAAA;IACA,SAAA;EAAA;EAEF,aAAA;EACA,WAAA;EACA,QAAA,GAAW,cAAA;AAAA;;AAMb;;UAAiB,qBAAA;EACf,WAAA;EACA,IAAA,GAAO,MAAA;EACP,gBAAA,GAAmB,gBAAA;AAAA"}
|
|
@@ -2,7 +2,6 @@ import { Stability } from "./spec-types.js";
|
|
|
2
2
|
import { AnalyzedOperationKind, AnalyzedSpecType } from "./analysis-types.js";
|
|
3
3
|
|
|
4
4
|
//#region src/types/llm-types.d.ts
|
|
5
|
-
|
|
6
5
|
/**
|
|
7
6
|
* LLM export format options.
|
|
8
7
|
* - **full**: Complete information including source code and all details (for deep LLM context)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-types.d.ts","names":[],"sources":["../../src/types/llm-types.ts"],"
|
|
1
|
+
{"version":3,"file":"llm-types.d.ts","names":[],"sources":["../../src/types/llm-types.ts"],"mappings":";;;;;;AAoBA;;;;KALY,eAAA;AAUZ;;;AAAA,KALY,SAAA;;AAUZ;;KALY,gBAAA;;;AAaZ;UARiB,OAAA;EACf,IAAA;EACA,OAAA;AAAA;;;;UAMe,cAAA;EAUf;EARA,GAAA;EAYA;EAVA,OAAA;EAYO;EAVP,WAAA;EAiBe;EAff,SAAA,GAAY,SAAA;;EAEZ,MAAA;EAiBU;EAfV,IAAA;EA6BgB;EA3BhB,IAAA;EA+BW;EA7BX,OAAA;AAAA;;;;;UAOe,UAAA;EAIf;EAFA,IAAA,EAAM,cAAA;EAIN;EAFA,QAAA,EAAU,gBAAA;EAIV;EAFA,IAAA,GAAO,qBAAA;EAMP;EAJA,KAAA;EAQA;EANA,SAAA;EAQgB;EANhB,UAAA;EAQa;EANb,UAAA;EAQW;EANX,aAAA;EAUA;EARA,aAAA,GAAgB,OAAA;EAYH;EAVb,UAAA,GAAa,OAAA;EAYJ;EAVT,QAAA,GAAW,OAAA;EAYK;EAVhB,QAAA;EAUuB;EARvB,WAAA;EAcoC;EAVpC,UAAA,GAAa,OAAA;EAYU;EAVvB,MAAA,GAAS,OAAA;EAUD;EARR,aAAA,GAAgB,OAAA;AAAA;;;;UAMD,qBAAA;EAce;EAZ9B,MAAA,EAAQ,eAAA;EAkBe;EAhBvB,KAAA;EAcA;EAZA,aAAA;EAcQ;EAZR,mBAAA;AAAA;AAkBF;;;AAAA,UAZiB,eAAA;EAcf;EAZA,OAAA;EAcQ;EAZR,SAAA;EAgBA;EAdA,MAAA,EAAQ,eAAA;AAAA;;AAoBV;;UAdiB,kBAAA;EAciB;EAZhC,MAAA;EAgBA;EAdA,MAAA,EAAQ,iBAAA;EAkBR;EAhBA,WAAA;EAgBU;EAdV,IAAA,EAAM,gBAAA;AAAA;;;;UAMS,iBAAA;;EAEf,QAAA;;EAEA,OAAA;;EAEA,QAAA;;EAEA,UAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rulesync-types.d.ts","names":[],"sources":["../../src/types/rulesync-types.ts"],"
|
|
1
|
+
{"version":3,"file":"rulesync-types.d.ts","names":[],"sources":["../../src/types/rulesync-types.ts"],"mappings":";;;;;;UASiB,cAAA;EAIf;EAFA,OAAA;EAMA;EAJA,QAAA;EAMA;EAJA,KAAA;EAMS;EAJT,OAAA,EAAS,cAAA;;EAET,QAAA;;EAEA,SAAA;AAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { OpKind } from "@contractspec/lib.contracts";
|
|
2
2
|
|
|
3
3
|
//#region src/types/spec-types.d.ts
|
|
4
|
-
|
|
5
4
|
type SpecType = 'operation' | 'event' | 'presentation' | 'form' | 'feature' | 'workflow' | 'data-view' | 'migration' | 'telemetry' | 'experiment' | 'app-config' | 'integration' | 'knowledge';
|
|
6
5
|
type PresentationKind = 'web_component' | 'markdown' | 'data';
|
|
7
6
|
type Stability = 'experimental' | 'beta' | 'stable' | 'deprecated';
|
|
@@ -279,7 +278,7 @@ interface MigrationSpecData extends BaseSpecData {
|
|
|
279
278
|
up: MigrationStepData[];
|
|
280
279
|
down?: MigrationStepData[];
|
|
281
280
|
}
|
|
282
|
-
type IntegrationCategoryData = 'payments' | 'email' | 'calendar' | 'sms' | 'ai-llm' | 'ai-voice' | 'speech-to-text' | 'vector-db' | 'storage' | 'accounting' | 'crm' | 'helpdesk' | 'open-banking' | 'custom';
|
|
281
|
+
type IntegrationCategoryData = 'payments' | 'email' | 'calendar' | 'sms' | 'ai-llm' | 'ai-voice' | 'analytics' | 'speech-to-text' | 'vector-db' | 'storage' | 'accounting' | 'crm' | 'helpdesk' | 'project-management' | 'open-banking' | 'database' | 'custom';
|
|
283
282
|
type IntegrationConfigFieldType = 'string' | 'number' | 'boolean';
|
|
284
283
|
type IntegrationOwnershipModeData = 'managed' | 'byok';
|
|
285
284
|
type IntegrationHealthCheckMethod = 'ping' | 'list' | 'custom';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-types.d.ts","names":[],"sources":["../../src/types/spec-types.ts"],"
|
|
1
|
+
{"version":3,"file":"spec-types.d.ts","names":[],"sources":["../../src/types/spec-types.ts"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contractspec/module.workspace",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.57.0",
|
|
4
4
|
"description": "Workspace discovery and management module",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"contractspec",
|
|
@@ -29,16 +29,16 @@
|
|
|
29
29
|
"test": "bun test"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@contractspec/lib.contracts": "1.
|
|
33
|
-
"@contractspec/lib.schema": "1.
|
|
32
|
+
"@contractspec/lib.contracts": "1.57.0",
|
|
33
|
+
"@contractspec/lib.schema": "1.57.0",
|
|
34
34
|
"compare-versions": "^6.1.1",
|
|
35
35
|
"ts-morph": "^27.0.2",
|
|
36
36
|
"zod": "^4.3.5"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@contractspec/tool.tsdown": "1.
|
|
40
|
-
"@contractspec/tool.typescript": "1.
|
|
41
|
-
"tsdown": "^0.
|
|
39
|
+
"@contractspec/tool.tsdown": "1.57.0",
|
|
40
|
+
"@contractspec/tool.typescript": "1.57.0",
|
|
41
|
+
"tsdown": "^0.20.3",
|
|
42
42
|
"typescript": "^5.9.3"
|
|
43
43
|
},
|
|
44
44
|
"exports": {
|