@lix-js/sdk 0.6.0-preview.5 → 0.6.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.
- package/README.md +76 -4
- package/dist/errors.d.ts +7 -0
- package/dist/errors.js +19 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.js +3 -3
- package/dist/native.d.ts +1 -0
- package/dist/native.js +47 -0
- package/dist/open-lix.d.ts +38 -207
- package/dist/open-lix.js +59 -284
- package/dist/result.d.ts +18 -0
- package/dist/result.js +48 -0
- package/dist/types.d.ts +114 -1
- package/dist/value.d.ts +28 -0
- package/dist/value.js +245 -0
- package/package.json +38 -71
- package/SKILL.md +0 -507
- package/dist/builtin-schemas.d.ts +0 -1
- package/dist/builtin-schemas.js +0 -1
- package/dist/engine-wasm/index.d.ts +0 -87
- package/dist/engine-wasm/index.js +0 -339
- package/dist/engine-wasm/wasm/lix_engine.d.ts +0 -79
- package/dist/engine-wasm/wasm/lix_engine.js +0 -833
- package/dist/engine-wasm/wasm/lix_engine.wasm +0 -0
- package/dist/engine-wasm/wasm/lix_engine.wasm.d.ts +0 -27
- package/dist/generated/builtin-schemas.d.ts +0 -427
- package/dist/generated/builtin-schemas.js +0 -643
- package/dist/sqlite/index.d.ts +0 -12
- package/dist/sqlite/index.js +0 -359
- package/dist-engine-src/README.md +0 -18
- package/dist-engine-src/src/backend/capabilities.rs +0 -67
- package/dist-engine-src/src/backend/conformance/baseline.rs +0 -1127
- package/dist-engine-src/src/backend/conformance/factory.rs +0 -93
- package/dist-engine-src/src/backend/conformance/failure_tests.rs +0 -608
- package/dist-engine-src/src/backend/conformance/fixtures.rs +0 -26
- package/dist-engine-src/src/backend/conformance/mod.rs +0 -75
- package/dist-engine-src/src/backend/conformance/model.rs +0 -28
- package/dist-engine-src/src/backend/conformance/model_based.rs +0 -257
- package/dist-engine-src/src/backend/conformance/persistence.rs +0 -204
- package/dist-engine-src/src/backend/conformance/projection.rs +0 -21
- package/dist-engine-src/src/backend/conformance/pushdown.rs +0 -24
- package/dist-engine-src/src/backend/conformance/runner.rs +0 -90
- package/dist-engine-src/src/backend/conformance/scan.rs +0 -24
- package/dist-engine-src/src/backend/conformance/write.rs +0 -16
- package/dist-engine-src/src/backend/error.rs +0 -94
- package/dist-engine-src/src/backend/in_memory.rs +0 -670
- package/dist-engine-src/src/backend/mod.rs +0 -39
- package/dist-engine-src/src/backend/predicate.rs +0 -80
- package/dist-engine-src/src/backend/traits.rs +0 -260
- package/dist-engine-src/src/backend/types.rs +0 -239
- package/dist-engine-src/src/binary_cas/chunking.rs +0 -31
- package/dist-engine-src/src/binary_cas/codec.rs +0 -346
- package/dist-engine-src/src/binary_cas/context.rs +0 -139
- package/dist-engine-src/src/binary_cas/kv.rs +0 -1038
- package/dist-engine-src/src/binary_cas/mod.rs +0 -11
- package/dist-engine-src/src/binary_cas/types.rs +0 -121
- package/dist-engine-src/src/branch/context.rs +0 -40
- package/dist-engine-src/src/branch/lifecycle.rs +0 -221
- package/dist-engine-src/src/branch/mod.rs +0 -13
- package/dist-engine-src/src/branch/refs.rs +0 -321
- package/dist-engine-src/src/branch/stage_rows.rs +0 -67
- package/dist-engine-src/src/branch/types.rs +0 -21
- package/dist-engine-src/src/catalog/context.rs +0 -412
- package/dist-engine-src/src/catalog/mod.rs +0 -10
- package/dist-engine-src/src/catalog/schema.rs +0 -4
- package/dist-engine-src/src/catalog/snapshot.rs +0 -1114
- package/dist-engine-src/src/cel/context.rs +0 -86
- package/dist-engine-src/src/cel/error.rs +0 -19
- package/dist-engine-src/src/cel/mod.rs +0 -8
- package/dist-engine-src/src/cel/provider.rs +0 -9
- package/dist-engine-src/src/cel/runtime.rs +0 -167
- package/dist-engine-src/src/cel/value.rs +0 -50
- package/dist-engine-src/src/changelog/bench_support.rs +0 -785
- package/dist-engine-src/src/changelog/change.rs +0 -1
- package/dist-engine-src/src/changelog/codec.rs +0 -497
- package/dist-engine-src/src/changelog/commit.rs +0 -1
- package/dist-engine-src/src/changelog/context.rs +0 -1614
- package/dist-engine-src/src/changelog/mod.rs +0 -29
- package/dist-engine-src/src/changelog/store.rs +0 -163
- package/dist-engine-src/src/changelog/test_support.rs +0 -54
- package/dist-engine-src/src/changelog/types.rs +0 -213
- package/dist-engine-src/src/commit_graph/context.rs +0 -944
- package/dist-engine-src/src/commit_graph/mod.rs +0 -9
- package/dist-engine-src/src/commit_graph/types.rs +0 -89
- package/dist-engine-src/src/commit_graph/walker.rs +0 -786
- package/dist-engine-src/src/common/error.rs +0 -347
- package/dist-engine-src/src/common/fingerprint.rs +0 -3
- package/dist-engine-src/src/common/fs_path.rs +0 -1336
- package/dist-engine-src/src/common/identity.rs +0 -145
- package/dist-engine-src/src/common/json_pointer.rs +0 -67
- package/dist-engine-src/src/common/metadata.rs +0 -40
- package/dist-engine-src/src/common/mod.rs +0 -23
- package/dist-engine-src/src/common/types.rs +0 -105
- package/dist-engine-src/src/common/wire.rs +0 -222
- package/dist-engine-src/src/domain.rs +0 -320
- package/dist-engine-src/src/engine.rs +0 -203
- package/dist-engine-src/src/entity_pk.rs +0 -402
- package/dist-engine-src/src/functions/context.rs +0 -296
- package/dist-engine-src/src/functions/deterministic.rs +0 -113
- package/dist-engine-src/src/functions/mod.rs +0 -18
- package/dist-engine-src/src/functions/provider.rs +0 -130
- package/dist-engine-src/src/functions/state.rs +0 -335
- package/dist-engine-src/src/functions/types.rs +0 -37
- package/dist-engine-src/src/init.rs +0 -692
- package/dist-engine-src/src/json_store/compression.rs +0 -77
- package/dist-engine-src/src/json_store/context.rs +0 -172
- package/dist-engine-src/src/json_store/encoded.rs +0 -15
- package/dist-engine-src/src/json_store/mod.rs +0 -38
- package/dist-engine-src/src/json_store/store.rs +0 -494
- package/dist-engine-src/src/json_store/types.rs +0 -212
- package/dist-engine-src/src/lib.rs +0 -92
- package/dist-engine-src/src/live_state/context.rs +0 -1883
- package/dist-engine-src/src/live_state/mod.rs +0 -21
- package/dist-engine-src/src/live_state/overlay.rs +0 -75
- package/dist-engine-src/src/live_state/reader.rs +0 -23
- package/dist-engine-src/src/live_state/types.rs +0 -231
- package/dist-engine-src/src/live_state/visibility.rs +0 -666
- package/dist-engine-src/src/plugin/archive.rs +0 -438
- package/dist-engine-src/src/plugin/component.rs +0 -183
- package/dist-engine-src/src/plugin/install.rs +0 -619
- package/dist-engine-src/src/plugin/manifest.rs +0 -516
- package/dist-engine-src/src/plugin/materializer.rs +0 -202
- package/dist-engine-src/src/plugin/mod.rs +0 -33
- package/dist-engine-src/src/plugin/plugin_manifest.json +0 -119
- package/dist-engine-src/src/plugin/storage.rs +0 -74
- package/dist-engine-src/src/schema/annotations/defaults.rs +0 -275
- package/dist-engine-src/src/schema/annotations/mod.rs +0 -1
- package/dist-engine-src/src/schema/builtin/lix_account.json +0 -21
- package/dist-engine-src/src/schema/builtin/lix_active_account.json +0 -29
- package/dist-engine-src/src/schema/builtin/lix_binary_blob_ref.json +0 -29
- package/dist-engine-src/src/schema/builtin/lix_branch_descriptor.json +0 -34
- package/dist-engine-src/src/schema/builtin/lix_branch_ref.json +0 -48
- package/dist-engine-src/src/schema/builtin/lix_change.json +0 -63
- package/dist-engine-src/src/schema/builtin/lix_change_author.json +0 -45
- package/dist-engine-src/src/schema/builtin/lix_commit.json +0 -24
- package/dist-engine-src/src/schema/builtin/lix_commit_edge.json +0 -53
- package/dist-engine-src/src/schema/builtin/lix_directory_descriptor.json +0 -52
- package/dist-engine-src/src/schema/builtin/lix_file_descriptor.json +0 -52
- package/dist-engine-src/src/schema/builtin/lix_key_value.json +0 -40
- package/dist-engine-src/src/schema/builtin/lix_label.json +0 -29
- package/dist-engine-src/src/schema/builtin/lix_label_assignment.json +0 -74
- package/dist-engine-src/src/schema/builtin/lix_registered_schema.json +0 -25
- package/dist-engine-src/src/schema/builtin/mod.rs +0 -220
- package/dist-engine-src/src/schema/compatibility.rs +0 -787
- package/dist-engine-src/src/schema/definition.json +0 -187
- package/dist-engine-src/src/schema/definition.rs +0 -742
- package/dist-engine-src/src/schema/key.rs +0 -138
- package/dist-engine-src/src/schema/mod.rs +0 -20
- package/dist-engine-src/src/schema/seed.rs +0 -14
- package/dist-engine-src/src/schema/tests.rs +0 -780
- package/dist-engine-src/src/session/context.rs +0 -1059
- package/dist-engine-src/src/session/create_branch.rs +0 -94
- package/dist-engine-src/src/session/execute.rs +0 -681
- package/dist-engine-src/src/session/merge/analysis.rs +0 -108
- package/dist-engine-src/src/session/merge/branch.rs +0 -417
- package/dist-engine-src/src/session/merge/conflicts.rs +0 -63
- package/dist-engine-src/src/session/merge/mod.rs +0 -10
- package/dist-engine-src/src/session/merge/stats.rs +0 -61
- package/dist-engine-src/src/session/mod.rs +0 -30
- package/dist-engine-src/src/session/switch_branch.rs +0 -113
- package/dist-engine-src/src/session/transaction.rs +0 -557
- package/dist-engine-src/src/sql2/bind/classify.rs +0 -102
- package/dist-engine-src/src/sql2/bind/error.rs +0 -5
- package/dist-engine-src/src/sql2/bind/expr.rs +0 -29
- package/dist-engine-src/src/sql2/bind/mod.rs +0 -12
- package/dist-engine-src/src/sql2/bind/public_udf.rs +0 -306
- package/dist-engine-src/src/sql2/bind/read.rs +0 -65
- package/dist-engine-src/src/sql2/bind/statement.rs +0 -2236
- package/dist-engine-src/src/sql2/bind/table.rs +0 -273
- package/dist-engine-src/src/sql2/bind/write.rs +0 -86
- package/dist-engine-src/src/sql2/branch_scope.rs +0 -436
- package/dist-engine-src/src/sql2/catalog/capability.rs +0 -20
- package/dist-engine-src/src/sql2/catalog/entity_surface.rs +0 -296
- package/dist-engine-src/src/sql2/catalog/mod.rs +0 -15
- package/dist-engine-src/src/sql2/catalog/registry.rs +0 -556
- package/dist-engine-src/src/sql2/catalog/schema.rs +0 -88
- package/dist-engine-src/src/sql2/catalog/surface.rs +0 -41
- package/dist-engine-src/src/sql2/change_materialization.rs +0 -122
- package/dist-engine-src/src/sql2/context.rs +0 -317
- package/dist-engine-src/src/sql2/dml.rs +0 -148
- package/dist-engine-src/src/sql2/error.rs +0 -215
- package/dist-engine-src/src/sql2/exec/bound_public_write.rs +0 -1593
- package/dist-engine-src/src/sql2/exec/datafusion.rs +0 -5266
- package/dist-engine-src/src/sql2/exec/fast_write.rs +0 -82
- package/dist-engine-src/src/sql2/exec/mod.rs +0 -24
- package/dist-engine-src/src/sql2/exec/write.rs +0 -661
- package/dist-engine-src/src/sql2/filesystem_planner.rs +0 -1485
- package/dist-engine-src/src/sql2/filesystem_predicates.rs +0 -159
- package/dist-engine-src/src/sql2/filesystem_visibility.rs +0 -383
- package/dist-engine-src/src/sql2/history_projection.rs +0 -56
- package/dist-engine-src/src/sql2/history_route.rs +0 -661
- package/dist-engine-src/src/sql2/mod.rs +0 -52
- package/dist-engine-src/src/sql2/optimize/datafusion.rs +0 -1
- package/dist-engine-src/src/sql2/optimize/mod.rs +0 -2
- package/dist-engine-src/src/sql2/optimize/simple_write.rs +0 -116
- package/dist-engine-src/src/sql2/parse/mod.rs +0 -69
- package/dist-engine-src/src/sql2/parse/normalize.rs +0 -1
- package/dist-engine-src/src/sql2/plan/branch_scope.rs +0 -24
- package/dist-engine-src/src/sql2/plan/mod.rs +0 -5
- package/dist-engine-src/src/sql2/plan/predicate.rs +0 -22
- package/dist-engine-src/src/sql2/plan/write.rs +0 -147
- package/dist-engine-src/src/sql2/predicate_typecheck.rs +0 -504
- package/dist-engine-src/src/sql2/providers/branch.rs +0 -1206
- package/dist-engine-src/src/sql2/providers/change.rs +0 -445
- package/dist-engine-src/src/sql2/providers/directory.rs +0 -2422
- package/dist-engine-src/src/sql2/providers/directory_history.rs +0 -645
- package/dist-engine-src/src/sql2/providers/entity.rs +0 -1484
- package/dist-engine-src/src/sql2/providers/entity_history.rs +0 -452
- package/dist-engine-src/src/sql2/providers/file.rs +0 -3686
- package/dist-engine-src/src/sql2/providers/file_history.rs +0 -924
- package/dist-engine-src/src/sql2/providers/history.rs +0 -426
- package/dist-engine-src/src/sql2/providers/lix_state.rs +0 -2542
- package/dist-engine-src/src/sql2/providers/mod.rs +0 -508
- package/dist-engine-src/src/sql2/read_only.rs +0 -63
- package/dist-engine-src/src/sql2/record_batch.rs +0 -17
- package/dist-engine-src/src/sql2/result_metadata.rs +0 -29
- package/dist-engine-src/src/sql2/runtime.rs +0 -60
- package/dist-engine-src/src/sql2/session.rs +0 -83
- package/dist-engine-src/src/sql2/storage/constraints.rs +0 -1
- package/dist-engine-src/src/sql2/storage/mod.rs +0 -1
- package/dist-engine-src/src/sql2/test_support/differential.rs +0 -712
- package/dist-engine-src/src/sql2/test_support/generators.rs +0 -354
- package/dist-engine-src/src/sql2/test_support/mod.rs +0 -2
- package/dist-engine-src/src/sql2/udfs/common.rs +0 -295
- package/dist-engine-src/src/sql2/udfs/lix_active_branch_commit_id.rs +0 -53
- package/dist-engine-src/src/sql2/udfs/lix_empty_blob.rs +0 -47
- package/dist-engine-src/src/sql2/udfs/lix_json.rs +0 -100
- package/dist-engine-src/src/sql2/udfs/lix_json_get.rs +0 -99
- package/dist-engine-src/src/sql2/udfs/lix_json_get_text.rs +0 -99
- package/dist-engine-src/src/sql2/udfs/lix_text_decode.rs +0 -82
- package/dist-engine-src/src/sql2/udfs/lix_text_encode.rs +0 -85
- package/dist-engine-src/src/sql2/udfs/lix_timestamp.rs +0 -76
- package/dist-engine-src/src/sql2/udfs/lix_uuid_v7.rs +0 -76
- package/dist-engine-src/src/sql2/udfs/mod.rs +0 -86
- package/dist-engine-src/src/sql2/write_normalization.rs +0 -368
- package/dist-engine-src/src/storage/conformance.rs +0 -399
- package/dist-engine-src/src/storage/context.rs +0 -620
- package/dist-engine-src/src/storage/mod.rs +0 -52
- package/dist-engine-src/src/storage/point.rs +0 -440
- package/dist-engine-src/src/storage/read_scope.rs +0 -67
- package/dist-engine-src/src/storage/reader.rs +0 -867
- package/dist-engine-src/src/storage/scan.rs +0 -784
- package/dist-engine-src/src/storage/spaces.rs +0 -236
- package/dist-engine-src/src/storage/stats.rs +0 -80
- package/dist-engine-src/src/storage/write_set.rs +0 -962
- package/dist-engine-src/src/storage_bench.rs +0 -171
- package/dist-engine-src/src/test_support.rs +0 -450
- package/dist-engine-src/src/tracked_state/bench_support.rs +0 -394
- package/dist-engine-src/src/tracked_state/codec.rs +0 -1183
- package/dist-engine-src/src/tracked_state/commit_root_rebuild.rs +0 -358
- package/dist-engine-src/src/tracked_state/context.rs +0 -2801
- package/dist-engine-src/src/tracked_state/diff.rs +0 -2140
- package/dist-engine-src/src/tracked_state/merge.rs +0 -478
- package/dist-engine-src/src/tracked_state/mod.rs +0 -35
- package/dist-engine-src/src/tracked_state/row_materialization.rs +0 -275
- package/dist-engine-src/src/tracked_state/storage.rs +0 -427
- package/dist-engine-src/src/tracked_state/tree.rs +0 -3063
- package/dist-engine-src/src/tracked_state/types.rs +0 -238
- package/dist-engine-src/src/transaction/bench_support.rs +0 -407
- package/dist-engine-src/src/transaction/commit.rs +0 -1592
- package/dist-engine-src/src/transaction/context.rs +0 -1653
- package/dist-engine-src/src/transaction/mod.rs +0 -24
- package/dist-engine-src/src/transaction/normalization.rs +0 -877
- package/dist-engine-src/src/transaction/prep.rs +0 -37
- package/dist-engine-src/src/transaction/schema_resolver.rs +0 -163
- package/dist-engine-src/src/transaction/staging.rs +0 -1525
- package/dist-engine-src/src/transaction/types.rs +0 -403
- package/dist-engine-src/src/transaction/validation.rs +0 -5766
- package/dist-engine-src/src/untracked_state/codec.rs +0 -615
- package/dist-engine-src/src/untracked_state/context.rs +0 -98
- package/dist-engine-src/src/untracked_state/materialization.rs +0 -63
- package/dist-engine-src/src/untracked_state/mod.rs +0 -15
- package/dist-engine-src/src/untracked_state/storage.rs +0 -898
- package/dist-engine-src/src/untracked_state/types.rs +0 -146
- package/dist-engine-src/src/wasm/mod.rs +0 -60
package/dist/value.js
ADDED
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { invalidParam } from "./errors.js";
|
|
2
|
+
export class Value {
|
|
3
|
+
kind;
|
|
4
|
+
#raw;
|
|
5
|
+
constructor(raw) {
|
|
6
|
+
validateExplicitValue(raw);
|
|
7
|
+
this.#raw = cloneValue(raw);
|
|
8
|
+
this.kind = this.#raw.kind;
|
|
9
|
+
}
|
|
10
|
+
static null() {
|
|
11
|
+
return new Value({ kind: "null", value: null });
|
|
12
|
+
}
|
|
13
|
+
static boolean(value) {
|
|
14
|
+
return new Value({ kind: "boolean", value });
|
|
15
|
+
}
|
|
16
|
+
static integer(value) {
|
|
17
|
+
return new Value({ kind: "integer", value });
|
|
18
|
+
}
|
|
19
|
+
static real(value) {
|
|
20
|
+
return new Value({ kind: "real", value });
|
|
21
|
+
}
|
|
22
|
+
static text(value) {
|
|
23
|
+
return new Value({ kind: "text", value });
|
|
24
|
+
}
|
|
25
|
+
static json(value) {
|
|
26
|
+
return new Value({ kind: "json", value });
|
|
27
|
+
}
|
|
28
|
+
static blob(value) {
|
|
29
|
+
return new Value({ kind: "blob", value });
|
|
30
|
+
}
|
|
31
|
+
static from(value) {
|
|
32
|
+
return new Value(normalizeParam(value));
|
|
33
|
+
}
|
|
34
|
+
static _fromNative(value) {
|
|
35
|
+
return new Value(value);
|
|
36
|
+
}
|
|
37
|
+
_toNative() {
|
|
38
|
+
return toNativeValue(this.#raw);
|
|
39
|
+
}
|
|
40
|
+
toJS() {
|
|
41
|
+
return unwrapValue(this.#raw);
|
|
42
|
+
}
|
|
43
|
+
asBytes() {
|
|
44
|
+
if (this.#raw.kind !== "blob")
|
|
45
|
+
return undefined;
|
|
46
|
+
return new Uint8Array(this.#raw.value);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function toNativeValue(value) {
|
|
50
|
+
if (value.kind !== "blob")
|
|
51
|
+
return value;
|
|
52
|
+
return {
|
|
53
|
+
kind: "blob",
|
|
54
|
+
value: null,
|
|
55
|
+
blob: new Uint8Array(value.value),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export function fromNativeValue(value) {
|
|
59
|
+
if (value.kind !== "blob")
|
|
60
|
+
return value;
|
|
61
|
+
return {
|
|
62
|
+
kind: "blob",
|
|
63
|
+
value: new Uint8Array(value.blob),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function normalizeParam(value, index = 0, seen = new WeakSet()) {
|
|
67
|
+
if (value instanceof Value)
|
|
68
|
+
return fromNativeValue(value._toNative());
|
|
69
|
+
if (value === null)
|
|
70
|
+
return { kind: "null", value: null };
|
|
71
|
+
if (typeof value === "boolean")
|
|
72
|
+
return { kind: "boolean", value };
|
|
73
|
+
if (typeof value === "string") {
|
|
74
|
+
if (!isWellFormedString(value)) {
|
|
75
|
+
throw invalidParam(index, "string SQL parameters must be well-formed UTF-16", "string");
|
|
76
|
+
}
|
|
77
|
+
return { kind: "text", value };
|
|
78
|
+
}
|
|
79
|
+
if (typeof value === "number") {
|
|
80
|
+
if (!Number.isFinite(value)) {
|
|
81
|
+
throw invalidParam(index, "number SQL parameters must be a finite number", "number");
|
|
82
|
+
}
|
|
83
|
+
if (Number.isInteger(value) && !Number.isSafeInteger(value)) {
|
|
84
|
+
throw invalidParam(index, "integer SQL parameters must be a safe integer", "number");
|
|
85
|
+
}
|
|
86
|
+
return Number.isSafeInteger(value)
|
|
87
|
+
? { kind: "integer", value }
|
|
88
|
+
: { kind: "real", value };
|
|
89
|
+
}
|
|
90
|
+
if (value instanceof Uint8Array) {
|
|
91
|
+
return {
|
|
92
|
+
kind: "blob",
|
|
93
|
+
value: new Uint8Array(value),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (typeof value === "object" && value) {
|
|
97
|
+
if (value instanceof Date) {
|
|
98
|
+
throw invalidParam(index, "Date is not a valid SQL parameter", "Date");
|
|
99
|
+
}
|
|
100
|
+
if (ArrayBuffer.isView(value)) {
|
|
101
|
+
throw invalidParam(index, "typed array SQL parameters must be Uint8Array", value.constructor.name);
|
|
102
|
+
}
|
|
103
|
+
assertJsonSerializable(value, seen, index);
|
|
104
|
+
return { kind: "json", value };
|
|
105
|
+
}
|
|
106
|
+
throw invalidParam(index, `${typeof value} is not a valid SQL parameter`, typeof value);
|
|
107
|
+
}
|
|
108
|
+
function unwrapValue(value) {
|
|
109
|
+
switch (value.kind) {
|
|
110
|
+
case "null":
|
|
111
|
+
return null;
|
|
112
|
+
case "boolean":
|
|
113
|
+
case "integer":
|
|
114
|
+
case "real":
|
|
115
|
+
case "text":
|
|
116
|
+
case "json":
|
|
117
|
+
return cloneJsonValue(value.value);
|
|
118
|
+
case "blob":
|
|
119
|
+
return new Uint8Array(value.value);
|
|
120
|
+
default:
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function assertJsonSerializable(value, seen, index) {
|
|
125
|
+
if (value === null)
|
|
126
|
+
return;
|
|
127
|
+
if (typeof value === "string") {
|
|
128
|
+
if (!isWellFormedString(value)) {
|
|
129
|
+
throw invalidParam(index, "string SQL parameters must be well-formed UTF-16", "string");
|
|
130
|
+
}
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (typeof value === "number") {
|
|
134
|
+
if (!Number.isFinite(value)) {
|
|
135
|
+
throw invalidParam(index, "number SQL parameters must be a finite number", "number");
|
|
136
|
+
}
|
|
137
|
+
if (Number.isInteger(value) && !Number.isSafeInteger(value)) {
|
|
138
|
+
throw invalidParam(index, "integer SQL parameters must be a safe integer", "number");
|
|
139
|
+
}
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (typeof value === "boolean")
|
|
143
|
+
return;
|
|
144
|
+
if (typeof value !== "object") {
|
|
145
|
+
throw invalidParam(index, `${typeof value} is not a valid SQL parameter`, typeof value);
|
|
146
|
+
}
|
|
147
|
+
if (value instanceof Value) {
|
|
148
|
+
throw invalidParam(index, "Value is only valid as a top-level SQL parameter", "Value");
|
|
149
|
+
}
|
|
150
|
+
if (value instanceof Date) {
|
|
151
|
+
throw invalidParam(index, "Date is not a valid SQL parameter", "Date");
|
|
152
|
+
}
|
|
153
|
+
if (ArrayBuffer.isView(value)) {
|
|
154
|
+
throw invalidParam(index, "typed array SQL parameters must be top-level Uint8Array values", value.constructor.name);
|
|
155
|
+
}
|
|
156
|
+
if (!Array.isArray(value) && !isPlainObject(value)) {
|
|
157
|
+
throw invalidParam(index, "object SQL parameters must be JSON-compatible plain objects or arrays", value.constructor?.name ?? "object");
|
|
158
|
+
}
|
|
159
|
+
if (seen.has(value)) {
|
|
160
|
+
throw invalidParam(index, "JSON SQL parameters cannot contain circular references", "object");
|
|
161
|
+
}
|
|
162
|
+
seen.add(value);
|
|
163
|
+
const entries = Array.isArray(value) ? value : Object.values(value);
|
|
164
|
+
for (const entry of entries) {
|
|
165
|
+
assertJsonSerializable(entry, seen, index);
|
|
166
|
+
}
|
|
167
|
+
seen.delete(value);
|
|
168
|
+
}
|
|
169
|
+
function validateExplicitValue(value) {
|
|
170
|
+
switch (value.kind) {
|
|
171
|
+
case "null":
|
|
172
|
+
if (value.value !== null)
|
|
173
|
+
break;
|
|
174
|
+
return;
|
|
175
|
+
case "boolean":
|
|
176
|
+
if (typeof value.value !== "boolean")
|
|
177
|
+
break;
|
|
178
|
+
return;
|
|
179
|
+
case "integer":
|
|
180
|
+
if (typeof value.value === "number" &&
|
|
181
|
+
Number.isSafeInteger(value.value)) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
break;
|
|
185
|
+
case "real":
|
|
186
|
+
if (typeof value.value === "number" && Number.isFinite(value.value))
|
|
187
|
+
return;
|
|
188
|
+
break;
|
|
189
|
+
case "text":
|
|
190
|
+
if (typeof value.value !== "string")
|
|
191
|
+
break;
|
|
192
|
+
if (!isWellFormedString(value.value)) {
|
|
193
|
+
throw invalidParam(0, "string SQL parameters must be well-formed UTF-16", "string");
|
|
194
|
+
}
|
|
195
|
+
return;
|
|
196
|
+
case "json":
|
|
197
|
+
assertJsonSerializable(value.value, new WeakSet(), 0);
|
|
198
|
+
return;
|
|
199
|
+
case "blob":
|
|
200
|
+
if (value.value instanceof Uint8Array)
|
|
201
|
+
return;
|
|
202
|
+
break;
|
|
203
|
+
default:
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
throw invalidParam(0, "explicit Value contains an invalid native value", "Value");
|
|
207
|
+
}
|
|
208
|
+
function cloneValue(value) {
|
|
209
|
+
if (value.kind === "blob") {
|
|
210
|
+
return { kind: "blob", value: new Uint8Array(value.value) };
|
|
211
|
+
}
|
|
212
|
+
if (value.kind === "json") {
|
|
213
|
+
return { kind: "json", value: cloneJsonValue(value.value) };
|
|
214
|
+
}
|
|
215
|
+
return value;
|
|
216
|
+
}
|
|
217
|
+
function cloneJsonValue(value) {
|
|
218
|
+
if (Array.isArray(value))
|
|
219
|
+
return value.map(cloneJsonValue);
|
|
220
|
+
if (value && typeof value === "object") {
|
|
221
|
+
return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, cloneJsonValue(entry)]));
|
|
222
|
+
}
|
|
223
|
+
return value;
|
|
224
|
+
}
|
|
225
|
+
function isPlainObject(value) {
|
|
226
|
+
const prototype = Object.getPrototypeOf(value);
|
|
227
|
+
return prototype === Object.prototype || prototype === null;
|
|
228
|
+
}
|
|
229
|
+
function isWellFormedString(value) {
|
|
230
|
+
if (typeof value.isWellFormed === "function")
|
|
231
|
+
return value.isWellFormed();
|
|
232
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
233
|
+
const code = value.charCodeAt(index);
|
|
234
|
+
if (code >= 0xd800 && code <= 0xdbff) {
|
|
235
|
+
const next = value.charCodeAt(index + 1);
|
|
236
|
+
if (!(next >= 0xdc00 && next <= 0xdfff))
|
|
237
|
+
return false;
|
|
238
|
+
index += 1;
|
|
239
|
+
}
|
|
240
|
+
else if (code >= 0xdc00 && code <= 0xdfff) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return true;
|
|
245
|
+
}
|
package/package.json
CHANGED
|
@@ -1,72 +1,39 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"targets": {
|
|
41
|
-
"build": {
|
|
42
|
-
"inputs": [
|
|
43
|
-
"default",
|
|
44
|
-
"^default",
|
|
45
|
-
"publicEnv",
|
|
46
|
-
"nodeVersion",
|
|
47
|
-
"platform",
|
|
48
|
-
"{workspaceRoot}/Cargo.toml",
|
|
49
|
-
"{workspaceRoot}/Cargo.lock",
|
|
50
|
-
"{workspaceRoot}/packages/engine/**/*",
|
|
51
|
-
"{workspaceRoot}/packages/rs-sdk/**/*",
|
|
52
|
-
"{workspaceRoot}/packages/js-sdk/Cargo.toml",
|
|
53
|
-
"{workspaceRoot}/packages/js-sdk/wasm-bindgen.rs"
|
|
54
|
-
],
|
|
55
|
-
"outputs": [
|
|
56
|
-
"{projectRoot}/dist",
|
|
57
|
-
"{projectRoot}/dist-engine-src",
|
|
58
|
-
"{projectRoot}/src/engine-wasm/wasm"
|
|
59
|
-
]
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
"scripts": {
|
|
64
|
-
"build": "node ./scripts/build.js",
|
|
65
|
-
"sync:builtin-schemas": "node ./scripts/sync-builtin-schemas.js",
|
|
66
|
-
"sync:engine-src": "node ./scripts/sync-engine-src.js",
|
|
67
|
-
"typecheck": "pnpm run sync:builtin-schemas && tsc -p tsconfig.json --noEmit",
|
|
68
|
-
"test": "node ./scripts/build.js && vitest run",
|
|
69
|
-
"test:watch": "node ./scripts/build.js && vitest",
|
|
70
|
-
"format": "prettier --write --ignore-unknown ."
|
|
71
|
-
}
|
|
72
|
-
}
|
|
2
|
+
"name": "@lix-js/sdk",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.6.1",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/opral/lix"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "npm run build:native && npm run build:ts",
|
|
22
|
+
"build:native": "node ./scripts/build-native.js",
|
|
23
|
+
"prepare:native-package": "node ./scripts/prepare-native-package.js",
|
|
24
|
+
"build:ts": "tsc -p tsconfig.json",
|
|
25
|
+
"test": "npm run build && vitest run",
|
|
26
|
+
"typecheck": "tsc -p tsconfig.test.json --noEmit"
|
|
27
|
+
},
|
|
28
|
+
"optionalDependencies": {
|
|
29
|
+
"@lix-js/sdk-darwin-arm64": "0.6.1",
|
|
30
|
+
"@lix-js/sdk-linux-arm64": "0.6.1",
|
|
31
|
+
"@lix-js/sdk-linux-x64": "0.6.1",
|
|
32
|
+
"@lix-js/sdk-win32-x64": "0.6.1"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@types/node": "^24.10.2",
|
|
36
|
+
"typescript": "^5.5.4",
|
|
37
|
+
"vitest": "^4.0.18"
|
|
38
|
+
}
|
|
39
|
+
}
|