@lix-js/sdk 0.6.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +97 -14
  2. package/dist/binding-types.d.ts +52 -0
  3. package/dist/binding-types.js +1 -0
  4. package/dist/binding.browser.d.ts +2 -0
  5. package/dist/binding.browser.js +14 -0
  6. package/dist/binding.node.d.ts +2 -0
  7. package/dist/{native.js → binding.node.js} +15 -11
  8. package/dist/bundled-plugins/plugin_csv.lixplugin +0 -0
  9. package/dist/bundled-plugins/plugin_md_v2.lixplugin +0 -0
  10. package/dist/bundled-plugins.d.ts +6 -0
  11. package/dist/bundled-plugins.js +41 -0
  12. package/dist/errors.d.ts +2 -0
  13. package/dist/errors.js +13 -0
  14. package/dist/index.d.ts +3 -2
  15. package/dist/index.js +2 -1
  16. package/dist/jco/js-component-bindgen-component.core.wasm +0 -0
  17. package/dist/jco/js-component-bindgen-component.core2.wasm +0 -0
  18. package/dist/jco/js-component-bindgen-component.js +13662 -0
  19. package/dist/jco-transpile.browser.d.ts +14 -0
  20. package/dist/jco-transpile.browser.js +22 -0
  21. package/dist/open-lix.d.ts +30 -27
  22. package/dist/open-lix.js +212 -31
  23. package/dist/plugin-runtime.d.ts +45 -0
  24. package/dist/plugin-runtime.js +124 -0
  25. package/dist/types.d.ts +14 -1
  26. package/dist/wasm/lix_js_sdk.d.ts +90 -0
  27. package/dist/wasm/lix_js_sdk.js +918 -0
  28. package/dist/wasm/lix_js_sdk_bg.wasm +0 -0
  29. package/dist/wasm/lix_js_sdk_bg.wasm.d.ts +29 -0
  30. package/dist/worker/client.d.ts +17 -0
  31. package/dist/worker/client.js +104 -0
  32. package/dist/worker/entry.browser.d.ts +1 -0
  33. package/dist/worker/entry.browser.js +11 -0
  34. package/dist/worker/entry.node.d.ts +1 -0
  35. package/dist/worker/entry.node.js +13 -0
  36. package/dist/worker/factory.browser.d.ts +2 -0
  37. package/dist/worker/factory.browser.js +23 -0
  38. package/dist/worker/factory.node.d.ts +2 -0
  39. package/dist/worker/factory.node.js +35 -0
  40. package/dist/worker/host.d.ts +2 -0
  41. package/dist/worker/host.js +145 -0
  42. package/dist/worker/protocol.d.ts +96 -0
  43. package/dist/worker/protocol.js +23 -0
  44. package/package.json +37 -8
  45. package/dist/native.d.ts +0 -1
