@aigne/afs 1.11.0-beta → 1.11.0-beta.10

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 (164) hide show
  1. package/LICENSE.md +17 -84
  2. package/README.md +4 -13
  3. package/dist/_virtual/rolldown_runtime.mjs +7 -0
  4. package/dist/afs.cjs +1330 -0
  5. package/dist/afs.d.cts +275 -0
  6. package/dist/afs.d.cts.map +1 -0
  7. package/dist/afs.d.mts +275 -0
  8. package/dist/afs.d.mts.map +1 -0
  9. package/dist/afs.mjs +1331 -0
  10. package/dist/afs.mjs.map +1 -0
  11. package/dist/capabilities/index.d.mts +2 -0
  12. package/dist/capabilities/types.d.cts +100 -0
  13. package/dist/capabilities/types.d.cts.map +1 -0
  14. package/dist/capabilities/types.d.mts +100 -0
  15. package/dist/capabilities/types.d.mts.map +1 -0
  16. package/dist/capabilities/world-mapping.cjs +20 -0
  17. package/dist/capabilities/world-mapping.d.cts +139 -0
  18. package/dist/capabilities/world-mapping.d.cts.map +1 -0
  19. package/dist/capabilities/world-mapping.d.mts +139 -0
  20. package/dist/capabilities/world-mapping.d.mts.map +1 -0
  21. package/dist/capabilities/world-mapping.mjs +20 -0
  22. package/dist/capabilities/world-mapping.mjs.map +1 -0
  23. package/dist/error.cjs +63 -0
  24. package/dist/error.d.cts +39 -0
  25. package/dist/error.d.cts.map +1 -0
  26. package/dist/error.d.mts +39 -0
  27. package/dist/error.d.mts.map +1 -0
  28. package/dist/error.mjs +59 -0
  29. package/dist/error.mjs.map +1 -0
  30. package/dist/index.cjs +72 -345
  31. package/dist/index.d.cts +18 -300
  32. package/dist/index.d.mts +20 -300
  33. package/dist/index.mjs +16 -342
  34. package/dist/loader/index.cjs +110 -0
  35. package/dist/loader/index.d.cts +48 -0
  36. package/dist/loader/index.d.cts.map +1 -0
  37. package/dist/loader/index.d.mts +48 -0
  38. package/dist/loader/index.d.mts.map +1 -0
  39. package/dist/loader/index.mjs +110 -0
  40. package/dist/loader/index.mjs.map +1 -0
  41. package/dist/meta/index.cjs +4 -0
  42. package/dist/meta/index.mjs +6 -0
  43. package/dist/meta/kind.cjs +161 -0
  44. package/dist/meta/kind.d.cts +134 -0
  45. package/dist/meta/kind.d.cts.map +1 -0
  46. package/dist/meta/kind.d.mts +134 -0
  47. package/dist/meta/kind.d.mts.map +1 -0
  48. package/dist/meta/kind.mjs +157 -0
  49. package/dist/meta/kind.mjs.map +1 -0
  50. package/dist/meta/path.cjs +116 -0
  51. package/dist/meta/path.d.cts +43 -0
  52. package/dist/meta/path.d.cts.map +1 -0
  53. package/dist/meta/path.d.mts +43 -0
  54. package/dist/meta/path.d.mts.map +1 -0
  55. package/dist/meta/path.mjs +112 -0
  56. package/dist/meta/path.mjs.map +1 -0
  57. package/dist/meta/type.d.cts +96 -0
  58. package/dist/meta/type.d.cts.map +1 -0
  59. package/dist/meta/type.d.mts +96 -0
  60. package/dist/meta/type.d.mts.map +1 -0
  61. package/dist/meta/validation.cjs +77 -0
  62. package/dist/meta/validation.d.cts +19 -0
  63. package/dist/meta/validation.d.cts.map +1 -0
  64. package/dist/meta/validation.d.mts +19 -0
  65. package/dist/meta/validation.d.mts.map +1 -0
  66. package/dist/meta/validation.mjs +77 -0
  67. package/dist/meta/validation.mjs.map +1 -0
  68. package/dist/meta/well-known-kinds.cjs +228 -0
  69. package/dist/meta/well-known-kinds.d.cts +52 -0
  70. package/dist/meta/well-known-kinds.d.cts.map +1 -0
  71. package/dist/meta/well-known-kinds.d.mts +52 -0
  72. package/dist/meta/well-known-kinds.d.mts.map +1 -0
  73. package/dist/meta/well-known-kinds.mjs +219 -0
  74. package/dist/meta/well-known-kinds.mjs.map +1 -0
  75. package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.cts +141 -0
  76. package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.cts.map +1 -0
  77. package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.mts +141 -0
  78. package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.mts.map +1 -0
  79. package/dist/path.cjs +255 -0
  80. package/dist/path.d.cts +93 -0
  81. package/dist/path.d.cts.map +1 -0
  82. package/dist/path.d.mts +93 -0
  83. package/dist/path.d.mts.map +1 -0
  84. package/dist/path.mjs +249 -0
  85. package/dist/path.mjs.map +1 -0
  86. package/dist/provider/base.cjs +425 -0
  87. package/dist/provider/base.d.cts +175 -0
  88. package/dist/provider/base.d.cts.map +1 -0
  89. package/dist/provider/base.d.mts +175 -0
  90. package/dist/provider/base.d.mts.map +1 -0
  91. package/dist/provider/base.mjs +426 -0
  92. package/dist/provider/base.mjs.map +1 -0
  93. package/dist/provider/decorators.cjs +268 -0
  94. package/dist/provider/decorators.d.cts +244 -0
  95. package/dist/provider/decorators.d.cts.map +1 -0
  96. package/dist/provider/decorators.d.mts +244 -0
  97. package/dist/provider/decorators.d.mts.map +1 -0
  98. package/dist/provider/decorators.mjs +256 -0
  99. package/dist/provider/decorators.mjs.map +1 -0
  100. package/dist/provider/index.cjs +19 -0
  101. package/dist/provider/index.d.cts +5 -0
  102. package/dist/provider/index.d.mts +5 -0
  103. package/dist/provider/index.mjs +5 -0
  104. package/dist/provider/router.cjs +185 -0
  105. package/dist/provider/router.d.cts +50 -0
  106. package/dist/provider/router.d.cts.map +1 -0
  107. package/dist/provider/router.d.mts +50 -0
  108. package/dist/provider/router.d.mts.map +1 -0
  109. package/dist/provider/router.mjs +185 -0
  110. package/dist/provider/router.mjs.map +1 -0
  111. package/dist/provider/types.d.cts +113 -0
  112. package/dist/provider/types.d.cts.map +1 -0
  113. package/dist/provider/types.d.mts +113 -0
  114. package/dist/provider/types.d.mts.map +1 -0
  115. package/dist/registry.cjs +358 -0
  116. package/dist/registry.d.cts +96 -0
  117. package/dist/registry.d.cts.map +1 -0
  118. package/dist/registry.d.mts +96 -0
  119. package/dist/registry.d.mts.map +1 -0
  120. package/dist/registry.mjs +360 -0
  121. package/dist/registry.mjs.map +1 -0
  122. package/dist/type.cjs +34 -0
  123. package/dist/type.d.cts +420 -0
  124. package/dist/type.d.cts.map +1 -0
  125. package/dist/type.d.mts +420 -0
  126. package/dist/type.d.mts.map +1 -0
  127. package/dist/type.mjs +33 -0
  128. package/dist/type.mjs.map +1 -0
  129. package/dist/utils/camelize.d.cts.map +1 -1
  130. package/dist/utils/camelize.d.mts.map +1 -1
  131. package/dist/utils/schema.cjs +129 -0
  132. package/dist/utils/schema.d.cts +65 -0
  133. package/dist/utils/schema.d.cts.map +1 -0
  134. package/dist/utils/schema.d.mts +65 -0
  135. package/dist/utils/schema.d.mts.map +1 -0
  136. package/dist/utils/schema.mjs +124 -0
  137. package/dist/utils/schema.mjs.map +1 -0
  138. package/dist/utils/type-utils.d.cts.map +1 -1
  139. package/dist/utils/type-utils.d.mts.map +1 -1
  140. package/dist/utils/uri-template.cjs +123 -0
  141. package/dist/utils/uri-template.d.cts +48 -0
  142. package/dist/utils/uri-template.d.cts.map +1 -0
  143. package/dist/utils/uri-template.d.mts +48 -0
  144. package/dist/utils/uri-template.d.mts.map +1 -0
  145. package/dist/utils/uri-template.mjs +120 -0
  146. package/dist/utils/uri-template.mjs.map +1 -0
  147. package/dist/utils/uri.cjs +49 -0
  148. package/dist/utils/uri.d.cts +34 -0
  149. package/dist/utils/uri.d.cts.map +1 -0
  150. package/dist/utils/uri.d.mts +34 -0
  151. package/dist/utils/uri.d.mts.map +1 -0
  152. package/dist/utils/uri.mjs +49 -0
  153. package/dist/utils/uri.mjs.map +1 -0
  154. package/dist/utils/zod.cjs +6 -8
  155. package/dist/utils/zod.d.cts +2 -2
  156. package/dist/utils/zod.d.cts.map +1 -1
  157. package/dist/utils/zod.d.mts +2 -2
  158. package/dist/utils/zod.d.mts.map +1 -1
  159. package/dist/utils/zod.mjs +6 -8
  160. package/dist/utils/zod.mjs.map +1 -1
  161. package/package.json +27 -4
  162. package/dist/index.d.cts.map +0 -1
  163. package/dist/index.d.mts.map +0 -1
  164. package/dist/index.mjs.map +0 -1
