prefix-safe-json 0.1.0 → 0.2.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 (134) hide show
  1. package/README.md +57 -3
  2. package/dist/coordinator/coordinator.d.ts +53 -0
  3. package/dist/coordinator/coordinator.d.ts.map +1 -0
  4. package/dist/coordinator/coordinator.js +477 -0
  5. package/dist/coordinator/coordinator.js.map +1 -0
  6. package/dist/coordinator/diagnostic-codes.d.ts +37 -0
  7. package/dist/coordinator/diagnostic-codes.d.ts.map +1 -0
  8. package/dist/coordinator/diagnostic-codes.js +48 -0
  9. package/dist/coordinator/diagnostic-codes.js.map +1 -0
  10. package/dist/coordinator/protocol.d.ts +62 -0
  11. package/dist/coordinator/protocol.d.ts.map +1 -0
  12. package/dist/coordinator/protocol.js +2 -0
  13. package/dist/coordinator/protocol.js.map +1 -0
  14. package/dist/coordinator/types.d.ts +104 -0
  15. package/dist/coordinator/types.d.ts.map +1 -0
  16. package/dist/coordinator/types.js +7 -0
  17. package/dist/coordinator/types.js.map +1 -0
  18. package/dist/diagnostics/codes.d.ts +24 -0
  19. package/dist/diagnostics/codes.d.ts.map +1 -0
  20. package/dist/diagnostics/codes.js +28 -0
  21. package/dist/diagnostics/codes.js.map +1 -0
  22. package/dist/diagnostics/factory.d.ts +8 -0
  23. package/dist/diagnostics/factory.d.ts.map +1 -0
  24. package/dist/diagnostics/factory.js +17 -0
  25. package/dist/diagnostics/factory.js.map +1 -0
  26. package/dist/gate/decide.d.ts +27 -0
  27. package/dist/gate/decide.d.ts.map +1 -0
  28. package/dist/gate/decide.js +179 -0
  29. package/dist/gate/decide.js.map +1 -0
  30. package/dist/gate/gate.d.ts +25 -0
  31. package/dist/gate/gate.d.ts.map +1 -0
  32. package/dist/gate/gate.js +96 -0
  33. package/dist/gate/gate.js.map +1 -0
  34. package/dist/gate/types.d.ts +184 -0
  35. package/dist/gate/types.d.ts.map +1 -0
  36. package/dist/gate/types.js +2 -0
  37. package/dist/gate/types.js.map +1 -0
  38. package/dist/grammar/frame.d.ts +58 -0
  39. package/dist/grammar/frame.d.ts.map +1 -0
  40. package/dist/grammar/frame.js +87 -0
  41. package/dist/grammar/frame.js.map +1 -0
  42. package/dist/grammar/pointer.d.ts +10 -0
  43. package/dist/grammar/pointer.d.ts.map +1 -0
  44. package/dist/grammar/pointer.js +20 -0
  45. package/dist/grammar/pointer.js.map +1 -0
  46. package/dist/grammar/stack.d.ts +73 -0
  47. package/dist/grammar/stack.d.ts.map +1 -0
  48. package/dist/grammar/stack.js +168 -0
  49. package/dist/grammar/stack.js.map +1 -0
  50. package/dist/guard/ai-sdk.d.ts +48 -0
  51. package/dist/guard/ai-sdk.d.ts.map +1 -0
  52. package/dist/guard/ai-sdk.js +51 -0
  53. package/dist/guard/ai-sdk.js.map +1 -0
  54. package/dist/guard/provider-guard.d.ts +4 -0
  55. package/dist/guard/provider-guard.d.ts.map +1 -0
  56. package/dist/guard/provider-guard.js +38 -0
  57. package/dist/guard/provider-guard.js.map +1 -0
  58. package/dist/guard/types.d.ts +48 -0
  59. package/dist/guard/types.d.ts.map +1 -0
  60. package/dist/guard/types.js +2 -0
  61. package/dist/guard/types.js.map +1 -0
  62. package/dist/index.d.ts +85 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +99 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/lexer/scanner.d.ts +106 -0
  67. package/dist/lexer/scanner.d.ts.map +1 -0
  68. package/dist/lexer/scanner.js +658 -0
  69. package/dist/lexer/scanner.js.map +1 -0
  70. package/dist/lexer/states.d.ts +31 -0
  71. package/dist/lexer/states.d.ts.map +1 -0
  72. package/dist/lexer/states.js +35 -0
  73. package/dist/lexer/states.js.map +1 -0
  74. package/dist/lexer/tokens.d.ts +22 -0
  75. package/dist/lexer/tokens.d.ts.map +1 -0
  76. package/dist/lexer/tokens.js +22 -0
  77. package/dist/lexer/tokens.js.map +1 -0
  78. package/dist/limits.d.ts +14 -0
  79. package/dist/limits.d.ts.map +1 -0
  80. package/dist/limits.js +23 -0
  81. package/dist/limits.js.map +1 -0
  82. package/dist/parser.d.ts +6 -0
  83. package/dist/parser.d.ts.map +1 -0
  84. package/dist/parser.js +922 -0
  85. package/dist/parser.js.map +1 -0
  86. package/dist/providers/adapter.d.ts +10 -0
  87. package/dist/providers/adapter.d.ts.map +1 -0
  88. package/dist/providers/adapter.js +2 -0
  89. package/dist/providers/adapter.js.map +1 -0
  90. package/dist/providers/ai-sdk.d.ts +63 -0
  91. package/dist/providers/ai-sdk.d.ts.map +1 -0
  92. package/dist/providers/ai-sdk.js +240 -0
  93. package/dist/providers/ai-sdk.js.map +1 -0
  94. package/dist/providers/anthropic.d.ts +45 -0
  95. package/dist/providers/anthropic.d.ts.map +1 -0
  96. package/dist/providers/anthropic.js +112 -0
  97. package/dist/providers/anthropic.js.map +1 -0
  98. package/dist/providers/gemini.d.ts +31 -0
  99. package/dist/providers/gemini.d.ts.map +1 -0
  100. package/dist/providers/gemini.js +94 -0
  101. package/dist/providers/gemini.js.map +1 -0
  102. package/dist/providers/openai-compatible.d.ts +33 -0
  103. package/dist/providers/openai-compatible.d.ts.map +1 -0
  104. package/dist/providers/openai-compatible.js +160 -0
  105. package/dist/providers/openai-compatible.js.map +1 -0
  106. package/dist/providers/openai.d.ts +55 -0
  107. package/dist/providers/openai.d.ts.map +1 -0
  108. package/dist/providers/openai.js +263 -0
  109. package/dist/providers/openai.js.map +1 -0
  110. package/dist/providers/openrouter.d.ts +35 -0
  111. package/dist/providers/openrouter.d.ts.map +1 -0
  112. package/dist/providers/openrouter.js +55 -0
  113. package/dist/providers/openrouter.js.map +1 -0
  114. package/dist/semantic/builder.d.ts +55 -0
  115. package/dist/semantic/builder.d.ts.map +1 -0
  116. package/dist/semantic/builder.js +140 -0
  117. package/dist/semantic/builder.js.map +1 -0
  118. package/dist/semantic/events.d.ts +2 -0
  119. package/dist/semantic/events.d.ts.map +1 -0
  120. package/dist/semantic/events.js +5 -0
  121. package/dist/semantic/events.js.map +1 -0
  122. package/dist/semantic/snapshot.d.ts +56 -0
  123. package/dist/semantic/snapshot.d.ts.map +1 -0
  124. package/dist/semantic/snapshot.js +230 -0
  125. package/dist/semantic/snapshot.js.map +1 -0
  126. package/dist/types.d.ts +156 -0
  127. package/dist/types.d.ts.map +1 -0
  128. package/dist/types.js +5 -0
  129. package/dist/types.js.map +1 -0
  130. package/dist/utf8/decoder.d.ts +53 -0
  131. package/dist/utf8/decoder.d.ts.map +1 -0
  132. package/dist/utf8/decoder.js +323 -0
  133. package/dist/utf8/decoder.js.map +1 -0
  134. package/package.json +2 -1
