@arkadia/ai-data-format 0.1.4

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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +198 -0
  3. package/dist/config.d.ts +75 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +28 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/core/Decoder.d.ts +86 -0
  8. package/dist/core/Decoder.d.ts.map +1 -0
  9. package/dist/core/Decoder.js +951 -0
  10. package/dist/core/Decoder.js.map +1 -0
  11. package/dist/core/Encoder.d.ts +26 -0
  12. package/dist/core/Encoder.d.ts.map +1 -0
  13. package/dist/core/Encoder.js +368 -0
  14. package/dist/core/Encoder.js.map +1 -0
  15. package/dist/core/Parser.d.ts +6 -0
  16. package/dist/core/Parser.d.ts.map +1 -0
  17. package/dist/core/Parser.js +132 -0
  18. package/dist/core/Parser.js.map +1 -0
  19. package/dist/index.d.ts +22 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +46 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/models/Meta.d.ts +48 -0
  24. package/dist/models/Meta.d.ts.map +1 -0
  25. package/dist/models/Meta.js +113 -0
  26. package/dist/models/Meta.js.map +1 -0
  27. package/dist/models/Node.d.ts +42 -0
  28. package/dist/models/Node.d.ts.map +1 -0
  29. package/dist/models/Node.js +179 -0
  30. package/dist/models/Node.js.map +1 -0
  31. package/dist/models/Schema.d.ts +55 -0
  32. package/dist/models/Schema.d.ts.map +1 -0
  33. package/dist/models/Schema.js +175 -0
  34. package/dist/models/Schema.js.map +1 -0
  35. package/package.json +32 -0
  36. package/scripts/verify-build.js +202 -0
  37. package/src/config.ts +102 -0
  38. package/src/core/Decoder.ts +1057 -0
  39. package/src/core/Encoder.ts +443 -0
  40. package/src/core/Parser.ts +150 -0
  41. package/src/index.ts +46 -0
  42. package/src/models/Meta.ts +135 -0
  43. package/src/models/Node.ts +212 -0
  44. package/src/models/Schema.ts +222 -0
  45. package/tests/00.meta.test.ts +31 -0
  46. package/tests/00.node.test.ts +54 -0
  47. package/tests/00.primitive.test.ts +108 -0
  48. package/tests/00.schema.test.ts +41 -0
  49. package/tests/01.schema.test.ts +70 -0
  50. package/tests/02.data.test.ts +89 -0
  51. package/tests/03.errors.test.ts +71 -0
  52. package/tests/04.list.test.ts +225 -0
  53. package/tests/05.record.test.ts +82 -0
  54. package/tests/06.meta.test.ts +506 -0
  55. package/tests/utils.ts +69 -0
  56. package/tsconfig.json +46 -0
  57. package/vitest.config.ts +9 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../src/core/Parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { EncoderConfig } from './config';
