@kubuild/core 0.8.1 → 0.8.2

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.
Files changed (97) hide show
  1. package/dist/document/artboards.d.cts +113 -0
  2. package/dist/document/artboards.d.cts.map +1 -0
  3. package/dist/document/command-tree-utils.d.cts +81 -0
  4. package/dist/document/command-tree-utils.d.cts.map +1 -0
  5. package/dist/document/commands.d.cts +204 -0
  6. package/dist/document/commands.d.cts.map +1 -0
  7. package/dist/document/document-utils.d.cts +49 -0
  8. package/dist/document/document-utils.d.cts.map +1 -0
  9. package/dist/document/document-utils.d.ts +1 -1
  10. package/dist/document/document-utils.d.ts.map +1 -1
  11. package/dist/document/history.d.cts +153 -0
  12. package/dist/document/history.d.cts.map +1 -0
  13. package/dist/document/history.d.ts +1 -1
  14. package/dist/document/history.d.ts.map +1 -1
  15. package/dist/document/index.d.cts +6 -0
  16. package/dist/document/index.d.cts.map +1 -0
  17. package/dist/document/index.d.ts +5 -5
  18. package/dist/document/index.d.ts.map +1 -1
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.cts +7 -0
  21. package/dist/index.d.cts.map +1 -0
  22. package/dist/index.d.ts +6 -6
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/io/exporter.d.cts +89 -0
  26. package/dist/io/exporter.d.cts.map +1 -0
  27. package/dist/io/exporter.d.ts +3 -3
  28. package/dist/io/exporter.d.ts.map +1 -1
  29. package/dist/io/importer.d.cts +245 -0
  30. package/dist/io/importer.d.cts.map +1 -0
  31. package/dist/io/importer.d.ts +3 -3
  32. package/dist/io/importer.d.ts.map +1 -1
  33. package/dist/io/index.d.cts +8 -0
  34. package/dist/io/index.d.cts.map +1 -0
  35. package/dist/io/index.d.ts +7 -7
  36. package/dist/io/index.d.ts.map +1 -1
  37. package/dist/io/load-project.d.cts +42 -0
  38. package/dist/io/load-project.d.cts.map +1 -0
  39. package/dist/io/migration.d.cts +112 -0
  40. package/dist/io/migration.d.cts.map +1 -0
  41. package/dist/io/round-trip-comparator.d.cts +38 -0
  42. package/dist/io/round-trip-comparator.d.cts.map +1 -0
  43. package/dist/io/template-utils.d.cts +129 -0
  44. package/dist/io/template-utils.d.cts.map +1 -0
  45. package/dist/io/tracking-sanitizer.d.cts +23 -0
  46. package/dist/io/tracking-sanitizer.d.cts.map +1 -0
  47. package/dist/runtime/binding-resolver.d.cts +16 -0
  48. package/dist/runtime/binding-resolver.d.cts.map +1 -0
  49. package/dist/runtime/binding-resolver.d.ts +1 -1
  50. package/dist/runtime/binding-resolver.d.ts.map +1 -1
  51. package/dist/runtime/conditional-resolver.d.cts +45 -0
  52. package/dist/runtime/conditional-resolver.d.cts.map +1 -0
  53. package/dist/runtime/index.d.cts +9 -0
  54. package/dist/runtime/index.d.cts.map +1 -0
  55. package/dist/runtime/index.d.ts +8 -8
  56. package/dist/runtime/index.d.ts.map +1 -1
  57. package/dist/runtime/interpolator.d.cts +50 -0
  58. package/dist/runtime/interpolator.d.cts.map +1 -0
  59. package/dist/runtime/pipeline-executor.d.cts +136 -0
  60. package/dist/runtime/pipeline-executor.d.cts.map +1 -0
  61. package/dist/runtime/server-tracking.d.cts +143 -0
  62. package/dist/runtime/server-tracking.d.cts.map +1 -0
  63. package/dist/runtime/state-store.d.cts +128 -0
  64. package/dist/runtime/state-store.d.cts.map +1 -0
  65. package/dist/runtime/tracking-relay.d.cts +44 -0
  66. package/dist/runtime/tracking-relay.d.cts.map +1 -0
  67. package/dist/runtime/tracking-relay.d.ts +1 -1
  68. package/dist/runtime/tracking-relay.d.ts.map +1 -1
  69. package/dist/runtime/variable-catalog.d.cts +9 -0
  70. package/dist/runtime/variable-catalog.d.cts.map +1 -0
  71. package/dist/runtime/variable-catalog.d.ts +1 -1
  72. package/dist/runtime/variable-catalog.d.ts.map +1 -1
  73. package/dist/types/index.d.cts +2 -0
  74. package/dist/types/index.d.cts.map +1 -0
  75. package/dist/types/index.d.ts +1 -1
  76. package/dist/types/index.d.ts.map +1 -1
  77. package/dist/types/interfaces.d.cts +175 -0
  78. package/dist/types/interfaces.d.cts.map +1 -0
  79. package/dist/types/interfaces.d.ts +1 -1
  80. package/dist/types/interfaces.d.ts.map +1 -1
  81. package/dist/validation/index.d.cts +5 -0
  82. package/dist/validation/index.d.cts.map +1 -0
  83. package/dist/validation/index.d.ts +4 -4
  84. package/dist/validation/index.d.ts.map +1 -1
  85. package/dist/validation/project-validator.d.cts +38 -0
  86. package/dist/validation/project-validator.d.cts.map +1 -0
  87. package/dist/validation/project-validator.d.ts +1 -1
  88. package/dist/validation/project-validator.d.ts.map +1 -1
  89. package/dist/validation/security.d.cts +99 -0
  90. package/dist/validation/security.d.cts.map +1 -0
  91. package/dist/validation/validation-engine.d.cts +39 -0
  92. package/dist/validation/validation-engine.d.cts.map +1 -0
  93. package/dist/validation/validator.d.cts +80 -0
  94. package/dist/validation/validator.d.cts.map +1 -0
  95. package/dist/validation/validator.d.ts +1 -1
  96. package/dist/validation/validator.d.ts.map +1 -1
  97. package/package.json +11 -6
