@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.
- package/LICENSE +21 -0
- package/README.md +198 -0
- package/dist/config.d.ts +75 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +28 -0
- package/dist/config.js.map +1 -0
- package/dist/core/Decoder.d.ts +86 -0
- package/dist/core/Decoder.d.ts.map +1 -0
- package/dist/core/Decoder.js +951 -0
- package/dist/core/Decoder.js.map +1 -0
- package/dist/core/Encoder.d.ts +26 -0
- package/dist/core/Encoder.d.ts.map +1 -0
- package/dist/core/Encoder.js +368 -0
- package/dist/core/Encoder.js.map +1 -0
- package/dist/core/Parser.d.ts +6 -0
- package/dist/core/Parser.d.ts.map +1 -0
- package/dist/core/Parser.js +132 -0
- package/dist/core/Parser.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/models/Meta.d.ts +48 -0
- package/dist/models/Meta.d.ts.map +1 -0
- package/dist/models/Meta.js +113 -0
- package/dist/models/Meta.js.map +1 -0
- package/dist/models/Node.d.ts +42 -0
- package/dist/models/Node.d.ts.map +1 -0
- package/dist/models/Node.js +179 -0
- package/dist/models/Node.js.map +1 -0
- package/dist/models/Schema.d.ts +55 -0
- package/dist/models/Schema.d.ts.map +1 -0
- package/dist/models/Schema.js +175 -0
- package/dist/models/Schema.js.map +1 -0
- package/package.json +32 -0
- package/scripts/verify-build.js +202 -0
- package/src/config.ts +102 -0
- package/src/core/Decoder.ts +1057 -0
- package/src/core/Encoder.ts +443 -0
- package/src/core/Parser.ts +150 -0
- package/src/index.ts +46 -0
- package/src/models/Meta.ts +135 -0
- package/src/models/Node.ts +212 -0
- package/src/models/Schema.ts +222 -0
- package/tests/00.meta.test.ts +31 -0
- package/tests/00.node.test.ts +54 -0
- package/tests/00.primitive.test.ts +108 -0
- package/tests/00.schema.test.ts +41 -0
- package/tests/01.schema.test.ts +70 -0
- package/tests/02.data.test.ts +89 -0
- package/tests/03.errors.test.ts +71 -0
- package/tests/04.list.test.ts +225 -0
- package/tests/05.record.test.ts +82 -0
- package/tests/06.meta.test.ts +506 -0
- package/tests/utils.ts +69 -0
- package/tsconfig.json +46 -0
- 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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|