@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 { Node, ProjectDocument } from '@kubuild/schema';
2
+ import { DocumentValidationError, ValidationOptions } from './validator.cjs';
3
+ export type ProjectValidationErrorCode = 'PROJECT_SCHEMA_INVALID' | 'DUPLICATE_ARTBOARD_ID' | 'DUPLICATE_NODE_ID_ACROSS_ARTBOARDS' | 'DANGLING_ARTBOARD_REFERENCE' | 'DUPLICATE_TRIGGER_ID' | 'INVALID_ACTIVE_ARTBOARD' | 'ARTBOARD_DOCUMENT_INVALID';
4
+ export interface ProjectValidationError {
5
+ code: ProjectValidationErrorCode;
6
+ message: string;
7
+ path: string;
8
+ artboardId?: string;
9
+ nodeId?: string;
10
+ details?: Record<string, unknown>;
11
+ }
12
+ export interface ProjectValidationResult {
13
+ valid: boolean;
14
+ success: boolean;
15
+ errors: ProjectValidationError[];
16
+ /** Per-artboard results from the existing single-document validator. */
17
+ artboardErrors: Record<string, DocumentValidationError[]>;
18
+ data?: ProjectDocument;
19
+ }
20
+ /**
21
+ * Validate a multi-artboard project.
22
+ *
23
+ * Each artboard's document is handed to the existing `validateDocument` unchanged; this
24
+ * function only adds the checks that cannot exist at single-document scope:
25
+ * artboard-id uniqueness, node-id uniqueness *across* artboards (so content moved between
26
+ * artboards can't silently collide), duplicate component trigger ids, and reference stubs
27
+ * that point at an artboard which no longer exists.
28
+ */
29
+ export declare function validateProject(input: unknown, options?: ValidationOptions): ProjectValidationResult;
30
+ /**
31
+ * Collect artboard-reference stubs in a single page document. Used by the exporter guard
32
+ * to refuse silently-incomplete single-page exports.
33
+ */
34
+ export declare function collectArtboardReferenceNodes(root: Node): Array<{
35
+ nodeId: string;
36
+ artboardId?: string;
37
+ }>;
38
+ //# sourceMappingURL=project-validator.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-validator.d.cts","sourceRoot":"","sources":["../../src/validation/project-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,IAAI,EACJ,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EAElB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,0BAA0B,GAClC,wBAAwB,GACxB,uBAAuB,GACvB,oCAAoC,GACpC,6BAA6B,GAC7B,sBAAsB,GACtB,yBAAyB,GACzB,2BAA2B,CAAC;AAEhC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,0BAA0B,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAuBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,iBAAsB,GAC9B,uBAAuB,CAkIzB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CASxG"}
@@ -1,5 +1,5 @@
1
1
  import { Node, ProjectDocument } from '@kubuild/schema';
2
- import { DocumentValidationError, ValidationOptions } from './validator';
2
+ import { DocumentValidationError, ValidationOptions } from './validator.js';
3
3
  export type ProjectValidationErrorCode = 'PROJECT_SCHEMA_INVALID' | 'DUPLICATE_ARTBOARD_ID' | 'DUPLICATE_NODE_ID_ACROSS_ARTBOARDS' | 'DANGLING_ARTBOARD_REFERENCE' | 'DUPLICATE_TRIGGER_ID' | 'INVALID_ACTIVE_ARTBOARD' | 'ARTBOARD_DOCUMENT_INVALID';
