@quereus/quereus 0.18.0 → 1.0.2

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 (150) hide show
  1. package/README.md +80 -14
  2. package/dist/src/common/type-inference.d.ts +1 -0
  3. package/dist/src/common/type-inference.d.ts.map +1 -1
  4. package/dist/src/common/type-inference.js +6 -1
  5. package/dist/src/common/type-inference.js.map +1 -1
  6. package/dist/src/common/types.d.ts +10 -2
  7. package/dist/src/common/types.d.ts.map +1 -1
  8. package/dist/src/common/types.js +13 -1
  9. package/dist/src/common/types.js.map +1 -1
  10. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  11. package/dist/src/emit/ast-stringify.js +5 -0
  12. package/dist/src/emit/ast-stringify.js.map +1 -1
  13. package/dist/src/func/builtins/conversion.d.ts +2 -2
  14. package/dist/src/func/builtins/conversion.js +3 -3
  15. package/dist/src/func/builtins/conversion.js.map +1 -1
  16. package/dist/src/func/builtins/index.d.ts.map +1 -1
  17. package/dist/src/func/builtins/index.js +2 -1
  18. package/dist/src/func/builtins/index.js.map +1 -1
  19. package/dist/src/func/builtins/json-helpers.d.ts +10 -0
  20. package/dist/src/func/builtins/json-helpers.d.ts.map +1 -1
  21. package/dist/src/func/builtins/json-helpers.js +26 -0
  22. package/dist/src/func/builtins/json-helpers.js.map +1 -1
  23. package/dist/src/func/builtins/json-tvf.d.ts.map +1 -1
  24. package/dist/src/func/builtins/json-tvf.js +9 -15
  25. package/dist/src/func/builtins/json-tvf.js.map +1 -1
  26. package/dist/src/func/builtins/json.d.ts.map +1 -1
  27. package/dist/src/func/builtins/json.js +100 -227
  28. package/dist/src/func/builtins/json.js.map +1 -1
  29. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  30. package/dist/src/func/builtins/schema.js +9 -0
  31. package/dist/src/func/builtins/schema.js.map +1 -1
  32. package/dist/src/index.d.ts +1 -1
  33. package/dist/src/index.d.ts.map +1 -1
  34. package/dist/src/parser/lexer.d.ts +1 -0
  35. package/dist/src/parser/lexer.d.ts.map +1 -1
  36. package/dist/src/parser/lexer.js +2 -1
  37. package/dist/src/parser/lexer.js.map +1 -1
  38. package/dist/src/parser/parser.d.ts +12 -0
  39. package/dist/src/parser/parser.d.ts.map +1 -1
  40. package/dist/src/parser/parser.js +54 -1
  41. package/dist/src/parser/parser.js.map +1 -1
  42. package/dist/src/planner/analysis/const-evaluator.d.ts +5 -0
  43. package/dist/src/planner/analysis/const-evaluator.d.ts.map +1 -1
  44. package/dist/src/planner/analysis/const-evaluator.js +106 -0
  45. package/dist/src/planner/analysis/const-evaluator.js.map +1 -1
  46. package/dist/src/planner/analysis/const-pass.d.ts +4 -2
  47. package/dist/src/planner/analysis/const-pass.d.ts.map +1 -1
  48. package/dist/src/planner/analysis/const-pass.js +23 -13
  49. package/dist/src/planner/analysis/const-pass.js.map +1 -1
  50. package/dist/src/planner/analysis/constraint-extractor.d.ts +19 -1
  51. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  52. package/dist/src/planner/analysis/constraint-extractor.js +265 -14
  53. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  54. package/dist/src/planner/analysis/expression-fingerprint.d.ts +15 -0
  55. package/dist/src/planner/analysis/expression-fingerprint.d.ts.map +1 -0
  56. package/dist/src/planner/analysis/expression-fingerprint.js +126 -0
  57. package/dist/src/planner/analysis/expression-fingerprint.js.map +1 -0
  58. package/dist/src/planner/cost/index.d.ts +16 -0
  59. package/dist/src/planner/cost/index.d.ts.map +1 -1
  60. package/dist/src/planner/cost/index.js +22 -0
  61. package/dist/src/planner/cost/index.js.map +1 -1
  62. package/dist/src/planner/framework/pass.d.ts.map +1 -1
  63. package/dist/src/planner/framework/pass.js +4 -3
  64. package/dist/src/planner/framework/pass.js.map +1 -1
  65. package/dist/src/planner/nodes/hash-aggregate.d.ts +38 -0
  66. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -0
  67. package/dist/src/planner/nodes/hash-aggregate.js +213 -0
  68. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -0
  69. package/dist/src/planner/nodes/plan-node-type.d.ts +1 -0
  70. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  71. package/dist/src/planner/nodes/plan-node-type.js +1 -0
  72. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  73. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  74. package/dist/src/planner/nodes/table-access-nodes.d.ts +11 -0
  75. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  76. package/dist/src/planner/nodes/table-access-nodes.js +32 -0
  77. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  78. package/dist/src/planner/nodes/values-node.d.ts +3 -1
  79. package/dist/src/planner/nodes/values-node.d.ts.map +1 -1
  80. package/dist/src/planner/nodes/values-node.js +9 -2
  81. package/dist/src/planner/nodes/values-node.js.map +1 -1
  82. package/dist/src/planner/optimizer.d.ts.map +1 -1
  83. package/dist/src/planner/optimizer.js +35 -7
  84. package/dist/src/planner/optimizer.js.map +1 -1
  85. package/dist/src/planner/rules/access/rule-select-access-path.js +175 -5
  86. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  87. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts +9 -11
  88. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts.map +1 -1
  89. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +54 -67
  90. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -1
  91. package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts +19 -0
  92. package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts.map +1 -0
  93. package/dist/src/planner/rules/cache/rule-scalar-cse.js +245 -0
  94. package/dist/src/planner/rules/cache/rule-scalar-cse.js.map +1 -0
  95. package/dist/src/planner/rules/predicate/rule-filter-merge.d.ts +15 -0
  96. package/dist/src/planner/rules/predicate/rule-filter-merge.d.ts.map +1 -0
  97. package/dist/src/planner/rules/predicate/rule-filter-merge.js +39 -0
  98. package/dist/src/planner/rules/predicate/rule-filter-merge.js.map +1 -0
  99. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts +1 -0
  100. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -1
  101. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +9 -0
  102. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
  103. package/dist/src/planner/rules/retrieve/rule-projection-pruning.d.ts +17 -0
  104. package/dist/src/planner/rules/retrieve/rule-projection-pruning.d.ts.map +1 -0
  105. package/dist/src/planner/rules/retrieve/rule-projection-pruning.js +75 -0
  106. package/dist/src/planner/rules/retrieve/rule-projection-pruning.js.map +1 -0
  107. package/dist/src/runtime/emit/aggregate.d.ts +9 -0
  108. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  109. package/dist/src/runtime/emit/aggregate.js +2 -2
  110. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  111. package/dist/src/runtime/emit/empty-result.d.ts +5 -0
  112. package/dist/src/runtime/emit/empty-result.d.ts.map +1 -0
  113. package/dist/src/runtime/emit/empty-result.js +11 -0
  114. package/dist/src/runtime/emit/empty-result.js.map +1 -0
  115. package/dist/src/runtime/emit/hash-aggregate.d.ts +5 -0
  116. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -0
  117. package/dist/src/runtime/emit/hash-aggregate.js +319 -0
  118. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -0
  119. package/dist/src/runtime/register.d.ts.map +1 -1
  120. package/dist/src/runtime/register.js +4 -1
  121. package/dist/src/runtime/register.js.map +1 -1
  122. package/dist/src/types/json-type.d.ts +3 -3
  123. package/dist/src/types/json-type.d.ts.map +1 -1
  124. package/dist/src/types/json-type.js +44 -38
  125. package/dist/src/types/json-type.js.map +1 -1
  126. package/dist/src/types/logical-type.d.ts +2 -1
  127. package/dist/src/types/logical-type.d.ts.map +1 -1
  128. package/dist/src/types/logical-type.js +4 -0
  129. package/dist/src/types/logical-type.js.map +1 -1
  130. package/dist/src/util/comparison.d.ts +1 -1
  131. package/dist/src/util/comparison.d.ts.map +1 -1
  132. package/dist/src/util/comparison.js +22 -4
  133. package/dist/src/util/comparison.js.map +1 -1
  134. package/dist/src/vtab/best-access-plan.d.ts +1 -1
  135. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  136. package/dist/src/vtab/memory/layer/base-cursor.d.ts.map +1 -1
  137. package/dist/src/vtab/memory/layer/base-cursor.js +81 -6
  138. package/dist/src/vtab/memory/layer/base-cursor.js.map +1 -1
  139. package/dist/src/vtab/memory/layer/scan-plan.d.ts +9 -0
  140. package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
  141. package/dist/src/vtab/memory/layer/scan-plan.js +76 -9
  142. package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
  143. package/dist/src/vtab/memory/layer/transaction-cursor.d.ts.map +1 -1
  144. package/dist/src/vtab/memory/layer/transaction-cursor.js +79 -11
  145. package/dist/src/vtab/memory/layer/transaction-cursor.js.map +1 -1
  146. package/dist/src/vtab/memory/module.d.ts +4 -0
  147. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  148. package/dist/src/vtab/memory/module.js +79 -11
  149. package/dist/src/vtab/memory/module.js.map +1 -1
  150. package/package.json +25 -5
