prefix-safe-json 0.0.1-alpha.3 → 0.1.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.
Files changed (123) hide show
  1. package/LICENSE +4 -0
  2. package/README.md +72 -33
  3. package/package.json +8 -3
  4. package/dist/coordinator/coordinator.d.ts +0 -53
  5. package/dist/coordinator/coordinator.d.ts.map +0 -1
  6. package/dist/coordinator/coordinator.js +0 -448
  7. package/dist/coordinator/coordinator.js.map +0 -1
  8. package/dist/coordinator/diagnostic-codes.d.ts +0 -11
  9. package/dist/coordinator/diagnostic-codes.d.ts.map +0 -1
  10. package/dist/coordinator/diagnostic-codes.js +0 -22
  11. package/dist/coordinator/diagnostic-codes.js.map +0 -1
  12. package/dist/coordinator/protocol.d.ts +0 -61
  13. package/dist/coordinator/protocol.d.ts.map +0 -1
  14. package/dist/coordinator/protocol.js +0 -2
  15. package/dist/coordinator/protocol.js.map +0 -1
  16. package/dist/coordinator/types.d.ts +0 -104
  17. package/dist/coordinator/types.d.ts.map +0 -1
  18. package/dist/coordinator/types.js +0 -7
  19. package/dist/coordinator/types.js.map +0 -1
  20. package/dist/diagnostics/codes.d.ts +0 -24
  21. package/dist/diagnostics/codes.d.ts.map +0 -1
  22. package/dist/diagnostics/codes.js +0 -28
  23. package/dist/diagnostics/codes.js.map +0 -1
  24. package/dist/diagnostics/factory.d.ts +0 -8
  25. package/dist/diagnostics/factory.d.ts.map +0 -1
  26. package/dist/diagnostics/factory.js +0 -17
  27. package/dist/diagnostics/factory.js.map +0 -1
  28. package/dist/gate/decide.d.ts +0 -20
  29. package/dist/gate/decide.d.ts.map +0 -1
  30. package/dist/gate/decide.js +0 -127
  31. package/dist/gate/decide.js.map +0 -1
  32. package/dist/gate/gate.d.ts +0 -25
  33. package/dist/gate/gate.d.ts.map +0 -1
  34. package/dist/gate/gate.js +0 -80
  35. package/dist/gate/gate.js.map +0 -1
  36. package/dist/gate/types.d.ts +0 -122
  37. package/dist/gate/types.d.ts.map +0 -1
  38. package/dist/gate/types.js +0 -2
  39. package/dist/gate/types.js.map +0 -1
  40. package/dist/grammar/frame.d.ts +0 -58
  41. package/dist/grammar/frame.d.ts.map +0 -1
  42. package/dist/grammar/frame.js +0 -87
  43. package/dist/grammar/frame.js.map +0 -1
  44. package/dist/grammar/pointer.d.ts +0 -10
  45. package/dist/grammar/pointer.d.ts.map +0 -1
  46. package/dist/grammar/pointer.js +0 -20
  47. package/dist/grammar/pointer.js.map +0 -1
  48. package/dist/grammar/stack.d.ts +0 -73
  49. package/dist/grammar/stack.d.ts.map +0 -1
  50. package/dist/grammar/stack.js +0 -168
  51. package/dist/grammar/stack.js.map +0 -1
  52. package/dist/index.d.ts +0 -37
  53. package/dist/index.d.ts.map +0 -1
  54. package/dist/index.js +0 -37
  55. package/dist/index.js.map +0 -1
  56. package/dist/lexer/scanner.d.ts +0 -108
  57. package/dist/lexer/scanner.d.ts.map +0 -1
  58. package/dist/lexer/scanner.js +0 -676
  59. package/dist/lexer/scanner.js.map +0 -1
  60. package/dist/lexer/states.d.ts +0 -35
  61. package/dist/lexer/states.d.ts.map +0 -1
  62. package/dist/lexer/states.js +0 -39
  63. package/dist/lexer/states.js.map +0 -1
  64. package/dist/lexer/tokens.d.ts +0 -22
  65. package/dist/lexer/tokens.d.ts.map +0 -1
  66. package/dist/lexer/tokens.js +0 -22
  67. package/dist/lexer/tokens.js.map +0 -1
  68. package/dist/limits.d.ts +0 -14
  69. package/dist/limits.d.ts.map +0 -1
  70. package/dist/limits.js +0 -23
  71. package/dist/limits.js.map +0 -1
  72. package/dist/parser.d.ts +0 -6
  73. package/dist/parser.d.ts.map +0 -1
  74. package/dist/parser.js +0 -949
  75. package/dist/parser.js.map +0 -1
  76. package/dist/providers/adapter.d.ts +0 -10
  77. package/dist/providers/adapter.d.ts.map +0 -1
  78. package/dist/providers/adapter.js +0 -2
  79. package/dist/providers/adapter.js.map +0 -1
  80. package/dist/providers/ai-sdk.d.ts +0 -54
  81. package/dist/providers/ai-sdk.d.ts.map +0 -1
  82. package/dist/providers/ai-sdk.js +0 -191
  83. package/dist/providers/ai-sdk.js.map +0 -1
  84. package/dist/providers/anthropic.d.ts +0 -45
  85. package/dist/providers/anthropic.d.ts.map +0 -1
  86. package/dist/providers/anthropic.js +0 -112
  87. package/dist/providers/anthropic.js.map +0 -1
  88. package/dist/providers/gemini.d.ts +0 -31
  89. package/dist/providers/gemini.d.ts.map +0 -1
  90. package/dist/providers/gemini.js +0 -94
  91. package/dist/providers/gemini.js.map +0 -1
  92. package/dist/providers/openai-compatible.d.ts +0 -33
  93. package/dist/providers/openai-compatible.d.ts.map +0 -1
  94. package/dist/providers/openai-compatible.js +0 -160
  95. package/dist/providers/openai-compatible.js.map +0 -1
  96. package/dist/providers/openai.d.ts +0 -48
  97. package/dist/providers/openai.d.ts.map +0 -1
  98. package/dist/providers/openai.js +0 -205
  99. package/dist/providers/openai.js.map +0 -1
  100. package/dist/providers/openrouter.d.ts +0 -35
  101. package/dist/providers/openrouter.d.ts.map +0 -1
  102. package/dist/providers/openrouter.js +0 -55
  103. package/dist/providers/openrouter.js.map +0 -1
  104. package/dist/semantic/builder.d.ts +0 -55
  105. package/dist/semantic/builder.d.ts.map +0 -1
  106. package/dist/semantic/builder.js +0 -140
  107. package/dist/semantic/builder.js.map +0 -1
  108. package/dist/semantic/events.d.ts +0 -2
  109. package/dist/semantic/events.d.ts.map +0 -1
  110. package/dist/semantic/events.js +0 -5
  111. package/dist/semantic/events.js.map +0 -1
  112. package/dist/semantic/snapshot.d.ts +0 -49
  113. package/dist/semantic/snapshot.d.ts.map +0 -1
  114. package/dist/semantic/snapshot.js +0 -228
  115. package/dist/semantic/snapshot.js.map +0 -1
  116. package/dist/types.d.ts +0 -156
  117. package/dist/types.d.ts.map +0 -1
  118. package/dist/types.js +0 -5
  119. package/dist/types.js.map +0 -1
  120. package/dist/utf8/decoder.d.ts +0 -53
  121. package/dist/utf8/decoder.d.ts.map +0 -1
  122. package/dist/utf8/decoder.js +0 -323
  123. package/dist/utf8/decoder.js.map +0 -1
