@gmb/bitmark-parser 3.0.0-alpha.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/LICENSE +7 -0
- package/README.md +92 -0
- package/dist/browser/bitmark-parser.min.js +2 -0
- package/dist/browser/bitmark-parser.min.js.map +1 -0
- package/dist/browser/bitmark_wasm_bg.wasm +0 -0
- package/dist/browser/cjs/bitmark_wasm_bg.wasm +0 -0
- package/dist/browser/cjs/index.cjs +319 -0
- package/dist/browser/cjs/index.cjs.map +1 -0
- package/dist/browser/cjs/index.d.cts +98 -0
- package/dist/browser/esm/bitmark_wasm_bg.wasm +0 -0
- package/dist/browser/esm/index.d.ts +98 -0
- package/dist/browser/esm/index.js +281 -0
- package/dist/browser/esm/index.js.map +1 -0
- package/dist/cli.js +147 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.cjs +88 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +67 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/package.json +92 -0
- package/wasm/bitmark_wasm.d.ts +59 -0
- package/wasm/bitmark_wasm.js +298 -0
- package/wasm/bitmark_wasm_bg.wasm +0 -0
- package/wasm/bitmark_wasm_bg.wasm.d.ts +13 -0
- package/wasm/package.json +20 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
|
|
2
|
+
let imports = {};
|
|
3
|
+
let wasm;
|
|
4
|
+
const { TextEncoder, TextDecoder } = require(`util`);
|
|
5
|
+
|
|
6
|
+
let WASM_VECTOR_LEN = 0;
|
|
7
|
+
|
|
8
|
+
let cachedUint8ArrayMemory0 = null;
|
|
9
|
+
|
|
10
|
+
function getUint8ArrayMemory0() {
|
|
11
|
+
if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
|
|
12
|
+
cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
|
|
13
|
+
}
|
|
14
|
+
return cachedUint8ArrayMemory0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
let cachedTextEncoder = new TextEncoder('utf-8');
|
|
18
|
+
|
|
19
|
+
const encodeString = (typeof cachedTextEncoder.encodeInto === 'function'
|
|
20
|
+
? function (arg, view) {
|
|
21
|
+
return cachedTextEncoder.encodeInto(arg, view);
|
|
22
|
+
}
|
|
23
|
+
: function (arg, view) {
|
|
24
|
+
const buf = cachedTextEncoder.encode(arg);
|
|
25
|
+
view.set(buf);
|
|
26
|
+
return {
|
|
27
|
+
read: arg.length,
|
|
28
|
+
written: buf.length
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
function passStringToWasm0(arg, malloc, realloc) {
|
|
33
|
+
|
|
34
|
+
if (realloc === undefined) {
|
|
35
|
+
const buf = cachedTextEncoder.encode(arg);
|
|
36
|
+
const ptr = malloc(buf.length, 1) >>> 0;
|
|
37
|
+
getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);
|
|
38
|
+
WASM_VECTOR_LEN = buf.length;
|
|
39
|
+
return ptr;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
let len = arg.length;
|
|
43
|
+
let ptr = malloc(len, 1) >>> 0;
|
|
44
|
+
|
|
45
|
+
const mem = getUint8ArrayMemory0();
|
|
46
|
+
|
|
47
|
+
let offset = 0;
|
|
48
|
+
|
|
49
|
+
for (; offset < len; offset++) {
|
|
50
|
+
const code = arg.charCodeAt(offset);
|
|
51
|
+
if (code > 0x7F) break;
|
|
52
|
+
mem[ptr + offset] = code;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (offset !== len) {
|
|
56
|
+
if (offset !== 0) {
|
|
57
|
+
arg = arg.slice(offset);
|
|
58
|
+
}
|
|
59
|
+
ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
|
|
60
|
+
const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);
|
|
61
|
+
const ret = encodeString(arg, view);
|
|
62
|
+
|
|
63
|
+
offset += ret.written;
|
|
64
|
+
ptr = realloc(ptr, len, offset, 1) >>> 0;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
WASM_VECTOR_LEN = offset;
|
|
68
|
+
return ptr;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
let cachedDataViewMemory0 = null;
|
|
72
|
+
|
|
73
|
+
function getDataViewMemory0() {
|
|
74
|
+
if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {
|
|
75
|
+
cachedDataViewMemory0 = new DataView(wasm.memory.buffer);
|
|
76
|
+
}
|
|
77
|
+
return cachedDataViewMemory0;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
|
|
81
|
+
|
|
82
|
+
cachedTextDecoder.decode();
|
|
83
|
+
|
|
84
|
+
function getStringFromWasm0(ptr, len) {
|
|
85
|
+
ptr = ptr >>> 0;
|
|
86
|
+
return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Auto-detect input format and convert between bitmark and JSON.
|
|
90
|
+
*
|
|
91
|
+
* `options_json` is a JSON string with optional fields:
|
|
92
|
+
* - `"mode"`: `"optimized"` (default) or `"full"`
|
|
93
|
+
* - `"warnings"`: `true` or `false` (default)
|
|
94
|
+
* - `"plainText"`: `true` or `false` (default)
|
|
95
|
+
* - `"pretty"`: `true` or `false` (default)
|
|
96
|
+
* - `"indent"`: number (default: 2)
|
|
97
|
+
*
|
|
98
|
+
* Returns JSON if input is bitmark, or an error message if input is JSON
|
|
99
|
+
* (generator not yet implemented).
|
|
100
|
+
* @param {string} input
|
|
101
|
+
* @param {string} options_json
|
|
102
|
+
* @returns {string}
|
|
103
|
+
*/
|
|
104
|
+
module.exports.convert = function(input, options_json) {
|
|
105
|
+
let deferred3_0;
|
|
106
|
+
let deferred3_1;
|
|
107
|
+
try {
|
|
108
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
109
|
+
const ptr0 = passStringToWasm0(input, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
110
|
+
const len0 = WASM_VECTOR_LEN;
|
|
111
|
+
const ptr1 = passStringToWasm0(options_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
112
|
+
const len1 = WASM_VECTOR_LEN;
|
|
113
|
+
wasm.convert(retptr, ptr0, len0, ptr1, len1);
|
|
114
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
115
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
116
|
+
deferred3_0 = r0;
|
|
117
|
+
deferred3_1 = r1;
|
|
118
|
+
return getStringFromWasm0(r0, r1);
|
|
119
|
+
} finally {
|
|
120
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
121
|
+
wasm.__wbindgen_export_2(deferred3_0, deferred3_1, 1);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Breakscape text (escape bitmark special characters).
|
|
127
|
+
*
|
|
128
|
+
* `format`: `"bitmark++"` (default) or `"plainText"`
|
|
129
|
+
* `location`: `"body"` (default) or `"tag"`
|
|
130
|
+
* @param {string} input
|
|
131
|
+
* @param {string} format
|
|
132
|
+
* @param {string} location
|
|
133
|
+
* @returns {string}
|
|
134
|
+
*/
|
|
135
|
+
module.exports.breakscape_text = function(input, format, location) {
|
|
136
|
+
let deferred4_0;
|
|
137
|
+
let deferred4_1;
|
|
138
|
+
try {
|
|
139
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
140
|
+
const ptr0 = passStringToWasm0(input, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
141
|
+
const len0 = WASM_VECTOR_LEN;
|
|
142
|
+
const ptr1 = passStringToWasm0(format, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
143
|
+
const len1 = WASM_VECTOR_LEN;
|
|
144
|
+
const ptr2 = passStringToWasm0(location, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
145
|
+
const len2 = WASM_VECTOR_LEN;
|
|
146
|
+
wasm.breakscape_text(retptr, ptr0, len0, ptr1, len1, ptr2, len2);
|
|
147
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
148
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
149
|
+
deferred4_0 = r0;
|
|
150
|
+
deferred4_1 = r1;
|
|
151
|
+
return getStringFromWasm0(r0, r1);
|
|
152
|
+
} finally {
|
|
153
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
154
|
+
wasm.__wbindgen_export_2(deferred4_0, deferred4_1, 1);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Query information about supported bit types.
|
|
160
|
+
*
|
|
161
|
+
* `info_type`: `"list"`, `"bit"`, `"all"`, or `"deprecated"`
|
|
162
|
+
* `format`: `"text"` or `"json"`
|
|
163
|
+
* `bit`: bit name (required when `info_type` is `"bit"`)
|
|
164
|
+
* `pretty`: whether to pretty-print JSON output
|
|
165
|
+
* `indent`: indent size for pretty-printing (default: 2)
|
|
166
|
+
* @param {string} info_type
|
|
167
|
+
* @param {string} format
|
|
168
|
+
* @param {string} bit
|
|
169
|
+
* @param {boolean} pretty
|
|
170
|
+
* @param {number} indent
|
|
171
|
+
* @returns {string}
|
|
172
|
+
*/
|
|
173
|
+
module.exports.info = function(info_type, format, bit, pretty, indent) {
|
|
174
|
+
let deferred4_0;
|
|
175
|
+
let deferred4_1;
|
|
176
|
+
try {
|
|
177
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
178
|
+
const ptr0 = passStringToWasm0(info_type, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
179
|
+
const len0 = WASM_VECTOR_LEN;
|
|
180
|
+
const ptr1 = passStringToWasm0(format, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
181
|
+
const len1 = WASM_VECTOR_LEN;
|
|
182
|
+
const ptr2 = passStringToWasm0(bit, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
183
|
+
const len2 = WASM_VECTOR_LEN;
|
|
184
|
+
wasm.info(retptr, ptr0, len0, ptr1, len1, ptr2, len2, pretty, indent);
|
|
185
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
186
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
187
|
+
deferred4_0 = r0;
|
|
188
|
+
deferred4_1 = r1;
|
|
189
|
+
return getStringFromWasm0(r0, r1);
|
|
190
|
+
} finally {
|
|
191
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
192
|
+
wasm.__wbindgen_export_2(deferred4_0, deferred4_1, 1);
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Unbreakscape text (unescape bitmark special characters).
|
|
198
|
+
*
|
|
199
|
+
* `format`: `"bitmark++"` (default) or `"plainText"`
|
|
200
|
+
* `location`: `"body"` (default) or `"tag"`
|
|
201
|
+
* @param {string} input
|
|
202
|
+
* @param {string} format
|
|
203
|
+
* @param {string} location
|
|
204
|
+
* @returns {string}
|
|
205
|
+
*/
|
|
206
|
+
module.exports.unbreakscape_text = function(input, format, location) {
|
|
207
|
+
let deferred4_0;
|
|
208
|
+
let deferred4_1;
|
|
209
|
+
try {
|
|
210
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
211
|
+
const ptr0 = passStringToWasm0(input, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
212
|
+
const len0 = WASM_VECTOR_LEN;
|
|
213
|
+
const ptr1 = passStringToWasm0(format, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
214
|
+
const len1 = WASM_VECTOR_LEN;
|
|
215
|
+
const ptr2 = passStringToWasm0(location, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
216
|
+
const len2 = WASM_VECTOR_LEN;
|
|
217
|
+
wasm.unbreakscape_text(retptr, ptr0, len0, ptr1, len1, ptr2, len2);
|
|
218
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
219
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
220
|
+
deferred4_0 = r0;
|
|
221
|
+
deferred4_1 = r1;
|
|
222
|
+
return getStringFromWasm0(r0, r1);
|
|
223
|
+
} finally {
|
|
224
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
225
|
+
wasm.__wbindgen_export_2(deferred4_0, deferred4_1, 1);
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Parse bitmark input text and return the reference JSON format.
|
|
231
|
+
*
|
|
232
|
+
* Uses the full pipeline: parse → validate → serialize with optimized mode.
|
|
233
|
+
* @param {string} input
|
|
234
|
+
* @returns {string}
|
|
235
|
+
*/
|
|
236
|
+
module.exports.parse = function(input) {
|
|
237
|
+
let deferred2_0;
|
|
238
|
+
let deferred2_1;
|
|
239
|
+
try {
|
|
240
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
241
|
+
const ptr0 = passStringToWasm0(input, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
242
|
+
const len0 = WASM_VECTOR_LEN;
|
|
243
|
+
wasm.parse(retptr, ptr0, len0);
|
|
244
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
245
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
246
|
+
deferred2_0 = r0;
|
|
247
|
+
deferred2_1 = r1;
|
|
248
|
+
return getStringFromWasm0(r0, r1);
|
|
249
|
+
} finally {
|
|
250
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
251
|
+
wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Lex bitmark input text, returning one line per token in the same format as
|
|
257
|
+
* the Rust CLI: `{kind:?} {span:?} "{text}"`.
|
|
258
|
+
*
|
|
259
|
+
* `stage` selects the lexer pipeline:
|
|
260
|
+
* - `"lex"` — combined (default)
|
|
261
|
+
* - `"lex-bitmark"` — bitmark-level only
|
|
262
|
+
* - `"lex-text"` — text-level only
|
|
263
|
+
* - `"lex-json"` — combined, JSON array output
|
|
264
|
+
* - `"lex-bitmark-json"` — bitmark-level, JSON array output
|
|
265
|
+
* - `"lex-text-json"` — text-level, JSON array output
|
|
266
|
+
* @param {string} input
|
|
267
|
+
* @param {string} stage
|
|
268
|
+
* @returns {string}
|
|
269
|
+
*/
|
|
270
|
+
module.exports.lex = function(input, stage) {
|
|
271
|
+
let deferred3_0;
|
|
272
|
+
let deferred3_1;
|
|
273
|
+
try {
|
|
274
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
275
|
+
const ptr0 = passStringToWasm0(input, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
276
|
+
const len0 = WASM_VECTOR_LEN;
|
|
277
|
+
const ptr1 = passStringToWasm0(stage, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
|
|
278
|
+
const len1 = WASM_VECTOR_LEN;
|
|
279
|
+
wasm.lex(retptr, ptr0, len0, ptr1, len1);
|
|
280
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
281
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
282
|
+
deferred3_0 = r0;
|
|
283
|
+
deferred3_1 = r1;
|
|
284
|
+
return getStringFromWasm0(r0, r1);
|
|
285
|
+
} finally {
|
|
286
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
287
|
+
wasm.__wbindgen_export_2(deferred3_0, deferred3_1, 1);
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
const path = require('path').join(__dirname, 'bitmark_wasm_bg.wasm');
|
|
292
|
+
const bytes = require('fs').readFileSync(path);
|
|
293
|
+
|
|
294
|
+
const wasmModule = new WebAssembly.Module(bytes);
|
|
295
|
+
const wasmInstance = new WebAssembly.Instance(wasmModule, imports);
|
|
296
|
+
wasm = wasmInstance.exports;
|
|
297
|
+
module.exports.__wasm = wasm;
|
|
298
|
+
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
export const memory: WebAssembly.Memory;
|
|
4
|
+
export const breakscape_text: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
5
|
+
export const convert: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
6
|
+
export const info: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
|
|
7
|
+
export const lex: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
8
|
+
export const parse: (a: number, b: number, c: number) => void;
|
|
9
|
+
export const unbreakscape_text: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
10
|
+
export const __wbindgen_add_to_stack_pointer: (a: number) => number;
|
|
11
|
+
export const __wbindgen_export_0: (a: number, b: number) => number;
|
|
12
|
+
export const __wbindgen_export_1: (a: number, b: number, c: number, d: number) => number;
|
|
13
|
+
export const __wbindgen_export_2: (a: number, b: number, c: number) => void;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "bitmark-wasm",
|
|
3
|
+
"collaborators": [
|
|
4
|
+
"Get More Brain Ltd <info@getmorebrain.com>"
|
|
5
|
+
],
|
|
6
|
+
"description": "WebAssembly bindings for the bitmark parser",
|
|
7
|
+
"version": "3.0.0",
|
|
8
|
+
"license": "ISC",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/getMoreBrain/bitmark-parser"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"bitmark_wasm_bg.wasm",
|
|
15
|
+
"bitmark_wasm.js",
|
|
16
|
+
"bitmark_wasm.d.ts"
|
|
17
|
+
],
|
|
18
|
+
"main": "bitmark_wasm.js",
|
|
19
|
+
"types": "bitmark_wasm.d.ts"
|
|
20
|
+
}
|