@@ -5,7 +5,7 @@ const { applyPatch } = fastJsonPatch;
5
5
  import { validator } from 'moat-maker';
6
6
  import { createLogger } from '../../common/logger.js';
7
7
  import { createScalarFunction, createAggregateFunction } from '../registration.js';
8
- import { safeJsonParse, resolveJsonPathForModify, prepareJsonValue, deepCopyJson, getJsonType } from './json-helpers.js';
8
+ import { coerceToJsonValue, resolveJsonPathForModify, prepareJsonValue, deepCopyJson, getJsonType } from './json-helpers.js';
9
9
  import { PlanNodeType } from '../../planner/nodes/plan-node-type.js';
10
10
  import { emitPlanNode } from '../../runtime/emitters.js';
11
11
  const log = createLogger('func:builtins:json');
@@ -13,7 +13,14 @@ const errorLog = log.extend('error');
13
13
  // --- JSON Functions --- //
14
14
  // json_valid(X)
15
15
  export const jsonValidFunc = createScalarFunction({ name: 'json_valid', numArgs: 1, deterministic: true }, (json) => {
16
- return safeJsonParse(json) !== null;
16
+ if (json === null)
17
+ return false;
18
+ // Native objects are always valid JSON
19
+ if (typeof json === 'object' && !(json instanceof Uint8Array))
20
+ return true;
21
+ if (typeof json === 'number' || typeof json === 'boolean')
22
+ return true;
23
+ return coerceToJsonValue(json) !== undefined;
17
24
  });