@@ -1,55 +0,0 @@
1
- import { OpenAICompatibleStreamAdapter } from "./openai-compatible.js";
2
- export class OpenRouterStreamAdapter {
3
- provider = "openrouter";
4
- sequence = 0;
5
- // Delegate standard tool_call formats to compatible adapter
6
- compatibleAdapter = new OpenAICompatibleStreamAdapter();
7
- finished = false;
8
- push(rawEvent) {
9
- if (this.finished)
10
- return [];
11
- const events = [];
12
- if (!rawEvent || typeof rawEvent !== "object") {
13
- events.push({
14
- type: "provider_diagnostic",
15
- sequence: ++this.sequence,
16
- provider: this.provider,
17
- code: "E_PROVIDER_EVENT_MALFORMED",
18
- severity: "error",
19
- message: "Raw event is not an object",
20
- });
21
- return events;
22
- }
23
- const chunk = rawEvent;
24
- // Check for provider-level errors
25
- if (chunk.error) {
26
- events.push({
27
- type: "provider_diagnostic",
28
- sequence: ++this.sequence,
29
- provider: this.provider,
30
- code: "E_PROVIDER_ERROR",
31
- severity: "error",
32
- message: typeof chunk.error === "string" ? chunk.error : JSON.stringify(chunk.error)
33
- });
34
- const compatibleEvents = this.compatibleAdapter.finish({ reason: "provider_error", providerReason: "error" });
35
- for (const e of compatibleEvents) {
36
- events.push({ ...e, provider: this.provider, sequence: ++this.sequence });
37
- }
38
- this.finished = true;
39
- return events;
40
- }
41
- const compatibleEvents = this.compatibleAdapter.push(chunk);
42
- for (const e of compatibleEvents) {
43
- events.push({ ...e, provider: this.provider, sequence: ++this.sequence });
44
- }
45
- return events;
46
- }
47
- finish(meta) {
48
- if (this.finished)
49
- return [];
50
- this.finished = true;
51
- const compatibleEvents = this.compatibleAdapter.finish(meta);
52
- return compatibleEvents.map(e => ({ ...e, provider: this.provider, sequence: ++this.sequence }));
53
- }
54
- }
55
- //# sourceMappingURL=openrouter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/providers/openrouter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAsBvE,MAAM,OAAO,uBAAuB;IACzB,QAAQ,GAAiB,YAAY,CAAC;IACvC,QAAQ,GAAG,CAAC,CAAC;IAErB,4DAA4D;IACpD,iBAAiB,GAAG,IAAI,6BAA6B,EAAE,CAAC;IACxD,QAAQ,GAAG,KAAK,CAAC;IAEzB,IAAI,CAAC,QAAiB;QACpB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAE7B,MAAM,MAAM,GAAgC,EAAE,CAAC;QAE/C,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,qBAAqB;gBAC3B,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,4BAA4B;gBAClC,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,4BAA4B;aACtC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,KAAK,GAAG,QAA2B,CAAC;QAE1C,kCAAkC;QAClC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,qBAAqB;gBAC3B,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,kBAAkB;gBACxB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;aACrF,CAAC,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9G,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,OAAO,MAAM,CAAC;QACjB,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,IAA4D;QACjE,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;CACF"}
@@ -1,55 +0,0 @@
1
- import type { ParserEvent, JsonValue, Diagnostic, RepairAction } from "../types.js";
2
- /**
3
- * Manages the monotonic event queue.
4
- * Events are never retracted once emitted.
5
- */
6
- export declare class EventBuilder {
7
- private queue;
8
- private sequence;
9
- private maxQueued;
10
- private terminal;
11
- constructor(maxQueuedEvents: number);
12
- /** Current sequence number. */
13
- get currentSequence(): number;
14
- get isTerminal(): boolean;
15
- /** Number of events in the queue. */
16
- get queueLength(): number;
17
- /**
18
- * Emit a value_committed event.
19
- */
20
- emitValueCommitted(path: string, value: JsonValue, byteRange: readonly [number, number]): void;
21
- /**
22
- * Emit a container_closed event.
23
- */
24
- emitContainerClosed(path: string, container: "object" | "array"): void;
25
- /**
26
- * Emit a repair_applied event.
27
- */
28
- emitRepairApplied(repair: RepairAction): void;
29
- /**
30
- * Emit a diagnostic event.
31
- */
32
- emitDiagnostic(diagnostic: Diagnostic): void;
33
- /**
34
- * Emit a document_complete event.
35
- */
36
- emitDocumentComplete(executable: boolean): void;
37
- /**
38
- * Emit a stream_finished event.
39
- */
40
- emitStreamFinished(outcome: "valid" | "truncated" | "salvaged" | "invalid"): void;
41
- /**
42
- * Drain all pending events and clear the queue.
43
- * Returns a frozen array.
44
- */
45
- drain(): readonly ParserEvent[];
46
- /**
47
- * Get the number of events emitted during the current push cycle.
48
- * Call resetPushCount() before push processing.
49
- */
50
- private pushEmitCount;
51
- resetPushCount(): void;
52
- get emittedDuringPush(): number;
53
- private enqueue;
54
- }
55
- //# sourceMappingURL=builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/semantic/builder.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,UAAU,EACV,YAAY,EACb,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;gBAEb,eAAe,EAAE,MAAM;IAInC,+BAA+B;IAC/B,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,qCAAqC;IACrC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,IAAI;IAWP;;OAEG;IACH,mBAAmB,CACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,QAAQ,GAAG,OAAO,GAC5B,IAAI;IASP;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAQ7C;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAQ5C;;OAEG;IACH,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAQ/C;;OAEG;IACH,kBAAkB,CAChB,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GACtD,IAAI;IAQP;;;OAGG;IACH,KAAK,IAAI,SAAS,WAAW,EAAE;IAM/B;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAK;IAE1B,cAAc,IAAI,IAAI;IAItB,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,OAAO,CAAC,OAAO;CAwBhB"}
@@ -1,140 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Semantic Event Builder
3
- // ---------------------------------------------------------------------------
4
- //
5
- // Accumulates parser events and manages the event queue.
6
- // Events are emitted monotonically with increasing sequence numbers.
7
- // drainEvents() returns pending events and clears the queue.
8
- // ---------------------------------------------------------------------------
9
- /**
10
- * Manages the monotonic event queue.
11
- * Events are never retracted once emitted.
12
- */
13
- export class EventBuilder {
14
- queue = [];
15
- sequence = 0;
16
- maxQueued;
17
- terminal = false;
18
- constructor(maxQueuedEvents) {
19
- this.maxQueued = maxQueuedEvents;
20
- }
21
- /** Current sequence number. */
22
- get currentSequence() {
23
- return this.sequence;
24
- }
25
- get isTerminal() {
26
- return this.terminal;
27
- }
28
- /** Number of events in the queue. */
29
- get queueLength() {
30
- return this.queue.length;
31
- }
32
- /**
33
- * Emit a value_committed event.
34
- */
35
- emitValueCommitted(path, value, byteRange) {
36
- this.enqueue({
37
- type: "value_committed",
38
- sequence: this.sequence++,
39
- path,
40
- operation: "add",
41
- value,
42
- byteRange,
43
- });
44
- }
45
- /**
46
- * Emit a container_closed event.
47
- */
48
- emitContainerClosed(path, container) {
49
- this.enqueue({
50
- type: "container_closed",
51
- sequence: this.sequence++,
52
- path,
53
- container,
54
- });
55
- }
56
- /**
57
- * Emit a repair_applied event.
58
- */
59
- emitRepairApplied(repair) {
60
- this.enqueue({
61
- type: "repair_applied",
62
- sequence: this.sequence++,
63
- repair,
64
- });
65
- }
66
- /**
67
- * Emit a diagnostic event.
68
- */
69
- emitDiagnostic(diagnostic) {
70
- this.enqueue({
71
- type: "diagnostic",
72
- sequence: this.sequence++,
73
- diagnostic,
74
- });
75
- }
76
- /**
77
- * Emit a document_complete event.
78
- */
79
- emitDocumentComplete(executable) {
80
- this.enqueue({
81
- type: "document_complete",
82
- sequence: this.sequence++,
83
- executable,
84
- });
85
- }
86
- /**
87
- * Emit a stream_finished event.
88
- */
89
- emitStreamFinished(outcome) {
90
- this.enqueue({
91
- type: "stream_finished",
92
- sequence: this.sequence++,
93
- outcome,
94
- });
95
- }
96
- /**
97
- * Drain all pending events and clear the queue.
98
- * Returns a frozen array.
99
- */
100
- drain() {
101
- const events = this.queue;
102
- this.queue = [];
103
- return Object.freeze(events);
104
- }
105
- /**
106
- * Get the number of events emitted during the current push cycle.
107
- * Call resetPushCount() before push processing.
108
- */
109
- pushEmitCount = 0;
110
- resetPushCount() {
111
- this.pushEmitCount = 0;
112
- }
113
- get emittedDuringPush() {
114
- return this.pushEmitCount;
115
- }
116
- enqueue(event) {
117
- if (this.terminal)
118
- return; // Stop accepting semantic progress, don't report as emitted
119
- if (this.queue.length >= this.maxQueued) {
120
- this.terminal = true;
121
- // Emit terminal diagnostic if capacity theoretically permitted (i.e. we just push one more)
122
- this.queue.push({
123
- type: "diagnostic",
124
- sequence: this.sequence++,
125
- diagnostic: {
126
- code: "E_LIMIT_EVENT_QUEUE",
127
- severity: "fatal",
128
- byteOffset: 0, // Event builder doesn't track exact byte offset
129
- recoverable: false,
130
- message: "Event queue capacity exceeded",
131
- }
132
- });
133
- this.pushEmitCount++;
134
- return;
135
- }
136
- this.queue.push(event);
137
- this.pushEmitCount++;
138
- }
139
- }
140
- //# sourceMappingURL=builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/semantic/builder.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export type { ParserEvent, ValueCommittedEvent, ContainerClosedEvent, RepairAppliedEvent, DiagnosticEvent, DocumentCompleteEvent, StreamFinishedEvent, } from "../types.js";
2
- //# sourceMappingURL=events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/semantic/events.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
@@ -1,5 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Semantic event types — re-exported for convenience
3
- // ---------------------------------------------------------------------------
4
- export {};
5
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/semantic/events.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qDAAqD;AACrD,8EAA8E"}
@@ -1,49 +0,0 @@
1
- import type { JsonValue, ParserEvent } from "../types.js";
2
- import type { GrammarFrame } from "../grammar/frame.js";
3
- /**
4
- * Maintains the stable value by processing committed events.
5
- * Only committed values appear in the stable value.
6
- */
7
- export declare class SnapshotBuilder {
8
- private root;
9
- private hasRoot;
10
- /**
11
- * Maps each open container's grammar frame to its corresponding node in
12
- * the stable-value tree, so a newly-opened child container can attach
13
- * directly to its parent in O(1) via initContainerForFrame() instead of
14
- * re-parsing a JSON Pointer path string and re-walking from the root on
15
- * every single container open (see initContainerForFrame).
16
- */
17
- private frameNodes;
18
- /**
19
- * Process a value_committed event and integrate it into the stable value.
20
- */
21
- processEvent(event: ParserEvent): void;
22
- /**
23
- * Initialize the root as an object container.
24
- * `frame` is registered so child containers can find it in O(1).
25
- */
26
- initRootObject(frame?: GrammarFrame): void;
27
- /**
28
- * Initialize the root as an array container.
29
- * `frame` is registered so child containers can find it in O(1).
30
- */
31
- initRootArray(frame?: GrammarFrame): void;
32
- /**
33
- * Initialize a nested container for the given (already-pushed) grammar
34
- * frame, attaching it directly to its parent's node.
35
- *
36
- * Uses frame._parent/_segment (see grammar/frame.ts) plus the frameNodes
37
- * map instead of re-parsing frame.path and walking the tree from the
38
- * root on every call — that walk is O(depth), and calling it once for
39
- * every one of N nested containers made opening N levels cost O(N^2)
40
- * total, independent of the grammar-stack path-string fix.
41
- */
42
- initContainerForFrame(frame: GrammarFrame, type: "object" | "array"): void;
43
- /**
44
- * Get a deep clone of the current stable value.
45
- */
46
- getStableValue(): JsonValue | undefined;
47
- get hasRootValue(): boolean;
48
- }
49
- //# sourceMappingURL=snapshot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/semantic/snapshot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAyB,WAAW,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAAoC;IAChD,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAA0C;IAE5D;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IA+CtC;;;OAGG;IACH,cAAc,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI;IAQ1C;;;OAGG;IACH,aAAa,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI;IAQzC;;;;;;;;;OASG;IACH,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI;IA2B1E;;OAEG;IACH,cAAc,IAAI,SAAS,GAAG,SAAS;IAKvC,IAAI,YAAY,IAAI,OAAO,CAE1B;CACF"}
@@ -1,228 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Snapshot builder — constructs stableValue from committed events
3
- // ---------------------------------------------------------------------------
4
- /**
5
- * Maintains the stable value by processing committed events.
6
- * Only committed values appear in the stable value.
7
- */
8
- export class SnapshotBuilder {
9
- root = undefined;
10
- hasRoot = false;
11
- /**
12
- * Maps each open container's grammar frame to its corresponding node in
13
- * the stable-value tree, so a newly-opened child container can attach
14
- * directly to its parent in O(1) via initContainerForFrame() instead of
15
- * re-parsing a JSON Pointer path string and re-walking from the root on
16
- * every single container open (see initContainerForFrame).
17
- */
18
- frameNodes = new WeakMap();
19
- /**
20
- * Process a value_committed event and integrate it into the stable value.
21
- */
22
- processEvent(event) {
23
- if (event.type !== "value_committed")
24
- return;
25
- const { path, value } = event;
26
- // Parse the JSON Pointer path to navigate to the parent
27
- const segments = parsePointer(path);
28
- if (segments.length === 0)
29
- return;
30
- // Ensure root exists
31
- if (!this.hasRoot) {
32
- // We need a container at root — determine from the first segment
33
- // This shouldn't happen if events are emitted correctly,
34
- // because container events come before child value events.
35
- return;
36
- }
37
- const parentSegments = segments.slice(0, -1);
38
- const lastSegment = segments[segments.length - 1];
39
- if (lastSegment === undefined)
40
- return;
41
- let target = this.root;
42
- for (const seg of parentSegments) {
43
- if (target === null || target === undefined)
44
- return;
45
- if (typeof target === "object" && !Array.isArray(target)) {
46
- target = target[seg];
47
- }
48
- else if (Array.isArray(target)) {
49
- const idx = parseInt(seg, 10);
50
- if (isNaN(idx))
51
- return;
52
- target = target[idx];
53
- }
54
- else {
55
- return; // Can't navigate into scalar
56
- }
57
- }
58
- if (target === null || target === undefined)
59
- return;
60
- if (typeof target === "object" && !Array.isArray(target)) {
61
- safeSet(target, lastSegment, value);
62
- }
63
- else if (Array.isArray(target)) {
64
- const idx = parseInt(lastSegment, 10);
65
- if (!isNaN(idx)) {
66
- target[idx] = value;
67
- }
68
- }
69
- }
70
- /**
71
- * Initialize the root as an object container.
72
- * `frame` is registered so child containers can find it in O(1).
73
- */
74
- initRootObject(frame) {
75
- if (!this.hasRoot) {
76
- this.root = {};
77
- this.hasRoot = true;
78
- }
79
- if (frame)
80
- this.frameNodes.set(frame, this.root);
81
- }
82
- /**
83
- * Initialize the root as an array container.
84
- * `frame` is registered so child containers can find it in O(1).
85
- */
86
- initRootArray(frame) {
87
- if (!this.hasRoot) {
88
- this.root = [];
89
- this.hasRoot = true;
90
- }
91
- if (frame)
92
- this.frameNodes.set(frame, this.root);
93
- }
94
- /**
95
- * Initialize a nested container for the given (already-pushed) grammar
96
- * frame, attaching it directly to its parent's node.
97
- *
98
- * Uses frame._parent/_segment (see grammar/frame.ts) plus the frameNodes
99
- * map instead of re-parsing frame.path and walking the tree from the
100
- * root on every call — that walk is O(depth), and calling it once for
101
- * every one of N nested containers made opening N levels cost O(N^2)
102
- * total, independent of the grammar-stack path-string fix.
103
- */
104
- initContainerForFrame(frame, type) {
105
- if (!this.hasRoot)
106
- return;
107
- const parent = frame._parent;
108
- const segment = frame._segment;
109
- if (!parent || segment === null || segment === undefined)
110
- return;
111
- const parentNode = this.frameNodes.get(parent);
112
- if (parentNode === undefined || parentNode === null)
113
- return;
114
- const newContainer = type === "object" ? {} : [];
115
- if (typeof parentNode === "object" && !Array.isArray(parentNode)) {
116
- safeSet(parentNode, segment, newContainer);
117
- }
118
- else if (Array.isArray(parentNode)) {
119
- const idx = typeof segment === "number" ? segment : parseInt(segment, 10);
120
- if (!isNaN(idx)) {
121
- parentNode[idx] = newContainer;
122
- }
123
- }
124
- else {
125
- return;
126
- }
127
- this.frameNodes.set(frame, newContainer);
128
- }
129
- /**
130
- * Get a deep clone of the current stable value.
131
- */
132
- getStableValue() {
133
- if (!this.hasRoot)
134
- return undefined;
135
- return deepClone(this.root);
136
- }
137
- get hasRootValue() {
138
- return this.hasRoot;
139
- }
140
- }
141
- /**
142
- * Parse a JSON Pointer string into segments.
143
- * Handles ~0 (~) and ~1 (/) unescaping.
144
- */
145
- function parsePointer(pointer) {
146
- if (pointer === "")
147
- return [];
148
- if (!pointer.startsWith("/"))
149
- return [];
150
- return pointer
151
- .slice(1)
152
- .split("/")
153
- .map((seg) => seg.replace(/~1/g, "/").replace(/~0/g, "~"));
154
- }
155
- /**
156
- * Assign a JSON-derived key onto a plain object without going through the
157
- * inherited `__proto__` accessor. Bracket assignment (obj[key] = value) on a
158
- * plain object silently reassigns the object's prototype instead of creating
159
- * an own property when key === "__proto__", which makes that field vanish
160
- * from Object.keys()/JSON.stringify(). defineProperty always creates a real
161
- * own data property, matching native JSON.parse's behavior for such keys.
162
- */
163
- function safeSet(obj, key, value) {
164
- Object.defineProperty(obj, key, {
165
- value,
166
- writable: true,
167
- enumerable: true,
168
- configurable: true,
169
- });
170
- }
171
- /**
172
- * Deep clone a JSON value.
173
- * Iterative (explicit work-stack) rather than recursive: a recursive
174
- * implementation overflows the JS call stack around ~5000 levels of nesting,
175
- * well below values maxDepth's type otherwise permits.
176
- */
177
- function deepClone(value) {
178
- if (value === null || typeof value !== "object") {
179
- return value;
180
- }
181
- const root = Array.isArray(value) ? [] : {};
182
- const stack = [
183
- { src: value, dst: root },
184
- ];
185
- while (stack.length > 0) {
186
- const frame = stack.pop();
187
- if (!frame)
188
- continue;
189
- const { src, dst } = frame;
190
- if (Array.isArray(src)) {
191
- const dstArr = dst;
192
- for (let i = 0; i < src.length; i++) {
193
- const child = src[i];
194
- if (child !== null && typeof child === "object") {
195
- const childClone = Array.isArray(child) ? [] : {};
196
- dstArr[i] = childClone;
197
- stack.push({
198
- src: child,
199
- dst: childClone,
200
- });
201
- }
202
- else {
203
- dstArr[i] = child;
204
- }
205
- }
206
- }
207
- else {
208
- const srcObj = src;
209
- const dstObj = dst;
210
- for (const key of Object.keys(srcObj)) {
211
- const child = srcObj[key];
212
- if (child !== null && typeof child === "object") {
213
- const childClone = Array.isArray(child) ? [] : {};
214
- safeSet(dstObj, key, childClone);
215
- stack.push({
216
- src: child,
217
- dst: childClone,
218
- });
219
- }
220
- else {
221
- safeSet(dstObj, key, child);
222
- }
223
- }
224
- }
225
- }
226
- return root;
227
- }
228
- //# sourceMappingURL=snapshot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/semantic/snapshot.ts"],"names":[],"mappings":"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"}