4
4
  export interface ProjectValidationError {
5
5
  code: ProjectValidationErrorCode;
@@ -1 +1 @@
1
- {"version":3,"file":"project-validator.d.ts","sourceRoot":"","sources":["../../src/validation/project-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,IAAI,EACJ,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EAElB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,0BAA0B,GAClC,wBAAwB,GACxB,uBAAuB,GACvB,oCAAoC,GACpC,6BAA6B,GAC7B,sBAAsB,GACtB,yBAAyB,GACzB,2BAA2B,CAAC;AAEhC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,0BAA0B,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAuBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,iBAAsB,GAC9B,uBAAuB,CAkIzB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CASxG"}
1
+ {"version":3,"file":"project-validator.d.ts","sourceRoot":"","sources":["../../src/validation/project-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,IAAI,EACJ,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EAElB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,0BAA0B,GAClC,wBAAwB,GACxB,uBAAuB,GACvB,oCAAoC,GACpC,6BAA6B,GAC7B,sBAAsB,GACtB,yBAAyB,GACzB,2BAA2B,CAAC;AAEhC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,0BAA0B,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAuBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,iBAAsB,GAC9B,uBAAuB,CAkIzB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CASxG"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Security Limits and Sanitization Utilities for KUBUILD documents, assets, and actions.
3
+ */
4
+ export interface DocumentSecurityLimits {
5
+ /**
6
+ * Maximum allowed total nodes in the document tree (default: 5000).
7
+ */
8
+ maxNodeCount?: number;
9
+ /**
10
+ * Maximum allowed nesting depth of nodes (default: 32).
11
+ */
12
+ maxTreeDepth?: number;
13
+ /**
14
+ * Maximum number of direct properties per node (default: 200).
15
+ */
16
+ maxPropsCount?: number;
17
+ /**
18
+ * Maximum character length for any individual string property (default: 100,000).
19
+ */
20
+ maxStringLength?: number;
21
+ /**
22
+ * Maximum number of direct children per node (default: 1000).
23
+ */
24
+ maxChildrenPerNode?: number;
25
+ /**
26
+ * Maximum allowed JSON serialized size in bytes (default: 10MB).
27
+ */
28
+ maxDocumentSizeBytes?: number;
29
+ /**
30
+ * Allowed URL schemes for links and media.
31
+ * Default: ['http:', 'https:', 'mailto:', 'tel:', '#', 'relative', 'data:image/']
32
+ */
33
+ allowedUrlSchemes?: string[];
34
+ /**
35
+ * Prohibited property keys to defend against Prototype Pollution.
36
+ * Default: ['__proto__', 'constructor', 'prototype', '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__']
37
+ */
38
+ prohibitedPropertyKeys?: string[];
39
+ /**
40
+ * Prohibited asset file extensions to prevent executable uploads.
41
+ * Default: ['.exe', '.dll', '.so', '.sh', '.bat', '.cmd', '.js', '.mjs', '.cjs', '.php', '.py', '.vbs', '.wasm', '.bin', '.com', '.scr', '.pif']
42
+ */
43
+ prohibitedAssetExtensions?: string[];
44
+ /**
45
+ * Maximum compression expansion ratio before flagging potential zip bomb (default: 100).
46
+ */
47
+ maxZipExpansionRatio?: number;
48
+ }
49
+ export declare const DEFAULT_DOCUMENT_SECURITY_LIMITS: Required<DocumentSecurityLimits>;
50
+ export interface SecurityViolation {
51
+ code: 'PROTOTYPE_POLLUTION_DETECTED' | 'MAX_NODE_COUNT_EXCEEDED' | 'MAX_TREE_DEPTH_EXCEEDED' | 'MAX_PROPS_COUNT_EXCEEDED' | 'MAX_STRING_LENGTH_EXCEEDED' | 'MAX_CHILDREN_COUNT_EXCEEDED' | 'MAX_DOCUMENT_SIZE_EXCEEDED' | 'UNSAFE_URL_DETECTED' | 'EXECUTABLE_ASSET_DETECTED' | 'ZIP_BOMB_DETECTED';
52
+ message: string;
53
+ path?: string;
54
+ details?: Record<string, unknown>;
55
+ }
56
+ /**
57
+ * Checks whether a URL is safe according to the allowed URL schemes.
58
+ * Rejects dangerous schemes such as javascript:, vbscript:, data:text/html, etc.
59
+ */
60
+ export declare function isSafeUrl(url: unknown, options?: {
61
+ allowedSchemes?: string[];
62
+ allowDataImage?: boolean;
63
+ /** Allow `blob:` URLs (runtime-only, e.g. in-memory uploaded media previews). */
64
+ allowBlobMedia?: boolean;
65
+ }): boolean;
66
+ /**
67
+ * Sanitizes a URL, returning a safe URL or a fallback (default empty string or '#').
68
+ */
69
+ export declare function sanitizeUrl(url: unknown, fallback?: string, options?: Parameters<typeof isSafeUrl>[1]): string;
70
+ /**
71
+ * Checks an object recursively for prohibited prototype pollution keys.
72
+ */
73
+ export declare function containsProhibitedKeys(obj: unknown, prohibitedKeys?: string[]): {
74
+ found: boolean;
75
+ path: string;
76
+ key: string;
77
+ };
78
+ /**
79
+ * Validates a document against security limits (node count, tree depth, props count, string length, prototype pollution).
80
+ */
81
+ export declare function validateDocumentSecurity(doc: unknown, customLimits?: DocumentSecurityLimits): {
82
+ safe: boolean;
83
+ errors: SecurityViolation[];
84
+ };
85
+ /**
86
+ * Checks if an asset filename has a dangerous or executable extension.
87
+ */
88
+ export declare function isDangerousAssetFilename(filename: string, prohibitedExtensions?: string[]): boolean;
89
+ /**
90
+ * Checks whether an archive expansion ratio indicates a zip bomb attack.
91
+ */
92
+ export declare function checkZipBomb(compressedSize: number, uncompressedSize: number, maxRatio?: number): boolean;
93
+ /**
94
+ * Sanitizes an HTML string by stripping unsafe tags (<script>, <object>, <embed>, <applet>, <base>, <link rel="import">),
95
+ * removing inline event handlers (on* attributes like onclick, onerror, onload, etc.),
96
+ * and disarming javascript:/vbscript:/data:text/html URLs in attributes.
97
+ */
98
+ export declare function sanitizeHtml(rawHtml: unknown): string;
99
+ //# sourceMappingURL=security.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.d.cts","sourceRoot":"","sources":["../../src/validation/security.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAElC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IAErC;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,gCAAgC,EAAE,QAAQ,CAAC,sBAAsB,CAuC7E,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EACA,8BAA8B,GAC9B,yBAAyB,GACzB,yBAAyB,GACzB,0BAA0B,GAC1B,4BAA4B,GAC5B,6BAA6B,GAC7B,4BAA4B,GAC5B,qBAAqB,GACrB,2BAA2B,GAC3B,mBAAmB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,OAAO,EACZ,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iFAAiF;IACjF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GACA,OAAO,CAiET;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,OAAO,EACZ,QAAQ,GAAE,MAAW,EACrB,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,GACxC,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,OAAO,EACZ,cAAc,GAAE,MAAM,EAA4D,GACjF;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CA0C/C;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,OAAO,EACZ,YAAY,CAAC,EAAE,sBAAsB,GACpC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAoHhD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,oBAAoB,GAAE,MAAM,EAA+D,GAC1F,OAAO,CAUT;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,GAAE,MAA8D,GACvE,OAAO,CAQT;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAwBrD"}
@@ -0,0 +1,39 @@
1
+ import type { FormFieldBinding, ValidationRule } from '@kubuild/schema';
2
+ /**
3
+ * Checks whether a field value is considered empty.
4
+ * Empty values include undefined, null, empty string, empty array, or boolean false.
5
+ */
6
+ export declare function isEmptyValue(value: unknown): boolean;
7
+ /**
8
+ * Applies a value transformation to a field value prior to validation.
9
+ */
10
+ export declare function applyFieldTransform(value: unknown, transform?: 'trim' | 'lowercase' | 'uppercase' | 'number' | string): unknown;
11
+ /**
12
+ * Evaluates a single validation rule against a field value.
13
+ * Returns the rule's error message if invalid, or null if valid.
14
+ */
15
+ export declare function evaluateRule(rule: ValidationRule, value: unknown, allFormValues?: Record<string, unknown>): string | null;
16
+ /**
17
+ * Validates a single field value against an array of ValidationRules.
18
+ * Returns the first failing error message, or null if all rules pass.
19
+ */
20
+ export declare function validateFieldValue(value: unknown, rules?: ValidationRule[] | null, allFormValues?: Record<string, unknown>): string | null;
21
+ /**
22
+ * Asynchronously validates a single field value against an array of ValidationRules.
23
+ */
24
+ export declare function validateFieldValueAsync(value: unknown, rules?: ValidationRule[] | null, allFormValues?: Record<string, unknown>): Promise<string | null>;
25
+ /**
26
+ * Validates an entire form values object against field configs.
27
+ * Returns a map of field names to error messages (Record<string, string>).
28
+ * If all fields are valid, returns an empty object {}.
29
+ */
30
+ export declare function validateForm(values: Record<string, unknown>, fieldConfigs: FormFieldBinding[] | Record<string, FormFieldBinding | ValidationRule[]>): Record<string, string>;
31
+ /**
32
+ * Asynchronously validates an entire form values object against field configs.
33
+ */
34
+ export declare function validateFormAsync(values: Record<string, unknown>, fieldConfigs: FormFieldBinding[] | Record<string, FormFieldBinding | ValidationRule[]>): Promise<Record<string, string>>;
35
+ /**
36
+ * Convenience helper to determine if a form error map is completely valid (no errors).
37
+ */
38
+ export declare function isFormValid(errors: Record<string, string>): boolean;
39
+ //# sourceMappingURL=validation-engine.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-engine.d.cts","sourceRoot":"","sources":["../../src/validation/validation-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAExE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAcpD;AAYD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GACjE,OAAO,CA6BT;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,OAAO,EACd,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,MAAM,GAAG,IAAI,CAoGf;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,KAAK,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,EAC/B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,MAAM,GAAG,IAAI,CAaf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,OAAO,EACd,KAAK,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,EAC/B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,YAAY,EACR,gBAAgB,EAAE,GAClB,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,cAAc,EAAE,CAAC,GACtD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2DxB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,YAAY,EACR,gBAAgB,EAAE,GAClB,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,cAAc,EAAE,CAAC,GACtD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEjC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAEnE"}
@@ -0,0 +1,80 @@
1
+ import { PageDocument } from '@kubuild/schema';
2
+ import { DocumentSecurityLimits } from './security.cjs';
3
+ export type DocumentValidationErrorCode = 'GLOBAL_SCHEMA_INVALID' | 'ROOT_NODE_INVALID' | 'NODE_SHAPE_INVALID' | 'DUPLICATE_NODE_ID' | 'TREE_CYCLE_DETECTED' | 'UNKNOWN_COMPONENT_TYPE' | 'CHILD_POLICY_VIOLATION' | 'INVALID_ASSET_REFERENCE' | 'INVALID_VARIABLE_BINDING' | 'INVALID_ACTION_BINDING' | 'INVALID_METADATA' | 'PROTOTYPE_POLLUTION_DETECTED' | 'SECURITY_LIMIT_EXCEEDED';
4
+ export interface DocumentValidationError {
5
+ code: DocumentValidationErrorCode;
6
+ message: string;
7
+ path: string;
8
+ nodeId?: string;
9
+ details?: Record<string, unknown>;
10
+ }
11
+ export type DocumentValidationWarningCode = 'CHILD_POLICY_VIOLATION' | 'UNKNOWN_COMPONENT_TYPE' | 'UNRESOLVED_ASSET_REFERENCE' | (string & {});
12
+ export interface DocumentValidationWarning {
13
+ code: DocumentValidationWarningCode;
14
+ message: string;
15
+ path: string;
16
+ nodeId?: string;
17
+ details?: Record<string, unknown>;
18
+ }
19
+ export interface ComponentDefinitionLike {
20
+ type: string;
21
+ category?: string;
22
+ capabilities?: string[];
23
+ acceptsChildren?: boolean;
24
+ allowedChildren?: string[];
25
+ disallowedParents?: string[];
26
+ }
27
+ export interface ComponentRegistryLike {
28
+ get(type: string): ComponentDefinitionLike | undefined;
29
+ has(type: string): boolean;
30
+ }
31
+ export interface ValidationOptions {
32
+ componentRegistry?: ComponentRegistryLike;
33
+ knownComponentTypes?: string[] | Set<string>;
34
+ strictComponentTypes?: boolean;
35
+ /**
36
+ * Whether to treat child policy mismatches (e.g. allowedChildren) strictly as blocking errors.
37
+ * If false or undefined (default), allowedChildren mismatches are emitted as non-blocking warnings.
38
+ */
39
+ strictChildPolicy?: boolean;
40
+ /**
41
+ * Validate asset references (`{ type: 'asset', assetId, fallbackUrl? }`) found in node props.
42
+ * Checks that `assetId` is a non-empty string and `fallbackUrl` (if present) is a string.
43
+ * When `knownAssetIds` is also supplied, every referenced `assetId` must be in that set.
44
+ * Defaults to `true`.
45
+ */
46
+ checkAssetReferences?: boolean;
47
+ /**
48
+ * Known asset IDs used to verify that asset references resolve. A `PageDocument` carries
49
+ * no asset registry of its own (assets live in the `.stora` manifest or the host's asset
50
+ * provider), so this existence check only runs when the caller supplies the IDs.
51
+ * An unresolved reference is an `INVALID_ASSET_REFERENCE` error, or a non-blocking
52
+ * `UNRESOLVED_ASSET_REFERENCE` warning when the reference has a `fallbackUrl`.
53
+ * Ignored when `checkAssetReferences` is `false`.
54
+ */
55
+ knownAssetIds?: string[] | Set<string>;
56
+ /**
57
+ * Validate variable bindings (`{ type: 'variable', key }`) in node props: `key` must be a
58
+ * non-empty string. Defaults to `true`.
59
+ */
60
+ checkVariableBindings?: boolean;
61
+ /**
62
+ * Validate action bindings in node props (a prop named `action`, or any object with a string
63
+ * `type` and a `payload`): `type` must be a non-empty string. Defaults to `true`.
64
+ */
65
+ checkActionBindings?: boolean;
66
+ securityLimits?: DocumentSecurityLimits;
67
+ }
68
+ export interface DocumentValidationResult {
69
+ valid: boolean;
70
+ success: boolean;
71
+ errors: DocumentValidationError[];
72
+ warnings: DocumentValidationWarning[];
73
+ data?: PageDocument;
74
+ }
75
+ /**
76
+ * Validate a page document against global schema, node shape, child policy,
77
+ * ID uniqueness, cycles, unknown component types, and structural bindings.
78
+ */
79
+ export declare function validateDocument(input: unknown, options?: ValidationOptions): DocumentValidationResult;
80
+ //# sourceMappingURL=validator.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.cts","sourceRoot":"","sources":["../../src/validation/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EAEvB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,2BAA2B,GACnC,uBAAuB,GACvB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,qBAAqB,GACrB,wBAAwB,GACxB,wBAAwB,GACxB,yBAAyB,GACzB,0BAA0B,GAC1B,wBAAwB,GACxB,kBAAkB,GAClB,8BAA8B,GAC9B,yBAAyB,CAAC;AAE9B,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,2BAA2B,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,6BAA6B,GACrC,wBAAwB,GACxB,wBAAwB,GACxB,4BAA4B,GAC5B,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAAC;IACvD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,sBAAsB,CAAC;CACzC;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAClC,QAAQ,EAAE,yBAAyB,EAAE,CAAC;IACtC,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,iBAAsB,GAC9B,wBAAwB,CAwJ1B"}
@@ -1,5 +1,5 @@
1
1
  import { PageDocument } from '@kubuild/schema';
2
- import { DocumentSecurityLimits } from './security';
2
+ import { DocumentSecurityLimits } from './security.js';
3
3
  export type DocumentValidationErrorCode = 'GLOBAL_SCHEMA_INVALID' | 'ROOT_NODE_INVALID' | 'NODE_SHAPE_INVALID' | 'DUPLICATE_NODE_ID' | 'TREE_CYCLE_DETECTED' | 'UNKNOWN_COMPONENT_TYPE' | 'CHILD_POLICY_VIOLATION' | 'INVALID_ASSET_REFERENCE' | 'INVALID_VARIABLE_BINDING' | 'INVALID_ACTION_BINDING' | 'INVALID_METADATA' | 'PROTOTYPE_POLLUTION_DETECTED' | 'SECURITY_LIMIT_EXCEEDED';
4
4
  export interface DocumentValidationError {
5
5
  code: DocumentValidationErrorCode;
@@ -1 +1 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/validation/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,2BAA2B,GACnC,uBAAuB,GACvB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,qBAAqB,GACrB,wBAAwB,GACxB,wBAAwB,GACxB,yBAAyB,GACzB,0BAA0B,GAC1B,wBAAwB,GACxB,kBAAkB,GAClB,8BAA8B,GAC9B,yBAAyB,CAAC;AAE9B,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,2BAA2B,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,6BAA6B,GACrC,wBAAwB,GACxB,wBAAwB,GACxB,4BAA4B,GAC5B,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAAC;IACvD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,sBAAsB,CAAC;CACzC;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAClC,QAAQ,EAAE,yBAAyB,EAAE,CAAC;IACtC,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,iBAAsB,GAC9B,wBAAwB,CAwJ1B"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/validation/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EAEvB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,2BAA2B,GACnC,uBAAuB,GACvB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,qBAAqB,GACrB,wBAAwB,GACxB,wBAAwB,GACxB,yBAAyB,GACzB,0BAA0B,GAC1B,wBAAwB,GACxB,kBAAkB,GAClB,8BAA8B,GAC9B,yBAAyB,CAAC;AAE9B,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,2BAA2B,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,6BAA6B,GACrC,wBAAwB,GACxB,wBAAwB,GACxB,4BAA4B,GAC5B,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAAC;IACvD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,sBAAsB,CAAC;CACzC;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAClC,QAAQ,EAAE,yBAAyB,EAAE,CAAC;IACtC,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,iBAAsB,GAC9B,wBAAwB,CAwJ1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubuild/core",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "Framework-agnostic engine for KUBUILD: document utilities, command engine, history, migration, and validation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -8,9 +8,14 @@
8
8
  "types": "./dist/index.d.ts",
9
9
  "exports": {
10
10
  ".": {
11
- "types": "./dist/index.d.ts",
12
- "import": "./dist/index.js",
13
- "require": "./dist/index.cjs"
11
+ "import": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/index.d.cts",
17
+ "default": "./dist/index.cjs"
18
+ }
14
19
  }
15
20
  },
16
21
  "files": [
@@ -41,7 +46,7 @@
41
46
  "homepage": "https://github.com/kustora/kubuild#readme",
42
47
  "dependencies": {
43
48
  "fflate": "^0.8.3",
44
- "@kubuild/schema": "0.8.1"
49
+ "@kubuild/schema": "0.8.2"
45
50
  },
46
51
  "devDependencies": {
47
52
  "tsup": "^8.3.6",
@@ -49,7 +54,7 @@
49
54
  "vitest": "^3.0.5"
50
55
  },
51
56
  "scripts": {
52
- "build": "tsup && tsc --emitDeclarationOnly",
57
+ "build": "tsup && tsc --emitDeclarationOnly && node ../../scripts/emit-cjs-dts.mjs",
53
58
  "dev": "tsup --watch",
54
59
  "typecheck": "tsc --noEmit",
55
60
  "lint": "eslint src",