Binary file
@@ -0,0 +1,29 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ export const memory: WebAssembly.Memory;
4
+ export const __wbg_wasmlix_free: (a: number, b: number) => void;
5
+ export const __wbg_wasmlixtransaction_free: (a: number, b: number) => void;
6
+ export const __wbg_wasmobserveevents_free: (a: number, b: number) => void;
7
+ export const openMemory: (a: number) => number;
8
+ export const wasmlix_activeBranchId: (a: number) => number;
9
+ export const wasmlix_beginTransaction: (a: number) => number;
10
+ export const wasmlix_close: (a: number) => number;
11
+ export const wasmlix_createBranch: (a: number, b: number) => number;
12
+ export const wasmlix_execute: (a: number, b: number, c: number, d: number, e: number) => number;
13
+ export const wasmlix_mergeBranch: (a: number, b: number) => number;
14
+ export const wasmlix_mergeBranchPreview: (a: number, b: number) => number;
15
+ export const wasmlix_observe: (a: number, b: number, c: number, d: number) => number;
16
+ export const wasmlix_switchBranch: (a: number, b: number) => number;
17
+ export const wasmlixtransaction_commit: (a: number) => number;
18
+ export const wasmlixtransaction_execute: (a: number, b: number, c: number, d: number, e: number) => number;
19
+ export const wasmlixtransaction_rollback: (a: number) => number;
20
+ export const wasmobserveevents_close: (a: number) => void;
21
+ export const wasmobserveevents_next: (a: number) => number;
22
+ export const __wasm_bindgen_func_elem_100752: (a: number, b: number, c: number, d: number) => void;
23
+ export const __wasm_bindgen_func_elem_100754: (a: number, b: number, c: number, d: number) => void;
24
+ export const __wbindgen_export: (a: number, b: number) => number;
25
+ export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
26
+ export const __wbindgen_export3: (a: number) => void;
27
+ export const __wbindgen_export4: (a: number, b: number, c: number) => void;
28
+ export const __wbindgen_export5: (a: number, b: number) => void;
29
+ export const __wbindgen_add_to_stack_pointer: (a: number) => number;
@@ -0,0 +1,17 @@
1
+ import type { LixBackendConfig } from "../binding-types.js";
2
+ import { type WorkerConnection, type WorkerNotification, type WorkerOperation } from "./protocol.js";
3
+ export declare function openLixWorker(backend: LixBackendConfig, onDisposed?: () => void): Promise<LixWorkerClient>;
4
+ export declare class LixWorkerClient {
5
+ private readonly onDisposed?;
6
+ private readonly connection;
7
+ private nextRequestId;
8
+ private readonly pending;
9
+ private disposed;
10
+ constructor(onDisposed?: (() => void) | undefined, connection?: WorkerConnection);
11
+ request<T>(operation: WorkerOperation): Promise<T>;
12
+ notify(notification: WorkerNotification): void;
13
+ terminate(): Promise<void>;
14
+ private handleMessage;
15
+ private handleFatal;
16
+ private rejectPending;
17
+ }
@@ -0,0 +1,104 @@
1
+ import { createWorkerConnection } from "#worker-factory";
2
+ import { deserializeWorkerError, } from "./protocol.js";
3
+ export async function openLixWorker(backend, onDisposed) {
4
+ const client = new LixWorkerClient(onDisposed);
5
+ try {
6
+ await client.request({ kind: "open", backend });
7
+ return client;
8
+ }
9
+ catch (error) {
10
+ await client.terminate();
11
+ throw error;
12
+ }
13
+ }
14
+ export class LixWorkerClient {
15
+ onDisposed;
16
+ connection;
17
+ nextRequestId = 1;
18
+ pending = new Map();
19
+ disposed = false;
20
+ constructor(onDisposed, connection = createWorkerConnection()) {
21
+ this.onDisposed = onDisposed;
22
+ this.connection = connection;
23
+ connection.onMessage((message) => this.handleMessage(message));
24
+ connection.onFatal((error) => this.handleFatal(error));
25
+ }
26
+ request(operation) {
27
+ if (this.disposed)
28
+ return Promise.reject(workerClosedError());
29
+ const id = this.nextRequestId++;
30
+ if (this.pending.size === 0)
31
+ this.connection.ref();
32
+ return new Promise((resolve, reject) => {
33
+ this.pending.set(id, {
34
+ resolve: (value) => resolve(value),
35
+ reject,
36
+ });
37
+ try {
38
+ this.connection.postMessage({ id, operation });
39
+ }
40
+ catch (error) {
41
+ this.pending.delete(id);
42
+ if (this.pending.size === 0)
43
+ this.connection.unref();
44
+ reject(error);
45
+ }
46
+ });
47
+ }
48
+ notify(notification) {
49
+ if (this.disposed)
50
+ return;
51
+ try {
52
+ this.connection.postMessage(notification);
53
+ }
54
+ catch {
55
+ // A best-effort finalizer/close notification can race worker shutdown.
56
+ }
57
+ }
58
+ async terminate() {
59
+ if (this.disposed)
60
+ return;
61
+ this.disposed = true;
62
+ this.rejectPending(workerClosedError());
63
+ try {
64
+ await this.connection.terminate();
65
+ }
66
+ finally {
67
+ this.onDisposed?.();
68
+ }
69
+ }
70
+ handleMessage(message) {
71
+ const pending = this.pending.get(message.id);
72
+ if (!pending)
73
+ return;
74
+ this.pending.delete(message.id);
75
+ if (this.pending.size === 0)
76
+ this.connection.unref();
77
+ if (message.ok)
78
+ pending.resolve(message.value);
79
+ else
80
+ pending.reject(deserializeWorkerError(message.error));
81
+ }
82
+ handleFatal(error) {
83
+ if (this.disposed)
84
+ return;
85
+ this.disposed = true;
86
+ const fatal = error;
87
+ fatal.name = "LixError";
88
+ fatal.code ??= "LIX_WORKER_TERMINATED";
89
+ this.rejectPending(fatal);
90
+ this.onDisposed?.();
91
+ }
92
+ rejectPending(error) {
93
+ for (const pending of this.pending.values())
94
+ pending.reject(error);
95
+ this.pending.clear();
96
+ this.connection.unref();
97
+ }
98
+ }
99
+ function workerClosedError() {
100
+ const error = new Error("Lix worker is closed");
101
+ error.name = "LixError";
102
+ error.code = "LIX_ERROR_CLOSED";
103
+ return error;
104
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ /// <reference lib="webworker" />
2
+ import { startWorkerHost } from "./host.js";
3
+ const scope = globalThis;
4
+ startWorkerHost({
5
+ postMessage(message) {
6
+ scope.postMessage(message);
7
+ },
8
+ onMessage(listener) {
9
+ scope.onmessage = (event) => listener(event.data);
10
+ },
11
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import { parentPort } from "node:worker_threads";
2
+ import { startWorkerHost } from "./host.js";
3
+ const port = parentPort;
4
+ if (!port)
5
+ throw new Error("Lix worker requires a parent port");
6
+ startWorkerHost({
7
+ postMessage(message) {
8
+ port.postMessage(message);
9
+ },
10
+ onMessage(listener) {
11
+ port.on("message", (message) => listener(message));
12
+ },
13
+ });
@@ -0,0 +1,2 @@
1
+ import type { WorkerConnection } from "./protocol.js";
2
+ export declare function createWorkerConnection(): WorkerConnection;
@@ -0,0 +1,23 @@
1
+ /// <reference lib="webworker" />
2
+ export function createWorkerConnection() {
3
+ const worker = new Worker(new URL("./entry.browser.js", import.meta.url), {
4
+ type: "module",
5
+ name: "lix",
6
+ });
7
+ return {
8
+ postMessage(message) {
9
+ worker.postMessage(message);
10
+ },
11
+ onMessage(listener) {
12
+ worker.onmessage = (event) => listener(event.data);
13
+ },
14
+ onFatal(listener) {
15
+ worker.onerror = (event) => listener(event.error ?? new Error(event.message ?? "Lix worker failed"));
16
+ },
17
+ ref() { },
18
+ unref() { },
19
+ async terminate() {
20
+ worker.terminate();
21
+ },
22
+ };
23
+ }
@@ -0,0 +1,2 @@
1
+ import type { WorkerConnection } from "./protocol.js";
2
+ export declare function createWorkerConnection(): WorkerConnection;
@@ -0,0 +1,35 @@
1
+ import { Worker } from "node:worker_threads";
2
+ export function createWorkerConnection() {
3
+ const worker = new Worker(new URL("./entry.node.js", import.meta.url), {
4
+ name: "lix",
5
+ });
6
+ let terminating = false;
7
+ return {
8
+ postMessage(message) {
9
+ worker.postMessage(message);
10
+ },
11
+ onMessage(listener) {
12
+ worker.on("message", (message) => listener(message));
13
+ },
14
+ onFatal(listener) {
15
+ worker.on("error", (error) => {
16
+ if (!terminating)
17
+ listener(error);
18
+ });
19
+ worker.on("exit", (code) => {
20
+ if (!terminating)
21
+ listener(new Error(`Lix worker exited with code ${code}`));
22
+ });
23
+ },
24
+ ref() {
25
+ worker.ref();
26
+ },
27
+ unref() {
28
+ worker.unref();
29
+ },
30
+ async terminate() {
31
+ terminating = true;
32
+ await worker.terminate();
33
+ },
34
+ };
35
+ }
@@ -0,0 +1,2 @@
1
+ import { type WorkerHostEndpoint } from "./protocol.js";
2
+ export declare function startWorkerHost(endpoint: WorkerHostEndpoint): void;
@@ -0,0 +1,145 @@
1
+ import { openLixBinding } from "#binding";
2
+ import { createPluginRuntimeDispatch } from "../plugin-runtime.js";
3
+ import { serializeWorkerError, } from "./protocol.js";
4
+ export function startWorkerHost(endpoint) {
5
+ let lix;
6
+ let nextTransactionId = 1;
7
+ let nextObserveId = 1;
8
+ const transactions = new Map();
9
+ const observations = new Map();
10
+ let finiteQueue = Promise.resolve();
11
+ endpoint.onMessage((message) => {
12
+ if (!("id" in message)) {
13
+ handleNotification(message);
14
+ return;
15
+ }
16
+ if (message.operation.kind === "observe.next") {
17
+ const observeId = message.operation.observeId;
18
+ void respond(message, () => handleObserveNext(observeId));
19
+ return;
20
+ }
21
+ finiteQueue = finiteQueue.then(async () => {
22
+ await respond(message, () => handleFiniteOperation(message.operation));
23
+ });
24
+ });
25
+ function handleNotification(message) {
26
+ switch (message.kind) {
27
+ case "observe.close": {
28
+ const events = observations.get(message.observeId);
29
+ observations.delete(message.observeId);
30
+ events?.close();
31
+ break;
32
+ }
33
+ case "transaction.abandon":
34
+ finiteQueue = finiteQueue.then(async () => {
35
+ const transaction = transactions.get(message.transactionId);
36
+ transactions.delete(message.transactionId);
37
+ if (transaction)
38
+ await transaction.rollback().catch(() => undefined);
39
+ });
40
+ break;
41
+ }
42
+ }
43
+ async function respond(request, operation) {
44
+ try {
45
+ const value = await operation();
46
+ endpoint.postMessage({ id: request.id, ok: true, value });
47
+ }
48
+ catch (error) {
49
+ endpoint.postMessage({
50
+ id: request.id,
51
+ ok: false,
52
+ error: serializeWorkerError(error),
53
+ });
54
+ }
55
+ }
56
+ async function handleFiniteOperation(operation) {
57
+ switch (operation.kind) {
58
+ case "open":
59
+ if (lix)
60
+ throw workerStateError("Lix worker is already open");
61
+ lix = await openLixBinding(operation.backend, createPluginRuntimeDispatch());
62
+ return undefined;
63
+ case "execute":
64
+ return requiredLix().execute(operation.sql, operation.params, operation.options);
65
+ case "beginTransaction": {
66
+ const transaction = await requiredLix().beginTransaction();
67
+ const transactionId = nextTransactionId++;
68
+ transactions.set(transactionId, transaction);
69
+ return transactionId;
70
+ }
71
+ case "transaction.execute":
72
+ return requiredTransaction(operation.transactionId).execute(operation.sql, operation.params, operation.options);
73
+ case "transaction.commit": {
74
+ const transaction = requiredTransaction(operation.transactionId);
75
+ transactions.delete(operation.transactionId);
76
+ await transaction.commit();
77
+ return undefined;
78
+ }
79
+ case "transaction.rollback": {
80
+ const transaction = requiredTransaction(operation.transactionId);
81
+ transactions.delete(operation.transactionId);
82
+ await transaction.rollback();
83
+ return undefined;
84
+ }
85
+ case "activeBranchId":
86
+ return requiredLix().activeBranchId();
87
+ case "createBranch":
88
+ return requiredLix().createBranch(operation.options);
89
+ case "switchBranch":
90
+ return requiredLix().switchBranch(operation.options);
91
+ case "mergeBranchPreview":
92
+ return requiredLix().mergeBranchPreview(operation.options);
93
+ case "mergeBranch":
94
+ return requiredLix().mergeBranch(operation.options);
95
+ case "importFilesystemPaths":
96
+ return requiredLix().importFilesystemPaths(operation.paths);
97
+ case "syncDiskToLix":
98
+ return requiredLix().syncDiskToLix();
99
+ case "observe": {
100
+ const events = await requiredLix().observe(operation.sql, operation.params);
101
+ const observeId = nextObserveId++;
102
+ observations.set(observeId, events);
103
+ return observeId;
104
+ }
105
+ case "close": {
106
+ const openLix = requiredLix();
107
+ await openLix.close();
108
+ for (const events of observations.values())
109
+ events.close();
110
+ observations.clear();
111
+ transactions.clear();
112
+ lix = undefined;
113
+ return undefined;
114
+ }
115
+ case "observe.next":
116
+ throw workerStateError("observe.next must use the observation lane");
117
+ }
118
+ }
119
+ async function handleObserveNext(observeId) {
120
+ const events = observations.get(observeId);
121
+ if (!events)
122
+ return undefined;
123
+ return events.next();
124
+ }
125
+ function requiredLix() {
126
+ if (!lix)
127
+ throw workerStateError("Lix worker is closed");
128
+ return lix;
129
+ }
130
+ function requiredTransaction(transactionId) {
131
+ const transaction = transactions.get(transactionId);
132
+ if (!transaction) {
133
+ const error = workerStateError("Lix transaction is closed");
134
+ error.code = "LIX_INVALID_TRANSACTION_STATE";
135
+ throw error;
136
+ }
137
+ return transaction;
138
+ }
139
+ }
140
+ function workerStateError(message) {
141
+ const error = new Error(message);
142
+ error.name = "LixError";
143
+ error.code = "LIX_ERROR_CLOSED";
144
+ return error;
145
+ }
@@ -0,0 +1,96 @@
1
+ import type { BindingParam, LixBackendConfig } from "../binding-types.js";
2
+ import type { CreateBranchOptions, ExecuteOptions, MergeBranchOptions, SwitchBranchOptions } from "../types.js";
3
+ export type WorkerRequest = {
4
+ id: number;
5
+ operation: WorkerOperation;
6
+ };
7
+ export type WorkerOperation = {
8
+ kind: "open";
9
+ backend: LixBackendConfig;
10
+ } | {
11
+ kind: "execute";
12
+ sql: string;
13
+ params: BindingParam[];
14
+ options?: ExecuteOptions;
15
+ } | {
16
+ kind: "beginTransaction";
17
+ } | {
18
+ kind: "transaction.execute";
19
+ transactionId: number;
20
+ sql: string;
21
+ params: BindingParam[];
22
+ options?: ExecuteOptions;
23
+ } | {
24
+ kind: "transaction.commit";
25
+ transactionId: number;
26
+ } | {
27
+ kind: "transaction.rollback";
28
+ transactionId: number;
29
+ } | {
30
+ kind: "activeBranchId";
31
+ } | {
32
+ kind: "createBranch";
33
+ options: CreateBranchOptions;
34
+ } | {
35
+ kind: "switchBranch";
36
+ options: SwitchBranchOptions;
37
+ } | {
38
+ kind: "mergeBranchPreview";
39
+ options: MergeBranchOptions;
40
+ } | {
41
+ kind: "mergeBranch";
42
+ options: MergeBranchOptions;
43
+ } | {
44
+ kind: "importFilesystemPaths";
45
+ paths: string[];
46
+ } | {
47
+ kind: "syncDiskToLix";
48
+ } | {
49
+ kind: "observe";
50
+ sql: string;
51
+ params: BindingParam[];
52
+ } | {
53
+ kind: "observe.next";
54
+ observeId: number;
55
+ } | {
56
+ kind: "close";
57
+ };
58
+ export type WorkerNotification = {
59
+ kind: "transaction.abandon";
60
+ transactionId: number;
61
+ } | {
62
+ kind: "observe.close";
63
+ observeId: number;
64
+ };
65
+ export type WorkerInput = WorkerRequest | WorkerNotification;
66
+ export type WorkerConnection = {
67
+ postMessage(message: WorkerInput): void;
68
+ onMessage(listener: (message: WorkerResponse) => void): void;
69
+ onFatal(listener: (error: Error) => void): void;
70
+ ref(): void;
71
+ unref(): void;
72
+ terminate(): Promise<void>;
73
+ };
74
+ export type WorkerHostEndpoint = {
75
+ postMessage(message: WorkerResponse): void;
76
+ onMessage(listener: (message: WorkerInput) => void): void;
77
+ };
78
+ export type SerializedWorkerError = {
79
+ name: string;
80
+ message: string;
81
+ stack?: string;
82
+ code?: string;
83
+ hint?: string;
84
+ details?: unknown;
85
+ };
86
+ export type WorkerResponse = {
87
+ id: number;
88
+ ok: true;
89
+ value?: unknown;
90
+ } | {
91
+ id: number;
92
+ ok: false;
93
+ error: SerializedWorkerError;
94
+ };
95
+ export declare function serializeWorkerError(error: unknown): SerializedWorkerError;
96
+ export declare function deserializeWorkerError(error: SerializedWorkerError): Error;
@@ -0,0 +1,23 @@
1
+ export function serializeWorkerError(error) {
2
+ if (!(error instanceof Error)) {
3
+ return { name: "Error", message: String(error) };
4
+ }
5
+ const lixError = error;
6
+ return {
7
+ name: error.name,
8
+ message: error.message,
9
+ stack: error.stack,
10
+ code: typeof lixError.code === "string" ? lixError.code : undefined,
11
+ hint: typeof lixError.hint === "string" ? lixError.hint : undefined,
12
+ details: lixError.details,
13
+ };
14
+ }
15
+ export function deserializeWorkerError(error) {
16
+ const restored = new Error(error.message);
17
+ restored.name = error.name;
18
+ restored.stack = error.stack;
19
+ restored.code = error.code;
20
+ restored.hint = error.hint;
21
+ restored.details = error.details;
22
+ return restored;
23
+ }
package/package.json CHANGED
@@ -1,9 +1,8 @@
1
1
  {
2
2
  "name": "@lix-js/sdk",
3
3
  "type": "module",
4
- "version": "0.6.2",
5
- "main": "./dist/index.js",
6
- "types": "./dist/index.d.ts",
4
+ "version": "0.8.0",
5
+ "license": "MIT",
7
6
  "repository": {
8
7
  "type": "git",
9
8
  "url": "https://github.com/opral/lix"
@@ -14,26 +13,56 @@
14
13
  "default": "./dist/index.js"
15
14
  }
16
15
  },
16
+ "imports": {
17
+ "#binding": {
18
+ "node": "./dist/binding.node.js",
19
+ "default": "./dist/binding.browser.js"
20
+ },
21
+ "#jco-transpile": {
22
+ "node": "@bytecodealliance/jco-transpile",
23
+ "default": "./dist/jco-transpile.browser.js"
24
+ },
25
+ "#worker-factory": {
26
+ "node": "./dist/worker/factory.node.js",
27
+ "default": "./dist/worker/factory.browser.js"
28
+ }
29
+ },
17
30
  "files": [
18
31
  "dist"
19
32
  ],
20
33
  "scripts": {
21
- "build": "npm run build:native && npm run build:ts",
34
+ "build": "npm run clean && npm run build:native && npm run build:wasm && npm run build:ts && npm run build:jco-browser && npm run build:plugins",
35
+ "build:browser": "npm run clean && npm run build:wasm && npm run build:ts && npm run build:jco-browser && npm run build:plugins",
36
+ "build:jco-browser": "node ./scripts/build-jco-browser.js",
22
37
  "build:native": "node ./scripts/build-native.js",
38
+ "build:wasm": "node ./scripts/build-wasm.js",
39
+ "build:wasm:dev": "LIX_WASM_PROFILE=dev node ./scripts/build-wasm.js",
40
+ "build:plugins": "node ./scripts/build-bundled-plugins.js",
41
+ "clean": "node ./scripts/clean.js",
23
42
  "prepare:native-package": "node ./scripts/prepare-native-package.js",
24
43
  "build:ts": "tsc -p tsconfig.json",
25
44
  "test": "npm run build && vitest run",
45
+ "test:browser": "npm run build:browser && vitest run --config vitest.browser.config.ts",
46
+ "test:browser:built": "vitest run --config vitest.browser.config.ts",
47
+ "test:browser:production": "node ./scripts/test-packed-vite.js",
26
48
  "typecheck": "tsc -p tsconfig.test.json --noEmit"
27
49
  },
28
50
  "optionalDependencies": {
29
- "@lix-js/sdk-darwin-arm64": "0.6.2",
30
- "@lix-js/sdk-linux-arm64": "0.6.2",
31
- "@lix-js/sdk-linux-x64": "0.6.2",
32
- "@lix-js/sdk-win32-x64": "0.6.2"
51
+ "@lix-js/sdk-darwin-arm64": "0.8.0",
52
+ "@lix-js/sdk-linux-arm64": "0.8.0",
53
+ "@lix-js/sdk-linux-x64": "0.8.0",
54
+ "@lix-js/sdk-win32-x64": "0.8.0"
33
55
  },
34
56
  "devDependencies": {
57
+ "@vitest/browser-playwright": "4.0.18",
35
58
  "@types/node": "^24.10.2",
59
+ "playwright": "1.57.0",
36
60
  "typescript": "^5.5.4",
37
61
  "vitest": "^4.0.18"
62
+ },
63
+ "dependencies": {
64
+ "@bytecodealliance/jco-transpile": "0.4.2",
65
+ "@bytecodealliance/preview2-shim": "0.19.0",
66
+ "fflate": "^0.8.3"
38
67
  }
39
68
  }
package/dist/native.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare const addon: Record<string, any>;