@altopelago/aeon-finalize 0.9.0

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.
@@ -0,0 +1,43 @@
1
+ export function transformDocument(document, transform) {
2
+ const root = transformNode(document.root, transform, { path: ['$'] });
3
+ return { root };
4
+ }
5
+ export function transformNode(node, transform, ctx) {
6
+ const entered = transform.enter ? transform.enter(node, ctx) : undefined;
7
+ const current = entered ?? node;
8
+ let next = current;
9
+ if (current.type === 'Object') {
10
+ next = transformObject(current, transform, ctx);
11
+ }
12
+ else if (current.type === 'List') {
13
+ next = transformList(current, transform, ctx);
14
+ }
15
+ const left = transform.leave ? transform.leave(next, ctx) : undefined;
16
+ return left ?? next;
17
+ }
18
+ function transformObject(node, transform, ctx) {
19
+ const entries = new Map();
20
+ for (const [key, value] of node.entries.entries()) {
21
+ const childCtx = {
22
+ path: [...ctx.path, key],
23
+ };
24
+ entries.set(key, transformNode(value, transform, childCtx));
25
+ }
26
+ return entriesAreSame(node.entries, entries) ? node : { ...node, entries };
27
+ }
28
+ function transformList(node, transform, ctx) {
29
+ const items = node.items.map((item, index) => transformNode(item, transform, { path: [...ctx.path, `[${index}]`] }));
30
+ return items === node.items ? node : { ...node, items };
31
+ }
32
+ function entriesAreSame(original, next) {
33
+ if (original.size !== next.size)
34
+ return false;
35
+ for (const [key, value] of original.entries()) {
36
+ if (!next.has(key))
37
+ return false;
38
+ if (next.get(key) !== value)
39
+ return false;
40
+ }
41
+ return true;
42
+ }
43
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import type { AssignmentEvent } from '@altopelago/aeon-aes';
2
+ type Span = AssignmentEvent['span'];
3
+ type Value = AssignmentEvent['value'];
4
+ type AnnotationMap = NonNullable<AssignmentEvent['annotations']>;
5
+ type AnnotationEntry = AnnotationMap extends ReadonlyMap<string, infer T> ? T : {
6
+ value: Value;
7
+ datatype?: string;
8
+ };
9
+ export type DiagnosticLevel = 'error' | 'warning';
10
+ export interface Diagnostic {
11
+ readonly level: DiagnosticLevel;
12
+ readonly message: string;
13
+ readonly code?: string;
14
+ readonly span?: Span;
15
+ readonly path?: string;
16
+ }
17
+ export interface FinalizedEntry {
18
+ readonly path: string;
19
+ readonly value: Value;
20
+ readonly span: Span;
21
+ readonly datatype?: string;
22
+ readonly annotations?: ReadonlyMap<string, AnnotationEntry>;
23
+ }
24
+ export interface FinalizedMap {
25
+ readonly entries: ReadonlyMap<string, FinalizedEntry>;
26
+ }
27
+ export interface FinalizeOptions {
28
+ readonly mode?: 'strict' | 'loose';
29
+ readonly materialization?: 'all' | 'projected';
30
+ readonly includePaths?: readonly string[];
31
+ readonly scope?: FinalizeScope;
32
+ readonly header?: FinalizeHeader;
33
+ readonly maxMaterializedWeight?: number;
34
+ readonly maxReferenceDepth?: number;
35
+ }
36
+ export type FinalizeScope = 'full' | 'header' | 'payload';
37
+ export interface FinalizeHeader {
38
+ readonly fields: ReadonlyMap<string, Value>;
39
+ readonly span?: Span;
40
+ readonly form?: 'structured' | 'shorthand';
41
+ }
42
+ export interface FinalizeMeta {
43
+ readonly errors?: readonly Diagnostic[];
44
+ readonly warnings?: readonly Diagnostic[];
45
+ }
46
+ export interface FinalizeResult {
47
+ readonly document: FinalizedMap;
48
+ readonly meta?: FinalizeMeta;
49
+ }
50
+ export type FinalizeInput = readonly AssignmentEvent[];
51
+ export type JsonPrimitive = null | boolean | number | string;
52
+ export interface JsonObject {
53
+ [key: string]: JsonValue;
54
+ }
55
+ export type JsonArray = readonly JsonValue[];
56
+ export type JsonValue = JsonPrimitive | JsonObject | JsonArray;
57
+ export interface FinalizeJsonResult {
58
+ readonly document: JsonObject;
59
+ readonly meta?: FinalizeMeta;
60
+ }
61
+ export type FinalizedNode = FinalizedObjectNode | FinalizedListNode | FinalizedScalarNode | FinalizedReferenceNode;
62
+ export interface FinalizedNodeBase {
63
+ readonly span: Span;
64
+ readonly datatype?: string;
65
+ readonly annotations?: ReadonlyMap<string, AnnotationEntry>;
66
+ }
67
+ export interface FinalizedObjectNode extends FinalizedNodeBase {
68
+ readonly type: 'Object';
69
+ readonly entries: ReadonlyMap<string, FinalizedNode>;
70
+ }
71
+ export interface FinalizedListNode extends FinalizedNodeBase {
72
+ readonly type: 'List';
73
+ readonly items: readonly FinalizedNode[];
74
+ }
75
+ export interface FinalizedScalarNode extends FinalizedNodeBase {
76
+ readonly type: 'Null' | 'String' | 'Number' | 'Boolean' | 'Toggle' | 'Hex' | 'Radix' | 'Encoding' | 'Separator' | 'Date' | 'DateTime' | 'Time';
77
+ readonly value: null | string | number | boolean;
78
+ readonly raw: string;
79
+ }
80
+ export interface FinalizedReferenceNode extends FinalizedNodeBase {
81
+ readonly type: 'Reference';
82
+ readonly kind: 'clone' | 'pointer';
83
+ readonly path: readonly (string | number | {
84
+ readonly type: 'attr';
85
+ readonly key: string;
86
+ })[];
87
+ readonly token: string;
88
+ }
89
+ export interface FinalizedNodeDocument {
90
+ readonly root: FinalizedObjectNode;
91
+ }
92
+ export interface FinalizeNodeResult {
93
+ readonly document: FinalizedNodeDocument;
94
+ readonly meta?: FinalizeMeta;
95
+ }
96
+ export interface NodeTransformContext {
97
+ readonly path: readonly string[];
98
+ }
99
+ export interface NodeTransform {
100
+ enter?(node: FinalizedNode, ctx: NodeTransformContext): FinalizedNode | void;
101
+ leave?(node: FinalizedNode, ctx: NodeTransformContext): FinalizedNode | void;
102
+ }
103
+ export interface OutputProfile<TDocument> {
104
+ readonly id: string;
105
+ finalize(aes: FinalizeInput, options?: FinalizeOptions): {
106
+ document: TDocument;
107
+ meta?: FinalizeMeta;
108
+ };
109
+ }
110
+ export type OutputProfileRef<TDocument> = string | OutputProfile<TDocument>;
111
+ export interface OutputRegistry {
112
+ register<TDocument>(profile: OutputProfile<TDocument>): OutputRegistry;
113
+ get(id: string): OutputProfile<unknown> | undefined;
114
+ has(id: string): boolean;
115
+ list(): readonly OutputProfile<unknown>[];
116
+ }
117
+ export interface FinalizeWithProfileOptions<TDocument> {
118
+ readonly profile: OutputProfileRef<TDocument>;
119
+ readonly registry?: OutputRegistry;
120
+ readonly mode?: 'strict' | 'loose';
121
+ }
122
+ export {};
123
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@altopelago/aeon-finalize",
3
+ "version": "0.9.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "!dist/**/*.test.d.ts",
16
+ "!dist/**/*.test.d.ts.map",
17
+ "!dist/**/*.test.js",
18
+ "!dist/**/*.test.js.map"
19
+ ],
20
+ "dependencies": {
21
+ "@altopelago/aeon-aes": "0.9.0"
22
+ },
23
+ "devDependencies": {
24
+ "@altopelago/aeon-parser": "0.9.0",
25
+ "@altopelago/aeon-lexer": "0.9.0"
26
+ },
27
+ "scripts": {
28
+ "build": "tsc -p tsconfig.json",
29
+ "test": "node --test dist/*.test.js",
30
+ "clean": "rm -rf dist",
31
+ "typecheck": "tsc -p tsconfig.json --noEmit"
32
+ }
33
+ }