@kodexa-ai/document-wasm-ts 8.0.0-develop-20663153063 → 8.0.0-develop-20665016781
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/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/kodexa-worker.js +401 -0
- package/dist/kodexa-worker.js.map +7 -0
- package/dist/kodexa.wasm +0 -0
- package/dist/worker/KodexaWorker.d.ts +134 -0
- package/dist/worker/KodexaWorker.d.ts.map +1 -0
- package/dist/worker/KodexaWorker.js +252 -0
- package/dist/worker/KodexaWorker.js.map +1 -0
- package/dist/worker/KodexaWorkerDocument.d.ts +192 -0
- package/dist/worker/KodexaWorkerDocument.d.ts.map +1 -0
- package/dist/worker/KodexaWorkerDocument.js +370 -0
- package/dist/worker/KodexaWorkerDocument.js.map +1 -0
- package/dist/worker/KodexaWorkerNode.d.ts +276 -0
- package/dist/worker/KodexaWorkerNode.d.ts.map +1 -0
- package/dist/worker/KodexaWorkerNode.js +517 -0
- package/dist/worker/KodexaWorkerNode.js.map +1 -0
- package/dist/worker/index.d.ts +29 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +28 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/kodexa-worker.d.ts +15 -0
- package/dist/worker/kodexa-worker.d.ts.map +1 -0
- package/dist/worker/kodexa-worker.js +203 -0
- package/dist/worker/kodexa-worker.js.map +1 -0
- package/dist/worker/types.d.ts +80 -0
- package/dist/worker/types.d.ts.map +1 -0
- package/dist/worker/types.js +8 -0
- package/dist/worker/types.js.map +1 -0
- package/package.json +16 -3
package/dist/index.d.ts
CHANGED
|
@@ -63,5 +63,10 @@ export declare class Kodexa {
|
|
|
63
63
|
*/
|
|
64
64
|
static setLogLevel(level: 'debug' | 'info' | 'warn' | 'error'): boolean;
|
|
65
65
|
}
|
|
66
|
+
export { KodexaWorker } from './worker/KodexaWorker';
|
|
67
|
+
export type { KodexaWorkerOptions } from './worker/KodexaWorker';
|
|
68
|
+
export { KodexaWorkerDocument } from './worker/KodexaWorkerDocument';
|
|
69
|
+
export { KodexaWorkerNode } from './worker/KodexaWorkerNode';
|
|
70
|
+
export type { WorkerConfig, WorkerNodeData } from './worker/types';
|
|
66
71
|
export default Kodexa;
|
|
67
72
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAGrE,OAAO,EAAE,YAAY,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,WAAW,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjF,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,8BAA8B,EAC9B,oCAAoC,EACpC,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAGlB,YAAY,EACV,WAAW,EACX,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,cAAc,EAEd,QAAQ,EACR,KAAK,EACL,eAAe,EACf,UAAU,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EAEvB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,QAAQ,EACR,eAAe,EAEf,IAAI,GACL,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGxF,qBAAa,MAAM;IACjB;;;OAGG;WACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC;;OAEG;WACU,cAAc,IAAI,OAAO,CAAC,OAAO,gBAAgB,EAAE,YAAY,CAAC;IAK7E;;OAEG;WACU,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,gBAAgB,EAAE,YAAY,CAAC;IAKnF;;OAEG;WACU,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,gBAAgB,EAAE,YAAY,CAAC;IAKnF;;OAEG;WACU,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,gBAAgB,EAAE,YAAY,CAAC;IAKjF;;OAEG;IACH,MAAM,CAAC,QAAQ,IAAI,OAAO;IAS1B;;OAEG;IACH,MAAM,CAAC,OAAO,IAAI,IAAI;IAStB;;;;;;;OAOG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO;CASxE;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -102,6 +102,12 @@ export class Kodexa {
|
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
|
+
// Web Worker support
|
|
106
|
+
// These are re-exported for convenience, but the recommended way to use them
|
|
107
|
+
// is via: import { KodexaWorker } from '@kodexa-ai/document-wasm-ts/worker'
|
|
108
|
+
export { KodexaWorker } from './worker/KodexaWorker';
|
|
109
|
+
export { KodexaWorkerDocument } from './worker/KodexaWorkerDocument';
|
|
110
|
+
export { KodexaWorkerNode } from './worker/KodexaWorkerNode';
|
|
105
111
|
// Default export
|
|
106
112
|
export default Kodexa;
|
|
107
113
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,8BAA8B;AAC9B,OAAO,EAAE,YAAY,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,WAAW,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7D,8IAA8I;AAC9I,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,iBAAiB;AACjB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjF,gBAAgB;AAChB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,8BAA8B,EAC9B,oCAAoC,EACpC,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAqClB,wBAAwB;AACxB,MAAM,OAAO,MAAM;IACjB;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI;QACf,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc;QACzB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxD,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAY;QAChC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxD,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAY;QAChC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxD,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAU;QAC9B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxD,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ;QACb,IAAI,CAAC;YACH,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YAClD,OAAO,YAAY,EAAE,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YACjD,WAAW,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,WAAW,CAAC,KAA0C;QAC3D,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YACjD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAED,qBAAqB;AACrB,6EAA6E;AAC7E,4EAA4E;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,iBAAiB;AACjB,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
2
|
+
var __esm = (fn, res) => function __init() {
|
|
3
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
4
|
+
};
|
|
5
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
6
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
// src/wasm/sqljs-core.ts
|
|
10
|
+
function uint8ArrayToBase64(bytes) {
|
|
11
|
+
if (bytes.length < 32768) {
|
|
12
|
+
let binary2 = "";
|
|
13
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
14
|
+
binary2 += String.fromCharCode(bytes[i]);
|
|
15
|
+
}
|
|
16
|
+
return btoa(binary2);
|
|
17
|
+
}
|
|
18
|
+
const chunkSize = 32768;
|
|
19
|
+
let binary = "";
|
|
20
|
+
for (let i = 0; i < bytes.length; i += chunkSize) {
|
|
21
|
+
const chunk = bytes.subarray(i, Math.min(i + chunkSize, bytes.length));
|
|
22
|
+
binary += String.fromCharCode.apply(null, Array.from(chunk));
|
|
23
|
+
}
|
|
24
|
+
return btoa(binary);
|
|
25
|
+
}
|
|
26
|
+
function processRowForJson(obj) {
|
|
27
|
+
const result = {};
|
|
28
|
+
for (const key in obj) {
|
|
29
|
+
const value = obj[key];
|
|
30
|
+
if (value instanceof Uint8Array) {
|
|
31
|
+
try {
|
|
32
|
+
const base64 = uint8ArrayToBase64(value);
|
|
33
|
+
result[key] = "base64:" + base64;
|
|
34
|
+
} catch (err) {
|
|
35
|
+
console.error(`[sql.js] Failed to convert BLOB column '${key}' (${value.length} bytes):`, err);
|
|
36
|
+
result[key] = null;
|
|
37
|
+
}
|
|
38
|
+
} else {
|
|
39
|
+
result[key] = value;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
function createDatabaseOp() {
|
|
45
|
+
if (!sqlInstance) {
|
|
46
|
+
console.error("[sql.js] Not initialized");
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const db = new sqlInstance.Database();
|
|
51
|
+
const handle = nextHandle++;
|
|
52
|
+
databases.set(handle, db);
|
|
53
|
+
console.log(`[sql.js] Created database with handle ${handle}`);
|
|
54
|
+
return handle;
|
|
55
|
+
} catch (error) {
|
|
56
|
+
console.error("[sql.js] Failed to create database:", error);
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function execOp(handle, sql) {
|
|
61
|
+
const db = databases.get(handle);
|
|
62
|
+
if (!db) {
|
|
63
|
+
console.error(`[sql.js] Invalid database handle: ${handle}`);
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
db.run(sql);
|
|
68
|
+
return 1;
|
|
69
|
+
} catch (error) {
|
|
70
|
+
console.error("[sql.js] Exec failed:", error);
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function queryOp(handle, sql, paramsJson) {
|
|
75
|
+
const db = databases.get(handle);
|
|
76
|
+
if (!db) {
|
|
77
|
+
console.error(`[sql.js] Invalid database handle: ${handle}`);
|
|
78
|
+
return "[]";
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
let params = [];
|
|
82
|
+
if (paramsJson && paramsJson !== "[]" && paramsJson !== "null") {
|
|
83
|
+
params = JSON.parse(paramsJson);
|
|
84
|
+
}
|
|
85
|
+
const stmt = db.prepare(sql);
|
|
86
|
+
if (params.length > 0) {
|
|
87
|
+
stmt.bind(params);
|
|
88
|
+
}
|
|
89
|
+
const results = [];
|
|
90
|
+
while (stmt.step()) {
|
|
91
|
+
results.push(processRowForJson(stmt.getAsObject()));
|
|
92
|
+
}
|
|
93
|
+
stmt.free();
|
|
94
|
+
return JSON.stringify(results);
|
|
95
|
+
} catch (error) {
|
|
96
|
+
console.error("[sql.js] Query failed:", sql, error);
|
|
97
|
+
return "[]";
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function insertOp(handle, sql, paramsJson) {
|
|
101
|
+
const db = databases.get(handle);
|
|
102
|
+
if (!db) {
|
|
103
|
+
console.error(`[sql.js] Invalid database handle: ${handle}`);
|
|
104
|
+
return 0;
|
|
105
|
+
}
|
|
106
|
+
try {
|
|
107
|
+
let params = [];
|
|
108
|
+
if (paramsJson && paramsJson !== "[]" && paramsJson !== "null") {
|
|
109
|
+
params = JSON.parse(paramsJson);
|
|
110
|
+
}
|
|
111
|
+
if (params.length > 0) {
|
|
112
|
+
db.run(sql, params);
|
|
113
|
+
} else {
|
|
114
|
+
db.run(sql);
|
|
115
|
+
}
|
|
116
|
+
const result = db.exec("SELECT last_insert_rowid() as id");
|
|
117
|
+
if (result.length > 0 && result[0].values.length > 0) {
|
|
118
|
+
return result[0].values[0][0];
|
|
119
|
+
}
|
|
120
|
+
return 0;
|
|
121
|
+
} catch (error) {
|
|
122
|
+
console.error("[sql.js] Insert failed:", sql, error);
|
|
123
|
+
return 0;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function execParamsOp(handle, sql, paramsJson) {
|
|
127
|
+
const db = databases.get(handle);
|
|
128
|
+
if (!db) {
|
|
129
|
+
console.error(`[sql.js] Invalid database handle: ${handle}`);
|
|
130
|
+
return -1;
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
let params = [];
|
|
134
|
+
if (paramsJson && paramsJson !== "[]" && paramsJson !== "null") {
|
|
135
|
+
params = JSON.parse(paramsJson);
|
|
136
|
+
}
|
|
137
|
+
if (params.length > 0) {
|
|
138
|
+
db.run(sql, params);
|
|
139
|
+
} else {
|
|
140
|
+
db.run(sql);
|
|
141
|
+
}
|
|
142
|
+
const result = db.exec("SELECT changes() as count");
|
|
143
|
+
if (result.length > 0 && result[0].values.length > 0) {
|
|
144
|
+
return result[0].values[0][0];
|
|
145
|
+
}
|
|
146
|
+
return 0;
|
|
147
|
+
} catch (error) {
|
|
148
|
+
console.error("[sql.js] ExecParams failed:", sql, error);
|
|
149
|
+
return -1;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function exportOp(handle) {
|
|
153
|
+
const db = databases.get(handle);
|
|
154
|
+
if (!db) {
|
|
155
|
+
console.error(`[sql.js] Invalid database handle: ${handle}`);
|
|
156
|
+
return "";
|
|
157
|
+
}
|
|
158
|
+
try {
|
|
159
|
+
const data = db.export();
|
|
160
|
+
return uint8ArrayToBase64(data);
|
|
161
|
+
} catch (error) {
|
|
162
|
+
console.error("[sql.js] Export failed:", error);
|
|
163
|
+
return "";
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function importOp(base64Data) {
|
|
167
|
+
if (!sqlInstance) {
|
|
168
|
+
console.error("[sql.js] Not initialized");
|
|
169
|
+
return 0;
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
const binary = atob(base64Data);
|
|
173
|
+
const data = new Uint8Array(binary.length);
|
|
174
|
+
for (let i = 0; i < binary.length; i++) {
|
|
175
|
+
data[i] = binary.charCodeAt(i);
|
|
176
|
+
}
|
|
177
|
+
const db = new sqlInstance.Database(data);
|
|
178
|
+
const handle = nextHandle++;
|
|
179
|
+
databases.set(handle, db);
|
|
180
|
+
console.log(`[sql.js] Imported database with handle ${handle}`);
|
|
181
|
+
return handle;
|
|
182
|
+
} catch (error) {
|
|
183
|
+
console.error("[sql.js] Import failed:", error);
|
|
184
|
+
return 0;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function loadDirectOp(bytes) {
|
|
188
|
+
if (!sqlInstance) {
|
|
189
|
+
console.error("[sql.js] Not initialized");
|
|
190
|
+
return 0;
|
|
191
|
+
}
|
|
192
|
+
try {
|
|
193
|
+
const db = new sqlInstance.Database(bytes);
|
|
194
|
+
const handle = nextHandle++;
|
|
195
|
+
databases.set(handle, db);
|
|
196
|
+
return handle;
|
|
197
|
+
} catch (error) {
|
|
198
|
+
console.error("[sql.js] Failed to load database directly:", error);
|
|
199
|
+
return 0;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
function closeOp(handle) {
|
|
203
|
+
const db = databases.get(handle);
|
|
204
|
+
if (db) {
|
|
205
|
+
try {
|
|
206
|
+
db.close();
|
|
207
|
+
} catch (error) {
|
|
208
|
+
console.error("[sql.js] Close failed:", error);
|
|
209
|
+
}
|
|
210
|
+
databases.delete(handle);
|
|
211
|
+
console.log(`[sql.js] Closed database with handle ${handle}`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
function getErrorOp(_handle) {
|
|
215
|
+
return "";
|
|
216
|
+
}
|
|
217
|
+
function setSqlInstance(SQL) {
|
|
218
|
+
sqlInstance = SQL;
|
|
219
|
+
}
|
|
220
|
+
function exposeBridgeFunctions() {
|
|
221
|
+
const g = globalThis;
|
|
222
|
+
g.sqljsCreateDatabase = createDatabaseOp;
|
|
223
|
+
g.sqljsExec = execOp;
|
|
224
|
+
g.sqljsQuery = queryOp;
|
|
225
|
+
g.sqljsInsert = insertOp;
|
|
226
|
+
g.sqljsExecParams = execParamsOp;
|
|
227
|
+
g.sqljsExport = exportOp;
|
|
228
|
+
g.sqljsImport = importOp;
|
|
229
|
+
g.sqljsClose = closeOp;
|
|
230
|
+
g.sqljsGetError = getErrorOp;
|
|
231
|
+
g.sqljsLoadDirect = loadDirectOp;
|
|
232
|
+
g.sqljsDatabases = databases;
|
|
233
|
+
console.log("[sql.js] Bridge functions exposed to globalThis");
|
|
234
|
+
}
|
|
235
|
+
var databases, nextHandle, sqlInstance;
|
|
236
|
+
var init_sqljs_core = __esm({
|
|
237
|
+
"src/wasm/sqljs-core.ts"() {
|
|
238
|
+
"use strict";
|
|
239
|
+
databases = /* @__PURE__ */ new Map();
|
|
240
|
+
nextHandle = 1;
|
|
241
|
+
sqlInstance = null;
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
// src/worker/kodexa-worker.ts
|
|
246
|
+
var require_kodexa_worker = __commonJS({
|
|
247
|
+
"src/worker/kodexa-worker.ts"(exports, module) {
|
|
248
|
+
init_sqljs_core();
|
|
249
|
+
var initialized = false;
|
|
250
|
+
var initPromise = null;
|
|
251
|
+
var config = {};
|
|
252
|
+
async function initializeSqlJs() {
|
|
253
|
+
const sqlJsUrl = "https://esm.sh/sql.js@1.11.0";
|
|
254
|
+
const sqlJsModule = await import(
|
|
255
|
+
/* webpackIgnore: true */
|
|
256
|
+
sqlJsUrl
|
|
257
|
+
);
|
|
258
|
+
const initSqlJs = sqlJsModule.default;
|
|
259
|
+
const sqlConfig = {};
|
|
260
|
+
sqlConfig.locateFile = () => "https://sql.js.org/dist/sql-wasm.wasm";
|
|
261
|
+
const SQL = await initSqlJs(sqlConfig);
|
|
262
|
+
setSqlInstance(SQL);
|
|
263
|
+
exposeBridgeFunctions();
|
|
264
|
+
self.loadDocument = (bytes) => {
|
|
265
|
+
const handle = loadDirectOp(bytes);
|
|
266
|
+
if (handle === 0) {
|
|
267
|
+
console.error("[worker] Failed to load database");
|
|
268
|
+
return 0;
|
|
269
|
+
}
|
|
270
|
+
return self.createDocumentFromHandle(handle);
|
|
271
|
+
};
|
|
272
|
+
console.log("[worker] sql.js initialized");
|
|
273
|
+
}
|
|
274
|
+
async function loadWasmExec() {
|
|
275
|
+
if (self.Go) {
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
const baseUrl = config.wasmBaseUrl || self.location.origin;
|
|
279
|
+
const wasmExecUrl = `${baseUrl}/wasm_exec.js`;
|
|
280
|
+
try {
|
|
281
|
+
const response = await fetch(wasmExecUrl);
|
|
282
|
+
if (!response.ok) {
|
|
283
|
+
throw new Error(`Failed to fetch wasm_exec.js: ${response.statusText}`);
|
|
284
|
+
}
|
|
285
|
+
const code = await response.text();
|
|
286
|
+
eval(code);
|
|
287
|
+
console.log("[worker] wasm_exec.js loaded");
|
|
288
|
+
} catch (error) {
|
|
289
|
+
throw new Error(`Failed to load wasm_exec.js: ${error}`);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
async function loadGoWasm() {
|
|
293
|
+
const baseUrl2 = config.wasmBaseUrl || self.location.origin;
|
|
294
|
+
const wasmUrl = `${baseUrl2}/kodexa.wasm`;
|
|
295
|
+
const response2 = await fetch(wasmUrl);
|
|
296
|
+
if (!response2.ok) {
|
|
297
|
+
throw new Error(`Failed to fetch kodexa.wasm: ${response2.statusText}`);
|
|
298
|
+
}
|
|
299
|
+
const wasmBytes = await response2.arrayBuffer();
|
|
300
|
+
const go = new self.Go();
|
|
301
|
+
const result = await WebAssembly.instantiate(wasmBytes, go.importObject);
|
|
302
|
+
go.run(result.instance);
|
|
303
|
+
const logLevel = config.logLevel || "warn";
|
|
304
|
+
if (self.kodexa_setLogLevel) {
|
|
305
|
+
self.kodexa_setLogLevel(logLevel);
|
|
306
|
+
}
|
|
307
|
+
console.log("[worker] Go WASM loaded");
|
|
308
|
+
}
|
|
309
|
+
async function initialize(workerConfig) {
|
|
310
|
+
if (initialized) {
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
if (initPromise) {
|
|
314
|
+
return initPromise;
|
|
315
|
+
}
|
|
316
|
+
config = workerConfig || {};
|
|
317
|
+
initPromise = (async () => {
|
|
318
|
+
try {
|
|
319
|
+
await initializeSqlJs();
|
|
320
|
+
await loadWasmExec();
|
|
321
|
+
await loadGoWasm();
|
|
322
|
+
initialized = true;
|
|
323
|
+
console.log("[worker] Kodexa WASM fully initialized");
|
|
324
|
+
} catch (error) {
|
|
325
|
+
console.error("[worker] Initialization failed:", error);
|
|
326
|
+
throw error;
|
|
327
|
+
}
|
|
328
|
+
})();
|
|
329
|
+
return initPromise;
|
|
330
|
+
}
|
|
331
|
+
function handleCall(request) {
|
|
332
|
+
const { id, method, args } = request;
|
|
333
|
+
try {
|
|
334
|
+
const fn = self[method];
|
|
335
|
+
if (typeof fn !== "function") {
|
|
336
|
+
return {
|
|
337
|
+
id,
|
|
338
|
+
success: false,
|
|
339
|
+
error: `Function '${method}' not found on globalThis`
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
const result = fn(...args || []);
|
|
343
|
+
return { id, success: true, result };
|
|
344
|
+
} catch (error) {
|
|
345
|
+
return {
|
|
346
|
+
id,
|
|
347
|
+
success: false,
|
|
348
|
+
error: error instanceof Error ? error.message : String(error)
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
self.onmessage = async (event) => {
|
|
353
|
+
const data = event.data;
|
|
354
|
+
if ("type" in data && data.type === "init") {
|
|
355
|
+
try {
|
|
356
|
+
await initialize(data.config);
|
|
357
|
+
const readyMessage = { type: "ready" };
|
|
358
|
+
self.postMessage(readyMessage);
|
|
359
|
+
} catch (error) {
|
|
360
|
+
const errorMessage = {
|
|
361
|
+
type: "error",
|
|
362
|
+
error: error instanceof Error ? error.message : String(error)
|
|
363
|
+
};
|
|
364
|
+
self.postMessage(errorMessage);
|
|
365
|
+
}
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
if ("type" in data && data.type === "call") {
|
|
369
|
+
if (!initialized) {
|
|
370
|
+
const response3 = {
|
|
371
|
+
id: data.id,
|
|
372
|
+
success: false,
|
|
373
|
+
error: "Worker not initialized. Send init message first."
|
|
374
|
+
};
|
|
375
|
+
self.postMessage(response3);
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
const response2 = handleCall(data);
|
|
379
|
+
self.postMessage(response2);
|
|
380
|
+
}
|
|
381
|
+
};
|
|
382
|
+
var urlParams = new URLSearchParams(self.location.search);
|
|
383
|
+
var autoInit = urlParams.get("autoInit");
|
|
384
|
+
if (autoInit === "true") {
|
|
385
|
+
const wasmBaseUrl = urlParams.get("wasmBaseUrl") || void 0;
|
|
386
|
+
const logLevel = urlParams.get("logLevel") || void 0;
|
|
387
|
+
initialize({ wasmBaseUrl, logLevel }).then(() => {
|
|
388
|
+
const readyMessage = { type: "ready" };
|
|
389
|
+
self.postMessage(readyMessage);
|
|
390
|
+
}).catch((error) => {
|
|
391
|
+
const errorMessage = {
|
|
392
|
+
type: "error",
|
|
393
|
+
error: error instanceof Error ? error.message : String(error)
|
|
394
|
+
};
|
|
395
|
+
self.postMessage(errorMessage);
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
export default require_kodexa_worker();
|
|
401
|
+
//# sourceMappingURL=kodexa-worker.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/wasm/sqljs-core.ts", "../src/worker/kodexa-worker.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Core sql.js bridge operations - shared between environments\n *\n * This module contains all the database operations that are common between\n * the npm package (sqljs-bridge.ts) and browser CDN (browser-bridge.ts) implementations.\n *\n * The SQL instance is passed in from the wrapper modules, allowing them to\n * load sql.js in different ways (npm import vs CDN global).\n */\n\n// Database handle management\nconst databases = new Map<number, any>();\nlet nextHandle = 1;\n\n// Store SQL instance reference for operations that need it\nlet sqlInstance: any = null;\n\n/**\n * Convert Uint8Array to base64 string efficiently.\n * Uses chunked processing to handle large arrays without stack overflow.\n * @param bytes Uint8Array to convert\n * @returns Base64 encoded string\n */\nfunction uint8ArrayToBase64(bytes: Uint8Array): string {\n // For small arrays, use the simple method\n if (bytes.length < 32768) {\n let binary = '';\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n\n // For large arrays, process in chunks to avoid stack overflow\n const chunkSize = 32768;\n let binary = '';\n for (let i = 0; i < bytes.length; i += chunkSize) {\n const chunk = bytes.subarray(i, Math.min(i + chunkSize, bytes.length));\n binary += String.fromCharCode.apply(null, Array.from(chunk));\n }\n return btoa(binary);\n}\n\n/**\n * Convert a row object for JSON serialization.\n * Converts Uint8Array (BLOB) to base64-encoded string with \"base64:\" prefix.\n * @param obj Row object from sql.js\n * @returns Object safe for JSON.stringify\n */\nfunction processRowForJson(obj: Record<string, any>): Record<string, any> {\n const result: Record<string, any> = {};\n for (const key in obj) {\n const value = obj[key];\n if (value instanceof Uint8Array) {\n // Convert BLOB to base64 with prefix for Go to recognize\n try {\n const base64 = uint8ArrayToBase64(value);\n result[key] = 'base64:' + base64;\n } catch (err) {\n console.error(`[sql.js] Failed to convert BLOB column '${key}' (${value.length} bytes):`, err);\n result[key] = null;\n }\n } else {\n result[key] = value;\n }\n }\n return result;\n}\n\n// ============================================================================\n// Database Operations\n// ============================================================================\n\n/**\n * Create a new in-memory database\n * @returns Database handle (positive integer) or 0 on error\n */\nexport function createDatabaseOp(): number {\n if (!sqlInstance) {\n console.error('[sql.js] Not initialized');\n return 0;\n }\n\n try {\n const db = new sqlInstance.Database();\n const handle = nextHandle++;\n databases.set(handle, db);\n console.log(`[sql.js] Created database with handle ${handle}`);\n return handle;\n } catch (error) {\n console.error('[sql.js] Failed to create database:', error);\n return 0;\n }\n}\n\n/**\n * Execute SQL statement without returning results\n * @param handle Database handle\n * @param sql SQL statement\n * @returns 1 on success, 0 on error\n */\nexport function execOp(handle: number, sql: string): number {\n const db = databases.get(handle);\n if (!db) {\n console.error(`[sql.js] Invalid database handle: ${handle}`);\n return 0;\n }\n\n try {\n db.run(sql);\n return 1;\n } catch (error) {\n console.error('[sql.js] Exec failed:', error);\n return 0;\n }\n}\n\n/**\n * Execute SQL query with parameters and return results as JSON\n * @param handle Database handle\n * @param sql SQL query with ? placeholders\n * @param paramsJson JSON array of parameters\n * @returns JSON string of results (array of objects) or empty string on error\n */\nexport function queryOp(handle: number, sql: string, paramsJson: string): string {\n const db = databases.get(handle);\n if (!db) {\n console.error(`[sql.js] Invalid database handle: ${handle}`);\n return '[]';\n }\n\n try {\n // Parse parameters\n let params: any[] = [];\n if (paramsJson && paramsJson !== '[]' && paramsJson !== 'null') {\n params = JSON.parse(paramsJson);\n }\n\n // Execute query\n const stmt = db.prepare(sql);\n if (params.length > 0) {\n stmt.bind(params);\n }\n\n // Collect results - convert Uint8Array to base64 for Go\n const results: any[] = [];\n while (stmt.step()) {\n results.push(processRowForJson(stmt.getAsObject()));\n }\n stmt.free();\n\n return JSON.stringify(results);\n } catch (error) {\n console.error('[sql.js] Query failed:', sql, error);\n return '[]';\n }\n}\n\n/**\n * Execute INSERT statement and return the last inserted row ID\n * @param handle Database handle\n * @param sql INSERT statement with ? placeholders\n * @param paramsJson JSON array of parameters\n * @returns Last insert row ID or 0 on error\n */\nexport function insertOp(handle: number, sql: string, paramsJson: string): number {\n const db = databases.get(handle);\n if (!db) {\n console.error(`[sql.js] Invalid database handle: ${handle}`);\n return 0;\n }\n\n try {\n // Parse parameters\n let params: any[] = [];\n if (paramsJson && paramsJson !== '[]' && paramsJson !== 'null') {\n params = JSON.parse(paramsJson);\n }\n\n // Execute insert\n if (params.length > 0) {\n db.run(sql, params);\n } else {\n db.run(sql);\n }\n\n // Get last insert row ID\n const result = db.exec('SELECT last_insert_rowid() as id');\n if (result.length > 0 && result[0].values.length > 0) {\n return result[0].values[0][0] as number;\n }\n return 0;\n } catch (error) {\n console.error('[sql.js] Insert failed:', sql, error);\n return 0;\n }\n}\n\n/**\n * Execute UPDATE/DELETE statement and return rows affected\n * @param handle Database handle\n * @param sql UPDATE or DELETE statement with ? placeholders\n * @param paramsJson JSON array of parameters\n * @returns Number of rows affected or -1 on error\n */\nexport function execParamsOp(handle: number, sql: string, paramsJson: string): number {\n const db = databases.get(handle);\n if (!db) {\n console.error(`[sql.js] Invalid database handle: ${handle}`);\n return -1;\n }\n\n try {\n // Parse parameters\n let params: any[] = [];\n if (paramsJson && paramsJson !== '[]' && paramsJson !== 'null') {\n params = JSON.parse(paramsJson);\n }\n\n // Execute statement\n if (params.length > 0) {\n db.run(sql, params);\n } else {\n db.run(sql);\n }\n\n // Get rows affected\n const result = db.exec('SELECT changes() as count');\n if (result.length > 0 && result[0].values.length > 0) {\n return result[0].values[0][0] as number;\n }\n return 0;\n } catch (error) {\n console.error('[sql.js] ExecParams failed:', sql, error);\n return -1;\n }\n}\n\n/**\n * Export database to binary format\n * @param handle Database handle\n * @returns Base64-encoded database bytes or empty string on error\n */\nexport function exportOp(handle: number): string {\n const db = databases.get(handle);\n if (!db) {\n console.error(`[sql.js] Invalid database handle: ${handle}`);\n return '';\n }\n\n try {\n const data = db.export();\n // Use chunked base64 conversion for potentially large databases\n return uint8ArrayToBase64(data);\n } catch (error) {\n console.error('[sql.js] Export failed:', error);\n return '';\n }\n}\n\n/**\n * Import database from binary format\n * @param base64Data Base64-encoded database bytes\n * @returns Database handle or 0 on error\n */\nexport function importOp(base64Data: string): number {\n if (!sqlInstance) {\n console.error('[sql.js] Not initialized');\n return 0;\n }\n\n try {\n // Decode base64 to Uint8Array\n const binary = atob(base64Data);\n const data = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n data[i] = binary.charCodeAt(i);\n }\n\n const db = new sqlInstance.Database(data);\n const handle = nextHandle++;\n databases.set(handle, db);\n console.log(`[sql.js] Imported database with handle ${handle}`);\n return handle;\n } catch (error) {\n console.error('[sql.js] Import failed:', error);\n return 0;\n }\n}\n\n/**\n * Load database directly from bytes\n * @param bytes Raw database bytes\n * @returns Database handle or 0 on error\n */\nexport function loadDirectOp(bytes: Uint8Array): number {\n if (!sqlInstance) {\n console.error('[sql.js] Not initialized');\n return 0;\n }\n\n try {\n const db = new sqlInstance.Database(bytes);\n const handle = nextHandle++;\n databases.set(handle, db);\n return handle;\n } catch (error) {\n console.error('[sql.js] Failed to load database directly:', error);\n return 0;\n }\n}\n\n/**\n * Close a database\n * @param handle Database handle\n */\nexport function closeOp(handle: number): void {\n const db = databases.get(handle);\n if (db) {\n try {\n db.close();\n } catch (error) {\n console.error('[sql.js] Close failed:', error);\n }\n databases.delete(handle);\n console.log(`[sql.js] Closed database with handle ${handle}`);\n }\n}\n\n/**\n * Get last error message (for debugging)\n * @param _handle Database handle\n * @returns Error message or empty string\n */\nexport function getErrorOp(_handle: number): string {\n // sql.js throws exceptions rather than storing error messages\n // This is a placeholder for API compatibility\n return '';\n}\n\n/**\n * Cleanup all databases and reset state\n */\nexport function cleanupOp(): void {\n for (const [_handle, db] of databases) {\n try {\n db.close();\n } catch (_e) {\n // Ignore close errors during cleanup\n }\n }\n databases.clear();\n nextHandle = 1;\n console.log('[sql.js] Cleaned up all databases');\n}\n\n// ============================================================================\n// Bridge Exposure\n// ============================================================================\n\n/**\n * Set the SQL instance for database operations\n * Must be called before any database operations\n */\nexport function setSqlInstance(SQL: any): void {\n sqlInstance = SQL;\n}\n\n/**\n * Expose sql.js bridge functions to globalThis for Go WASM access\n */\nexport function exposeBridgeFunctions(): void {\n const g = globalThis as any;\n\n g.sqljsCreateDatabase = createDatabaseOp;\n g.sqljsExec = execOp;\n g.sqljsQuery = queryOp;\n g.sqljsInsert = insertOp;\n g.sqljsExecParams = execParamsOp;\n g.sqljsExport = exportOp;\n g.sqljsImport = importOp;\n g.sqljsClose = closeOp;\n g.sqljsGetError = getErrorOp;\n g.sqljsLoadDirect = loadDirectOp;\n\n // Also expose database map for debugging\n g.sqljsDatabases = databases;\n\n console.log('[sql.js] Bridge functions exposed to globalThis');\n}\n\n/**\n * Get a database by handle (for debugging from console)\n */\nexport function getDatabase(handle: number): any {\n return databases.get(handle);\n}\n", "/**\n * Kodexa Web Worker Entry Point\n *\n * This worker owns the Go WASM instance and exposes an RPC-style API\n * via postMessage. All heavy document processing happens here,\n * keeping the main thread responsive.\n *\n * Initialization order (critical):\n * 1. sql.js WASM loaded and bridge exposed to globalThis\n * 2. wasm_exec.js loaded (defines globalThis.Go)\n * 3. kodexa.wasm instantiated and Go runtime started\n * 4. Worker signals 'ready' to main thread\n */\n\n/// <reference lib=\"webworker\" />\n\nimport type { WorkerRequest, WorkerResponse, WorkerReadyMessage, WorkerErrorMessage, WorkerConfig } from './types';\nimport { setSqlInstance, exposeBridgeFunctions, loadDirectOp } from '../wasm/sqljs-core';\n\ndeclare const self: DedicatedWorkerGlobalScope;\n\n// Worker state\nlet initialized = false;\nlet initPromise: Promise<void> | null = null;\nlet config: WorkerConfig = {};\n\n/**\n * Initialize sql.js in the worker context.\n * Uses dynamic import from ESM CDN for browser workers.\n */\nasync function initializeSqlJs(): Promise<void> {\n // For browser workers, we need to load sql.js from a CDN that supports ESM\n // We use the esm.sh CDN which provides ESM versions of npm packages\n const sqlJsUrl = 'https://esm.sh/sql.js@1.11.0';\n\n // Dynamic import from CDN\n const sqlJsModule = await import(/* webpackIgnore: true */ sqlJsUrl);\n const initSqlJs = sqlJsModule.default;\n\n // Configure sql.js WASM location\n const sqlConfig: { locateFile?: (file: string) => string } = {};\n sqlConfig.locateFile = () => 'https://sql.js.org/dist/sql-wasm.wasm';\n\n const SQL = await initSqlJs(sqlConfig);\n setSqlInstance(SQL);\n exposeBridgeFunctions();\n\n // Expose loadDocument function\n (self as any).loadDocument = (bytes: Uint8Array): number => {\n const handle = loadDirectOp(bytes);\n if (handle === 0) {\n console.error('[worker] Failed to load database');\n return 0;\n }\n return (self as any).createDocumentFromHandle(handle);\n };\n\n console.log('[worker] sql.js initialized');\n}\n\n/**\n * Load wasm_exec.js in the worker context.\n * We use fetch + eval since workers don't have document.createElement.\n */\nasync function loadWasmExec(): Promise<void> {\n if ((self as any).Go) {\n return; // Already loaded\n }\n\n const baseUrl = config.wasmBaseUrl || self.location.origin;\n const wasmExecUrl = `${baseUrl}/wasm_exec.js`;\n\n try {\n const response = await fetch(wasmExecUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch wasm_exec.js: ${response.statusText}`);\n }\n const code = await response.text();\n // eslint-disable-next-line no-eval\n eval(code);\n console.log('[worker] wasm_exec.js loaded');\n } catch (error) {\n throw new Error(`Failed to load wasm_exec.js: ${error}`);\n }\n}\n\n/**\n * Load and instantiate the Go WASM module.\n */\nasync function loadGoWasm(): Promise<void> {\n const baseUrl = config.wasmBaseUrl || self.location.origin;\n const wasmUrl = `${baseUrl}/kodexa.wasm`;\n\n const response = await fetch(wasmUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch kodexa.wasm: ${response.statusText}`);\n }\n const wasmBytes = await response.arrayBuffer();\n\n // Create Go runtime and instantiate WASM\n const go = new (self as any).Go();\n const result = await WebAssembly.instantiate(wasmBytes, go.importObject);\n\n // Start the Go program (registers functions on globalThis)\n go.run(result.instance);\n\n // Configure log level\n const logLevel = config.logLevel || 'warn';\n if ((self as any).kodexa_setLogLevel) {\n (self as any).kodexa_setLogLevel(logLevel);\n }\n\n console.log('[worker] Go WASM loaded');\n}\n\n/**\n * Initialize the worker with all WASM components.\n */\nasync function initialize(workerConfig?: WorkerConfig): Promise<void> {\n if (initialized) {\n return;\n }\n\n if (initPromise) {\n return initPromise;\n }\n\n config = workerConfig || {};\n\n initPromise = (async () => {\n try {\n // Step 1: Initialize sql.js (MUST be first)\n await initializeSqlJs();\n\n // Step 2: Load wasm_exec.js\n await loadWasmExec();\n\n // Step 3: Load Go WASM\n await loadGoWasm();\n\n initialized = true;\n console.log('[worker] Kodexa WASM fully initialized');\n } catch (error) {\n console.error('[worker] Initialization failed:', error);\n throw error;\n }\n })();\n\n return initPromise;\n}\n\n/**\n * Handle RPC call from main thread.\n */\nfunction handleCall(request: WorkerRequest): WorkerResponse {\n const { id, method, args } = request;\n\n try {\n const fn = (self as any)[method];\n if (typeof fn !== 'function') {\n return {\n id,\n success: false,\n error: `Function '${method}' not found on globalThis`,\n };\n }\n\n const result = fn(...(args || []));\n return { id, success: true, result };\n } catch (error) {\n return {\n id,\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\n/**\n * Main message handler.\n */\nself.onmessage = async (event: MessageEvent<WorkerRequest | { type: 'init'; config?: WorkerConfig }>) => {\n const data = event.data;\n\n // Handle init message\n if ('type' in data && data.type === 'init') {\n try {\n await initialize(data.config);\n const readyMessage: WorkerReadyMessage = { type: 'ready' };\n self.postMessage(readyMessage);\n } catch (error) {\n const errorMessage: WorkerErrorMessage = {\n type: 'error',\n error: error instanceof Error ? error.message : String(error),\n };\n self.postMessage(errorMessage);\n }\n return;\n }\n\n // Handle RPC call\n if ('type' in data && data.type === 'call') {\n // Ensure initialized\n if (!initialized) {\n const response: WorkerResponse = {\n id: (data as WorkerRequest).id,\n success: false,\n error: 'Worker not initialized. Send init message first.',\n };\n self.postMessage(response);\n return;\n }\n\n const response = handleCall(data as WorkerRequest);\n self.postMessage(response);\n }\n};\n\n// Auto-initialize on load if config is in URL params\n// This allows the worker to be used without explicit init message\nconst urlParams = new URLSearchParams(self.location.search);\nconst autoInit = urlParams.get('autoInit');\nif (autoInit === 'true') {\n const wasmBaseUrl = urlParams.get('wasmBaseUrl') || undefined;\n const logLevel = (urlParams.get('logLevel') as WorkerConfig['logLevel']) || undefined;\n initialize({ wasmBaseUrl, logLevel }).then(() => {\n const readyMessage: WorkerReadyMessage = { type: 'ready' };\n self.postMessage(readyMessage);\n }).catch((error) => {\n const errorMessage: WorkerErrorMessage = {\n type: 'error',\n error: error instanceof Error ? error.message : String(error),\n };\n self.postMessage(errorMessage);\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["binary", "baseUrl", "response"]
|
|
7
|
+
}
|
package/dist/kodexa.wasm
CHANGED
|
Binary file
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KodexaWorker - Main Thread Proxy for Web Worker WASM
|
|
3
|
+
*
|
|
4
|
+
* This class manages a web worker that runs the Go WASM module.
|
|
5
|
+
* All document operations are performed in the worker, keeping
|
|
6
|
+
* the main thread responsive.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const kodexa = new KodexaWorker();
|
|
11
|
+
* await kodexa.init();
|
|
12
|
+
*
|
|
13
|
+
* const doc = await kodexa.createDocument();
|
|
14
|
+
* const root = await doc.getRoot();
|
|
15
|
+
*
|
|
16
|
+
* await doc.dispose();
|
|
17
|
+
* kodexa.terminate();
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import type { WorkerConfig } from './types';
|
|
21
|
+
import { KodexaWorkerDocument } from './KodexaWorkerDocument';
|
|
22
|
+
/**
|
|
23
|
+
* Options for creating a KodexaWorker instance.
|
|
24
|
+
*/
|
|
25
|
+
export interface KodexaWorkerOptions extends WorkerConfig {
|
|
26
|
+
/**
|
|
27
|
+
* URL to the worker script.
|
|
28
|
+
* If not provided, uses the bundled worker from the package.
|
|
29
|
+
*/
|
|
30
|
+
workerUrl?: string | URL;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Main thread proxy for Kodexa Web Worker.
|
|
34
|
+
*
|
|
35
|
+
* Creates and manages a web worker that runs the Go WASM module.
|
|
36
|
+
* Provides promise-based API that mirrors the regular Kodexa API.
|
|
37
|
+
*/
|
|
38
|
+
export declare class KodexaWorker {
|
|
39
|
+
private worker;
|
|
40
|
+
private ready;
|
|
41
|
+
private readyResolve;
|
|
42
|
+
private readyReject;
|
|
43
|
+
private pending;
|
|
44
|
+
private nextId;
|
|
45
|
+
private terminated;
|
|
46
|
+
private config;
|
|
47
|
+
/**
|
|
48
|
+
* Create a new KodexaWorker instance.
|
|
49
|
+
*
|
|
50
|
+
* @param options Configuration options
|
|
51
|
+
*/
|
|
52
|
+
constructor(options?: KodexaWorkerOptions);
|
|
53
|
+
/**
|
|
54
|
+
* Handle messages from the worker.
|
|
55
|
+
*/
|
|
56
|
+
private handleMessage;
|
|
57
|
+
/**
|
|
58
|
+
* Handle worker errors.
|
|
59
|
+
*/
|
|
60
|
+
private handleError;
|
|
61
|
+
/**
|
|
62
|
+
* Initialize the worker and load WASM.
|
|
63
|
+
* Must be called before any other methods.
|
|
64
|
+
*/
|
|
65
|
+
init(): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Call a Go WASM function in the worker.
|
|
68
|
+
*
|
|
69
|
+
* @param method Function name (e.g., 'createDocument', 'documentGetRoot')
|
|
70
|
+
* @param args Arguments to pass to the function
|
|
71
|
+
* @returns Promise that resolves with the function result
|
|
72
|
+
*/
|
|
73
|
+
call<T = unknown>(method: string, ...args: unknown[]): Promise<T>;
|
|
74
|
+
/**
|
|
75
|
+
* Create a new empty document.
|
|
76
|
+
*/
|
|
77
|
+
createDocument(): Promise<KodexaWorkerDocument>;
|
|
78
|
+
/**
|
|
79
|
+
* Create a document from text content.
|
|
80
|
+
*
|
|
81
|
+
* @param text Text content for the document
|
|
82
|
+
*/
|
|
83
|
+
fromText(text: string): Promise<KodexaWorkerDocument>;
|
|
84
|
+
/**
|
|
85
|
+
* Create a document from JSON.
|
|
86
|
+
*
|
|
87
|
+
* @param json JSON string representing the document
|
|
88
|
+
*/
|
|
89
|
+
fromJson(json: string): Promise<KodexaWorkerDocument>;
|
|
90
|
+
/**
|
|
91
|
+
* Create a document from KDDB bytes.
|
|
92
|
+
*
|
|
93
|
+
* @param bytes KDDB file contents as Uint8Array
|
|
94
|
+
*/
|
|
95
|
+
fromKddb(bytes: Uint8Array): Promise<KodexaWorkerDocument>;
|
|
96
|
+
/**
|
|
97
|
+
* Create a document from KDDB bytes (raw, no migration).
|
|
98
|
+
*
|
|
99
|
+
* @param bytes KDDB file contents as Uint8Array
|
|
100
|
+
*/
|
|
101
|
+
fromKddbBytes(bytes: Uint8Array): Promise<KodexaWorkerDocument>;
|
|
102
|
+
/**
|
|
103
|
+
* Get library version information.
|
|
104
|
+
*/
|
|
105
|
+
getLibraryVersion(): Promise<string>;
|
|
106
|
+
/**
|
|
107
|
+
* Get build information.
|
|
108
|
+
*/
|
|
109
|
+
getBuildInfo(): Promise<string>;
|
|
110
|
+
/**
|
|
111
|
+
* Cleanup all resources in the worker.
|
|
112
|
+
*/
|
|
113
|
+
cleanup(): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Get active handle count (for debugging).
|
|
116
|
+
*/
|
|
117
|
+
getActiveHandles(): Promise<unknown>;
|
|
118
|
+
/**
|
|
119
|
+
* Set the log level for Go WASM logging.
|
|
120
|
+
*
|
|
121
|
+
* @param level Log level ('debug', 'info', 'warn', 'error')
|
|
122
|
+
*/
|
|
123
|
+
setLogLevel(level: 'debug' | 'info' | 'warn' | 'error'): Promise<string>;
|
|
124
|
+
/**
|
|
125
|
+
* Terminate the worker.
|
|
126
|
+
* After calling this, the worker cannot be used.
|
|
127
|
+
*/
|
|
128
|
+
terminate(): void;
|
|
129
|
+
/**
|
|
130
|
+
* Check if the worker has been terminated.
|
|
131
|
+
*/
|
|
132
|
+
isTerminated(): boolean;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=KodexaWorker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KodexaWorker.d.ts","sourceRoot":"","sources":["../../src/worker/KodexaWorker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAIV,YAAY,EAEb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAC1B;AAED;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAe;IAE7B;;;;OAIG;gBACS,OAAO,GAAE,mBAAwB;IA6B7C;;OAEG;IACH,OAAO,CAAC,aAAa;IA8BrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B;;;;;;OAMG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IA6BvE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAKrD;;;;OAIG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAK3D;;;;OAIG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAK3D;;;;OAIG;IACG,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAShE;;;;OAIG;IACG,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAKrE;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1C;;;;OAIG;IACG,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9E;;;OAGG;IACH,SAAS,IAAI,IAAI;IAejB;;OAEG;IACH,YAAY,IAAI,OAAO;CAGxB"}
|