vastgrid-js 0.0.0-stage → 0.2.1

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 (78) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +211 -2
  3. package/dist/aggregate.d.ts +45 -0
  4. package/dist/aggregate.d.ts.map +1 -0
  5. package/dist/aggregate.js +305 -0
  6. package/dist/aggregate.js.map +1 -0
  7. package/dist/arrow.d.ts +7 -0
  8. package/dist/arrow.d.ts.map +1 -0
  9. package/dist/arrow.js +25 -0
  10. package/dist/arrow.js.map +1 -0
  11. package/dist/engine.d.ts +40 -0
  12. package/dist/engine.d.ts.map +1 -0
  13. package/dist/engine.js +1022 -0
  14. package/dist/engine.js.map +1 -0
  15. package/dist/evaluate.d.ts +37 -0
  16. package/dist/evaluate.d.ts.map +1 -0
  17. package/dist/evaluate.js +774 -0
  18. package/dist/evaluate.js.map +1 -0
  19. package/dist/export.d.ts +23 -0
  20. package/dist/export.d.ts.map +1 -0
  21. package/dist/export.js +48 -0
  22. package/dist/export.js.map +1 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +2 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/lazy.d.ts +65 -0
  28. package/dist/lazy.d.ts.map +1 -0
  29. package/dist/lazy.js +177 -0
  30. package/dist/lazy.js.map +1 -0
  31. package/dist/numbers.d.ts +20 -0
  32. package/dist/numbers.d.ts.map +1 -0
  33. package/dist/numbers.js +129 -0
  34. package/dist/numbers.js.map +1 -0
  35. package/dist/order.d.ts +67 -0
  36. package/dist/order.d.ts.map +1 -0
  37. package/dist/order.js +561 -0
  38. package/dist/order.js.map +1 -0
  39. package/dist/parquet.d.ts +38 -0
  40. package/dist/parquet.d.ts.map +1 -0
  41. package/dist/parquet.js +673 -0
  42. package/dist/parquet.js.map +1 -0
  43. package/dist/plan.d.ts +37 -0
  44. package/dist/plan.d.ts.map +1 -0
  45. package/dist/plan.js +51 -0
  46. package/dist/plan.js.map +1 -0
  47. package/dist/summary.d.ts +37 -0
  48. package/dist/summary.d.ts.map +1 -0
  49. package/dist/summary.js +175 -0
  50. package/dist/summary.js.map +1 -0
  51. package/dist/table.d.ts +172 -0
  52. package/dist/table.d.ts.map +1 -0
  53. package/dist/table.js +154 -0
  54. package/dist/table.js.map +1 -0
  55. package/dist/text.d.ts +18 -0
  56. package/dist/text.d.ts.map +1 -0
  57. package/dist/text.js +1204 -0
  58. package/dist/text.js.map +1 -0
  59. package/dist/workbook.d.ts +6 -0
  60. package/dist/workbook.d.ts.map +1 -0
  61. package/dist/workbook.js +35 -0
  62. package/dist/workbook.js.map +1 -0
  63. package/package.json +46 -4
  64. package/src/aggregate.ts +358 -0
  65. package/src/arrow.ts +24 -0
  66. package/src/engine.ts +1163 -0
  67. package/src/evaluate.ts +764 -0
  68. package/src/export.ts +73 -0
  69. package/src/index.ts +2 -0
  70. package/src/lazy.ts +185 -0
  71. package/src/numbers.ts +128 -0
  72. package/src/order.ts +594 -0
  73. package/src/parquet.ts +801 -0
  74. package/src/plan.ts +99 -0
  75. package/src/summary.ts +180 -0
  76. package/src/table.ts +297 -0
  77. package/src/text.ts +1285 -0
  78. package/src/workbook.ts +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../src/evaluate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Exporting views (docs/spec.md §8.2) as the bytes of a file, which the engine answers as `data`: CSV, TSV and
