@gmb/bitmark-parser 7.0.0 → 7.2.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 (42) hide show
  1. package/README.md +147 -11
  2. package/dist/browser/bitmark-parser.min.js +4 -4
  3. package/dist/browser/bitmark-parser.min.js.map +1 -1
  4. package/dist/browser/cjs/index.cjs +439 -67
  5. package/dist/browser/cjs/index.cjs.map +1 -1
  6. package/dist/browser/cjs/index.d.cts +320 -17
  7. package/dist/browser/esm/index.d.ts +320 -17
  8. package/dist/browser/esm/index.js +432 -67
  9. package/dist/browser/esm/index.js.map +1 -1
  10. package/dist/browser/esm/worker-entry.js +317 -29
  11. package/dist/browser/esm/worker-entry.js.map +1 -1
  12. package/dist/browser/wasm/bitmark_browser_full_wasm_bg.wasm +0 -0
  13. package/dist/browser/wasm/bitmark_json_wasm_bg.wasm +0 -0
  14. package/dist/browser/wasm/bitmark_wasm_bg.wasm +0 -0
  15. package/dist/index.cjs +114 -38
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +315 -17
  18. package/dist/index.d.ts +315 -17
  19. package/dist/index.js +107 -38
  20. package/dist/index.js.map +1 -1
  21. package/dist/legacy.cjs +1 -1
  22. package/dist/legacy.cjs.map +1 -1
  23. package/dist/legacy.js +1 -1
  24. package/dist/legacy.js.map +1 -1
  25. package/dist/worker-entry.cjs.map +1 -1
  26. package/package.json +7 -7
  27. package/schema/bitmark.schema.json +30 -6
  28. package/wasm/bitmark_wasm.d.ts +43 -8
  29. package/wasm/bitmark_wasm.js +165 -19
  30. package/wasm/bitmark_wasm_bg.wasm +0 -0
  31. package/wasm/bitmark_wasm_bg.wasm.d.ts +4 -1
  32. package/wasm/package.json +1 -1
  33. package/wasm-bitmark-json/bitmark_json_wasm.d.ts +43 -8
  34. package/wasm-bitmark-json/bitmark_json_wasm.js +156 -10
  35. package/wasm-bitmark-json/bitmark_json_wasm_bg.wasm +0 -0
  36. package/wasm-bitmark-json/bitmark_json_wasm_bg.wasm.d.ts +4 -1
  37. package/wasm-bitmark-json/package.json +1 -1
  38. package/wasm-browser-full/bitmark_browser_full_wasm.d.ts +43 -8
  39. package/wasm-browser-full/bitmark_browser_full_wasm.js +165 -19
  40. package/wasm-browser-full/bitmark_browser_full_wasm_bg.wasm +0 -0
  41. package/wasm-browser-full/bitmark_browser_full_wasm_bg.wasm.d.ts +4 -1
  42. package/wasm-browser-full/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -31,16 +31,22 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var src_exports = {};