18
25
  /**
19
26
  * Custom emitter for json_schema that caches compiled validators in the EmissionContext.
@@ -28,30 +35,17 @@ function emitJsonSchema(plan, ctx, defaultEmit) {
28
35
  if (typeof schemaDef === 'string') {
29
36
  try {
30
37
  // Compile the validator once at emission time using moat-maker
31
- // moat-maker uses template literals, so we need to create a validator dynamically
32
- // Template literals have a special structure: an array with a 'raw' property
33
- // We create this structure manually to simulate a template literal
34
38
  const parts = [schemaDef];
35
39
  parts.raw = [schemaDef];
36
40
  const compiledValidator = validator(parts, ...[]);
37
41
  // Emit only the JSON argument (first operand)
38
42
  const jsonArgInstruction = emitPlanNode(plan.operands[0], ctx);
39
- // Create optimized runtime function that uses the cached validator
40
- // The validator is captured in the closure, so it lives with the plan
41
43
  function run(_rctx, ...args) {
42
44
  const json = args[0];
43
- if (typeof json !== 'string')
45
+ const data = coerceToJsonValue(json);
46
+ if (data === undefined)
44
47
  return false;
45
- let data;
46
48
  try {
47
- data = JSON.parse(json);
48
- }
49
- catch {
50
- return false; // Invalid JSON
51
- }
52
- // Use the cached compiled validator
53
- try {
54
- // moat-maker's .matches() returns true if valid, false otherwise
55
49
  const isValid = compiledValidator.matches(data);
56
50
  return isValid;
57
51
  }
@@ -68,38 +62,22 @@ function emitJsonSchema(plan, ctx, defaultEmit) {
68
62
  }
69
63
  catch (e) {
70
64
  errorLog('Failed to compile schema at emission time: %O', e);
71
- // Fall through to default emission
72
65
  }
73
66
  }
74
67
  }
75
- // If schema is not a constant or compilation failed, use default emission
76
68
  return defaultEmit(plan, ctx);
77
69
  }
78
70
  // json_schema(X, schema_def)
79
- // Note: This function uses a custom emitter that caches compiled validators
80
- // during plan emission for better performance.
81
71
  export const jsonSchemaFunc = createScalarFunction({ name: 'json_schema', numArgs: 2, deterministic: true }, (json, schemaDef) => {
82
- // This is the fallback implementation for when no cache is available
83
- // (e.g., during direct function calls outside of query execution)
84
- // Schema definition must be a string
85
72
  if (typeof schemaDef !== 'string')
86
73
  return false;
87
- // Parse the JSON value - need to check if it's valid JSON first
88
- if (typeof json !== 'string')
74
+ const data = coerceToJsonValue(json);
75
+ if (data === undefined)
89
76
  return false;
90
- let data;
91
- try {
92
- data = JSON.parse(json);
93
- }
94
- catch {
95
- return false; // Invalid JSON
96
- }
97
- // Compile and validate using moat-maker (no caching in fallback path)
98
77
  try {
99
78
  const parts = [schemaDef];
100
79
  parts.raw = [schemaDef];
101
80
  const compiledValidator = validator(parts, ...[]);
102
- // moat-maker's .matches() returns true if valid, false otherwise
103
81
  const isValid = compiledValidator.matches(data);
104
82
  return isValid;
105
83
  }
@@ -108,20 +86,18 @@ export const jsonSchemaFunc = createScalarFunction({ name: 'json_schema', numArg
108
86
  return false;
109
87
  }
110
88
  });
111
- // Attach the custom emitter to the function schema
112
89
  jsonSchemaFunc.customEmitter = emitJsonSchema;
113
90
  // json_type(X, P?)
114
91
  export const jsonTypeFunc = createScalarFunction({ name: 'json_type', numArgs: -1, deterministic: true }, (json, path) => {
115
- const data = safeJsonParse(json);
116
- if (data === null && typeof json === 'string')
117
- return null; // Invalid JSON input
92
+ const data = coerceToJsonValue(json);
93
+ if (data === undefined)
94
+ return null;
118
95
  let targetValue = data;
119
96
  if (path !== undefined && path !== null) {
120
97
  if (typeof path !== 'string')
121
- return 'null'; // Invalid path
98
+ return 'null';
122
99
  const resolved = resolveJsonPathForModify(data, path);
123
100
  targetValue = resolved?.exists ? resolved.value : undefined;
124
- // If path evaluation leads nowhere, SQLite returns NULL type
125
101
  if (targetValue === undefined)
126
102
  return null;
127
103
  }
@@ -129,56 +105,38 @@ export const jsonTypeFunc = createScalarFunction({ name: 'json_type', numArgs: -
129
105
  });
130
106
  // json_extract(X, P1, P2, ...)
131
107
  export const jsonExtractFunc = createScalarFunction({ name: 'json_extract', numArgs: -1, deterministic: true }, (json, ...paths) => {
132
- const data = safeJsonParse(json);
133
- if (data === null && typeof json === 'string')
134
- return null; // Return NULL if JSON is invalid
108
+ const data = coerceToJsonValue(json);
109
+ if (data === undefined)
110
+ return null;
135
111
  if (paths.length === 0)
136
- return null; // No paths provided
137
- // SQLite json_extract: Find the first path that resolves
112
+ return null;
138
113
  let extractedValue = undefined;
139
114
  for (const pathVal of paths) {
140
115
  if (typeof pathVal === 'string') {
141
116
  const resolved = resolveJsonPathForModify(data, pathVal);
142
117
  extractedValue = resolved?.exists ? resolved.value : undefined;
143
- // Stop at the first path that successfully extracts a value (even if null)
144
- if (extractedValue !== undefined) {
118
+ if (extractedValue !== undefined)
145
119
  break;
146
- }
147
120
  }
148
121
  else {
149
- // Invalid path type itself results in overall NULL
150
122
  return null;
151
123
  }
152
124
  }
153
- // Map the extracted JS value to the corresponding SQL type
154
- if (extractedValue === undefined) {
155
- return null; // Path did not resolve
156
- }
157
- else if (extractedValue === null) {
125
+ if (extractedValue === undefined)
158
126
  return null;
159
- }
160
- else if (typeof extractedValue === 'boolean') {
127
+ if (extractedValue === null)
128
+ return null;
129
+ if (typeof extractedValue === 'boolean')
161
130
  return extractedValue;
162
- }
163
- else if (typeof extractedValue === 'number') {
164
- return extractedValue; // Return as INTEGER or REAL
165
- }
166
- else if (typeof extractedValue === 'string') {
131
+ if (typeof extractedValue === 'number')
132
+ return extractedValue;
133
+ if (typeof extractedValue === 'string')
134
+ return extractedValue;
135
+ if (typeof extractedValue === 'object') {
136
+ // Return nested objects/arrays as native JSON values
167
137
  return extractedValue;
168
138
  }
169
- else if (typeof extractedValue === 'object') {
170
- // Return arrays/objects as JSON strings
171
- try {
172
- return JSON.stringify(extractedValue);
173
- }
174
- catch {
175
- return null; // Should not happen for valid extracted JSON parts
176
- }
177
- }
178
- else {
179
- // Should not happen for valid JSON (e.g., bigint, symbol, function)
180
- return null;
181
- }
139
+ return null;
182
140
  });
183
141
  // json_quote(X)
184
142
  export const jsonQuoteFunc = createScalarFunction({ name: 'json_quote', numArgs: 1, deterministic: true }, (value) => {
@@ -187,170 +145,125 @@ export const jsonQuoteFunc = createScalarFunction({ name: 'json_quote', numArgs:
187
145
  switch (typeof value) {
188
146
  case 'number':
189
147
  if (!Number.isFinite(value))
190
- return 'null'; // JSON doesn't support Infinity/NaN
148
+ return 'null';
191
149
  return String(value);
192
150
  case 'boolean':
193
151
  return value ? 'true' : 'false';
194
152
  case 'string':
195
- return JSON.stringify(value); // Correctly escapes the string
153
+ return JSON.stringify(value);
196
154
  case 'bigint':
197
- // BigInts are not directly representable in standard JSON
198
155
  return null;
199
156
  case 'object':
200
- if (value instanceof Uint8Array) {
201
- // BLOBs cannot be represented in JSON
157
+ if (value instanceof Uint8Array)
202
158
  return null;
159
+ try {
160
+ return JSON.stringify(value);
203
161
  }
204
- else if (Array.isArray(value) || (value !== null && typeof value === 'object')) {
205
- // Handle arrays and plain objects by converting to JSON string
206
- try {
207
- return JSON.stringify(value);
208
- }
209
- catch {
210
- return null;
211
- }
162
+ catch {
163
+ return null;
212
164
  }
213
- return null;
214
165
  default:
215
166
  return null;
216
167
  }
217
168
  });
218
- // json_array(X, Y, ...)
169
+ // json_array(X, Y, ...) — returns native array
219
170
  export const jsonArrayFunc = createScalarFunction({ name: 'json_array', numArgs: -1, deterministic: true }, (...args) => {
220
- // Values need to be converted to valid JSON representations before stringifying
221
- const jsonCompatibleArgs = args.map(arg => prepareJsonValue(arg)); // Use helper
222
- try {
223
- return JSON.stringify(jsonCompatibleArgs);
224
- }
225
- catch {
226
- return null; // Should not happen with basic types
227
- }
171
+ return args.map(arg => prepareJsonValue(arg));
228
172
  });
229
- // json_object(N1, V1, N2, V2, ...)
173
+ // json_object(N1, V1, N2, V2, ...) — returns native object
230
174
  export const jsonObjectFunc = createScalarFunction({ name: 'json_object', numArgs: -1, deterministic: true }, (...args) => {
231
- if (args.length % 2 !== 0) {
232
- // SQLite json_object returns NULL if odd number of args
175
+ if (args.length % 2 !== 0)
233
176
  return null;
234
- }
235
177
  const obj = {};
236
178
  for (let i = 0; i < args.length; i += 2) {
237
179
  const key = args[i];
238
180
  const value = args[i + 1];
239
- if (typeof key !== 'string') {
240
- // SQLite requires keys to be strings
181
+ if (typeof key !== 'string')
241
182
  return null;
242
- }
243
- // Convert value to JSON compatible using helper
244
183
  obj[key] = prepareJsonValue(value);
245
184
  }
246
- try {
247
- return JSON.stringify(obj);
248
- }
249
- catch {
250
- return null;
251
- }
185
+ return obj;
252
186
  });
253
187
  // --- Additional JSON Functions --- //
254
188
  // json_array_length(json, path?)
255
189
  export const jsonArrayLengthFunc = createScalarFunction({ name: 'json_array_length', numArgs: -1, deterministic: true }, (json, path) => {
256
- const data = safeJsonParse(json);
257
- if (data === null && typeof json === 'string')
190
+ const data = coerceToJsonValue(json);
191
+ if (data === undefined)
258
192
  return null;
259
193
  let targetValue = data;
260
194
  if (path !== undefined && path !== null) {
261
195
  if (typeof path !== 'string')
262
- return 0; // Invalid path -> 0 length
196
+ return 0;
263
197
  const resolved = resolveJsonPathForModify(data, path);
264
198
  targetValue = resolved?.exists ? resolved.value : undefined;
265
199
  }
266
- if (Array.isArray(targetValue)) {
267
- return targetValue.length;
268
- }
269
- else {
270
- // If the target exists but is not an array, SQLite returns 0
271
- // If the path doesn't resolve (targetValue is undefined), return 0?
272
- // Let's return 0 if not an array, consistent with SQLite.
273
- return 0;
274
- }
200
+ return Array.isArray(targetValue) ? targetValue.length : 0;
275
201
  });
276
- // json_patch(json, patch)
277
- export const jsonPatchFunc = createScalarFunction({ name: 'json_patch', numArgs: 2, deterministic: false }, // Not deterministic as patch content varies
278
- (json, patchVal) => {
279
- const data = safeJsonParse(json);
280
- // JSON Patches must be JSON arrays
281
- const patchData = safeJsonParse(patchVal);
282
- if (data === null && typeof json === 'string')
283
- return null; // Invalid target JSON
202
+ // json_patch(json, patch) — returns native object
203
+ export const jsonPatchFunc = createScalarFunction({ name: 'json_patch', numArgs: 2, deterministic: false }, (json, patchVal) => {
204
+ const data = coerceToJsonValue(json);
205
+ const patchData = coerceToJsonValue(patchVal);
206
+ if (data === undefined)
207
+ return null;
284
208
  if (!Array.isArray(patchData))
285
- return null; // Invalid patch JSON (must be array)
286
- // Ensure patch operations have the correct structure (basic check)
209
+ return null;
287
210
  const patch = patchData;
288
211
  if (!patch.every(op => typeof op === 'object' && op !== null && 'op' in op && 'path' in op)) {
289
- return null; // Invalid operation structure
212
+ return null;
290
213
  }
291
214
  try {
292
- // fast-json-patch might throw on invalid patch operations or test failures
293
- // applyPatch mutates by default, but since `data` is freshly parsed, it's okay.
294
- // If data came from elsewhere, we might need deepCopyJson first.
295
- const result = applyPatch(data, patch, true /* validate operations */).newDocument;
296
- return JSON.stringify(result);
215
+ // deepCopy data since applyPatch mutates; native objects may be shared
216
+ const dataCopy = deepCopyJson(data);
217
+ const result = applyPatch(dataCopy, patch, true).newDocument;
218
+ return result;
297
219
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
298
220
  }