@@ -0,0 +1,106 @@
1
+ import { ScannerState } from "./states.js";
2
+ import type { Token } from "./tokens.js";
3
+ import type { Diagnostic, RepairAction, ParserOptions } from "../types.js";
4
+ /**
5
+ * Incremental JSON scanner.
6
+ * Feed characters one at a time via feedChar().
7
+ * Collect tokens via takeTokens().
8
+ */
9
+ export declare class Scanner {
10
+ private options;
11
+ private maxStringBytes;
12
+ constructor(options?: ParserOptions);
13
+ private state;
14
+ private tokens;
15
+ private diagnostics;
16
+ private repairs;
17
+ private stringBuffer;
18
+ private stringIsKey;
19
+ private stringByteStart;
20
+ private unicodeHexBuffer;
21
+ private highSurrogate;
22
+ /** Tracks position in surrogate pair sequence: 0=initial, 1=saw backslash, 2=saw 'u' */
23
+ private surrogatePhase;
24
+ private numberBuffer;
25
+ private numberByteStart;
26
+ private numberHasDigit;
27
+ private literalTarget;
28
+ private literalIndex;
29
+ private literalByteStart;
30
+ /** Byte offset of the current character being fed. Set by the caller. */
31
+ private currentByteOffset;
32
+ /** Whether we're in a key position for string parsing. */
33
+ private nextStringIsKey;
34
+ get currentState(): ScannerState;
35
+ /**
36
+ * Feed a single character to the scanner.
37
+ * @param ch - The character to process.
38
+ * @param byteOffset - Absolute byte offset of this character in the input stream.
39
+ * @param charByteLength - Number of bytes this character occupies in UTF-8.
40
+ */
41
+ feedChar(ch: string, byteOffset: number, charByteLength: number): void;
42
+ /**
43
+ * Take all tokens accumulated since the last call.
44
+ * Clears the internal token buffer.
45
+ */
46
+ takeTokens(): Token[];
47
+ /**
48
+ * Take all diagnostics accumulated since the last call.
49
+ * Clears the internal diagnostic buffer.
50
+ */
51
+ takeDiagnostics(): Diagnostic[];
52
+ takeRepairs(): RepairAction[];
53
+ /**
54
+ * Set whether the next string to be scanned should be treated as an object key.
55
+ */
56
+ setNextStringIsKey(isKey: boolean): void;
57
+ /**
58
+ * Get info about any pending (incomplete) value.
59
+ */
60
+ getPendingInfo(): {
61
+ type: "string" | "number" | "literal" | "unicode_escape" | "surrogate" | "none";
62
+ buffer: string;
63
+ byteStart: number;
64
+ };
65
+ /**
66
+ * Check numberBuffer against the parts of RFC 8259's number grammar that
67
+ * aren't already enforced by the state machine's character-by-character
68
+ * transitions: no leading zero in the integer part, and no trailing
69
+ * "." or exponent marker with no digit following it. Returns an error
70
+ * message if invalid, or null if the buffer is a well-formed number.
71
+ */
72
+ private numberGrammarError;
73
+ /**
74
+ * Attempt to finalize a pending number (at end of input or finish()).
75
+ * - "finalized": a valid number token was emitted.
76
+ * - "invalid": there was a complete-looking buffer, but it violates JSON
77
+ * number grammar (leading zero, trailing "." or exponent marker with
78
+ * no digit after it). Nothing is emitted; numberBuffer is left as-is.
79
+ * - "not_ready": scanner isn't in a finalizable number state at all
80
+ * (e.g. buffer is just "-", or ends right at a bare "e"/"E" with no
81
+ * sign or digit yet) — unchanged pre-existing behavior, callers should
82
+ * not newly diagnose this case.
83
+ */
84
+ finalizeNumber(): "finalized" | "invalid" | "not_ready";
85
+ /**
86
+ * Attempt to finalize a pending literal (at end of input or finish).
87
+ * Returns true if a literal token was emitted.
88
+ */
89
+ finalizeLiteral(): boolean;
90
+ private processStructural;
91
+ private processString;
92
+ private processEscape;
93
+ private processUnicodeEscape;
94
+ private processSurrogatePending;
95
+ private processNumber;
96
+ private processLiteral;
97
+ private beginString;
98
+ private beginNumber;
99
+ private beginLiteral;
100
+ private commitNumber;
101
+ private isValueTerminator;
102
+ private reprocessChar;
103
+ private emitToken;
104
+ private emitDiagnostic;
105
+ }
106
+ //# sourceMappingURL=scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/lexer/scanner.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAsB3E;;;;GAIG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,cAAc,CAAS;gBAEnB,OAAO,CAAC,EAAE,aAAa;IAQnC,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,OAAO,CAAsB;IAGrC,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAK;IAG5B,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,aAAa,CAAK;IAC1B,wFAAwF;IACxF,OAAO,CAAC,cAAc,CAAK;IAG3B,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAS;IAG/B,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,gBAAgB,CAAK;IAG7B,yEAAyE;IACzE,OAAO,CAAC,iBAAiB,CAAK;IAG9B,0DAA0D;IAC1D,OAAO,CAAC,eAAe,CAAS;IAEhC,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAqCtE;;;OAGG;IACH,UAAU,IAAI,KAAK,EAAE;IAMrB;;;OAGG;IACH,eAAe,IAAI,UAAU,EAAE;IAM/B,WAAW,IAAI,YAAY,EAAE;IAM7B;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIxC;;OAEG;IACH,cAAc,IAAI;QAChB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,GAAG,WAAW,GAAG,MAAM,CAAC;QAChF,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB;IA2CD;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;;;;;;;;;OAUG;IACH,cAAc,IAAI,WAAW,GAAG,SAAS,GAAG,WAAW;IAuBvD;;;OAGG;IACH,eAAe,IAAI,OAAO;IA8B1B,OAAO,CAAC,iBAAiB;IAuCzB,OAAO,CAAC,aAAa;IAiErB,OAAO,CAAC,aAAa;IA6CrB,OAAO,CAAC,oBAAoB;IA8D5B,OAAO,CAAC,uBAAuB;IAqC/B,OAAO,CAAC,aAAa;IAiHrB,OAAO,CAAC,cAAc;IAwDtB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,cAAc;CAWvB"}