2
+ import { DecodeResult } from './core/Decoder';
3
+ import { Node } from './models/Node';
4
+ import { Schema, SchemaKind } from './models/Schema';
5
+ import { MetaInfo, Meta, MetaProps } from './models/Meta';
6
+ export { Node, Schema, SchemaKind, DecodeResult, EncoderConfig, Meta, MetaInfo, MetaProps };
7
+ /**
8
+ * Encode input data into valid **AI.Data** format.
9
+ */
10
+ export declare function encode(data: any | Node, config?: Partial<EncoderConfig>): string;
11
+ /**
12
+ * Decode AI.Data format text into a Node structure.
13
+ */
14
+ export declare function decode(text: string, options?: {
15
+ removeAnsiColors?: boolean;
16
+ debug?: boolean;
17
+ }, schema?: string): DecodeResult;
18
+ /**
19
+ * Convert raw JavaScript object/value into a Node.
20
+ */
21
+ export declare function parse(data: any): Node;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,UAAU,CAAC;AAEzD,OAAO,EAAW,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAC1D,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAMhC;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM,GAAG,MAAM,CAMpF;AAED;;GAEG;AACH,wBAAgB,MAAM,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,EAC7D,MAAM,GAAE,MAAW,GACpB,YAAY,CAId;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAErC"}
package/dist/index.js ADDED
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetaInfo = exports.Meta = exports.SchemaKind = exports.Schema = exports.Node = void 0;
4
+ exports.encode = encode;
5
+ exports.decode = decode;
6
+ exports.parse = parse;
7
+ const config_1 = require("./config");
8
+ const Encoder_1 = require("./core/Encoder");
9
+ const Decoder_1 = require("./core/Decoder");
10
+ const Parser_1 = require("./core/Parser");
11
+ const Node_1 = require("./models/Node");
12
+ Object.defineProperty(exports, "Node", { enumerable: true, get: function () { return Node_1.Node; } });
13
+ const Schema_1 = require("./models/Schema");
14
+ Object.defineProperty(exports, "Schema", { enumerable: true, get: function () { return Schema_1.Schema; } });
15
+ Object.defineProperty(exports, "SchemaKind", { enumerable: true, get: function () { return Schema_1.SchemaKind; } });
16
+ const Meta_1 = require("./models/Meta");
17
+ Object.defineProperty(exports, "MetaInfo", { enumerable: true, get: function () { return Meta_1.MetaInfo; } });
18
+ Object.defineProperty(exports, "Meta", { enumerable: true, get: function () { return Meta_1.Meta; } });
19
+ // =============================================================
20
+ // PUBLIC API
21
+ // =============================================================
22
+ /**
23
+ * Encode input data into valid **AI.Data** format.
24
+ */
25
+ function encode(data, config = {}) {
26
+ let node;
27
+ node = (0, Parser_1.parseDataToNode)(data);
28
+ const finalConfig = { ...config_1.DEFAULT_CONFIG, ...config };
29
+ const encoder = new Encoder_1.Encoder(finalConfig);
30
+ return encoder.encode(node);
31
+ }
32
+ /**
33
+ * Decode AI.Data format text into a Node structure.
34
+ */
35
+ function decode(text, options = {}, schema = "") {
36
+ const { removeAnsiColors = false, debug = false } = options;
37
+ const decoder = new Decoder_1.Decoder(text, schema, removeAnsiColors, debug);
38
+ return decoder.decode();
39
+ }
40
+ /**
41
+ * Convert raw JavaScript object/value into a Node.
42
+ */
43
+ function parse(data) {
44
+ return (0, Parser_1.parseDataToNode)(data);
45
+ }
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAmBA,wBAMC;AAKD,wBAQC;AAKD,sBAEC;AA7CD,qCAAyD;AACzD,4CAAyC;AACzC,4CAAuD;AACvD,0CAAgD;AAChD,wCAAqC;AAK5B,qFALA,WAAI,OAKA;AAJb,4CAAqD;AAItC,uFAJN,eAAM,OAIM;AAAE,2FAJN,mBAAU,OAIM;AAHjC,wCAA0D;AAIhD,yFAJD,eAAQ,OAIC;AAAd,qFAJe,WAAI,OAIf;AAER,gEAAgE;AAChE,aAAa;AACb,gEAAgE;AAEhE;;GAEG;AACH,SAAgB,MAAM,CAAC,IAAgB,EAAE,SAAiC,EAAE;IACxE,IAAI,IAAU,CAAC;IACf,IAAI,GAAG,IAAA,wBAAe,EAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,WAAW,GAAkB,EAAE,GAAG,uBAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,WAAW,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAgB,MAAM,CAClB,IAAY,EACZ,UAA2D,EAAE,EAC7D,SAAiB,EAAE;IAEnB,MAAM,EAAE,gBAAgB,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACnE,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAgB,KAAK,CAAC,IAAS;IAC3B,OAAO,IAAA,wBAAe,EAAC,IAAI,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,48 @@
1
+ export interface MetaProps {
2
+ comments?: string[];
3
+ attr?: Record<string, any>;
4
+ tags?: string[];
5
+ }
6
+ /**
7
+ * Mixin/Base class that adds metadata storage capabilities to Node and Schema.
8
+ */
9
+ export declare class Meta {
10
+ comments: string[];
11
+ attr: Record<string, any>;
12
+ tags: string[];
13
+ constructor({ comments, attr, tags }?: MetaProps);
14
+ /**
15
+ * Clears ALL metadata (comments, attributes, tags).
16
+ */
17
+ clearCommonMeta(): void;
18
+ /**
19
+ * Merges only the common fields (attributes, comments, tags)
20
+ * from a MetaInfo object. Safe for both Node and Schema.
21
+ */
22
+ applyCommonMeta(info: Meta): void;
23
+ }
24
+ /**
25
+ * A temporary container (DTO) holding parsed metadata from a / ... / block.
26
+ * It contains BOTH Schema constraints (!required) and Node attributes ($key=val).
27
+ */
28
+ export declare class MetaInfo extends Meta {
29
+ required: boolean;
30
+ constructor(props?: MetaProps & {
31
+ required?: boolean;
32
+ });
33
+ /**
34
+ * Merges everything from another MetaInfo object, including 'required' flag.
35
+ */
36
+ applyMeta(info: MetaInfo): void;
37
+ /**
38
+ * Allows usage checks like 'if meta.isEmpty()' to see if any metadata was collected.
39
+ * Equivalent to Python's __bool__.
40
+ */
41
+ isEmpty(): boolean;
42
+ /**
43
+ * Debug representation mimicking the actual ADF format style.
44
+ * Example: <MetaInfo !required #tag $key=val >
45
+ */
46
+ toString(): string;
47
+ }
48
+ //# sourceMappingURL=Meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Meta.d.ts","sourceRoot":"","sources":["../../src/models/Meta.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,IAAI;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;gBAEH,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAE,SAAc;IAMpD;;OAEG;IACH,eAAe,IAAI,IAAI;IAMvB;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;CAgBpC;AAED;;;GAGG;AACH,qBAAa,QAAS,SAAQ,IAAI;IAC9B,QAAQ,EAAE,OAAO,CAAC;gBAEN,KAAK,GAAE,SAAS,GAAG;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO;IAK1D;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAU/B;;;OAGG;IACH,OAAO,IAAI,OAAO;IASlB;;;OAGG;IACH,QAAQ,IAAI,MAAM;CAwCrB"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetaInfo = exports.Meta = void 0;
4
+ /**
5
+ * Mixin/Base class that adds metadata storage capabilities to Node and Schema.
6
+ */
7
+ class Meta {
8
+ constructor({ comments, attr, tags } = {}) {
9
+ this.comments = comments ? [...comments] : [];
10
+ this.attr = attr ? { ...attr } : {};
11
+ this.tags = tags ? [...tags] : [];
12
+ }
13
+ /**
14
+ * Clears ALL metadata (comments, attributes, tags).
15
+ */
16
+ clearCommonMeta() {
17
+ this.comments = [];
18
+ this.attr = {};
19
+ this.tags = [];
20
+ }
21
+ /**
22
+ * Merges only the common fields (attributes, comments, tags)
23
+ * from a MetaInfo object. Safe for both Node and Schema.
24
+ */
25
+ applyCommonMeta(info) {
26
+ // Append comments
27
+ if (info.comments.length > 0) {
28
+ this.comments.push(...info.comments);
29
+ }
30
+ // Merge attributes ($key=value)
31
+ if (Object.keys(info.attr).length > 0) {
32
+ Object.assign(this.attr, info.attr);
33
+ }
34
+ // Append tags
35
+ if (info.tags.length > 0) {
36
+ this.tags.push(...info.tags);
37
+ }
38
+ }
39
+ }
40
+ exports.Meta = Meta;
41
+ /**
42
+ * A temporary container (DTO) holding parsed metadata from a / ... / block.
43
+ * It contains BOTH Schema constraints (!required) and Node attributes ($key=val).
44
+ */
45
+ class MetaInfo extends Meta {
46
+ constructor(props = {}) {
47
+ super(props);
48
+ this.required = props.required || false;
49
+ }
50
+ /**
51
+ * Merges everything from another MetaInfo object, including 'required' flag.
52
+ */
53
+ applyMeta(info) {
54
+ // Apply common fields (comments, attr, tags)
55
+ this.applyCommonMeta(info);
56
+ // Override required meta (Schema Only)
57
+ if (info.required) {
58
+ this.required = true;
59
+ }
60
+ }
61
+ /**
62
+ * Allows usage checks like 'if meta.isEmpty()' to see if any metadata was collected.
63
+ * Equivalent to Python's __bool__.
64
+ */
65
+ isEmpty() {
66
+ return (this.comments.length === 0 &&
67
+ Object.keys(this.attr).length === 0 &&
68
+ this.tags.length === 0 &&
69
+ !this.required);
70
+ }
71
+ /**
72
+ * Debug representation mimicking the actual ADF format style.
73
+ * Example: <MetaInfo !required #tag $key=val >
74
+ */
75
+ toString() {
76
+ const parts = [];
77
+ // 1. Flags
78
+ if (this.required) {
79
+ parts.push("!required");
80
+ }
81
+ // 2. Tags
82
+ for (const t of this.tags) {
83
+ parts.push(`#${t}`);
84
+ }
85
+ // 3. Attributes
86
+ for (const [k, v] of Object.entries(this.attr)) {
87
+ // Simplistic value repr for debug
88
+ let valStr;
89
+ if (typeof v === 'string') {
90
+ valStr = `"${v}"`;
91
+ }
92
+ else {
93
+ valStr = String(v);
94
+ }
95
+ parts.push(`$${k}=${valStr}`);
96
+ }
97
+ // 4. Comments (Summary)
98
+ if (this.comments.length > 0) {
99
+ if (this.comments.length === 1) {
100
+ const c = this.comments[0];
101
+ const preview = c.length > 15 ? c.substring(0, 15) + '..' : c;
102
+ parts.push(`/* ${preview} */`);
103
+ }
104
+ else {
105
+ parts.push(`/* ${this.comments.length} comments */`);
106
+ }
107
+ }
108
+ const content = parts.join(" ");
109
+ return content ? `<MetaInfo ${content}>` : "<MetaInfo (empty)>";
110
+ }
111
+ }
112
+ exports.MetaInfo = MetaInfo;
113
+ //# sourceMappingURL=Meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Meta.js","sourceRoot":"","sources":["../../src/models/Meta.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { Meta, MetaInfo, MetaProps } from './Meta';
2
+ import { Schema } from './Schema';
3
+ export interface NodeProps extends MetaProps {
4
+ name?: string;
5
+ value?: any;
6
+ fields?: Record<string, Node>;
7
+ elements?: Node[];
8
+ }
9
+ /**
10
+ * Canonical runtime data object for AI.DATA.
11
+ * A Node always refers to a Schema which defines how data should be interpreted.
12
+ */
13
+ export declare class Node extends Meta {
14
+ schema: Schema;
15
+ name: string;
16
+ value: any;
17
+ fields: Record<string, Node>;
18
+ elements: Node[];
19
+ constructor(schema: Schema, props?: NodeProps);
20
+ get isPrimitive(): boolean;
21
+ get isRecord(): boolean;
22
+ get isList(): boolean;
23
+ clearMeta(): void;
24
+ applyMeta(info: MetaInfo): void;
25
+ /**
26
+ * Recursively converts the Node into a standard JavaScript object/array/primitive.
27
+ * Equivalent to Python's .dict() method.
28
+ */
29
+ dict(): any;
30
+ /**
31
+ * Converts the Node to a JSON string.
32
+ * * @param indent Number of spaces for indentation.
33
+ * @param colorize If true, applies ANSI colors to keys, strings, numbers, etc.
34
+ */
35
+ JSON(indent?: number, colorize?: boolean): string;
36
+ /**
37
+ * Technical debug representation.
38
+ * Format: <Node(KIND:type) value/len=... details...>
39
+ */
40
+ toString(): string;
41
+ }
42
+ //# sourceMappingURL=Node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../src/models/Node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,SAAU,SAAQ,SAAS;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,IAAK,SAAQ,IAAI;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,QAAQ,EAAE,IAAI,EAAE,CAAC;gBAEL,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,SAAc;IAajD,IAAI,WAAW,IAAI,OAAO,CAAmD;IAC7E,IAAI,QAAQ,IAAI,OAAO,CAAgD;IACvE,IAAI,MAAM,IAAI,OAAO,CAA8C;IAMnE,SAAS,IAAI,IAAI;IAIjB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAW/B;;;OAGG;IACH,IAAI,IAAI,GAAG;IAoBX;;;;OAIG;IACH,IAAI,CAAC,MAAM,GAAE,MAAU,EAAE,QAAQ,GAAE,OAAe,GAAG,MAAM;IA6D3D;;;OAGG;IACH,QAAQ,IAAI,MAAM;CA4DrB"}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Node = void 0;
4
+ const Meta_1 = require("./Meta");
5
+ /**
6
+ * Canonical runtime data object for AI.DATA.
7
+ * A Node always refers to a Schema which defines how data should be interpreted.
8
+ */
9
+ class Node extends Meta_1.Meta {
10
+ constructor(schema, props = {}) {
11
+ super(props);
12
+ this.schema = schema;
13
+ this.name = props.name || "";
14
+ this.value = props.value ?? null;
15
+ this.fields = props.fields || {};
16
+ this.elements = props.elements ? [...props.elements] : [];
17
+ }
18
+ // -----------------------------------------------------------
19
+ // Introspection helpers
20
+ // -----------------------------------------------------------
21
+ get isPrimitive() { return this.schema && this.schema.isPrimitive; }
22
+ get isRecord() { return this.schema && this.schema.isRecord; }
23
+ get isList() { return this.schema && this.schema.isList; }
24
+ // -----------------------------------------------------------
25
+ // Meta
26
+ // -----------------------------------------------------------
27
+ clearMeta() {
28
+ this.clearCommonMeta();
29
+ }
30
+ applyMeta(info) {
31
+ // Applies ALL metadata (common stuff: meta dict, comments)
32
+ this.applyCommonMeta(info);
33
+ }
34
+ // -----------------------------------------------------------
35
+ // Conversion Methods (dict / json)
36
+ // -----------------------------------------------------------
37
+ /**
38
+ * Recursively converts the Node into a standard JavaScript object/array/primitive.
39
+ * Equivalent to Python's .dict() method.
40
+ */
41
+ dict() {
42
+ if (this.isPrimitive) {
43
+ return this.value;
44
+ }
45
+ if (this.isList) {
46
+ return this.elements.map(element => element.dict());
47
+ }
48
+ if (this.isRecord) {
49
+ const result = {};
50
+ for (const [key, fieldNode] of Object.entries(this.fields)) {
51
+ result[key] = fieldNode.dict();
52
+ }
53
+ return result;
54
+ }
55
+ return this.value;
56
+ }
57
+ /**
58
+ * Converts the Node to a JSON string.
59
+ * * @param indent Number of spaces for indentation.
60
+ * @param colorize If true, applies ANSI colors to keys, strings, numbers, etc.
61
+ */
62
+ JSON(indent = 2, colorize = false) {
63
+ // 1. Convert to standard JS object
64
+ const data = this.dict();
65
+ // 2. Dump to string
66
+ const jsonStr = JSON.stringify(data, null, indent);
67
+ if (!colorize) {
68
+ return jsonStr;
69
+ }
70
+ // 3. Apply Colors (Regex Tokenizer)
71
+ // ANSI codes matching the Encoder class
72
+ const C = {
73
+ RESET: "\x1b[0m",
74
+ STRING: "\x1b[92m", // Green
75
+ NUMBER: "\x1b[94m", // Blue
76
+ BOOL: "\x1b[95m", // Magenta
77
+ NULL: "\x1b[90m", // Gray
78
+ KEY: "\x1b[93m" // Yellow
79
+ };
80
+ // Regex to capture JSON tokens:
81
+ // Group 1: Keys ("key": )
82
+ // Group 2: String values ("value")
83
+ // Group 3: Booleans/Null
84
+ // Group 4: Numbers
85
+ const tokenPattern = /(".*?"\s*:)|(".*?")|\b(true|false|null)\b|(-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g;
86
+ return jsonStr.replace(tokenPattern, (match) => {
87
+ // Check based on content patterns
88
+ // Key: Ends with ':' (ignoring whitespace) and starts with '"'
89
+ if (/^".*":\s*$/.test(match)) {
90
+ return `${C.KEY}${match}${C.RESET}`;
91
+ }
92
+ // String value: Starts with '"'
93
+ if (match.startsWith('"')) {
94
+ return `${C.STRING}${match}${C.RESET}`;
95
+ }
96
+ // Boolean
97
+ if (match === "true" || match === "false") {
98
+ return `${C.BOOL}${match}${C.RESET}`;
99
+ }
100
+ // Null
101
+ if (match === "null") {
102
+ return `${C.NULL}${match}${C.RESET}`;
103
+ }
104
+ // Number (Fallthrough)
105
+ return `${C.NUMBER}${match}${C.RESET}`;
106
+ });
107
+ }
108
+ // -----------------------------------------------------------
109
+ // Debug / Representation
110
+ // -----------------------------------------------------------
111
+ /**
112
+ * Technical debug representation.
113
+ * Format: <Node(KIND:type) value/len=... details...>
114
+ */
115
+ toString() {
116
+ // 1. Type Info
117
+ let typeLabel = "UNKNOWN";
118
+ if (this.schema) {
119
+ const kind = this.schema.kind;
120
+ const typeName = this.schema.typeName;
121
+ if (this.isList) {
122
+ const elType = this.schema.element ? (this.schema.element.typeName || "any") : "any";
123
+ typeLabel = `LIST[${elType}]`;
124
+ }
125
+ else if (this.isRecord && typeName !== "record" && typeName !== "any") {
126
+ typeLabel = `RECORD:${typeName}`;
127
+ }
128
+ else {
129
+ typeLabel = `${kind}:${typeName}`;
130
+ }
131
+ }
132
+ const header = `<Node(${typeLabel})`;
133
+ const content = [];
134
+ // 2. Content Info
135
+ if (this.isPrimitive) {
136
+ let v = String(this.value);
137
+ if (typeof this.value === 'string')
138
+ v = `"${v}"`;
139
+ if (v.length > 50)
140
+ v = v.substring(0, 47) + "...";
141
+ content.push(`val=${v}`);
142
+ }
143
+ else if (this.isList) {
144
+ content.push(`len=${this.elements.length}`);
145
+ }
146
+ else if (this.isRecord) {
147
+ const keys = Object.keys(this.fields);
148
+ let keysStr = "";
149
+ if (keys.length > 3) {
150
+ keysStr = keys.slice(0, 3).join(", ") + ", ...";
151
+ }
152
+ else {
153
+ keysStr = keys.join(", ");
154
+ }
155
+ content.push(`fields=[${keysStr}]`);
156
+ }
157
+ else {
158
+ // Fallback
159
+ let v = String(this.value);
160
+ if (v.length > 50)
161
+ v = v.substring(0, 47) + "...";
162
+ content.push(`val=${v}`);
163
+ }
164
+ // 3. Meta Indicators
165
+ if (this.comments.length > 0) {
166
+ content.push(`comments=${this.comments.length}`);
167
+ }
168
+ if (Object.keys(this.attr).length > 0) {
169
+ content.push(`attr=[${Object.keys(this.attr).join(', ')}]`);
170
+ }
171
+ if (this.tags.length > 0) {
172
+ content.push(`tags=[${this.tags.join(', ')}]`);
173
+ }
174
+ const detailsStr = content.length > 0 ? " " + content.join(" ") : "";
175
+ return `${header}${detailsStr}>`;
176
+ }
177
+ }
178
+ exports.Node = Node;
179
+ //# sourceMappingURL=Node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Node.js","sourceRoot":"","sources":["../../src/models/Node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { Meta, MetaInfo, MetaProps } from './Meta';
2
+ export declare enum SchemaKind {
3
+ PRIMITIVE = "PRIMITIVE",// int, string, bool, null
4
+ RECORD = "RECORD",// User, Point, or anonymous <...>
5
+ LIST = "LIST",// Array/Sequence
6
+ DICT = "DICT",// Future-proofing: Key-Value pairs
7
+ ANY = "ANY"
8
+ }
9
+ export interface SchemaProps extends MetaProps {
10
+ typeName?: string;
11
+ name?: string;
12
+ fields?: Schema[];
13
+ element?: Schema;
14
+ key?: Schema;
15
+ value?: Schema;
16
+ required?: boolean;
17
+ }
18
+ export declare class Schema extends Meta {
19
+ kind: SchemaKind;
20
+ typeName: string;
21
+ name: string;
22
+ element: Schema | null;
23
+ key: Schema | null;
24
+ value: Schema | null;
25
+ required: boolean;
26
+ private _fieldsList;
27
+ private _fieldsMap;
28
+ constructor(kind: SchemaKind, props?: SchemaProps);
29
+ get isPrimitive(): boolean;
30
+ get isRecord(): boolean;
31
+ get isList(): boolean;
32
+ get isAny(): boolean;
33
+ get fields(): Schema[];
34
+ clearFields(): void;
35
+ addField(field: Schema): void;
36
+ /**
37
+ * Equivalent to Python's __getitem__.
38
+ * Allows access by numeric index or field name string.
39
+ */
40
+ getField(key: number | string): Schema | undefined;
41
+ /**
42
+ * Replaces an existing field with a new definition based on field.name.
43
+ * Preserves the original order in the fields list.
44
+ * If the field does not exist, it appends it (like addField).
45
+ */
46
+ replaceField(field: Schema): void;
47
+ clearMeta(): void;
48
+ applyMeta(info: MetaInfo | Schema | undefined): void;
49
+ /**
50
+ * Technical debug representation.
51
+ * Format: <Schema(KIND:type_name) name='...' details...>
52
+ */
53
+ toString(): string;
54
+ }
55
+ //# sourceMappingURL=Schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/models/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnD,oBAAY,UAAU;IAClB,SAAS,cAAc,CAAE,0BAA0B;IACnD,MAAM,WAAW,CAAQ,kCAAkC;IAC3D,IAAI,SAAS,CAAY,iBAAiB;IAC1C,IAAI,SAAS,CAAY,mCAAmC;IAC5D,GAAG,QAAQ;CACd;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,qBAAa,MAAO,SAAQ,IAAI;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IAGb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGrB,QAAQ,EAAE,OAAO,CAAC;IAGlB,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAkC;gBAExC,IAAI,EAAE,UAAU,EAAE,KAAK,GAAE,WAAgB;IAqBrD,IAAI,WAAW,IAAI,OAAO,CAA+C;IACzE,IAAI,QAAQ,IAAI,OAAO,CAA4C;IACnE,IAAI,MAAM,IAAI,OAAO,CAA0C;IAE/D,IAAI,KAAK,IAAI,OAAO,CAMnB;IAED,IAAI,MAAM,IAAI,MAAM,EAAE,CAErB;IAMD,WAAW,IAAI,IAAI;IAKnB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAc7B;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAUlD;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA+BjC,SAAS,IAAI,IAAI;IAKjB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI;IAepD;;;OAGG;IACH,QAAQ,IAAI,MAAM;CAkDrB"}