@@ -0,0 +1,38 @@
1
+ import { PageDocument, Manifest } from '@kubuild/schema';
2
+ export type SemanticDifferenceKind = 'METADATA_MISMATCH' | 'NODE_MISSING' | 'NODE_EXTRA' | 'NODE_ORDER' | 'NODE_TYPE' | 'PROP_MISMATCH' | 'STYLE_MISMATCH' | 'BINDING_MISMATCH' | 'ACTION_MISMATCH' | 'ASSET_MISMATCH' | 'DEPENDENCY_MISMATCH';
3
+ export interface SemanticDifference {
4
+ path: string;
5
+ kind: SemanticDifferenceKind;
6
+ message: string;
7
+ expected?: unknown;
8
+ actual?: unknown;
9
+ }
10
+ export interface SemanticCompareOptions {
11
+ /**
12
+ * Optional map of original asset IDs to host-remapped asset IDs.
13
+ * Used when host renamed colliding assets during import.
14
+ */
15
+ assetIdMap?: Record<string, string> | Map<string, string>;
16
+ /**
17
+ * Whether to ignore transient timestamp fields (e.g. createdAt/updatedAt).
18
+ * Default: true.
19
+ */
20
+ ignoreTimestamps?: boolean;
21
+ }
22
+ export interface SemanticComparisonResult {
23
+ equivalent: boolean;
24
+ differences: SemanticDifference[];
25
+ }
26
+ /**
27
+ * Semantically compares two PageDocuments, checking metadata, tree structure,
28
+ * node order, props, responsive styles, bindings, action references, and asset mappings.
29
+ *
30
+ * Only documented transient fields (e.g. transient timestamps, host-generated asset IDs)
31
+ * are ignored or normalized per options.
32
+ */
33
+ export declare function compareDocumentsSemantically(expected: PageDocument, actual: PageDocument, options?: SemanticCompareOptions): SemanticComparisonResult;
34
+ /**
35
+ * Semantically compares exported and imported package manifests.
36
+ */
37
+ export declare function compareManifestsSemantically(expected: Manifest, actual: Manifest, options?: SemanticCompareOptions): SemanticComparisonResult;
38
+ //# sourceMappingURL=round-trip-comparator.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round-trip-comparator.d.cts","sourceRoot":"","sources":["../../src/io/round-trip-comparator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAIZ,QAAQ,EAIT,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,sBAAsB,GAC9B,mBAAmB,GACnB,cAAc,GACd,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,eAAe,GACf,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,gBAAgB,GAChB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1D;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC;AAiYD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,sBAA2B,GACnC,wBAAwB,CA2D1B;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,EAChB,OAAO,GAAE,sBAA2B,GACnC,wBAAwB,CAuF1B"}
@@ -0,0 +1,129 @@
1
+ import { type TemplateRecord, type TemplateRequirements, type PageDocument, type Node } from '@kubuild/schema';
2
+ /**
3
+ * Built-in component types (everything `createDefaultComponentRegistry()` registers).
4
+ * Derived from the canonical `BUILTIN_COMPONENT_TYPES` in `@kubuild/schema`; a test in
5
+ * `@kubuild/components` asserts this set equals the default registry's types.
6
+ */
7
+ export declare const CORE_BUILTIN_COMPONENTS: ReadonlySet<string>;
8
+ /**
9
+ * Structured validation error entry
10
+ */
11
+ export interface TemplateValidationError {
12
+ code: string;
13
+ message: string;
14
+ path: string;
15
+ }
16
+ /**
17
+ * Result of template record validation
18
+ */
19
+ export interface TemplateValidationResult {
20
+ valid: boolean;
21
+ data?: TemplateRecord;
22
+ errors?: TemplateValidationError[];
23
+ }
24
+ /**
25
+ * Validates a template record value against TemplateRecordSchema and returns structured errors.
26
+ */
27
+ export declare function validateTemplate(value: unknown): TemplateValidationResult;
28
+ /**
29
+ * Extracts required components and capabilities from a PageDocument.
30
+ * Detects any custom/non-core component types used in the document tree.
31
+ */
32
+ export declare function extractTemplateRequirements(doc: PageDocument, builtinComponents?: ReadonlySet<string>): TemplateRequirements;
33
+ /**
34
+ * Parameters for creating a TemplateRecord
35
+ */
36
+ export interface CreateTemplateParams {
37
+ id: string;
38
+ name: string;
39
+ description?: string;
40
+ category?: string;
41
+ tags?: string[];
42
+ thumbnail?: TemplateRecord['thumbnail'];
43
+ author?: string;
44
+ version?: string;
45
+ document?: PageDocument;
46
+ packageReference?: TemplateRecord['packageReference'];
47
+ requirements?: TemplateRequirements;
48
+ createdAt?: string;
49
+ updatedAt?: string;
50
+ custom?: Record<string, unknown>;
51
+ }
52
+ /**
53
+ * Creates and validates a TemplateRecord.
54
+ * Automatically extracts requirements from the embedded document if requirements are not explicitly supplied.
55
+ */
56
+ export declare function createTemplateRecord(params: CreateTemplateParams): TemplateRecord;
57
+ /**
58
+ * Required metadata parameters for saving a draft as a template.
59
+ * id and name are strictly required and non-empty.
60
+ */
61
+ export interface SaveTemplateMetadata {
62
+ id: string;
63
+ name: string;
64
+ description?: string;
65
+ category?: string;
66
+ tags?: string[];
67
+ thumbnail?: TemplateRecord['thumbnail'];
68
+ author?: string;
69
+ version?: string;
70
+ custom?: Record<string, unknown>;
71
+ }
72
+ export interface SaveDraftAsTemplateOptions {
73
+ validateDraft?: boolean;
74
+ requirements?: TemplateRequirements;
75
+ }
76
+ /**
77
+ * Exports a draft document snapshot as an immutable reusable TemplateRecord.
78
+ * - Requires mandatory metadata (id, name).
79
+ * - Validates draft document structure.
80
+ * - Extracts component/capability requirements.
81
+ * - Creates a deep-cloned immutable snapshot completely decoupled from the active draft.
82
+ */
83
+ export declare function saveDraftAsTemplate(draft: PageDocument, metadata: SaveTemplateMetadata, options?: SaveDraftAsTemplateOptions): TemplateRecord;
84
+ /**
85
+ * Options for cloning/instantiating a template into a new page document.
86
+ */
87
+ export interface CloneTemplateOptions {
88
+ /**
89
+ * Title for the newly created page document. Defaults to template name or document title.
90
+ */
91
+ title?: string;
92
+ /**
93
+ * Author for the newly created page document.
94
+ */
95
+ author?: string;
96
+ /**
97
+ * Optional custom ID generator function for node duplication.
98
+ */
99
+ idGenerator?: (oldId: string, node: Node) => string;
100
+ /**
101
+ * Custom ID prefix for freshly generated node IDs. Defaults to random string / timestamp.
102
+ */
103
+ idPrefix?: string;
104
+ /**
105
+ * Whether to record origin template metadata in metadata.custom.originTemplate (defaults to true).
106
+ */
107
+ recordOrigin?: boolean;
108
+ /**
109
+ * Additional custom metadata for the new document.
110
+ */
111
+ customMetadata?: Record<string, unknown>;
112
+ }
113
+ /**
114
+ * Clones a template (or existing document) into a brand new PageDocument.
115
+ * - Generates ALL NEW node IDs across the entire tree (root page node and all children).
116
+ * - Deep-copies every other node field (props, styles, animation, actions, formConfig) and
117
+ * remaps node-id references inside the tree (e.g. `modalNodeId`, `formId`) to the new ids;
118
+ * references to ids outside the tree are left untouched.
119
+ * - Ensures 100% ID difference from the source template.
120
+ * - Sets fresh creation/update timestamps.
121
+ * - Preserves origin template version/id in custom metadata.
122
+ * - Guarantees full memory and reference isolation from the template source.
123
+ */
124
+ export declare function cloneTemplateAsPage(templateOrDoc: TemplateRecord | PageDocument, options?: CloneTemplateOptions): PageDocument;
125
+ /**
126
+ * Helper to verify that two PageDocuments share ZERO overlapping node IDs.
127
+ */
128
+ export declare function areNodeIdsCompletelyDistinct(docA: PageDocument, docB: PageDocument): boolean;
129
+ //# sourceMappingURL=template-utils.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-utils.d.cts","sourceRoot":"","sources":["../../src/io/template-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Removes host-owned secret / destination fields (e.g. Meta `capiAccessToken`, TikTok
3
+ * `accessToken`, GA4 `measurementProtocolSecret`, `serverRelayUrl`, custom `endpointUrl` /
4
+ * `headers`) from a tracking config object IN PLACE.
5
+ *
6
+ * Returns the dotted paths (relative to the tracking object) of every field removed.
7
+ * Safe on untrusted input: non-object values are ignored.
8
+ */
9
+ export declare function stripTrackingSecretsInPlace(tracking: unknown, basePath?: string): string[];
10
+ /**
11
+ * Strips tracking secrets from every place a document (page or project) can carry a
12
+ * tracking config: `tracking`, `metadata.tracking`, and each `artboards[i].document.tracking`.
13
+ * Mutates `doc` in place; pass a clone if the original must be preserved.
14
+ */
15
+ export declare function stripDocumentTrackingSecretsInPlace(doc: unknown): string[];
16
+ /**
17
+ * Non-mutating variant: returns a sanitized deep copy plus the removed field paths.
18
+ */
19
+ export declare function sanitizeDocumentTracking<T>(doc: T): {
20
+ document: T;
21
+ removed: string[];
22
+ };
23
+ //# sourceMappingURL=tracking-sanitizer.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracking-sanitizer.d.cts","sourceRoot":"","sources":["../../src/io/tracking-sanitizer.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,SAAa,GAAG,MAAM,EAAE,CAkB9F;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CA0B1E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAKtF"}
@@ -0,0 +1,16 @@
1
+ import type { VariableBinding } from '@kubuild/schema';
2
+ import type { RuntimeContext } from '../types/interfaces.cjs';
3
+ export type ResolveOutcome = {
4
+ status: 'resolved';
5
+ value: unknown;
6
+ } | {
7
+ status: 'fallback';
8
+ value: unknown;
9
+ } | {
10
+ status: 'empty';
11
+ value: '';
12
+ };
13
+ export declare function resolveBinding(binding: Pick<VariableBinding, 'key' | 'fallback'>, context: RuntimeContext | undefined): ResolveOutcome;
14
+ /** Convenience wrapper returning just the resolved/fallback/empty value. */
15
+ export declare function resolveBindingValue(binding: Pick<VariableBinding, 'key' | 'fallback'>, context: RuntimeContext | undefined): unknown;
16
+ //# sourceMappingURL=binding-resolver.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-resolver.d.cts","sourceRoot":"","sources":["../../src/runtime/binding-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAQ7D,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,EAAE,CAAA;CAAE,CAAC;AAInC,wBAAgB,cAAc,CAC5B,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,UAAU,CAAC,EAClD,OAAO,EAAE,cAAc,GAAG,SAAS,GAClC,cAAc,CAsChB;AASD,4EAA4E;AAC5E,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,UAAU,CAAC,EAClD,OAAO,EAAE,cAAc,GAAG,SAAS,GAClC,OAAO,CAET"}
@@ -1,5 +1,5 @@
1
1
  import type { VariableBinding } from '@kubuild/schema';