3
+ * JSON by `vastgrid-spec/export` and workbooks by `vastgrid-spec/xlsx`, as the DuckDB engine writes them. The rows
4
+ * go to the writer in batches, each written as its bytes, so that no text holds the whole file. Loaded with the
5
+ * first export.
6
+ */
7
+ import type { Column, JsonValue } from "vastgrid-spec";
8
+ /** The formats that this engine writes; Parquet needs a writer that it does not have. */
9
+ export type MemoryExportFormat = "csv" | "tsv" | "json" | "xlsx";
10
+ export interface ExportJob {
11
+ format: MemoryExportFormat;
12
+ columns: Column[];
13
+ headers: string[];
14
+ numberFormats: (string | null)[] | null;
15
+ rowCount: number;
16
+ /** The values of the view's row at a position, in the order of `columns`. */
17
+ row(position: number): JsonValue[];
18
+ /** Called between batches: lets other messages in, and throws when the export was cancelled. */
19
+ pause(): Promise<void>;
20
+ }
21
+ /** Writes the view's rows as a file of `job.format`, and gives its bytes. */
22
+ export declare function writeExport(job: ExportJob): Promise<Uint8Array>;
23
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAIvD,yFAAyF;AACzF,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAKjE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC;IACnC,gGAAgG;IAChG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AA8BD,6EAA6E;AAC7E,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAerE"}
package/dist/export.js ADDED
@@ -0,0 +1,48 @@
1
+ import { writeDelimited, writeJson } from "vastgrid-spec/export";
2
+ import { checkXlsxSize, webDeflate, writeXlsx } from "vastgrid-spec/xlsx";
3
+ /** Rows written at a time. */
4
+ const BATCH = 4_096;
5
+ /** The rows of the view in batches. */
6
+ async function* batches(job) {
7
+ for (let start = 0; start < job.rowCount; start += BATCH) {
8
+ await job.pause();
9
+ const end = Math.min(job.rowCount, start + BATCH);
10
+ const batch = new Array(end - start);
11
+ for (let position = start; position < end; position++)
12
+ batch[position - start] = job.row(position);
13
+ yield batch;
14
+ }
15
+ }
16
+ /** The file's bytes in chunks, as they are made. */
17
+ function chunks(job) {
18
+ const { format, columns, headers } = job;
19
+ if (format === "json")
20
+ return writeJson(columns, batches(job));
21
+ if (format !== "xlsx")
22
+ return writeDelimited(columns, headers, batches(job), format === "tsv" ? "\t" : ",");
23
+ const deflate = webDeflate();
24
+ return writeXlsx(columns.map((column, index) => ({
25
+ name: headers[index],
26
+ type: column.type,
27
+ numberFormat: job.numberFormats?.[index] ?? null,
28
+ })), batches(job), deflate ? { deflate } : {});
29
+ }
30
+ /** Writes the view's rows as a file of `job.format`, and gives its bytes. */
31
+ export async function writeExport(job) {
32
+ if (job.format === "xlsx")
33
+ checkXlsxSize(job.rowCount, job.columns.length);
34
+ const parts = [];
35
+ let size = 0;
36
+ for await (const chunk of chunks(job)) {
37
+ parts.push(chunk);
38
+ size += chunk.length;
39
+ }
40
+ const bytes = new Uint8Array(size);
41
+ let at = 0;
42
+ for (const part of parts) {
43
+ bytes.set(part, at);
44
+ at += part.length;
45
+ }
46
+ return bytes;
47
+ }
48
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { MEMORY_CAPABILITIES, type MemoryEngine, type MemoryEngineOptions, memoryEngine } from "./engine.js";
2
+ export type { ArrowTable, FileTable, MemoryTable, TextFile, TextFormat } from "./table.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7G,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { MEMORY_CAPABILITIES, memoryEngine } from "./engine.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA+C,YAAY,EAAE,MAAM,aAAa,CAAC"}
package/dist/lazy.d.ts ADDED
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Columns of a file that are read when requests need them: a Parquet file's, and a text file's whose columns would
3
+ * take more memory than `maxBytes`. Rows are read by the parts of the file that hold them (a Parquet file's row
4
+ * groups, a text file's blocks of rows); a column is read whole when a request goes through every row of it, within
5
+ * `maxBytes`, and stays so until a request needs its room while none reads it.
6
+ */
7
+ import type { Column, JsonValue } from "vastgrid-spec";
8
+ import { type CheckedTable, type Vector } from "./table.js";
9
+ export declare abstract class FileColumns {
10
+ readonly columns: Column[];
11
+ readonly rowCount: number;
12
+ private readonly maxBytes;
13
+ /** Each column by row: `unread` until it is read whole. */
14
+ readonly vectors: Vector[];
15
+ /** Calls the engine when a column read whole is forgotten, so that it forgets what it made of it. */
16
+ forgotten: (index: number) => void;
17
+ /** The columns being read whole or read, which every request that needs them waits for. */
18
+ private readonly reading;
19
+ /** The columns read whole, which `vectors` hold, the least recently used first. */
20
+ private readonly whole;
21
+ /** How many requests read each column whole now: those that no request reads may be forgotten. */
22
+ private readonly holds;
23
+ /** The bytes that the columns read whole and being read take. */
24
+ private used;
25
+ constructor(columns: Column[], rowCount: number, maxBytes: number);
26
+ /** The table that the engine reads: the columns' values are read when a request needs them. */
27
+ checked(): CheckedTable;
28
+ /** The part of the file that holds a row. */
29
+ protected abstract partOf(row: number): number;
30
+ /** The memory that a column read whole takes, `Infinity` for a column that cannot be. */
31
+ protected abstract sizeOf(index: number): number;
32
+ /** Reads columns whole, calling `pause` between parts of the file, and gives them by row. */
33
+ protected abstract readWhole(indexes: number[], pause: () => Promise<void>): Promise<Vector[]>;
34
+ /** The values of a column at rows, in their order, of the parts of the file that hold them. */
35
+ protected abstract readCells(index: number, rows: ArrayLike<number>): Promise<JsonValue[]>;
36
+ /** Forgets the parts read. */
37
+ abstract close(): void;
38
+ /**
39
+ * Readies the columns of rows that a request is about to read. Rows in more than `spread` parts, as those of a
40
+ * sorted or filtered view are, read their columns whole while `maxBytes` leaves room for them, so that the view's
41
+ * other rows are read from memory rather than from every part again.
42
+ */
43
+ prepare(indexes: Iterable<number>, rows: ArrayLike<number>, pause: () => Promise<void>): Promise<void>;
44
+ /** The parts of the file that the rows of a request may lie in before `prepare` reads their columns whole. */
45
+ protected get spread(): number;
46
+ /** The values of a column at rows, in their order: of the column read whole, or of the parts that hold them. */
47
+ cells(index: number, rows: ArrayLike<number>): Promise<JsonValue[]>;
48
+ /**
49
+ * Reads columns whole, calling `pause` between parts of the file; `vectors` then hold them until the request
50
+ * calls the function given back. Columns read whole stay so while `maxBytes` has room for them: those that no
51
+ * request reads are forgotten, the least recently used first, when a request needs their room. Fails with a
52
+ * `TableProblem` at `/maxBytes` when the columns that requests read whole would take more than `maxBytes`.
53
+ */
54
+ read(indexes: Iterable<number>, pause: () => Promise<void>): Promise<() => void>;
55
+ /** Marks a column read whole as the most recently used. */
56
+ private touch;
57
+ /** The bytes of the columns read whole that no request reads now. */
58
+ private idle;
59
+ /**
60
+ * Forgets columns read whole that no request reads, the least recently used first, until `maxBytes` has room
61
+ * for `bytes` more; forgets none when it would not have room even so. Gives whether it has room.
62
+ */
63
+ private makeRoom;
64
+ }
65
+ //# sourceMappingURL=lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,KAAK,YAAY,EAAgB,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAY1E,8BAAsB,WAAW;IAe7B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAhB3B,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,qGAAqG;IACrG,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAY;IAC9C,2FAA2F;IAC3F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,kGAAkG;IAClG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,iEAAiE;IACjE,OAAO,CAAC,IAAI,CAAK;IAEjB,YACW,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,EACR,QAAQ,EAAE,MAAM,EAGlC;IAED,+FAA+F;IAC/F,OAAO,IAAI,YAAY,CAEtB;IAED,6CAA6C;IAC7C,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/C,yFAAyF;IACzF,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACjD,6FAA6F;IAC7F,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/F,+FAA+F;IAC/F,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3F,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC;IAEvB;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAc3G;IAED,8GAA8G;IAC9G,SAAS,KAAK,MAAM,IAAI,MAAM,CAE7B;IAED,gHAAgH;IAC1G,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAOxE;IAED;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CA8CrF;IAED,2DAA2D;IAC3D,OAAO,CAAC,KAAK;IAIb,qEAAqE;IACrE,OAAO,CAAC,IAAI;IAMZ;;;OAGG;IACH,OAAO,CAAC,QAAQ;CAiBjB"}
package/dist/lazy.js ADDED
@@ -0,0 +1,177 @@
1
+ import { TableProblem } from "./table.js";
2
+ /** A column that is not read whole yet: requests read it by `FileColumns.cells`, or read it whole first. */
3
+ function unread(length, name) {
4
+ return {
5
+ length,
6
+ at() {
7
+ throw new Error(`The column "${name}" of the file is read before its values are.`);
8
+ },
9
+ };
10
+ }
11
+ export class FileColumns {
12
+ columns;
13
+ rowCount;
14
+ maxBytes;
15
+ /** Each column by row: `unread` until it is read whole. */
16
+ vectors;
17
+ /** Calls the engine when a column read whole is forgotten, so that it forgets what it made of it. */
18
+ forgotten = () => { };
19
+ /** The columns being read whole or read, which every request that needs them waits for. */
20
+ reading = new Map();
21
+ /** The columns read whole, which `vectors` hold, the least recently used first. */
22
+ whole = new Set();
23
+ /** How many requests read each column whole now: those that no request reads may be forgotten. */
24
+ holds = new Map();
25
+ /** The bytes that the columns read whole and being read take. */
26
+ used = 0;
27
+ constructor(columns, rowCount, maxBytes) {
28
+ this.columns = columns;
29
+ this.rowCount = rowCount;
30
+ this.maxBytes = maxBytes;
31
+ this.vectors = columns.map((column) => unread(rowCount, column.name));
32
+ }
33
+ /** The table that the engine reads: the columns' values are read when a request needs them. */
34
+ checked() {
35
+ return { columns: this.columns, rows: null, vectors: this.vectors, rowCount: this.rowCount, reader: this };
36
+ }
37
+ /**
38
+ * Readies the columns of rows that a request is about to read. Rows in more than `spread` parts, as those of a
39
+ * sorted or filtered view are, read their columns whole while `maxBytes` leaves room for them, so that the view's
40
+ * other rows are read from memory rather than from every part again.
41
+ */
42
+ async prepare(indexes, rows, pause) {
43
+ const parts = new Set();
44
+ for (let at = 0; at < rows.length && parts.size <= this.spread; at++)
45
+ parts.add(this.partOf(rows[at]));
46
+ if (parts.size <= this.spread)
47
+ return;
48
+ let room = this.maxBytes - this.used;
49
+ const fitting = [];
50
+ for (const index of new Set(indexes)) {
51
+ if (this.reading.has(index))
52
+ continue;
53
+ const size = this.sizeOf(index);
54
+ if (size > room)
55
+ continue;
56
+ fitting.push(index);
57
+ room -= size;
58
+ }
59
+ if (fitting.length > 0)
60
+ (await this.read(fitting, pause))();
61
+ }
62
+ /** The parts of the file that the rows of a request may lie in before `prepare` reads their columns whole. */
63
+ get spread() {
64
+ return 2;
65
+ }
66
+ /** The values of a column at rows, in their order: of the column read whole, or of the parts that hold them. */
67
+ async cells(index, rows) {
68
+ // A column that another request reads whole is read from memory once it is, or from its parts if that fails.
69
+ await this.reading.get(index)?.catch(() => undefined);
70
+ if (!this.whole.has(index))
71
+ return this.readCells(index, rows);
72
+ this.touch(index);
73
+ const vector = this.vectors[index];
74
+ return Array.from(rows, (row) => vector.at(row));
75
+ }
76
+ /**
77
+ * Reads columns whole, calling `pause` between parts of the file; `vectors` then hold them until the request
78
+ * calls the function given back. Columns read whole stay so while `maxBytes` has room for them: those that no
79
+ * request reads are forgotten, the least recently used first, when a request needs their room. Fails with a
80
+ * `TableProblem` at `/maxBytes` when the columns that requests read whole would take more than `maxBytes`.
81
+ */
82
+ async read(indexes, pause) {
83
+ const wanted = [...new Set(indexes)];
84
+ for (const index of wanted)
85
+ this.holds.set(index, (this.holds.get(index) ?? 0) + 1);
86
+ let held = true;
87
+ const release = () => {
88
+ if (!held)
89
+ return;
90
+ held = false;
91
+ for (const index of wanted) {
92
+ const count = this.holds.get(index) - 1;
93
+ if (count === 0)
94
+ this.holds.delete(index);
95
+ else
96
+ this.holds.set(index, count);
97
+ }
98
+ };
99
+ try {
100
+ const missing = wanted.filter((index) => !this.reading.has(index));
101
+ if (missing.length > 0) {
102
+ const total = missing.reduce((sum, index) => sum + this.sizeOf(index), 0);
103
+ if (!this.makeRoom(total)) {
104
+ const names = missing.map((index) => `"${this.columns[index].name}"`).join(", ");
105
+ throw new TableProblem("/maxBytes", Number.isFinite(total)
106
+ ? `Reading ${names} whole would take ${megabytes(this.used - this.idle() + total)} in memory, more than maxBytes (${megabytes(this.maxBytes)}).`
107
+ : `${names} cannot be read whole: a column's text is more than 4 GiB.`);
108
+ }
109
+ this.used += total;
110
+ const reading = this.readWhole(missing, pause).then((vectors) => {
111
+ missing.forEach((index, at) => {
112
+ this.vectors[index] = vectors[at];
113
+ this.whole.add(index);
114
+ });
115
+ });
116
+ for (const index of missing)
117
+ this.reading.set(index, reading);
118
+ reading.catch(() => {
119
+ for (const index of missing)
120
+ if (this.reading.get(index) === reading)
121
+ this.reading.delete(index);
122
+ this.used -= total;
123
+ });
124
+ }
125
+ await Promise.all(wanted.map((index) => this.reading.get(index)));
126
+ for (const index of wanted)
127
+ this.touch(index);
128
+ return release;
129
+ }
130
+ catch (error) {
131
+ release();
132
+ throw error;
133
+ }
134
+ }
135
+ /** Marks a column read whole as the most recently used. */
136
+ touch(index) {
137
+ if (this.whole.delete(index))
138
+ this.whole.add(index);
139
+ }
140
+ /** The bytes of the columns read whole that no request reads now. */
141
+ idle() {
142
+ let bytes = 0;
143
+ for (const index of this.whole)
144
+ if (!this.holds.has(index))
145
+ bytes += this.sizeOf(index);
146
+ return bytes;
147
+ }
148
+ /**
149
+ * Forgets columns read whole that no request reads, the least recently used first, until `maxBytes` has room
150
+ * for `bytes` more; forgets none when it would not have room even so. Gives whether it has room.
151
+ */
152
+ makeRoom(bytes) {
153
+ let over = this.used + bytes - this.maxBytes;
154
+ if (over <= 0)
155
+ return true;
156
+ if (this.idle() < over)
157
+ return false;
158
+ for (const index of [...this.whole]) {
159
+ if (over <= 0)
160
+ break;
161
+ if (this.holds.has(index))
162
+ continue;
163
+ const size = this.sizeOf(index);
164
+ this.whole.delete(index);
165
+ this.reading.delete(index);
166
+ this.vectors[index] = unread(this.rowCount, this.columns[index].name);
167
+ this.used -= size;
168
+ over -= size;
169
+ this.forgotten(index);
170
+ }
171
+ return true;
172
+ }
173
+ }
174
+ function megabytes(bytes) {
175
+ return `${Math.ceil(bytes / 2 ** 20)} MiB`;
176
+ }
177
+ //# sourceMappingURL=lazy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The numbers that hold the values of typed columns (`Vector.numbers`): of tables given as Arrow or as text files,
3
+ * read by the modules of those tables and loaded with them.
4
+ */
5
+ import { type Column } from "vastgrid-spec";
6
+ import type { ColumnNumbers } from "vastgrid-spec/columns";
7
+ import { type NumberWriter } from "./order.js";
8
+ /**
9
+ * The first row of a column's numbers (`Vector.numbers`) whose value is not a value of the column's type
10
+ * (§2.2), as `valueChecker` would find it in the value's JSON, or −1 when every value is: integers, bigints and
11
+ * floats always are; dates and timestamps are within the years 0001 to 9999, times within a day, and decimals
12
+ * of no more digits than their precision.
13
+ */
14
+ export declare function firstInvalid(column: Column, numbers: ColumnNumbers, validity: Uint8Array | null): number;
15
+ /**
16
+ * How the numbers that hold a column's values (`Vector.numbers`) become the words that `codecOf` writes for the
17
+ * same values as JSON, without making the JSON; null for a column whose numbers are not written this way.
18
+ */
19
+ export declare function numberWriter(column: Column, numbers: ColumnNumbers): NumberWriter | null;
20
+ //# sourceMappingURL=numbers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../src/numbers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,MAAM,EAAkC,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAwB,KAAK,YAAY,EAAwC,MAAM,YAAY,CAAC;AAO3G;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,CAqCxG;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,YAAY,GAAG,IAAI,CAiExF"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * The numbers that hold the values of typed columns (`Vector.numbers`): of tables given as Arrow or as text files,
3
+ * read by the modules of those tables and loaded with them.
4
+ */
5
+ import { daysFromCivil, UNIT_PER_SECOND } from "vastgrid-spec";
6
+ import { HIGH, int32Word, LOW, SIGN, TWO_32, writeFloat, writeInt64 } from "./order.js";
7
+ /** The first and the last day of the years 0001 to 9999, which dates and timestamps are written for (§2.2). */
8
+ const FIRST_DAY = daysFromCivil(1, 1, 1);
9
+ const LAST_DAY = daysFromCivil(9999, 12, 31);
10
+ const DAY_SECONDS = 86400n;
11
+ /**
12
+ * The first row of a column's numbers (`Vector.numbers`) whose value is not a value of the column's type
13
+ * (§2.2), as `valueChecker` would find it in the value's JSON, or −1 when every value is: integers, bigints and
14
+ * floats always are; dates and timestamps are within the years 0001 to 9999, times within a day, and decimals
15
+ * of no more digits than their precision.
16
+ */
17
+ export function firstInvalid(column, numbers, validity) {
18
+ const length = numbers.length;
19
+ const valid = (row) => validity === null || ((validity[row >> 3] >> (row & 7)) & 1) === 1;
20
+ let low;
21
+ let high;
22
+ switch (column.type) {
23
+ case "date": {
24
+ const days = numbers;
25
+ for (let row = 0; row < length; row++) {
26
+ if ((days[row] < FIRST_DAY || days[row] > LAST_DAY) && valid(row))
27
+ return row;
28
+ }
29
+ return -1;
30
+ }
31
+ case "decimal":
32
+ high = 10n ** BigInt(column.precision ?? 38) - 1n;
33
+ low = -high;
34
+ break;
35
+ case "time":
36
+ low = 0n;
37
+ high = DAY_SECONDS * 1000000n - 1n;
38
+ break;
39
+ case "timestamp":
40
+ case "timestamptz": {
41
+ const perSecond = UNIT_PER_SECOND[column.type === "timestamp" ? (column.unit ?? "us") : "us"];
42
+ low = BigInt(FIRST_DAY) * DAY_SECONDS * perSecond;
43
+ high = (BigInt(LAST_DAY) + 1n) * DAY_SECONDS * perSecond - 1n;
44
+ break;
45
+ }
46
+ default:
47
+ return -1;
48
+ }
49
+ const counts = numbers;
50
+ for (let row = 0; row < length; row++) {
51
+ const count = counts[row];
52
+ if ((count < low || count > high) && valid(row))
53
+ return row;
54
+ }
55
+ return -1;
56
+ }
57
+ /**
58
+ * How the numbers that hold a column's values (`Vector.numbers`) become the words that `codecOf` writes for the
59
+ * same values as JSON, without making the JSON; null for a column whose numbers are not written this way.
60
+ */
61
+ export function numberWriter(column, numbers) {
62
+ switch (column.type) {
63
+ case "integer":
64
+ case "date": {
65
+ const integers = numbers;
66
+ return (row, words, at) => {
67
+ words[0][at] = int32Word(integers[row]);
68
+ };
69
+ }
70
+ case "float": {
71
+ const floats = numbers;
72
+ return (row, words, at) => writeFloat(floats[row], words[0], words[1], at);
73
+ }
74
+ case "bigint":
75
+ case "decimal":
76
+ case "time": {
77
+ // Signed 64-bit integers (decimals of up to 18 digits, unscaled; times in microseconds), read as halves.
78
+ const halves = new Uint32Array(numbers.buffer, numbers.byteOffset, numbers.length * 2);
79
+ return (row, words, at) => {
80
+ words[0][at] = (halves[row * 2 + HIGH] ^ SIGN) >>> 0;
81
+ words[1][at] = halves[row * 2 + LOW];
82
+ };
83
+ }
84
+ case "timestamp":
85
+ case "timestamptz": {
86
+ // Seconds since 1970-01-01 and the nanoseconds of the second, as codecOf writes them, from counts of the
87
+ // unit: in numbers while the counts are safe integers, and in BigInt beyond.
88
+ const counts = numbers;
89
+ const halves = new Uint32Array(numbers.buffer, numbers.byteOffset, numbers.length * 2);
90
+ const big = UNIT_PER_SECOND[column.type === "timestamp" ? (column.unit ?? "us") : "us"];
91
+ const perSecond = Number(big);
92
+ const nanos = 1_000_000_000 / perSecond;
93
+ return (row, words, at) => {
94
+ const high = halves[row * 2 + HIGH] | 0;
95
+ let seconds;
96
+ let rest;
97
+ if (high >= -0x20_0000 && high < 0x20_0000) {
98
+ const count = high * TWO_32 + halves[row * 2 + LOW];
99
+ seconds = Math.floor(count / perSecond);
100
+ rest = count - seconds * perSecond;
101
+ if (rest < 0) {
102
+ seconds--;
103
+ rest += perSecond;
104
+ }
105
+ else if (rest >= perSecond) {
106
+ seconds++;
107
+ rest -= perSecond;
108
+ }
109
+ }
110
+ else {
111
+ const count = counts[row];
112
+ let whole = count / big;
113
+ let part = count % big;
114
+ if (part < 0n) {
115
+ whole--;
116
+ part += big;
117
+ }
118
+ seconds = Number(whole);
119
+ rest = Number(part);
120
+ }
121
+ writeInt64(seconds, words[0], words[1], at);
122
+ words[2][at] = rest * nanos;
123
+ };
124
+ }
125
+ default:
126
+ return null;
127
+ }
128
+ }
129
+ //# sourceMappingURL=numbers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbers.js","sourceRoot":"","sources":["../src/numbers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAe,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAqB,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3G,+GAA+G;AAC/G,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C,MAAM,WAAW,GAAG,MAAO,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,OAAsB,EAAE,QAA2B;IAC9F,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAClG,IAAI,GAAW,CAAC;IAChB,IAAI,IAAY,CAAC;IACjB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,OAAqB,CAAC;YACnC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC;oBAAE,OAAO,GAAG,CAAC;YAChF,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,KAAK,SAAS;YACZ,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;YAClD,GAAG,GAAG,CAAC,IAAI,CAAC;YACZ,MAAM;QACR,KAAK,MAAM;YACT,GAAG,GAAG,EAAE,CAAC;YACT,IAAI,GAAG,WAAW,GAAG,QAAU,GAAG,EAAE,CAAC;YACrC,MAAM;QACR,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9F,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC;YAClD,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,WAAW,GAAG,SAAS,GAAG,EAAE,CAAC;YAC9D,MAAM;QACR,CAAC;QACD;YACE,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,OAAwB,CAAC;IACxC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,OAAsB;IACjE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,SAAS,CAAC;QACf,KAAK,MAAM,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,OAAqB,CAAC;YACvC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;gBACxB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC;QACJ,CAAC;QACD,KAAK,OAAO,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,OAAsC,CAAC;YACtD,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,MAAM,EAAE,CAAC;YACZ,yGAAyG;YACzG,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvF,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;gBACxB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrD,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACvC,CAAC,CAAC;QACJ,CAAC;QACD,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa,EAAE,CAAC;YACnB,yGAAyG;YACzG,6EAA6E;YAC7E,MAAM,MAAM,GAAG,OAAwB,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvF,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,aAAa,GAAG,SAAS,CAAC;YACxC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;gBACxB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,OAAe,CAAC;gBACpB,IAAI,IAAY,CAAC;gBACjB,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;oBAC3C,MAAM,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;oBACpD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;oBACxC,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;oBACnC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;wBACb,OAAO,EAAE,CAAC;wBACV,IAAI,IAAI,SAAS,CAAC;oBACpB,CAAC;yBAAM,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;wBAC7B,OAAO,EAAE,CAAC;wBACV,IAAI,IAAI,SAAS,CAAC;oBACpB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;oBACxB,IAAI,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC;oBACvB,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;wBACd,KAAK,EAAE,CAAC;wBACR,IAAI,IAAI,GAAG,CAAC;oBACd,CAAC;oBACD,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBACxB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC;gBACD,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5C,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;YAC9B,CAAC,CAAC;QACJ,CAAC;QACD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}