@blackwell-systems/gcf 2.1.2 → 2.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.
- package/README.md +1 -1
- package/dist/cjs/index.cjs +189 -3
- package/dist/cli.js +0 -0
- package/dist/decode_generic.js +74 -0
- package/dist/decode_generic.js.map +1 -1
- package/dist/generic.js +162 -5
- package/dist/generic.js.map +1 -1
- package/package.json +2 -2
- package/src/decode_generic.ts +80 -0
- package/src/generic.ts +157 -5
- package/dist/cjs/browser.d.ts +0 -9
- package/dist/cjs/browser.js +0 -25
- package/dist/cjs/browser.js.map +0 -1
- package/dist/cjs/cli.d.ts +0 -5
- package/dist/cjs/cli.js +0 -136
- package/dist/cjs/cli.js.map +0 -1
- package/dist/cjs/constants.d.ts +0 -8
- package/dist/cjs/constants.js +0 -46
- package/dist/cjs/constants.js.map +0 -1
- package/dist/cjs/decode.d.ts +0 -5
- package/dist/cjs/decode.js +0 -197
- package/dist/cjs/decode.js.map +0 -1
- package/dist/cjs/decode_generic.d.ts +0 -4
- package/dist/cjs/decode_generic.js +0 -678
- package/dist/cjs/decode_generic.js.map +0 -1
- package/dist/cjs/delta.d.ts +0 -15
- package/dist/cjs/delta.js +0 -73
- package/dist/cjs/delta.js.map +0 -1
- package/dist/cjs/encode.d.ts +0 -5
- package/dist/cjs/encode.js +0 -89
- package/dist/cjs/encode.js.map +0 -1
- package/dist/cjs/generic.d.ts +0 -1
- package/dist/cjs/generic.js +0 -332
- package/dist/cjs/generic.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -11
- package/dist/cjs/index.js +0 -32
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/packroot.d.ts +0 -13
- package/dist/cjs/packroot.js +0 -50
- package/dist/cjs/packroot.js.map +0 -1
- package/dist/cjs/scalar.d.ts +0 -26
- package/dist/cjs/scalar.js +0 -339
- package/dist/cjs/scalar.js.map +0 -1
- package/dist/cjs/session.d.ts +0 -30
- package/dist/cjs/session.js +0 -140
- package/dist/cjs/session.js.map +0 -1
- package/dist/cjs/stream.d.ts +0 -66
- package/dist/cjs/stream.js +0 -127
- package/dist/cjs/stream.js.map +0 -1
- package/dist/cjs/stream_generic.d.ts +0 -37
- package/dist/cjs/stream_generic.js +0 -87
- package/dist/cjs/stream_generic.js.map +0 -1
- package/dist/cjs/types.d.ts +0 -75
- package/dist/cjs/types.js +0 -3
- package/dist/cjs/types.js.map +0 -1
package/dist/generic.js
CHANGED
|
@@ -162,12 +162,142 @@ function sharedArraySchema(arr, fieldName) {
|
|
|
162
162
|
}
|
|
163
163
|
return canonicalFields;
|
|
164
164
|
}
|
|
165
|
+
function analyzeFlattenable(arr, fieldName, parentPath) {
|
|
166
|
+
let canonicalShape = null;
|
|
167
|
+
for (const item of arr) {
|
|
168
|
+
const obj = item;
|
|
169
|
+
if (!(fieldName in obj) || obj[fieldName] === null || obj[fieldName] === undefined)
|
|
170
|
+
continue;
|
|
171
|
+
const v = obj[fieldName];
|
|
172
|
+
if (typeof v !== 'object' || Array.isArray(v))
|
|
173
|
+
return null;
|
|
174
|
+
const keys = Object.keys(v);
|
|
175
|
+
if (!canonicalShape) {
|
|
176
|
+
canonicalShape = {};
|
|
177
|
+
for (const k of keys) {
|
|
178
|
+
if (k.includes('>'))
|
|
179
|
+
return null;
|
|
180
|
+
const val = v[k];
|
|
181
|
+
if (val !== null && val !== undefined && typeof val === 'object' && !Array.isArray(val)) {
|
|
182
|
+
canonicalShape[k] = 'nested';
|
|
183
|
+
}
|
|
184
|
+
else if (Array.isArray(val)) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
canonicalShape[k] = 'scalar';
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
if (keys.length !== Object.keys(canonicalShape).length)
|
|
194
|
+
return null;
|
|
195
|
+
for (const k of keys) {
|
|
196
|
+
if (!(k in canonicalShape))
|
|
197
|
+
return null;
|
|
198
|
+
const val = v[k];
|
|
199
|
+
const expected = canonicalShape[k];
|
|
200
|
+
if (expected === 'scalar') {
|
|
201
|
+
if (val !== null && val !== undefined && typeof val === 'object')
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
else if (expected === 'nested') {
|
|
205
|
+
if (val !== null && val !== undefined) {
|
|
206
|
+
if (typeof val !== 'object' || Array.isArray(val))
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
if (!canonicalShape)
|
|
214
|
+
return null;
|
|
215
|
+
const currentPath = parentPath ? parentPath + '>' + fieldName : fieldName;
|
|
216
|
+
const parentKeys = parentPath ? [...parentPath.split('>'), fieldName] : [fieldName];
|
|
217
|
+
const leaves = [];
|
|
218
|
+
for (const k of Object.keys(canonicalShape)) {
|
|
219
|
+
if (canonicalShape[k] === 'scalar') {
|
|
220
|
+
leaves.push({ path: currentPath + '>' + k, keys: [...parentKeys, k] });
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
const subArr = arr.map(item => {
|
|
224
|
+
const obj = item;
|
|
225
|
+
if (!(fieldName in obj) || obj[fieldName] === null || obj[fieldName] === undefined)
|
|
226
|
+
return {};
|
|
227
|
+
return obj[fieldName];
|
|
228
|
+
});
|
|
229
|
+
const subLeaves = analyzeFlattenable(subArr, k, currentPath);
|
|
230
|
+
if (!subLeaves || subLeaves.length === 0)
|
|
231
|
+
return null;
|
|
232
|
+
leaves.push(...subLeaves);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// Guard: reject if any row has non-null object with all-null leaves.
|
|
236
|
+
if (leaves.length > 0) {
|
|
237
|
+
for (const item of arr) {
|
|
238
|
+
const obj = item;
|
|
239
|
+
if (!(fieldName in obj) || obj[fieldName] === null || obj[fieldName] === undefined)
|
|
240
|
+
continue;
|
|
241
|
+
const allNull = leaves.every(leaf => {
|
|
242
|
+
const val = resolveKeyChain(item, leaf.keys);
|
|
243
|
+
return val.exists && val.value === null;
|
|
244
|
+
});
|
|
245
|
+
if (allNull)
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return leaves;
|
|
250
|
+
}
|
|
251
|
+
function resolveKeyChain(item, keys) {
|
|
252
|
+
if (keys.length === 0)
|
|
253
|
+
return { value: undefined, exists: false };
|
|
254
|
+
const obj = item;
|
|
255
|
+
if (typeof obj !== 'object' || obj === null)
|
|
256
|
+
return { value: undefined, exists: false };
|
|
257
|
+
if (!(keys[0] in obj))
|
|
258
|
+
return { value: undefined, exists: false };
|
|
259
|
+
let current = obj[keys[0]];
|
|
260
|
+
if (current === null || current === undefined)
|
|
261
|
+
return { value: current, exists: true };
|
|
262
|
+
for (let i = 1; i < keys.length; i++) {
|
|
263
|
+
if (typeof current !== 'object' || current === null)
|
|
264
|
+
return { value: undefined, exists: false };
|
|
265
|
+
const c = current;
|
|
266
|
+
if (!(keys[i] in c))
|
|
267
|
+
return { value: undefined, exists: false };
|
|
268
|
+
current = c[keys[i]];
|
|
269
|
+
}
|
|
270
|
+
return { value: current, exists: true };
|
|
271
|
+
}
|
|
272
|
+
// ── End flattening helpers ───────────────────────────────────────────────
|
|
165
273
|
function encodeTabular(headerPrefix, arr, fields, depth) {
|
|
166
274
|
const prefix = indent(depth);
|
|
167
|
-
//
|
|
275
|
+
// Phase 0: Analyze fields for flattening.
|
|
276
|
+
const flattenMap = new Map();
|
|
277
|
+
for (const f of fields) {
|
|
278
|
+
const leaves = analyzeFlattenable(arr, f, '');
|
|
279
|
+
if (leaves && leaves.length > 0) {
|
|
280
|
+
flattenMap.set(f, leaves);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
const columns = [];
|
|
284
|
+
for (const f of fields) {
|
|
285
|
+
const leaves = flattenMap.get(f);
|
|
286
|
+
if (leaves) {
|
|
287
|
+
for (const leaf of leaves) {
|
|
288
|
+
columns.push({ headerName: formatKey(leaf.path), colType: 'flat', field: f, keys: leaf.keys });
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
columns.push({ headerName: formatKey(f), colType: 'original', field: f, keys: [] });
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// Pre-compute inline schemas and shared array schemas (skip flattened fields).
|
|
168
296
|
const inlineSchemas = new Map();
|
|
169
297
|
const sharedArrSchemas = new Map();
|
|
170
298
|
for (const f of fields) {
|
|
299
|
+
if (flattenMap.has(f))
|
|
300
|
+
continue;
|
|
171
301
|
const ifs = inlineSchemaFields(arr, f);
|
|
172
302
|
if (ifs)
|
|
173
303
|
inlineSchemas.set(f, ifs);
|
|
@@ -175,14 +305,42 @@ function encodeTabular(headerPrefix, arr, fields, depth) {
|
|
|
175
305
|
if (sas)
|
|
176
306
|
sharedArrSchemas.set(f, sas);
|
|
177
307
|
}
|
|
178
|
-
const
|
|
179
|
-
let out = `${headerPrefix}[${arr.length}]{${
|
|
308
|
+
const headerFields = columns.map(c => c.headerName);
|
|
309
|
+
let out = `${headerPrefix}[${arr.length}]{${headerFields.join(',')}}\n`;
|
|
180
310
|
for (let i = 0; i < arr.length; i++) {
|
|
181
311
|
const obj = arr[i];
|
|
182
312
|
const cells = [];
|
|
183
313
|
const attachments = [];
|
|
184
314
|
let rowHasAttachment = false;
|
|
185
|
-
for (const
|
|
315
|
+
for (const col of columns) {
|
|
316
|
+
if (col.colType === 'flat') {
|
|
317
|
+
// Resolve value via key chain.
|
|
318
|
+
if (!(col.keys[0] in obj)) {
|
|
319
|
+
cells.push('~');
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
// Check if top-level field is null.
|
|
323
|
+
const topVal = obj[col.keys[0]];
|
|
324
|
+
if (topVal === null || topVal === undefined) {
|
|
325
|
+
cells.push(topVal === null ? '-' : '~');
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
const resolved = resolveKeyChain(obj, col.keys);
|
|
329
|
+
if (!resolved.exists) {
|
|
330
|
+
cells.push('~');
|
|
331
|
+
}
|
|
332
|
+
else if (resolved.value === null || resolved.value === undefined) {
|
|
333
|
+
cells.push('-');
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
cells.push(formatScalar(resolved.value, 0x7c));
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
continue;
|
|
341
|
+
}
|
|
342
|
+
// Original (non-flattened) field.
|
|
343
|
+
const f = col.field;
|
|
186
344
|
if (!(f in obj)) {
|
|
187
345
|
cells.push('~');
|
|
188
346
|
continue;
|
|
@@ -195,7 +353,6 @@ function encodeTabular(headerPrefix, arr, fields, depth) {
|
|
|
195
353
|
if (typeof v === 'object') {
|
|
196
354
|
const ifs = inlineSchemas.get(f);
|
|
197
355
|
if (ifs && !Array.isArray(v)) {
|
|
198
|
-
// Inline schema: first row declares, subsequent use bare ^.
|
|
199
356
|
if (i === 0) {
|
|
200
357
|
const fmtIF = ifs.map(k => formatKey(k));
|
|
201
358
|
cells.push(`^{${fmtIF.join(',')}}`);
|
package/dist/generic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../src/generic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../src/generic.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blackwell-systems/gcf",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.2.0",
|
|
4
|
+
"description": "The AI-native wire format for structured data. 50-92% fewer tokens than JSON. 100% comprehension on every frontier model. Zero dependencies.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
package/src/decode_generic.ts
CHANGED
|
@@ -258,11 +258,68 @@ function findClosingBrace(s: string): number {
|
|
|
258
258
|
return -1;
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
+
function unflattenPaths(
|
|
262
|
+
pathColumns: Map<string, string[]>,
|
|
263
|
+
flatValues: Map<string, any>,
|
|
264
|
+
flatAbsent: Set<string>,
|
|
265
|
+
): Record<string, any> {
|
|
266
|
+
// Group by top-level parent.
|
|
267
|
+
const groups = new Map<string, string[]>();
|
|
268
|
+
const groupOrder: string[] = [];
|
|
269
|
+
for (const [fieldName, paths] of pathColumns) {
|
|
270
|
+
if (paths.length === 0) continue;
|
|
271
|
+
const top = paths[0];
|
|
272
|
+
if (!groups.has(top)) {
|
|
273
|
+
groups.set(top, []);
|
|
274
|
+
groupOrder.push(top);
|
|
275
|
+
}
|
|
276
|
+
groups.get(top)!.push(fieldName);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
const result: Record<string, any> = {};
|
|
280
|
+
|
|
281
|
+
for (const top of groupOrder) {
|
|
282
|
+
const fieldNames = groups.get(top)!;
|
|
283
|
+
const allAbsent = fieldNames.every(f => flatAbsent.has(f));
|
|
284
|
+
const allNull = fieldNames.every(f => {
|
|
285
|
+
if (flatAbsent.has(f)) return false;
|
|
286
|
+
const val = flatValues.get(f);
|
|
287
|
+
return val === null;
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
if (allAbsent) continue;
|
|
291
|
+
if (allNull) { result[top] = null; continue; }
|
|
292
|
+
|
|
293
|
+
for (const fieldName of fieldNames) {
|
|
294
|
+
if (flatAbsent.has(fieldName)) continue;
|
|
295
|
+
const paths = pathColumns.get(fieldName)!;
|
|
296
|
+
const val = flatValues.has(fieldName) ? flatValues.get(fieldName) : null;
|
|
297
|
+
|
|
298
|
+
let current = result;
|
|
299
|
+
for (let k = 0; k < paths.length - 1; k++) {
|
|
300
|
+
if (!(paths[k] in current)) current[paths[k]] = {};
|
|
301
|
+
current = current[paths[k]];
|
|
302
|
+
}
|
|
303
|
+
current[paths[paths.length - 1]] = val;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
return result;
|
|
308
|
+
}
|
|
309
|
+
|
|
261
310
|
function parseTabularBody(lines: string[], start: number, depth: number, fields: string[], expectedCount: number): [any[], number] {
|
|
262
311
|
const ind = ' '.repeat(depth);
|
|
263
312
|
const rows: any[] = [];
|
|
264
313
|
let i = start;
|
|
265
314
|
|
|
315
|
+
// Detect path columns: fields containing ">".
|
|
316
|
+
const pathColumnMap = new Map<string, string[]>();
|
|
317
|
+
for (const f of fields) {
|
|
318
|
+
if (f.includes('>')) {
|
|
319
|
+
pathColumnMap.set(f, f.split('>'));
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
266
323
|
// Track inline schemas and shared array schemas.
|
|
267
324
|
const inlineSchemas = new Map<string, string[]>();
|
|
268
325
|
const sharedArraySchemas = new Map<string, string[]>();
|
|
@@ -303,9 +360,24 @@ function parseTabularBody(lines: string[], start: number, depth: number, fields:
|
|
|
303
360
|
const inlineAttOrder: string[] = [];
|
|
304
361
|
const missingFields = new Set<string>();
|
|
305
362
|
|
|
363
|
+
// Collect path column values for unflattening.
|
|
364
|
+
const flatValues = new Map<string, any>();
|
|
365
|
+
const flatAbsent = new Set<string>();
|
|
366
|
+
|
|
306
367
|
for (let j = 0; j < fields.length; j++) {
|
|
307
368
|
const cellVal = vals[j];
|
|
308
369
|
|
|
370
|
+
// Path columns: store values for later unflattening.
|
|
371
|
+
if (pathColumnMap.has(fields[j])) {
|
|
372
|
+
const parsed = parseScalar(cellVal, true);
|
|
373
|
+
if (parsed === MISSING) {
|
|
374
|
+
flatAbsent.add(fields[j]);
|
|
375
|
+
} else {
|
|
376
|
+
flatValues.set(fields[j], parsed);
|
|
377
|
+
}
|
|
378
|
+
continue;
|
|
379
|
+
}
|
|
380
|
+
|
|
309
381
|
// Check for ^{fields} inline schema declaration.
|
|
310
382
|
if (cellVal.startsWith('^{') && cellVal.endsWith('}')) {
|
|
311
383
|
const schemaStr = cellVal.slice(1);
|
|
@@ -467,6 +539,14 @@ function parseTabularBody(lines: string[], start: number, depth: number, fields:
|
|
|
467
539
|
}
|
|
468
540
|
}
|
|
469
541
|
|
|
542
|
+
// Unflatten path columns into nested objects.
|
|
543
|
+
if (pathColumnMap.size > 0) {
|
|
544
|
+
const nested = unflattenPaths(pathColumnMap, flatValues, flatAbsent);
|
|
545
|
+
for (const [k, v] of Object.entries(nested)) {
|
|
546
|
+
row[k] = v;
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
|
|
470
550
|
rows.push(row);
|
|
471
551
|
if (expectedCount >= 0 && rows.length >= expectedCount) break;
|
|
472
552
|
}
|
package/src/generic.ts
CHANGED
|
@@ -141,21 +141,149 @@ function sharedArraySchema(arr: unknown[], fieldName: string): string[] | null {
|
|
|
141
141
|
return canonicalFields;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
+
// ── Nested object flattening (v3.2) ──────────────────────────────────────
|
|
145
|
+
|
|
146
|
+
interface FlatLeaf {
|
|
147
|
+
path: string; // ">" separated path (e.g. "customer>name")
|
|
148
|
+
keys: string[]; // key chain to traverse from row object
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function analyzeFlattenable(arr: unknown[], fieldName: string, parentPath: string): FlatLeaf[] | null {
|
|
152
|
+
let canonicalShape: Record<string, 'scalar' | 'nested'> | null = null;
|
|
153
|
+
|
|
154
|
+
for (const item of arr) {
|
|
155
|
+
const obj = item as Record<string, unknown>;
|
|
156
|
+
if (!(fieldName in obj) || obj[fieldName] === null || obj[fieldName] === undefined) continue;
|
|
157
|
+
const v = obj[fieldName];
|
|
158
|
+
if (typeof v !== 'object' || Array.isArray(v)) return null;
|
|
159
|
+
|
|
160
|
+
const keys = Object.keys(v as Record<string, unknown>);
|
|
161
|
+
|
|
162
|
+
if (!canonicalShape) {
|
|
163
|
+
canonicalShape = {};
|
|
164
|
+
for (const k of keys) {
|
|
165
|
+
if (k.includes('>')) return null;
|
|
166
|
+
const val = (v as Record<string, unknown>)[k];
|
|
167
|
+
if (val !== null && val !== undefined && typeof val === 'object' && !Array.isArray(val)) {
|
|
168
|
+
canonicalShape[k] = 'nested';
|
|
169
|
+
} else if (Array.isArray(val)) {
|
|
170
|
+
return null;
|
|
171
|
+
} else {
|
|
172
|
+
canonicalShape[k] = 'scalar';
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
} else {
|
|
176
|
+
if (keys.length !== Object.keys(canonicalShape).length) return null;
|
|
177
|
+
for (const k of keys) {
|
|
178
|
+
if (!(k in canonicalShape)) return null;
|
|
179
|
+
const val = (v as Record<string, unknown>)[k];
|
|
180
|
+
const expected = canonicalShape[k];
|
|
181
|
+
if (expected === 'scalar') {
|
|
182
|
+
if (val !== null && val !== undefined && typeof val === 'object') return null;
|
|
183
|
+
} else if (expected === 'nested') {
|
|
184
|
+
if (val !== null && val !== undefined) {
|
|
185
|
+
if (typeof val !== 'object' || Array.isArray(val)) return null;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
if (!canonicalShape) return null;
|
|
193
|
+
|
|
194
|
+
const currentPath = parentPath ? parentPath + '>' + fieldName : fieldName;
|
|
195
|
+
const parentKeys = parentPath ? [...parentPath.split('>'), fieldName] : [fieldName];
|
|
196
|
+
|
|
197
|
+
const leaves: FlatLeaf[] = [];
|
|
198
|
+
for (const k of Object.keys(canonicalShape)) {
|
|
199
|
+
if (canonicalShape[k] === 'scalar') {
|
|
200
|
+
leaves.push({ path: currentPath + '>' + k, keys: [...parentKeys, k] });
|
|
201
|
+
} else {
|
|
202
|
+
const subArr = arr.map(item => {
|
|
203
|
+
const obj = item as Record<string, unknown>;
|
|
204
|
+
if (!(fieldName in obj) || obj[fieldName] === null || obj[fieldName] === undefined) return {};
|
|
205
|
+
return obj[fieldName];
|
|
206
|
+
});
|
|
207
|
+
const subLeaves = analyzeFlattenable(subArr as unknown[], k, currentPath);
|
|
208
|
+
if (!subLeaves || subLeaves.length === 0) return null;
|
|
209
|
+
leaves.push(...subLeaves);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Guard: reject if any row has non-null object with all-null leaves.
|
|
214
|
+
if (leaves.length > 0) {
|
|
215
|
+
for (const item of arr) {
|
|
216
|
+
const obj = item as Record<string, unknown>;
|
|
217
|
+
if (!(fieldName in obj) || obj[fieldName] === null || obj[fieldName] === undefined) continue;
|
|
218
|
+
const allNull = leaves.every(leaf => {
|
|
219
|
+
const val = resolveKeyChain(item, leaf.keys);
|
|
220
|
+
return val.exists && val.value === null;
|
|
221
|
+
});
|
|
222
|
+
if (allNull) return null;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
return leaves;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
function resolveKeyChain(item: unknown, keys: string[]): { value: unknown; exists: boolean } {
|
|
230
|
+
if (keys.length === 0) return { value: undefined, exists: false };
|
|
231
|
+
const obj = item as Record<string, unknown>;
|
|
232
|
+
if (typeof obj !== 'object' || obj === null) return { value: undefined, exists: false };
|
|
233
|
+
if (!(keys[0] in obj)) return { value: undefined, exists: false };
|
|
234
|
+
let current: unknown = obj[keys[0]];
|
|
235
|
+
if (current === null || current === undefined) return { value: current, exists: true };
|
|
236
|
+
for (let i = 1; i < keys.length; i++) {
|
|
237
|
+
if (typeof current !== 'object' || current === null) return { value: undefined, exists: false };
|
|
238
|
+
const c = current as Record<string, unknown>;
|
|
239
|
+
if (!(keys[i] in c)) return { value: undefined, exists: false };
|
|
240
|
+
current = c[keys[i]];
|
|
241
|
+
}
|
|
242
|
+
return { value: current, exists: true };
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// ── End flattening helpers ───────────────────────────────────────────────
|
|
246
|
+
|
|
144
247
|
function encodeTabular(headerPrefix: string, arr: unknown[], fields: string[], depth: number): string {
|
|
145
248
|
const prefix = indent(depth);
|
|
146
249
|
|
|
147
|
-
//
|
|
250
|
+
// Phase 0: Analyze fields for flattening.
|
|
251
|
+
const flattenMap = new Map<string, FlatLeaf[]>();
|
|
252
|
+
for (const f of fields) {
|
|
253
|
+
const leaves = analyzeFlattenable(arr, f, '');
|
|
254
|
+
if (leaves && leaves.length > 0) {
|
|
255
|
+
flattenMap.set(f, leaves);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Build expanded column list.
|
|
260
|
+
type ColType = 'flat' | 'original';
|
|
261
|
+
interface FlatColumn { headerName: string; colType: ColType; field: string; keys: string[]; }
|
|
262
|
+
const columns: FlatColumn[] = [];
|
|
263
|
+
for (const f of fields) {
|
|
264
|
+
const leaves = flattenMap.get(f);
|
|
265
|
+
if (leaves) {
|
|
266
|
+
for (const leaf of leaves) {
|
|
267
|
+
columns.push({ headerName: formatKey(leaf.path), colType: 'flat', field: f, keys: leaf.keys });
|
|
268
|
+
}
|
|
269
|
+
} else {
|
|
270
|
+
columns.push({ headerName: formatKey(f), colType: 'original', field: f, keys: [] });
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// Pre-compute inline schemas and shared array schemas (skip flattened fields).
|
|
148
275
|
const inlineSchemas = new Map<string, string[]>();
|
|
149
276
|
const sharedArrSchemas = new Map<string, string[]>();
|
|
150
277
|
for (const f of fields) {
|
|
278
|
+
if (flattenMap.has(f)) continue;
|
|
151
279
|
const ifs = inlineSchemaFields(arr, f);
|
|
152
280
|
if (ifs) inlineSchemas.set(f, ifs);
|
|
153
281
|
const sas = sharedArraySchema(arr, f);
|
|
154
282
|
if (sas) sharedArrSchemas.set(f, sas);
|
|
155
283
|
}
|
|
156
284
|
|
|
157
|
-
const
|
|
158
|
-
let out = `${headerPrefix}[${arr.length}]{${
|
|
285
|
+
const headerFields = columns.map(c => c.headerName);
|
|
286
|
+
let out = `${headerPrefix}[${arr.length}]{${headerFields.join(',')}}\n`;
|
|
159
287
|
|
|
160
288
|
for (let i = 0; i < arr.length; i++) {
|
|
161
289
|
const obj = arr[i] as Record<string, unknown>;
|
|
@@ -163,14 +291,38 @@ function encodeTabular(headerPrefix: string, arr: unknown[], fields: string[], d
|
|
|
163
291
|
const attachments: { name: string; value: unknown; inline: boolean; inlineFields?: string[] }[] = [];
|
|
164
292
|
let rowHasAttachment = false;
|
|
165
293
|
|
|
166
|
-
for (const
|
|
294
|
+
for (const col of columns) {
|
|
295
|
+
if (col.colType === 'flat') {
|
|
296
|
+
// Resolve value via key chain.
|
|
297
|
+
if (!(col.keys[0] in obj)) {
|
|
298
|
+
cells.push('~');
|
|
299
|
+
} else {
|
|
300
|
+
// Check if top-level field is null.
|
|
301
|
+
const topVal = obj[col.keys[0]];
|
|
302
|
+
if (topVal === null || topVal === undefined) {
|
|
303
|
+
cells.push(topVal === null ? '-' : '~');
|
|
304
|
+
} else {
|
|
305
|
+
const resolved = resolveKeyChain(obj, col.keys);
|
|
306
|
+
if (!resolved.exists) {
|
|
307
|
+
cells.push('~');
|
|
308
|
+
} else if (resolved.value === null || resolved.value === undefined) {
|
|
309
|
+
cells.push('-');
|
|
310
|
+
} else {
|
|
311
|
+
cells.push(formatScalar(resolved.value, 0x7c));
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Original (non-flattened) field.
|
|
319
|
+
const f = col.field;
|
|
167
320
|
if (!(f in obj)) { cells.push('~'); continue; }
|
|
168
321
|
const v = obj[f];
|
|
169
322
|
if (v === null || v === undefined) { cells.push('-'); continue; }
|
|
170
323
|
if (typeof v === 'object') {
|
|
171
324
|
const ifs = inlineSchemas.get(f);
|
|
172
325
|
if (ifs && !Array.isArray(v)) {
|
|
173
|
-
// Inline schema: first row declares, subsequent use bare ^.
|
|
174
326
|
if (i === 0) {
|
|
175
327
|
const fmtIF = ifs.map(k => formatKey(k));
|
|
176
328
|
cells.push(`^{${fmtIF.join(',')}}`);
|
package/dist/cjs/browser.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export type { Symbol, Edge, Payload, DeltaPayload, Components } from './types.js';
|
|
2
|
-
export { KIND_ABBREV, KIND_EXPAND } from './constants.js';
|
|
3
|
-
export { encode } from './encode.js';
|
|
4
|
-
export { decode } from './decode.js';
|
|
5
|
-
export { encodeGeneric } from './generic.js';
|
|
6
|
-
export { decodeGeneric } from './decode_generic.js';
|
|
7
|
-
export { formatScalar, formatKey, parseScalar, needsQuote, quoteString } from './scalar.js';
|
|
8
|
-
export { StreamEncoder, type StreamWriter, type StreamOptions } from './stream.js';
|
|
9
|
-
export { GenericStreamEncoder } from './stream_generic.js';
|
package/dist/cjs/browser.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GenericStreamEncoder = exports.StreamEncoder = exports.quoteString = exports.needsQuote = exports.parseScalar = exports.formatKey = exports.formatScalar = exports.decodeGeneric = exports.encodeGeneric = exports.decode = exports.encode = exports.KIND_EXPAND = exports.KIND_ABBREV = void 0;
|
|
4
|
-
var constants_js_1 = require("./constants.js");
|
|
5
|
-
Object.defineProperty(exports, "KIND_ABBREV", { enumerable: true, get: function () { return constants_js_1.KIND_ABBREV; } });
|
|
6
|
-
Object.defineProperty(exports, "KIND_EXPAND", { enumerable: true, get: function () { return constants_js_1.KIND_EXPAND; } });
|
|
7
|
-
var encode_js_1 = require("./encode.js");
|
|
8
|
-
Object.defineProperty(exports, "encode", { enumerable: true, get: function () { return encode_js_1.encode; } });
|
|
9
|
-
var decode_js_1 = require("./decode.js");
|
|
10
|
-
Object.defineProperty(exports, "decode", { enumerable: true, get: function () { return decode_js_1.decode; } });
|
|
11
|
-
var generic_js_1 = require("./generic.js");
|
|
12
|
-
Object.defineProperty(exports, "encodeGeneric", { enumerable: true, get: function () { return generic_js_1.encodeGeneric; } });
|
|
13
|
-
var decode_generic_js_1 = require("./decode_generic.js");
|
|
14
|
-
Object.defineProperty(exports, "decodeGeneric", { enumerable: true, get: function () { return decode_generic_js_1.decodeGeneric; } });
|
|
15
|
-
var scalar_js_1 = require("./scalar.js");
|
|
16
|
-
Object.defineProperty(exports, "formatScalar", { enumerable: true, get: function () { return scalar_js_1.formatScalar; } });
|
|
17
|
-
Object.defineProperty(exports, "formatKey", { enumerable: true, get: function () { return scalar_js_1.formatKey; } });
|
|
18
|
-
Object.defineProperty(exports, "parseScalar", { enumerable: true, get: function () { return scalar_js_1.parseScalar; } });
|
|
19
|
-
Object.defineProperty(exports, "needsQuote", { enumerable: true, get: function () { return scalar_js_1.needsQuote; } });
|
|
20
|
-
Object.defineProperty(exports, "quoteString", { enumerable: true, get: function () { return scalar_js_1.quoteString; } });
|
|
21
|
-
var stream_js_1 = require("./stream.js");
|
|
22
|
-
Object.defineProperty(exports, "StreamEncoder", { enumerable: true, get: function () { return stream_js_1.StreamEncoder; } });
|
|
23
|
-
var stream_generic_js_1 = require("./stream_generic.js");
|
|
24
|
-
Object.defineProperty(exports, "GenericStreamEncoder", { enumerable: true, get: function () { return stream_generic_js_1.GenericStreamEncoder; } });
|
|
25
|
-
//# sourceMappingURL=browser.js.map
|
package/dist/cjs/browser.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":";;;AAEA,+CAA0D;AAAjD,2GAAA,WAAW,OAAA;AAAE,2GAAA,WAAW,OAAA;AACjC,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AACf,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AACf,2CAA6C;AAApC,2GAAA,aAAa,OAAA;AACtB,yDAAoD;AAA3C,kHAAA,aAAa,OAAA;AACtB,yCAA4F;AAAnF,yGAAA,YAAY,OAAA;AAAE,sGAAA,SAAS,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,wGAAA,WAAW,OAAA;AACtE,yCAAmF;AAA1E,0GAAA,aAAa,OAAA;AACtB,yDAA2D;AAAlD,yHAAA,oBAAoB,OAAA"}
|