@@ -0,0 +1,116 @@
1
+ const require_path = require('../path.cjs');
2
+
3
+ //#region src/meta/path.ts
4
+ /**
5
+ * Meta Path Utilities for AFS
6
+ *
7
+ * Provides functions to work with .meta virtual paths:
8
+ * - /dir/.meta - directory metadata
9
+ * - /dir/.meta/icon.png - directory meta resource
10
+ * - /dir/file.txt/.meta - file metadata
11
+ * - /.meta/.kinds - provider kinds list
12
+ * - /.meta/.kinds/chamber:project - specific kind
13
+ */
14
+ /** The .meta virtual path segment */
15
+ const META_SEGMENT = ".meta";
16
+ /** The .kinds virtual path segment (under .meta) */
17
+ const KINDS_SEGMENT = ".kinds";
18
+ /**
19
+ * Check if a path is a .meta virtual path.
20
+ *
21
+ * A path is considered a meta path if it contains "/.meta" as a path segment
22
+ * (not just a substring of a filename).
23
+ *
24
+ * @param path - Path to check
25
+ * @returns true if the path is a .meta path
26
+ */
27
+ function isMetaPath(path) {
28
+ if (!path) return false;
29
+ let normalizedPath;
30
+ try {
31
+ const trimmedPath = path.endsWith("/") ? path.slice(0, -1) : path;
32
+ if (!trimmedPath.startsWith("/")) return false;
33
+ normalizedPath = require_path.normalizePath(trimmedPath);
34
+ } catch {
35
+ return false;
36
+ }
37
+ const segments = normalizedPath.split("/");
38
+ for (let i = 0; i < segments.length; i++) if (segments[i] === META_SEGMENT) return true;
39
+ return false;
40
+ }
41
+ /**
42
+ * Parse a .meta virtual path into its components.
43
+ *
44
+ * @param path - Meta path to parse (must be absolute and contain .meta)
45
+ * @returns Parsed MetaPathInfo
46
+ * @throws AFSPathError if path is invalid or not a meta path
47
+ */
48
+ function parseMetaPath(path) {
49
+ if (!path || path.trim() === "") throw new require_path.AFSPathError("Meta path cannot be empty", path);
50
+ if (!path.startsWith("/")) throw new require_path.AFSPathError("Meta path must be absolute (start with /)", path);
51
+ let normalizedPath;
52
+ try {
53
+ normalizedPath = require_path.validatePath(path.endsWith("/") ? path.slice(0, -1) : path);
54
+ } catch (e) {
55
+ if (e instanceof require_path.AFSPathError) throw e;
56
+ throw new require_path.AFSPathError(`Invalid meta path: ${path}`, path);
57
+ }
58
+ const segments = normalizedPath.split("/");
59
+ let metaIndex = -1;
60
+ for (let i = 0; i < segments.length; i++) if (segments[i] === META_SEGMENT) {
61
+ metaIndex = i;
62
+ break;
63
+ }
64
+ if (metaIndex === -1) throw new require_path.AFSPathError(`Path does not contain .meta: ${path}`, path);
65
+ const nodeSegments = segments.slice(0, metaIndex);
66
+ const nodePath = nodeSegments.length === 0 ? "/" : `/${nodeSegments.filter(Boolean).join("/")}`;
67
+ const afterMetaSegments = segments.slice(metaIndex + 1);
68
+ if (afterMetaSegments.length > 0 && afterMetaSegments[0] === KINDS_SEGMENT) {
69
+ const kindName = afterMetaSegments.length > 1 ? afterMetaSegments.slice(1).join("/") : null;
70
+ return {
71
+ nodePath: nodePath === "" ? "/" : nodePath,
72
+ resourcePath: null,
73
+ isKindsPath: true,
74
+ kindName: kindName || null
75
+ };
76
+ }
77
+ const resourcePath = afterMetaSegments.length > 0 ? afterMetaSegments.join("/") : null;
78
+ return {
79
+ nodePath: nodePath === "" ? "/" : nodePath,
80
+ resourcePath,
81
+ isKindsPath: false,
82
+ kindName: null
83
+ };
84
+ }
85
+ /**
86
+ * Check if a path is a .meta/.kinds path.
87
+ *
88
+ * @param path - Path to check
89
+ * @returns true if the path is a kinds path
90
+ */
91
+ function isKindsPath(path) {
92
+ if (!path || !isMetaPath(path)) return false;
93
+ try {
94
+ return parseMetaPath(path).isKindsPath;
95
+ } catch {
96
+ return false;
97
+ }
98
+ }
99
+ /**
100
+ * Extract the node path from a meta path.
101
+ *
102
+ * @param metaPath - Meta path
103
+ * @returns Node path (without .meta and after)
104
+ * @throws AFSPathError if path is invalid or not a meta path
105
+ */
106
+ function getNodePathFromMetaPath(metaPath) {
107
+ return parseMetaPath(metaPath).nodePath;
108
+ }
109
+
110
+ //#endregion
111
+ exports.KINDS_SEGMENT = KINDS_SEGMENT;
112
+ exports.META_SEGMENT = META_SEGMENT;
113
+ exports.getNodePathFromMetaPath = getNodePathFromMetaPath;
114
+ exports.isKindsPath = isKindsPath;
115
+ exports.isMetaPath = isMetaPath;
116
+ exports.parseMetaPath = parseMetaPath;
@@ -0,0 +1,43 @@
1
+ import { MetaPathInfo } from "./type.cjs";
2
+
3
+ //#region src/meta/path.d.ts
4
+ /** The .meta virtual path segment */
5
+ declare const META_SEGMENT = ".meta";
6
+ /** The .kinds virtual path segment (under .meta) */
7
+ declare const KINDS_SEGMENT = ".kinds";
8
+ /**
9
+ * Check if a path is a .meta virtual path.
10
+ *
11
+ * A path is considered a meta path if it contains "/.meta" as a path segment
12
+ * (not just a substring of a filename).
13
+ *
14
+ * @param path - Path to check
15
+ * @returns true if the path is a .meta path
16
+ */
17
+ declare function isMetaPath(path: string): boolean;
18
+ /**
19
+ * Parse a .meta virtual path into its components.
20
+ *
21
+ * @param path - Meta path to parse (must be absolute and contain .meta)
22
+ * @returns Parsed MetaPathInfo
23
+ * @throws AFSPathError if path is invalid or not a meta path
24
+ */
25
+ declare function parseMetaPath(path: string): MetaPathInfo;
26
+ /**
27
+ * Check if a path is a .meta/.kinds path.
28
+ *
29
+ * @param path - Path to check
30
+ * @returns true if the path is a kinds path
31
+ */
32
+ declare function isKindsPath(path: string): boolean;
33
+ /**
34
+ * Extract the node path from a meta path.
35
+ *
36
+ * @param metaPath - Meta path
37
+ * @returns Node path (without .meta and after)
38
+ * @throws AFSPathError if path is invalid or not a meta path
39
+ */
40
+ declare function getNodePathFromMetaPath(metaPath: string): string;
41
+ //#endregion
42
+ export { KINDS_SEGMENT, META_SEGMENT, getNodePathFromMetaPath, isKindsPath, isMetaPath, parseMetaPath };
43
+ //# sourceMappingURL=path.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.cts","names":[],"sources":["../../src/meta/path.ts"],"mappings":";;;;cAea,YAAA;AAcb;AAAA,cAXa,aAAA;;;;AAiDb;;;;;AAyEA;iBA/GgB,UAAA,CAAW,IAAA;;;;AAmI3B;;;;iBA7FgB,aAAA,CAAc,IAAA,WAAe,YAAA;;;;;;;iBAyE7B,WAAA,CAAY,IAAA;;;;;;;;iBAoBZ,uBAAA,CAAwB,QAAA"}
@@ -0,0 +1,43 @@
1
+ import { MetaPathInfo } from "./type.mjs";
2
+
3
+ //#region src/meta/path.d.ts
4
+ /** The .meta virtual path segment */
5
+ declare const META_SEGMENT = ".meta";
6
+ /** The .kinds virtual path segment (under .meta) */
7
+ declare const KINDS_SEGMENT = ".kinds";
8
+ /**
9
+ * Check if a path is a .meta virtual path.
10
+ *
11
+ * A path is considered a meta path if it contains "/.meta" as a path segment
12
+ * (not just a substring of a filename).
13
+ *
14
+ * @param path - Path to check
15
+ * @returns true if the path is a .meta path
16
+ */
17
+ declare function isMetaPath(path: string): boolean;
18
+ /**
19
+ * Parse a .meta virtual path into its components.
20
+ *
21
+ * @param path - Meta path to parse (must be absolute and contain .meta)
22
+ * @returns Parsed MetaPathInfo
23
+ * @throws AFSPathError if path is invalid or not a meta path
24
+ */
25
+ declare function parseMetaPath(path: string): MetaPathInfo;
26
+ /**
27
+ * Check if a path is a .meta/.kinds path.
28
+ *
29
+ * @param path - Path to check
30
+ * @returns true if the path is a kinds path
31
+ */
32
+ declare function isKindsPath(path: string): boolean;
33
+ /**
34
+ * Extract the node path from a meta path.
35
+ *
36
+ * @param metaPath - Meta path
37
+ * @returns Node path (without .meta and after)
38
+ * @throws AFSPathError if path is invalid or not a meta path
39
+ */
40
+ declare function getNodePathFromMetaPath(metaPath: string): string;
41
+ //#endregion
42
+ export { KINDS_SEGMENT, META_SEGMENT, getNodePathFromMetaPath, isKindsPath, isMetaPath, parseMetaPath };
43
+ //# sourceMappingURL=path.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.mts","names":[],"sources":["../../src/meta/path.ts"],"mappings":";;;;cAea,YAAA;AAcb;AAAA,cAXa,aAAA;;;;AAiDb;;;;;AAyEA;iBA/GgB,UAAA,CAAW,IAAA;;;;AAmI3B;;;;iBA7FgB,aAAA,CAAc,IAAA,WAAe,YAAA;;;;;;;iBAyE7B,WAAA,CAAY,IAAA;;;;;;;;iBAoBZ,uBAAA,CAAwB,QAAA"}
@@ -0,0 +1,112 @@
1
+ import { AFSPathError, normalizePath, validatePath } from "../path.mjs";
2
+
3
+ //#region src/meta/path.ts
4
+ /**
5
+ * Meta Path Utilities for AFS
6
+ *
7
+ * Provides functions to work with .meta virtual paths:
8
+ * - /dir/.meta - directory metadata
9
+ * - /dir/.meta/icon.png - directory meta resource
10
+ * - /dir/file.txt/.meta - file metadata
11
+ * - /.meta/.kinds - provider kinds list
12
+ * - /.meta/.kinds/chamber:project - specific kind
13
+ */
14
+ /** The .meta virtual path segment */
15
+ const META_SEGMENT = ".meta";
16
+ /** The .kinds virtual path segment (under .meta) */
17
+ const KINDS_SEGMENT = ".kinds";
18
+ /**
19
+ * Check if a path is a .meta virtual path.
20
+ *
21
+ * A path is considered a meta path if it contains "/.meta" as a path segment
22
+ * (not just a substring of a filename).
23
+ *
24
+ * @param path - Path to check
25
+ * @returns true if the path is a .meta path
26
+ */
27
+ function isMetaPath(path) {
28
+ if (!path) return false;
29
+ let normalizedPath;
30
+ try {
31
+ const trimmedPath = path.endsWith("/") ? path.slice(0, -1) : path;
32
+ if (!trimmedPath.startsWith("/")) return false;
33
+ normalizedPath = normalizePath(trimmedPath);
34
+ } catch {
35
+ return false;
36
+ }
37
+ const segments = normalizedPath.split("/");
38
+ for (let i = 0; i < segments.length; i++) if (segments[i] === META_SEGMENT) return true;
39
+ return false;
40
+ }
41
+ /**
42
+ * Parse a .meta virtual path into its components.
43
+ *
44
+ * @param path - Meta path to parse (must be absolute and contain .meta)
45
+ * @returns Parsed MetaPathInfo
46
+ * @throws AFSPathError if path is invalid or not a meta path
47
+ */
48
+ function parseMetaPath(path) {
49
+ if (!path || path.trim() === "") throw new AFSPathError("Meta path cannot be empty", path);
50
+ if (!path.startsWith("/")) throw new AFSPathError("Meta path must be absolute (start with /)", path);
51
+ let normalizedPath;
52
+ try {
53
+ normalizedPath = validatePath(path.endsWith("/") ? path.slice(0, -1) : path);
54
+ } catch (e) {
55
+ if (e instanceof AFSPathError) throw e;
56
+ throw new AFSPathError(`Invalid meta path: ${path}`, path);
57
+ }
58
+ const segments = normalizedPath.split("/");
59
+ let metaIndex = -1;
60
+ for (let i = 0; i < segments.length; i++) if (segments[i] === META_SEGMENT) {
61
+ metaIndex = i;
62
+ break;
63
+ }
64
+ if (metaIndex === -1) throw new AFSPathError(`Path does not contain .meta: ${path}`, path);
65
+ const nodeSegments = segments.slice(0, metaIndex);
66
+ const nodePath = nodeSegments.length === 0 ? "/" : `/${nodeSegments.filter(Boolean).join("/")}`;
67
+ const afterMetaSegments = segments.slice(metaIndex + 1);
68
+ if (afterMetaSegments.length > 0 && afterMetaSegments[0] === KINDS_SEGMENT) {
69
+ const kindName = afterMetaSegments.length > 1 ? afterMetaSegments.slice(1).join("/") : null;
70
+ return {
71
+ nodePath: nodePath === "" ? "/" : nodePath,
72
+ resourcePath: null,
73
+ isKindsPath: true,
74
+ kindName: kindName || null
75
+ };
76
+ }
77
+ const resourcePath = afterMetaSegments.length > 0 ? afterMetaSegments.join("/") : null;
78
+ return {
79
+ nodePath: nodePath === "" ? "/" : nodePath,
80
+ resourcePath,
81
+ isKindsPath: false,
82
+ kindName: null
83
+ };
84
+ }
85
+ /**
86
+ * Check if a path is a .meta/.kinds path.
87
+ *
88
+ * @param path - Path to check
89
+ * @returns true if the path is a kinds path
90
+ */
91
+ function isKindsPath(path) {
92
+ if (!path || !isMetaPath(path)) return false;
93
+ try {
94
+ return parseMetaPath(path).isKindsPath;
95
+ } catch {
96
+ return false;
97
+ }
98
+ }
99
+ /**
100
+ * Extract the node path from a meta path.
101
+ *
102
+ * @param metaPath - Meta path
103
+ * @returns Node path (without .meta and after)
104
+ * @throws AFSPathError if path is invalid or not a meta path
105
+ */
106
+ function getNodePathFromMetaPath(metaPath) {
107
+ return parseMetaPath(metaPath).nodePath;
108
+ }
109
+
110
+ //#endregion
111
+ export { KINDS_SEGMENT, META_SEGMENT, getNodePathFromMetaPath, isKindsPath, isMetaPath, parseMetaPath };
112
+ //# sourceMappingURL=path.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.mjs","names":[],"sources":["../../src/meta/path.ts"],"sourcesContent":["/**\n * Meta Path Utilities for AFS\n *\n * Provides functions to work with .meta virtual paths:\n * - /dir/.meta - directory metadata\n * - /dir/.meta/icon.png - directory meta resource\n * - /dir/file.txt/.meta - file metadata\n * - /.meta/.kinds - provider kinds list\n * - /.meta/.kinds/chamber:project - specific kind\n */\n\nimport { AFSPathError, normalizePath, validatePath } from \"../path.js\";\nimport type { MetaPathInfo } from \"./type.js\";\n\n/** The .meta virtual path segment */\nexport const META_SEGMENT = \".meta\";\n\n/** The .kinds virtual path segment (under .meta) */\nexport const KINDS_SEGMENT = \".kinds\";\n\n/**\n * Check if a path is a .meta virtual path.\n *\n * A path is considered a meta path if it contains \"/.meta\" as a path segment\n * (not just a substring of a filename).\n *\n * @param path - Path to check\n * @returns true if the path is a .meta path\n */\nexport function isMetaPath(path: string): boolean {\n if (!path) {\n return false;\n }\n\n // Normalize the path to handle // and . and ..\n // But don't throw for invalid paths, just return false\n let normalizedPath: string;\n try {\n // Handle trailing slash\n const trimmedPath = path.endsWith(\"/\") ? path.slice(0, -1) : path;\n if (!trimmedPath.startsWith(\"/\")) {\n return false;\n }\n normalizedPath = normalizePath(trimmedPath);\n } catch {\n return false;\n }\n\n const segments = normalizedPath.split(\"/\");\n\n // Check if any segment is exactly .meta\n for (let i = 0; i < segments.length; i++) {\n if (segments[i] === META_SEGMENT) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Parse a .meta virtual path into its components.\n *\n * @param path - Meta path to parse (must be absolute and contain .meta)\n * @returns Parsed MetaPathInfo\n * @throws AFSPathError if path is invalid or not a meta path\n */\nexport function parseMetaPath(path: string): MetaPathInfo {\n if (!path || path.trim() === \"\") {\n throw new AFSPathError(\"Meta path cannot be empty\", path);\n }\n\n if (!path.startsWith(\"/\")) {\n throw new AFSPathError(\"Meta path must be absolute (start with /)\", path);\n }\n\n // Validate and normalize the path (checks for control characters)\n let normalizedPath: string;\n try {\n const trimmedPath = path.endsWith(\"/\") ? path.slice(0, -1) : path;\n // validatePath both validates and normalizes\n normalizedPath = validatePath(trimmedPath);\n } catch (e) {\n if (e instanceof AFSPathError) {\n throw e;\n }\n throw new AFSPathError(`Invalid meta path: ${path}`, path);\n }\n\n const segments = normalizedPath.split(\"/\");\n\n // Find the .meta segment index\n let metaIndex = -1;\n for (let i = 0; i < segments.length; i++) {\n if (segments[i] === META_SEGMENT) {\n metaIndex = i;\n break;\n }\n }\n\n if (metaIndex === -1) {\n throw new AFSPathError(`Path does not contain .meta: ${path}`, path);\n }\n\n // Node path is everything before .meta\n const nodeSegments = segments.slice(0, metaIndex);\n const nodePath = nodeSegments.length === 0 ? \"/\" : `/${nodeSegments.filter(Boolean).join(\"/\")}`;\n\n // Path after .meta\n const afterMetaSegments = segments.slice(metaIndex + 1);\n\n // Check for .kinds path\n if (afterMetaSegments.length > 0 && afterMetaSegments[0] === KINDS_SEGMENT) {\n // It's a kinds path\n const kindName = afterMetaSegments.length > 1 ? afterMetaSegments.slice(1).join(\"/\") : null;\n return {\n nodePath: nodePath === \"\" ? \"/\" : nodePath,\n resourcePath: null,\n isKindsPath: true,\n kindName: kindName || null,\n };\n }\n\n // Regular meta path or resource path\n const resourcePath = afterMetaSegments.length > 0 ? afterMetaSegments.join(\"/\") : null;\n\n return {\n nodePath: nodePath === \"\" ? \"/\" : nodePath,\n resourcePath,\n isKindsPath: false,\n kindName: null,\n };\n}\n\n/**\n * Check if a path is a .meta/.kinds path.\n *\n * @param path - Path to check\n * @returns true if the path is a kinds path\n */\nexport function isKindsPath(path: string): boolean {\n if (!path || !isMetaPath(path)) {\n return false;\n }\n\n try {\n const info = parseMetaPath(path);\n return info.isKindsPath;\n } catch {\n return false;\n }\n}\n\n/**\n * Extract the node path from a meta path.\n *\n * @param metaPath - Meta path\n * @returns Node path (without .meta and after)\n * @throws AFSPathError if path is invalid or not a meta path\n */\nexport function getNodePathFromMetaPath(metaPath: string): string {\n const info = parseMetaPath(metaPath);\n return info.nodePath;\n}\n"],"mappings":";;;;;;;;;;;;;;AAeA,MAAa,eAAe;;AAG5B,MAAa,gBAAgB;;;;;;;;;;AAW7B,SAAgB,WAAW,MAAuB;AAChD,KAAI,CAAC,KACH,QAAO;CAKT,IAAI;AACJ,KAAI;EAEF,MAAM,cAAc,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG;AAC7D,MAAI,CAAC,YAAY,WAAW,IAAI,CAC9B,QAAO;AAET,mBAAiB,cAAc,YAAY;SACrC;AACN,SAAO;;CAGT,MAAM,WAAW,eAAe,MAAM,IAAI;AAG1C,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,IACnC,KAAI,SAAS,OAAO,aAClB,QAAO;AAIX,QAAO;;;;;;;;;AAUT,SAAgB,cAAc,MAA4B;AACxD,KAAI,CAAC,QAAQ,KAAK,MAAM,KAAK,GAC3B,OAAM,IAAI,aAAa,6BAA6B,KAAK;AAG3D,KAAI,CAAC,KAAK,WAAW,IAAI,CACvB,OAAM,IAAI,aAAa,6CAA6C,KAAK;CAI3E,IAAI;AACJ,KAAI;AAGF,mBAAiB,aAFG,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,KAEnB;UACnC,GAAG;AACV,MAAI,aAAa,aACf,OAAM;AAER,QAAM,IAAI,aAAa,sBAAsB,QAAQ,KAAK;;CAG5D,MAAM,WAAW,eAAe,MAAM,IAAI;CAG1C,IAAI,YAAY;AAChB,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,IACnC,KAAI,SAAS,OAAO,cAAc;AAChC,cAAY;AACZ;;AAIJ,KAAI,cAAc,GAChB,OAAM,IAAI,aAAa,gCAAgC,QAAQ,KAAK;CAItE,MAAM,eAAe,SAAS,MAAM,GAAG,UAAU;CACjD,MAAM,WAAW,aAAa,WAAW,IAAI,MAAM,IAAI,aAAa,OAAO,QAAQ,CAAC,KAAK,IAAI;CAG7F,MAAM,oBAAoB,SAAS,MAAM,YAAY,EAAE;AAGvD,KAAI,kBAAkB,SAAS,KAAK,kBAAkB,OAAO,eAAe;EAE1E,MAAM,WAAW,kBAAkB,SAAS,IAAI,kBAAkB,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG;AACvF,SAAO;GACL,UAAU,aAAa,KAAK,MAAM;GAClC,cAAc;GACd,aAAa;GACb,UAAU,YAAY;GACvB;;CAIH,MAAM,eAAe,kBAAkB,SAAS,IAAI,kBAAkB,KAAK,IAAI,GAAG;AAElF,QAAO;EACL,UAAU,aAAa,KAAK,MAAM;EAClC;EACA,aAAa;EACb,UAAU;EACX;;;;;;;;AASH,SAAgB,YAAY,MAAuB;AACjD,KAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,CAC5B,QAAO;AAGT,KAAI;AAEF,SADa,cAAc,KAAK,CACpB;SACN;AACN,SAAO;;;;;;;;;;AAWX,SAAgB,wBAAwB,UAA0B;AAEhE,QADa,cAAc,SAAS,CACxB"}
@@ -0,0 +1,96 @@
1
+ import { JSONSchema7 } from "../node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.cjs";
2
+
3
+ //#region src/meta/type.d.ts
4
+ /**
5
+ * Constraint for a single node (file or directory) within a Kind.
6
+ * Supports exact paths, wildcards, and glob patterns.
7
+ */
8
+ interface NodeConstraint {
9
+ /**
10
+ * Node name or path pattern.
11
+ * - Exact: "src", "README.md"
12
+ * - Wildcard: "*.md", "*.test.ts"
13
+ * - Glob: "test/**", "src/**\/*.tsx"
14
+ */
15
+ path: string;
16
+ /** Kind that this node must conform to (optional) */
17
+ kind?: string;
18
+ /** Nested constraints for child nodes (recursive) */
19
+ nodes?: NodesConstraints;
20
+ }
21
+ /**
22
+ * Constraints for child nodes within a directory.
23
+ */
24
+ interface NodesConstraints {
25
+ /** Nodes that must exist */
26
+ required?: NodeConstraint[];
27
+ /** Nodes that may exist (validated if present) */
28
+ optional?: NodeConstraint[];
29
+ /** Whether to allow nodes not listed in required/optional (default: true) */
30
+ allowOther?: boolean;
31
+ }
32
+ /**
33
+ * Kind Schema definition.
34
+ * Uses JSON Schema for meta validation.
35
+ */
36
+ interface KindSchema {
37
+ /** Unique name in format "provider:kind" (e.g., "afs:node", "chamber:project") */
38
+ name: string;
39
+ /** Parent kind name for inheritance (single inheritance) */
40
+ extends?: string;
41
+ /** Human-readable description */
42
+ description?: string;
43
+ /** Meta schema in JSON Schema format */
44
+ meta?: JSONSchema7;
45
+ /** Child node structure constraints */
46
+ nodes?: NodesConstraints;
47
+ }
48
+ /**
49
+ * Result of validating a node against its Kind Schema.
50
+ */
51
+ interface ValidationResult {
52
+ /** Whether validation passed */
53
+ valid: boolean;
54
+ /** List of validation errors (empty if valid) */
55
+ errors: ValidationError[];
56
+ }
57
+ /**
58
+ * A single validation error.
59
+ */
60
+ interface ValidationError {
61
+ /** Path to the invalid property or node */
62
+ path: string;
63
+ /** Human-readable error message */
64
+ message: string;
65
+ /** Error code for programmatic handling */
66
+ code?: string;
67
+ /** Expected value or constraint */
68
+ expected?: unknown;
69
+ /** Actual value found */
70
+ actual?: unknown;
71
+ }
72
+ /**
73
+ * Parsed information about a .meta virtual path.
74
+ */
75
+ interface MetaPathInfo {
76
+ /** Path to the node (without .meta suffix) */
77
+ nodePath: string;
78
+ /** Resource path within .meta (e.g., "icon.png"), null for meta itself */
79
+ resourcePath: string | null;
80
+ /** Whether this is a .meta/.kinds path */
81
+ isKindsPath: boolean;
82
+ /** Specific kind name if accessing .meta/.kinds/{name} */
83
+ kindName: string | null;
84
+ }
85
+ /**
86
+ * Result of explain() operation - LLM-friendly node description.
87
+ */
88
+ interface AFSExplainResult {
89
+ /** Output format */
90
+ format: "markdown" | "text";
91
+ /** Human/LLM readable description */
92
+ content: string;
93
+ }
94
+ //#endregion
95
+ export { AFSExplainResult, KindSchema, MetaPathInfo, NodeConstraint, NodesConstraints, ValidationError, ValidationResult };
96
+ //# sourceMappingURL=type.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.d.cts","names":[],"sources":["../../src/meta/type.ts"],"mappings":";;;;;;;UAeiB,cAAA;EAWP;;;AAMV;;;EAVE,IAAA;EAYA;EAVA,IAAA;EAYA;EAVA,KAAA,GAAQ,gBAAA;AAAA;;;AAmBV;UAbiB,gBAAA;;EAEf,QAAA,GAAW,cAAA;EAaX;EAXA,QAAA,GAAW,cAAA;EAeX;EAbA,UAAA;AAAA;;;;;UAOe,UAAA;EAgBgB;EAd/B,IAAA;EAkBuB;EAhBvB,OAAA;EAgBA;EAdA,WAAA;EAcuB;EAZvB,IAAA,GAAO,WAAA;EAkBQ;EAhBf,KAAA,GAAQ,gBAAA;AAAA;;;;UAMO,gBAAA;EAkBf;EAhBA,KAAA;EAkBM;EAhBN,MAAA,EAAQ,eAAA;AAAA;;;;UAMO,eAAA;EAoBf;EAlBA,IAAA;EAsBA;EApBA,OAAA;EAoBQ;EAlBR,IAAA;EAwB+B;EAtB/B,QAAA;EAwBA;EAtBA,MAAA;AAAA;;;;UAMe,YAAA;;EAEf,QAAA;;EAEA,YAAA;;EAEA,WAAA;;EAEA,QAAA;AAAA;;;;UAMe,gBAAA;;EAEf,MAAA;;EAEA,OAAA;AAAA"}
@@ -0,0 +1,96 @@
1
+ import { JSONSchema7 } from "../node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.mjs";
2
+
3
+ //#region src/meta/type.d.ts
4
+ /**
5
+ * Constraint for a single node (file or directory) within a Kind.
6
+ * Supports exact paths, wildcards, and glob patterns.
7
+ */
8
+ interface NodeConstraint {
9
+ /**
10
+ * Node name or path pattern.
11
+ * - Exact: "src", "README.md"
12
+ * - Wildcard: "*.md", "*.test.ts"
13
+ * - Glob: "test/**", "src/**\/*.tsx"
14
+ */
15
+ path: string;
16
+ /** Kind that this node must conform to (optional) */
17
+ kind?: string;
18
+ /** Nested constraints for child nodes (recursive) */
19
+ nodes?: NodesConstraints;
20
+ }
21
+ /**
22
+ * Constraints for child nodes within a directory.
23
+ */
24
+ interface NodesConstraints {
25
+ /** Nodes that must exist */
26
+ required?: NodeConstraint[];
27
+ /** Nodes that may exist (validated if present) */
28
+ optional?: NodeConstraint[];
29
+ /** Whether to allow nodes not listed in required/optional (default: true) */
30
+ allowOther?: boolean;
31
+ }
32
+ /**
33
+ * Kind Schema definition.
34
+ * Uses JSON Schema for meta validation.
35
+ */
36
+ interface KindSchema {
37
+ /** Unique name in format "provider:kind" (e.g., "afs:node", "chamber:project") */
38
+ name: string;
39
+ /** Parent kind name for inheritance (single inheritance) */
40
+ extends?: string;
41
+ /** Human-readable description */
42
+ description?: string;
43
+ /** Meta schema in JSON Schema format */
44
+ meta?: JSONSchema7;
45
+ /** Child node structure constraints */
46
+ nodes?: NodesConstraints;
47
+ }
48
+ /**
49
+ * Result of validating a node against its Kind Schema.
50
+ */
51
+ interface ValidationResult {
52
+ /** Whether validation passed */
53
+ valid: boolean;
54
+ /** List of validation errors (empty if valid) */
55
+ errors: ValidationError[];
56
+ }
57
+ /**
58
+ * A single validation error.
59
+ */
60
+ interface ValidationError {
61
+ /** Path to the invalid property or node */
62
+ path: string;
63
+ /** Human-readable error message */
64
+ message: string;
65
+ /** Error code for programmatic handling */
66
+ code?: string;
67
+ /** Expected value or constraint */
68
+ expected?: unknown;
69
+ /** Actual value found */
70
+ actual?: unknown;
71
+ }
72
+ /**
73
+ * Parsed information about a .meta virtual path.
74
+ */
75
+ interface MetaPathInfo {
76
+ /** Path to the node (without .meta suffix) */
77
+ nodePath: string;
78
+ /** Resource path within .meta (e.g., "icon.png"), null for meta itself */
79
+ resourcePath: string | null;
80
+ /** Whether this is a .meta/.kinds path */
81
+ isKindsPath: boolean;
82
+ /** Specific kind name if accessing .meta/.kinds/{name} */
83
+ kindName: string | null;
84
+ }
85
+ /**
86
+ * Result of explain() operation - LLM-friendly node description.
87
+ */
88
+ interface AFSExplainResult {
89
+ /** Output format */
90
+ format: "markdown" | "text";
91
+ /** Human/LLM readable description */
92
+ content: string;
93
+ }
94
+ //#endregion
95
+ export { AFSExplainResult, KindSchema, MetaPathInfo, NodeConstraint, NodesConstraints, ValidationError, ValidationResult };
96
+ //# sourceMappingURL=type.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.d.mts","names":[],"sources":["../../src/meta/type.ts"],"mappings":";;;;;;;UAeiB,cAAA;EAWP;;;AAMV;;;EAVE,IAAA;EAYA;EAVA,IAAA;EAYA;EAVA,KAAA,GAAQ,gBAAA;AAAA;;;AAmBV;UAbiB,gBAAA;;EAEf,QAAA,GAAW,cAAA;EAaX;EAXA,QAAA,GAAW,cAAA;EAeX;EAbA,UAAA;AAAA;;;;;UAOe,UAAA;EAgBgB;EAd/B,IAAA;EAkBuB;EAhBvB,OAAA;EAgBA;EAdA,WAAA;EAcuB;EAZvB,IAAA,GAAO,WAAA;EAkBQ;EAhBf,KAAA,GAAQ,gBAAA;AAAA;;;;UAMO,gBAAA;EAkBf;EAhBA,KAAA;EAkBM;EAhBN,MAAA,EAAQ,eAAA;AAAA;;;;UAMO,eAAA;EAoBf;EAlBA,IAAA;EAsBA;EApBA,OAAA;EAoBQ;EAlBR,IAAA;EAwB+B;EAtB/B,QAAA;EAwBA;EAtBA,MAAA;AAAA;;;;UAMe,YAAA;;EAEf,QAAA;;EAEA,YAAA;;EAEA,WAAA;;EAEA,QAAA;AAAA;;;;UAMe,gBAAA;;EAEf,MAAA;;EAEA,OAAA;AAAA"}
@@ -0,0 +1,77 @@
1
+ let minimatch = require("minimatch");
2
+
3
+ //#region src/meta/validation.ts
4
+ /**
5
+ * Validation utilities for AFS Meta System.
6
+ *
7
+ * Provides:
8
+ * - Node constraint validation (required/optional nodes, glob patterns)
9
+ * - Validation result types
10
+ */
11
+ /**
12
+ * Validate a list of node names against NodesConstraints.
13
+ *
14
+ * @param basePath - Base path for error reporting (e.g., "/project")
15
+ * @param nodeNames - List of node names in the directory
16
+ * @param constraints - NodesConstraints to validate against
17
+ * @returns ValidationResult with valid flag and any errors
18
+ */
19
+ function validateNodes(basePath, nodeNames, constraints) {
20
+ const errors = [];
21
+ if (!constraints) return {
22
+ valid: true,
23
+ errors: []
24
+ };
25
+ const matchedNodes = /* @__PURE__ */ new Set();
26
+ if (constraints.required) for (const constraint of constraints.required) {
27
+ const pattern = constraint.path;
28
+ let found = false;
29
+ for (const nodeName of nodeNames) if (matchesPattern(nodeName, pattern)) {
30
+ found = true;
31
+ matchedNodes.add(nodeName);
32
+ break;
33
+ }
34
+ if (!found) errors.push({
35
+ path: `${basePath}/${pattern}`,
36
+ message: `Required node "${pattern}" not found in ${basePath}`,
37
+ code: "REQUIRED_NODE_MISSING"
38
+ });
39
+ }
40
+ if (constraints.optional) for (const constraint of constraints.optional) {
41
+ const pattern = constraint.path;
42
+ for (const nodeName of nodeNames) if (matchesPattern(nodeName, pattern)) matchedNodes.add(nodeName);
43
+ }
44
+ if (constraints.allowOther === false) {
45
+ for (const nodeName of nodeNames) if (!matchedNodes.has(nodeName)) errors.push({
46
+ path: `${basePath}/${nodeName}`,
47
+ message: `Unexpected node "${nodeName}" in ${basePath} (allowOther is false)`,
48
+ code: "UNEXPECTED_NODE"
49
+ });
50
+ }
51
+ return {
52
+ valid: errors.length === 0,
53
+ errors
54
+ };
55
+ }
56
+ /**
57
+ * Check if a node name matches a pattern (supports glob).
58
+ */
59
+ function matchesPattern(nodeName, pattern) {
60
+ if (nodeName === pattern) return true;
61
+ if (pattern.includes("*")) return (0, minimatch.minimatch)(nodeName, pattern, { dot: true });
62
+ return false;
63
+ }
64
+ /**
65
+ * Combine multiple ValidationResults into one.
66
+ */
67
+ function combineValidationResults(...results) {
68
+ const allErrors = results.flatMap((r) => r.errors);
69
+ return {
70
+ valid: allErrors.length === 0,
71
+ errors: allErrors
72
+ };
73
+ }
74
+
75
+ //#endregion
76
+ exports.combineValidationResults = combineValidationResults;
77
+ exports.validateNodes = validateNodes;
@@ -0,0 +1,19 @@
1
+ import { NodesConstraints, ValidationResult } from "./type.cjs";
2
+
3
+ //#region src/meta/validation.d.ts
4
+ /**
5
+ * Validate a list of node names against NodesConstraints.
6
+ *
7
+ * @param basePath - Base path for error reporting (e.g., "/project")
8
+ * @param nodeNames - List of node names in the directory
9
+ * @param constraints - NodesConstraints to validate against
10
+ * @returns ValidationResult with valid flag and any errors
11
+ */
12
+ declare function validateNodes(basePath: string, nodeNames: string[], constraints: NodesConstraints | undefined): ValidationResult;
13
+ /**
14
+ * Combine multiple ValidationResults into one.
15
+ */
16
+ declare function combineValidationResults(...results: ValidationResult[]): ValidationResult;
17
+ //#endregion
18
+ export { combineValidationResults, validateNodes };
19
+ //# sourceMappingURL=validation.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.cts","names":[],"sources":["../../src/meta/validation.ts"],"mappings":";;;;;;;;;AA6GA;;iBA1FgB,aAAA,CACd,QAAA,UACA,SAAA,YACA,WAAA,EAAa,gBAAA,eACZ,gBAAA;;;;iBAsFa,wBAAA,CAAA,GAA4B,OAAA,EAAS,gBAAA,KAAqB,gBAAA"}
@@ -0,0 +1,19 @@
1
+ import { NodesConstraints, ValidationResult } from "./type.mjs";
2
+
3
+ //#region src/meta/validation.d.ts
4
+ /**
5
+ * Validate a list of node names against NodesConstraints.
6
+ *
7
+ * @param basePath - Base path for error reporting (e.g., "/project")
8
+ * @param nodeNames - List of node names in the directory
9
+ * @param constraints - NodesConstraints to validate against
10
+ * @returns ValidationResult with valid flag and any errors
11
+ */
12
+ declare function validateNodes(basePath: string, nodeNames: string[], constraints: NodesConstraints | undefined): ValidationResult;
13
+ /**
14
+ * Combine multiple ValidationResults into one.
15
+ */
16
+ declare function combineValidationResults(...results: ValidationResult[]): ValidationResult;
17
+ //#endregion
18
+ export { combineValidationResults, validateNodes };
19
+ //# sourceMappingURL=validation.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.mts","names":[],"sources":["../../src/meta/validation.ts"],"mappings":";;;;;;;;;AA6GA;;iBA1FgB,aAAA,CACd,QAAA,UACA,SAAA,YACA,WAAA,EAAa,gBAAA,eACZ,gBAAA;;;;iBAsFa,wBAAA,CAAA,GAA4B,OAAA,EAAS,gBAAA,KAAqB,gBAAA"}