299
221
  catch (e) {
300
222
  errorLog('json_patch failed: %s, %O', e?.message, e);
301
- return null; // Return NULL on patch failure
223
+ return null;
302
224
  }
303
225
  });
304
226
  // --- Manipulation Functions --- //
305
- // json_insert(JSON, PATH, VALUE, PATH, VALUE, ...)
227
+ // json_insert(JSON, PATH, VALUE, PATH, VALUE, ...) — returns native object
306
228
  export const jsonInsertFunc = createScalarFunction({ name: 'json_insert', numArgs: -1, deterministic: true }, (json, ...args) => {
307
- const data = safeJsonParse(json);
308
- if (data === null && typeof json === 'string')
309
- return null; // Invalid JSON input
229
+ const data = coerceToJsonValue(json);
230
+ if (data === undefined)
231
+ return null;
310
232
  if (args.length === 0 || args.length % 2 !== 0)
311
- return null; // Need path/value pairs
312
- // Work on a copy
233
+ return null;
313
234
  const currentData = deepCopyJson(data);
314
235
  for (let i = 0; i < args.length; i += 2) {
315
236
  const pathVal = args[i];
316
237
  const valueVal = args[i + 1];
317
238
  if (typeof pathVal !== 'string')
318
- return null; // Path must be string
239
+ return null;
319
240
  const preparedValue = prepareJsonValue(valueVal);
320
241
  const pathInfo = resolveJsonPathForModify(currentData, pathVal);
321
242
  if (pathInfo === null)
322
- continue; // Ignore invalid paths
243
+ continue;
323
244
  const { parent, key, exists } = pathInfo;
324
245
  if (!exists) {
325
246
  if (parent === null)
326
- continue; // Cannot insert at root if it doesn't exist (shouldn't happen)
247
+ continue;
327
248
  if (Array.isArray(parent) && typeof key === 'number') {
328
249
  if (key === parent.length) {
329
250
  parent.push(preparedValue);
330
251
  }
331
252
  else if (key < parent.length) {
332
- parent.splice(key, 0, preparedValue); // Insert *before* existing element
253
+ parent.splice(key, 0, preparedValue);
333
254
  }
334
- // Ignore if key > parent.length?
335
255
  }
336
256
  else if (typeof parent === 'object' && parent !== null && !Array.isArray(parent) && typeof key === 'string') {
337
257
  parent[key] = preparedValue;
338
258
  }
339
- // else: Cannot insert into non-container or invalid key type - ignore
340
259
  }
341
- // If path *does* exist, json_insert does nothing.
342
- }
343
- try {
344
- return JSON.stringify(currentData);
345
- }
346
- catch {
347
- return null;
348
260
  }
261
+ return currentData;
349
262
  });