32
32
  __export(src_exports, {
33
33
  ALL_LANGUAGES: () => ALL_LANGUAGES,
34
+ CompletionItemKind: () => CompletionItemKind,
35
+ CompletionItemTag: () => CompletionItemTag,
36
+ DiagnosticSeverity: () => DiagnosticSeverity,
34
37
  NotInitializedError: () => NotInitializedError,
35
38
  RegisterError: () => RegisterError,
36
39
  UnsupportedFeatureError: () => UnsupportedFeatureError,
37
40
  bitmarkToObjects: () => bitmarkToObjects,
38
41
  breakscapeText: () => breakscapeText,
39
42
  canonicalize: () => canonicalize,
43
+ complete: () => complete,
40
44
  convert: () => convert,
41
45
  countBits: () => countBits,
46
+ diagnostics: () => diagnostics,
42
47
  diff: () => diff,
43
48
  diffBits: () => diffBits,
49
+ hover: () => hover,
44
50
  info: () => info,
45
51
  init: () => init,
46
52
  initSync: () => initSync,
@@ -48,6 +54,7 @@ __export(src_exports, {
48
54
  objectsToBitmark: () => objectsToBitmark,
49
55
  patchEntry: () => patchEntry,
50
56
  register: () => register,
57
+ resolve: () => resolve,
51
58
  semanticTokens: () => semanticTokens,
52
59
  splitBits: () => splitBits,
53
60
  transform: () => transform,
@@ -68,7 +75,7 @@ var import_node_module = require("module");
68
75
  // src/generated/package_info.ts
69
76
  var PACKAGE_INFO = {
70
77
  "name": "@gmb/bitmark-parser",
71
- "version": "7.0.0",
78
+ "version": "7.2.0",
72
79
  "author": "Get More Brain Ltd <info@getmorebrain.com>",
73
80
  "license": "ISC",
74
81
  "description": "A parser for bitmark text, powered by WebAssembly."
@@ -160,6 +167,7 @@ function planTransform(wasm, input, options) {
160
167
  const sel = options.inputFormat ?? "auto";
161
168
  const inputIsBitmark = sel === "bitmark" || sel !== "json" && wasm.is_bitmark(input);
162
169
  const inputFormat = inputIsBitmark ? "bitmark" : "json";
170
+ wasm.transform("", "bitmark", output, mode, "", false, indent, spacesAroundValues);
163
171
  const units = buildUnits(wasm, input, inputIsBitmark);
164
172
  const total = units.length;
165
173
  const hooked = [];
@@ -175,7 +183,9 @@ function planTransform(wasm, input, options) {
175
183
  if (patchJson === "") {
176
184
  resolved = units.map((_, index) => ({ source: index, bit: null, patch: [] }));
177
185
  } else {
178
- resolved = JSON.parse(wasm.resolve_patch_document(input, patchJson));
186
+ resolved = JSON.parse(
187
+ wasm.resolve_patch_document(input, inputFormat, patchJson)
188
+ );
179
189
  }
180
190
  const jobs = [];
181
191
  const views = [];
@@ -225,7 +235,7 @@ function computeBit(wasm, job) {
225
235
  return job.outputFormat === "json" ? stripArray(out) : out;
226
236
  }
227
237
  function recombine(wasm, elements, output, pretty, indent) {
228
- if (output === "bitmark" || output === "text") return elements.join("\n");
238
+ if (output !== "json") return elements.join("\n");
229
239
  const arr = `[${elements.join(",")}]`;
230
240
  return pretty ? wasm.prettify(arr, indent) : arr;
231
241
  }
@@ -253,62 +263,57 @@ async function orchestrateParallel(wasm, input, options, runJobs) {
253
263
  // src/node/pool.ts
254
264
  var import_node_url = require("url");
255
265
  var import_node_worker_threads = require("worker_threads");
256
- function workerPath() {
257
- return (0, import_node_url.fileURLToPath)(new URL("./worker-entry.cjs", importMetaUrl));
258
- }
259
- function runJobsParallel(jobs, workers, feature) {
266
+
267
+ // src/core/pool.ts
268
+ function runJobsWithPool(jobs, workers, spawn) {
260
269
  if (jobs.length === 0) return Promise.resolve([]);
261
270
  const poolSize = Math.max(1, Math.min(workers, jobs.length));
262
- const path2 = workerPath();
263
- return new Promise((resolve, reject) => {
271
+ return new Promise((resolve2, reject) => {
264
272
  const results = new Array(jobs.length);
265
273
  let next = 0;
266
274
  let settled = 0;
267
275
  let done = false;
268
276
  const pool = [];
269
- const shutdown = () => {
270
- for (const w of pool) void w.terminate();
271
- };
272
- const fail = (err) => {
277
+ const finish = (err) => {
273
278
  if (done) return;
274
279
  done = true;
275
- shutdown();
276
- reject(err);
280
+ for (const w of pool) w.terminate();
281
+ if (err) reject(err);
282
+ else resolve2(results);
277
283
  };
278
284
  const dispatch = (w) => {
279
- if (done) return;
280
- if (next >= jobs.length) return;
285
+ if (done || next >= jobs.length) return;
281
286
  const id = next++;
282
- w.postMessage({ id, job: jobs[id] });
287
+ w.post({ id, job: jobs[id] });
283
288
  };
284
289
  for (let i = 0; i < poolSize; i++) {
285
- const w = new import_node_worker_threads.Worker(path2, { workerData: { feature } });
286
- pool.push(w);
287
- w.on("message", (res) => {
290
+ const w = spawn((res) => {
288
291
  if (done) return;
289
- if (!res.ok) {
290
- fail(new Error(res.error ?? "worker job failed"));
291
- return;
292
- }
292
+ if (!res.ok) return finish(new Error(res.error ?? "worker job failed"));
293
293
  results[res.id] = res.element;
294
- settled++;
295
- if (settled === jobs.length) {
296
- done = true;
297
- shutdown();
298
- resolve(results);
299
- return;
300
- }
301
- dispatch(w);
302
- });
303
- w.on("error", fail);
304
- w.on("exit", (code) => {
305
- if (!done && code !== 0) fail(new Error(`worker exited with code ${code}`));
306
- });
294
+ if (++settled === jobs.length) finish();
295
+ else dispatch(w);
296
+ }, finish);
297
+ pool.push(w);
307
298
  }
308
299
  for (const w of pool) dispatch(w);
309
300
  });
310
301
  }
311
302
 
303
+ // src/node/pool.ts
304
+ function runJobsParallel(jobs, workers, feature) {
305
+ const path2 = (0, import_node_url.fileURLToPath)(new URL("./worker-entry.cjs", importMetaUrl));
306
+ return runJobsWithPool(jobs, workers, (onResult, onError) => {
307
+ const w = new import_node_worker_threads.Worker(path2, { workerData: { feature } });
308
+ w.on("message", (res) => onResult(res));
309
+ w.on("error", onError);
310
+ w.on("exit", (code) => {
311
+ if (code !== 0) onError(new Error(`worker exited with code ${code}`));
312
+ });
313
+ return { post: (msg) => w.postMessage(msg), terminate: () => void w.terminate() };
314
+ });
315
+ }
316
+
312
317
  // src/node/transform-parallel.ts
313
318
  function runParallelTransform(wasm, input, options) {
314
319
  const feature = variant() ?? "full";
@@ -1418,6 +1423,24 @@ var StringWriter = stubClass("StringWriter", INTERNAL_REASON);
1418
1423
  var FileWriter = stubClass("FileWriter", INTERNAL_REASON);
1419
1424
  var StreamWriter = stubClass("StreamWriter", INTERNAL_REASON);
1420
1425
 
1426
+ // src/editor-types.ts
1427
+ var DiagnosticSeverity = {
1428
+ Error: 1,
1429
+ Warning: 2,
1430
+ Information: 3,
1431
+ Hint: 4
1432
+ };
1433
+ var CompletionItemKind = {
1434
+ Class: 7,
1435
+ Property: 10,
1436
+ Value: 12,
1437
+ Keyword: 14,
1438
+ Snippet: 15,
1439
+ EnumMember: 20,
1440
+ TypeParameter: 25
1441
+ };
1442
+ var CompletionItemTag = { Deprecated: 1 };
1443
+
1421
1444
  // src/types.ts
1422
1445
  function patchEntry(path2, op, value) {
1423
1446
  return value === void 0 ? { path: path2, op } : { path: path2, op, value };
@@ -1485,6 +1508,52 @@ function semanticTokens(input, options = {}) {
1485
1508
  })
1486
1509
  );
1487
1510
  }
1511
+ function diagnostics(input, options = {}) {
1512
+ return JSON.parse(
1513
+ convert(input, {
1514
+ inputFormat: "bitmark",
1515
+ outputFormat: "diagnostics",
1516
+ positionEncoding: options.positionEncoding
1517
+ })
1518
+ );
1519
+ }
1520
+ function complete(input, position, options = {}) {
1521
+ const wasm = getActive();
1522
+ if (typeof wasm.complete !== "function") throw new UnsupportedFeatureError("complete", variant());
1523
+ return JSON.parse(
1524
+ wasm.complete(
1525
+ input,
1526
+ position.line,
1527
+ position.character,
1528
+ options.positionEncoding ?? "",
1529
+ options.includeDeprecated ?? false,
1530
+ options.triggerCharacter ?? ""
1531
+ )
1532
+ );
1533
+ }
1534
+ function resolve(input, position, item, options = {}) {
1535
+ const wasm = getActive();
1536
+ if (typeof wasm.resolve !== "function") throw new UnsupportedFeatureError("resolve", variant());
1537
+ const resolved = JSON.parse(
1538
+ wasm.resolve(
1539
+ input,
1540
+ position.line,
1541
+ position.character,
1542
+ options.positionEncoding ?? "",
1543
+ options.includeDeprecated ?? false,
1544
+ item.label,
1545
+ item.kind
1546
+ )
1547
+ );
1548
+ return resolved ?? item;
1549
+ }
1550
+ function hover(input, position, options = {}) {
1551
+ const wasm = getActive();
1552
+ if (typeof wasm.hover !== "function") throw new UnsupportedFeatureError("hover", variant());
1553
+ return JSON.parse(
1554
+ wasm.hover(input, position.line, position.character, options.positionEncoding ?? "")
1555
+ );
1556
+ }
1488
1557
  function canonicalize(input, options = {}) {
1489
1558
  return getActive().canonicalize(
1490
1559
  input,
@@ -1614,16 +1683,22 @@ function transformParallel(input, options = {}) {
1614
1683
  // Annotate the CommonJS export names for ESM import in node:
1615
1684
  0 && (module.exports = {
1616
1685
  ALL_LANGUAGES,
1686
+ CompletionItemKind,
1687
+ CompletionItemTag,
1688
+ DiagnosticSeverity,
1617
1689
  NotInitializedError,
1618
1690
  RegisterError,
1619
1691
  UnsupportedFeatureError,
1620
1692
  bitmarkToObjects,
1621
1693
  breakscapeText,
1622
1694
  canonicalize,
1695
+ complete,
1623
1696
  convert,
1624
1697
  countBits,
1698
+ diagnostics,
1625
1699
  diff,
1626
1700
  diffBits,
1701
+ hover,
1627
1702
  info,
1628
1703
  init,
1629
1704
  initSync,
@@ -1631,6 +1706,7 @@ function transformParallel(input, options = {}) {
1631
1706
  objectsToBitmark,
1632
1707
  patchEntry,
1633
1708
  register,
1709
+ resolve,
1634
1710
  semanticTokens,
1635
1711
  splitBits,
1636
1712
  transform,