2
- import type { RuntimeContext } from '../types/interfaces';
2
+ import type { RuntimeContext } from '../types/interfaces.js';
3
3
  export type ResolveOutcome = {
4
4
  status: 'resolved';
5
5
  value: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"binding-resolver.d.ts","sourceRoot":"","sources":["../../src/runtime/binding-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQ1D,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,EAAE,CAAA;CAAE,CAAC;AAInC,wBAAgB,cAAc,CAC5B,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,UAAU,CAAC,EAClD,OAAO,EAAE,cAAc,GAAG,SAAS,GAClC,cAAc,CAsChB;AASD,4EAA4E;AAC5E,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,UAAU,CAAC,EAClD,OAAO,EAAE,cAAc,GAAG,SAAS,GAClC,OAAO,CAET"}
1
+ {"version":3,"file":"binding-resolver.d.ts","sourceRoot":"","sources":["../../src/runtime/binding-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAQ7D,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,EAAE,CAAA;CAAE,CAAC;AAInC,wBAAgB,cAAc,CAC5B,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,UAAU,CAAC,EAClD,OAAO,EAAE,cAAc,GAAG,SAAS,GAClC,cAAc,CAsChB;AASD,4EAA4E;AAC5E,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,UAAU,CAAC,EAClD,OAAO,EAAE,cAAc,GAAG,SAAS,GAClC,OAAO,CAET"}
@@ -0,0 +1,45 @@
1
+ import type { ActionStepCondition, ConditionOperator } from '@kubuild/schema';
2
+ /**
3
+ * Extended condition operators supported by the evaluator.
4
+ */
5
+ export type ExtendedConditionOperator = ConditionOperator | 'starts_with' | 'ends_with' | 'is_empty' | 'is_not_empty' | 'in' | 'not_in';
6
+ /**
7
+ * Options for fine-tuning condition evaluation.
8
+ */
9
+ export interface ConditionEvaluationOptions {
10
+ caseInsensitive?: boolean;
11
+ trimStrings?: boolean;
12
+ }
13
+ /**
14
+ * Represents a group of conditions evaluated together using AND / OR combinators.
15
+ */
16
+ export interface ConditionGroup {
17
+ combinator: 'and' | 'or';
18
+ conditions: (ActionStepCondition | ConditionGroup)[];
19
+ }
20
+ /**
21
+ * Type guard to check if a condition item is a ConditionGroup.
22
+ */
23
+ export declare function isConditionGroup(item: ActionStepCondition | ConditionGroup): item is ConditionGroup;
24
+ /**
25
+ * Checks whether a given value is considered empty.
26
+ * Returns true for undefined, null, empty string, empty array, or empty object.
27
+ */
28
+ export declare function isValueEmpty(value: unknown): boolean;
29
+ /**
30
+ * Evaluates an operator against an actual value and an optional expected value.
31
+ */
32
+ export declare function evaluateOperator(operator: ExtendedConditionOperator | string, actual: unknown, expected?: unknown, options?: ConditionEvaluationOptions): boolean;
33
+ /**
34
+ * Resolves a field value from context and evaluates a single ActionStepCondition.
35
+ */
36
+ export declare function evaluateCondition(condition: ActionStepCondition | undefined, context: Record<string, unknown>, options?: ConditionEvaluationOptions): boolean;
37
+ /**
38
+ * Evaluates a ConditionGroup (AND / OR group with nested conditions).
39
+ */
40
+ export declare function evaluateConditionGroup(group: ConditionGroup, context: Record<string, unknown>, options?: ConditionEvaluationOptions): boolean;
41
+ /**
42
+ * Evaluates a list of conditions and/or condition groups using a given combinator ('and' | 'or').
43
+ */
44
+ export declare function evaluateConditions(conditions: (ActionStepCondition | ConditionGroup)[], context: Record<string, unknown>, combinator?: 'and' | 'or', options?: ConditionEvaluationOptions): boolean;
45
+ //# sourceMappingURL=conditional-resolver.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditional-resolver.d.cts","sourceRoot":"","sources":["../../src/runtime/conditional-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG9E;;GAEG;AACH,MAAM,MAAM,yBAAyB,GACjC,iBAAiB,GACjB,aAAa,GACb,WAAW,GACX,UAAU,GACV,cAAc,GACd,IAAI,GACJ,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,CAAC,mBAAmB,GAAG,cAAc,CAAC,EAAE,CAAC;CACtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,mBAAmB,GAAG,cAAc,GACzC,IAAI,IAAI,cAAc,CAExB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAcpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,yBAAyB,GAAG,MAAM,EAC5C,MAAM,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CA+IT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,mBAAmB,GAAG,SAAS,EAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAWT;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAsBT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,CAAC,mBAAmB,GAAG,cAAc,CAAC,EAAE,EACpD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,UAAU,GAAE,KAAK,GAAG,IAAY,EAChC,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAET"}
@@ -0,0 +1,9 @@
1
+ export * from './binding-resolver.cjs';
2
+ export * from './variable-catalog.cjs';
3
+ export * from './interpolator.cjs';
4
+ export * from './conditional-resolver.cjs';
5
+ export * from './pipeline-executor.cjs';
6
+ export * from './state-store.cjs';
7
+ export * from './server-tracking.cjs';
8
+ export * from './tracking-relay.cjs';
9
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AAErC,cAAc,qBAAqB,CAAC"}
@@ -1,9 +1,9 @@
1
- export * from './binding-resolver';
2
- export * from './variable-catalog';
3
- export * from './interpolator';
4
- export * from './conditional-resolver';
5
- export * from './pipeline-executor';
6
- export * from './state-store';
7
- export * from './server-tracking';
8
- export * from './tracking-relay';
1
+ export * from './binding-resolver.js';
2
+ export * from './variable-catalog.js';
3
+ export * from './interpolator.js';
4
+ export * from './conditional-resolver.js';
5
+ export * from './pipeline-executor.js';
6
+ export * from './state-store.js';
7
+ export * from './server-tracking.js';
8
+ export * from './tracking-relay.js';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAElC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AAErC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Template and Expression Variable Interpolator
3
+ *
4
+ * Provides safe, deterministic resolution and interpolation of template strings
5
+ * like `{{form.email}}`, `{{variables.token}}`, and `{{response.data.id}}` into
6
+ * targets without using eval() or Function().
7
+ */
8
+ /**
9
+ * Standard structured runtime context for interpolations.
10
+ */
11
+ export interface InterpolationContext {
12
+ form?: Record<string, unknown>;
13
+ variables?: Record<string, unknown>;
14
+ response?: Record<string, unknown>;
15
+ state?: Record<string, unknown>;
16
+ [key: string]: unknown;
17
+ }
18
+ /**
19
+ * Checks if a string contains one or more `{{ ... }}` template expressions.
20
+ */
21
+ export declare function hasTemplateExpressions(text: unknown): boolean;
22
+ /**
23
+ * Extracts all unique property keys / variable paths referenced inside `{{ ... }}`.
24
+ */
25
+ export declare function extractTemplateVariables(text: string): string[];
26
+ /**
27
+ * Safely traverses a nested data source to resolve a dot/bracket path
28
+ * (e.g. `form.user.profile.name`, `response.data[0].id`, `items.0.title`).
29
+ *
30
+ * Returns `fallback` if any segment is missing, undefined, null, or points to
31
+ * a function or forbidden prototype property.
32
+ */
33
+ export declare function resolvePropertyPath(source: unknown, path: string, fallback?: unknown): unknown;
34
+ /**
35
+ * Interpolates all `{{ path }}` placeholders in a template string using values
36
+ * from the provided context object.
37
+ *
38
+ * If a variable cannot be resolved, it replaces it with `fallback` (default: `""`).
39
+ */
40
+ export declare function interpolateTemplateString(template: string, context?: Record<string, unknown>, fallback?: string): string;
41
+ /**
42
+ * Recursively interpolates any value (string, object, array, primitive).
43
+ *
44
+ * - If string is exactly `{{ path }}`, returns the raw resolved value (retaining type: number, boolean, object, array).
45
+ * - If string contains embedded templates (e.g. `Bearer {{token}}`), returns the interpolated string.
46
+ * - If array, interpolates every element.
47
+ * - If object, interpolates every property value while stripping forbidden prototype keys.
48
+ */
49
+ export declare function interpolateValue(value: unknown, context?: Record<string, unknown>): unknown;
50
+ //# sourceMappingURL=interpolator.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolator.d.cts","sourceRoot":"","sources":["../../src/runtime/interpolator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAG7D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB/D;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CA6CT;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,GAAE,MAAW,GACpB,MAAM,CAqBR;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CA8B3F"}
@@ -0,0 +1,136 @@
1
+ import type { ActionPipeline, ActionStep, ActionStepCondition, ActionStepType } from '@kubuild/schema';
2
+ /**
3
+ * Execution context shared across action steps in a pipeline.
4
+ */
5
+ export interface PipelineExecutionContext {
6
+ form?: Record<string, unknown>;
7
+ variables?: Record<string, unknown>;
8
+ state?: Record<string, unknown>;
9
+ response?: unknown;
10
+ stepResults?: Record<string, StepExecutionResult>;
11
+ error?: unknown;
12
+ lastError?: unknown;
13
+ nodeId?: string;
14
+ document?: unknown;
15
+ [key: string]: unknown;
16
+ }
17
+ /**
18
+ * Status of an individual step execution.
19
+ */
20
+ export type StepExecutionStatus = 'success' | 'error' | 'skipped' | 'cancelled';
21
+ /**
22
+ * Result of executing an individual action step.
23
+ */
24
+ export interface StepExecutionResult {
25
+ stepId: string;
26
+ stepType: ActionStepType | string;
27
+ status: StepExecutionStatus;
28
+ data?: unknown;
29
+ error?: Error | unknown;
30
+ durationMs: number;
31
+ subResults?: StepExecutionResult[];
32
+ }
33
+ /**
34
+ * Overall result of executing an action pipeline.
35
+ */
36
+ export interface PipelineExecutionResult {
37
+ pipelineId: string;
38
+ success: boolean;
39
+ status: 'completed' | 'failed' | 'cancelled';
40
+ stepResults: StepExecutionResult[];
41
+ context: PipelineExecutionContext;
42
+ error?: Error | unknown;
43
+ durationMs: number;
44
+ }
45
+ /**
46
+ * Handler function signature for an individual step type.
47
+ */
48
+ export type PipelineStepHandler<TContext = PipelineExecutionContext> = (step: ActionStep, context: TContext, signal: AbortSignal) => Promise<unknown> | unknown;
49
+ /**
50
+ * Options for configuring the execution of an action pipeline.
51
+ */
52
+ export interface ExecutePipelineOptions {
53
+ context?: PipelineExecutionContext;
54
+ signal?: AbortSignal;
55
+ timeout?: number;
56
+ throwOnError?: boolean;
57
+ handlers?: Record<string, PipelineStepHandler>;
58
+ onStepStart?: (step: ActionStep, context: PipelineExecutionContext) => void;
59
+ onStepComplete?: (step: ActionStep, result: StepExecutionResult, context: PipelineExecutionContext) => void;
60
+ }
61
+ /**
62
+ * Configuration options for creating an ActionPipelineExecutor instance.
63
+ */
64
+ export interface ActionPipelineExecutorOptions {
65
+ handlers?: Record<string, PipelineStepHandler>;
66
+ defaultTimeout?: number;
67
+ throwOnError?: boolean;
68
+ }
69
+ /**
70
+ * Custom error thrown when a step or pipeline times out.
71
+ */
72
+ export declare class ActionTimeoutError extends Error {
73
+ readonly stepId?: string;
74
+ readonly timeoutMs: number;
75
+ constructor(message: string, timeoutMs: number, stepId?: string);
76
+ }
77
+ /**
78
+ * Custom error thrown when an action execution is aborted/cancelled.
79
+ */
80
+ export declare class ActionCancellationError extends Error {
81
+ readonly stepId?: string;
82
+ constructor(message?: string, stepId?: string);
83
+ }
84
+ /**
85
+ * Evaluates an ActionStepCondition against a pipeline execution context.
86
+ */
87
+ export declare function evaluateActionCondition(condition: ActionStepCondition | undefined, context: PipelineExecutionContext): boolean;
88
+ /**
89
+ * ActionPipelineExecutor manages step handlers, sequential execution of action pipelines,
90
+ * timeouts, cancellation, conditional evaluation, and onSuccess / onError branching.
91
+ */
92
+ export declare class ActionPipelineExecutor {
93
+ private handlers;
94
+ private defaultTimeout?;
95
+ private throwOnError;
96
+ constructor(options?: ActionPipelineExecutorOptions);
97
+ /**
98
+ * Registers default built-in handlers for core step types like `set_state` and `reset_form`.
99
+ */
100
+ private registerBuiltInHandlers;
101
+ /**
102
+ * Registers a handler for a step type.
103
+ */
104
+ registerHandler(type: ActionStepType | string, handler: PipelineStepHandler): this;
105
+ /**
106
+ * Unregisters a handler for a step type.
107
+ */
108
+ unregisterHandler(type: ActionStepType | string): this;
109
+ /**
110
+ * Checks if a handler exists for a step type.
111
+ */
112
+ hasHandler(type: ActionStepType | string): boolean;
113
+ /**
114
+ * Gets the registered handler for a step type.
115
+ */
116
+ getHandler(type: ActionStepType | string): PipelineStepHandler | undefined;
117
+ /**
118
+ * Executes a full ActionPipeline sequentially with support for timeouts, cancellation,
119
+ * condition evaluation, and branching.
120
+ */
121
+ execute(pipeline: ActionPipeline, options?: ExecutePipelineOptions): Promise<PipelineExecutionResult>;
122
+ /**
123
+ * Executes an ordered list of ActionSteps sequentially.
124
+ */
125
+ private executeSteps;
126
+ /**
127
+ * Executes a single ActionStep with condition checking, payload interpolation, timeout,
128
+ * handler execution, response context passing, and branch execution.
129
+ */
130
+ executeSingleStep(step: ActionStep, context: PipelineExecutionContext, parentSignal: AbortSignal, options?: ExecutePipelineOptions): Promise<StepExecutionResult>;
131
+ }
132
+ /**
133
+ * Convenience helper to execute an action pipeline using default or custom executor settings.
134
+ */
135
+ export declare function executeActionPipeline(pipeline: ActionPipeline, options?: ExecutePipelineOptions): Promise<PipelineExecutionResult>;
136
+ //# sourceMappingURL=pipeline-executor.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-executor.d.cts","sourceRoot":"","sources":["../../src/runtime/pipeline-executor.ts"],"names":[],"mappings":"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"}