350
- // json_replace(JSON, PATH, VALUE, PATH, VALUE, ...)
263
+ // json_replace(JSON, PATH, VALUE, PATH, VALUE, ...) — returns native object
351
264
  export const jsonReplaceFunc = createScalarFunction({ name: 'json_replace', numArgs: -1, deterministic: true }, (json, ...args) => {
352
- const data = safeJsonParse(json);
353
- if (data === null && typeof json === 'string')
265
+ const data = coerceToJsonValue(json);
266
+ if (data === undefined)
354
267
  return null;
355
268
  if (args.length === 0 || args.length % 2 !== 0)
356
269
  return null;
@@ -363,11 +276,10 @@ export const jsonReplaceFunc = createScalarFunction({ name: 'json_replace', numA
363
276
  const preparedValue = prepareJsonValue(valueVal);
364
277
  const pathInfo = resolveJsonPathForModify(currentData, pathVal);
365
278
  if (pathInfo === null)
366
- continue; // Ignore invalid paths
279
+ continue;
367
280
  const { parent, key, exists } = pathInfo;
368
281
  if (exists) {
369
282
  if (parent === null && key === '') {
370
- // Replace the root value
371
283
  currentData = preparedValue;
372
284
  }
373
285
  else if (parent !== null && typeof key === 'string' && typeof parent === 'object' && !Array.isArray(parent)) {
@@ -378,21 +290,14 @@ export const jsonReplaceFunc = createScalarFunction({ name: 'json_replace', numA
378
290
  parent[key] = preparedValue;
379
291
  }
380
292
  }
381
- // else: Cannot replace non-existent or invalid path - ignore
382
293
  }
383
- // If path does *not* exist, json_replace does nothing.
384
- }
385
- try {
386
- return JSON.stringify(currentData);
387
- }
388
- catch {
389
- return null;
390
294
  }
295
+ return currentData;
391
296
  });
392
- // json_set(JSON, PATH, VALUE, PATH, VALUE, ...)
297
+ // json_set(JSON, PATH, VALUE, PATH, VALUE, ...) — returns native object
393
298
  export const jsonSetFunc = createScalarFunction({ name: 'json_set', numArgs: -1, deterministic: true }, (json, ...args) => {
394
- const data = safeJsonParse(json);
395
- if (data === null && typeof json === 'string')
299
+ const data = coerceToJsonValue(json);
300
+ if (data === undefined)
396
301
  return null;
397
302
  if (args.length === 0 || args.length % 2 !== 0)
398
303
  return null;
@@ -403,113 +308,81 @@ export const jsonSetFunc = createScalarFunction({ name: 'json_set', numArgs: -1,
403
308
  if (typeof pathVal !== 'string')
404
309
  return null;
405
310
  const preparedValue = prepareJsonValue(valueVal);
406
- // Pass createParents = true to enable intermediate creation
407
311
  const pathInfo = resolveJsonPathForModify(currentData, pathVal, true);
408
312
  if (pathInfo === null)
409
- continue; // Ignore invalid paths
313
+ continue;
410
314
  const { parent, key } = pathInfo;
411
315
  if (parent === null && key === '') {
412
- // Set the root value
413
316
  currentData = preparedValue;
414
317
  }
415
318
  else if (parent !== null) {
416
319
  if (typeof parent === 'object' && !Array.isArray(parent) && typeof key === 'string') {
417
- parent[key] = preparedValue; // Set object property (create or replace)
320
+ parent[key] = preparedValue;
418
321
  }
419
322
  else if (Array.isArray(parent) && typeof key === 'number') {
420
323
  if (key >= 0 && key < parent.length) {
421
- parent[key] = preparedValue; // Replace existing array element
324
+ parent[key] = preparedValue;
422
325
  }
423
326
  else if (key === parent.length) {
424
- parent.push(preparedValue); // Append to array
327
+ parent.push(preparedValue);
425
328
  }
426
329
  else if (key > parent.length) {
427
- // Pad array with nulls and append (SQLite behavior)
428
330
  while (parent.length < key) {
429
331
  parent.push(null);
430
332
  }
431
333
  parent.push(preparedValue);
432
334
  }
433
- // Ignore negative index?
434
335
  }
435
- // NOTE: This implementation does *not* create intermediate objects/arrays
436
- // if the parent itself doesn't exist. A full json_set would need recursion here.
437
336
  }
438
337
  }
439
- try {
440
- return JSON.stringify(currentData);
441
- }
442
- catch {
443
- return null;
444
- }
338
+ return currentData;
445
339
  });
446
- // json_remove(JSON, PATH, PATH, ...)
340
+ // json_remove(JSON, PATH, PATH, ...) — returns native object
447
341
  export const jsonRemoveFunc = createScalarFunction({ name: 'json_remove', numArgs: -1, deterministic: true }, (json, ...paths) => {
448
- const data = safeJsonParse(json);
449
- if (data === null && typeof json === 'string')
450
- return null; // Invalid JSON input
342
+ const data = coerceToJsonValue(json);
343
+ if (data === undefined)
344
+ return null;
451
345
  if (paths.length === 0)
452
- return JSON.stringify(data); // No paths means no change
346
+ return data;
453
347
  const currentData = deepCopyJson(data);
454
348
  for (const pathVal of paths) {
455
349
  if (typeof pathVal !== 'string')
456
- return null; // Path must be string
350
+ return null;
457
351
  const pathInfo = resolveJsonPathForModify(currentData, pathVal);
458
352
  if (pathInfo === null || !pathInfo.exists || pathInfo.parent === null) {
459
- // Invalid path, path doesn't exist, or trying to remove root - ignore
460
353
  continue;
461
354
  }
462
355
  const { parent, key } = pathInfo;
463
356
  if (Array.isArray(parent) && typeof key === 'number') {
464
357
  if (key >= 0 && key < parent.length) {
465
- parent.splice(key, 1); // Remove array element
358
+ parent.splice(key, 1);
466
359
  }
467
360
  }
468
361
  else if (typeof parent === 'object' && parent !== null && !Array.isArray(parent) && typeof key === 'string') {
469
362
  if (Object.prototype.hasOwnProperty.call(parent, key)) {
470
- delete parent[key]; // Remove object property
363
+ delete parent[key];
471
364
  }
472
365
  }
473
- // else: Cannot remove from non-container or invalid key type - ignore
474
- }
475
- try {
476
- return JSON.stringify(currentData);
477
- }
478
- catch {
479
- return null;
480
366
  }
367
+ return currentData;
481
368
  });
482
369
  // --- Aggregate Functions --- //
483
- // json_group_array(value)
370
+ // json_group_array(value) — returns native array
484
371
  export const jsonGroupArrayFunc = createAggregateFunction({ name: 'json_group_array', numArgs: 1, initialValue: [] }, (acc, value) => {
485
372
  const preparedValue = prepareJsonValue(value);
486
373
  return [...acc, preparedValue];
487
374
  }, (acc) => {
488
- try {
489
- // Returns NULL if the group is empty, otherwise the JSON array string
490
- return acc.length > 0 ? JSON.stringify(acc) : null;
491
- }
492
- catch {
493
- return null;
494
- }
375
+ return acc.length > 0 ? acc : null;
495
376
  });
496
- // json_group_object(name, value)
377
+ // json_group_object(name, value) — returns native object
497
378
  export const jsonGroupObjectFunc = createAggregateFunction({ name: 'json_group_object', numArgs: 2, initialValue: {} }, (acc, name, value) => {
498
379
  if (name === null || name === undefined) {
499
- return acc; // Skip if name is NULL/undefined
380
+ return acc;
500
381
  }
501
- // Convert the name to a string key - SQLite converts non-string keys to strings
502
382
  const stringKey = String(name);
503
- // SQLite's json_group_object includes NULL values associated with keys
504
383
  const preparedValue = prepareJsonValue(value);
505
384
  return { ...acc, [stringKey]: preparedValue };
506
385
  }, (acc) => {
507
- try {
508
- // Returns NULL if the group is empty, otherwise the JSON object string
509
- return Object.keys(acc).length > 0 ? JSON.stringify(acc) : null;
510
- }
511
- catch {
512
- return null;
513
- }
386
+ return Object.keys(acc).length > 0 ? acc : null;
514
387
  });
515
388
  //# sourceMappingURL=json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../src/func/builtins/json.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../src/func/builtins/json.ts"],"names":[],"mappings":"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"}