@mlightcad/data-model 1.14.11 → 1.14.13

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 (70) hide show
  1. package/dist/data-model.cjs +17 -17
  2. package/lib/base/AcDbDxfPairReader.d.ts +26 -8
  3. package/lib/base/AcDbDxfPairReader.d.ts.map +1 -1
  4. package/lib/base/AcDbDxfPairReader.js +627 -128
  5. package/lib/base/AcDbDxfPairReader.js.map +1 -1
  6. package/lib/converter/worker/AcDbBaseWorker.d.ts +18 -1
  7. package/lib/converter/worker/AcDbBaseWorker.d.ts.map +1 -1
  8. package/lib/converter/worker/AcDbBaseWorker.js +30 -4
  9. package/lib/converter/worker/AcDbBaseWorker.js.map +1 -1
  10. package/lib/converter/worker/index.d.ts +1 -1
  11. package/lib/converter/worker/index.d.ts.map +1 -1
  12. package/lib/converter/worker/index.js +1 -1
  13. package/lib/converter/worker/index.js.map +1 -1
  14. package/lib/database/AcDbDatabase.d.ts +11 -0
  15. package/lib/database/AcDbDatabase.d.ts.map +1 -1
  16. package/lib/database/AcDbDatabase.js +63 -14
  17. package/lib/database/AcDbDatabase.js.map +1 -1
  18. package/lib/database/AcDbOpenDatabaseError.d.ts +3 -7
  19. package/lib/database/AcDbOpenDatabaseError.d.ts.map +1 -1
  20. package/lib/database/AcDbOpenDatabaseError.js +5 -16
  21. package/lib/database/AcDbOpenDatabaseError.js.map +1 -1
  22. package/lib/dxf/AcDbDxfEntityFactory.d.ts.map +1 -1
  23. package/lib/dxf/AcDbDxfEntityFactory.js +6 -14
  24. package/lib/dxf/AcDbDxfEntityFactory.js.map +1 -1
  25. package/lib/entity/AcDbArc.d.ts +9 -2
  26. package/lib/entity/AcDbArc.d.ts.map +1 -1
  27. package/lib/entity/AcDbArc.js +42 -42
  28. package/lib/entity/AcDbArc.js.map +1 -1
  29. package/lib/entity/AcDbCircle.d.ts +9 -2
  30. package/lib/entity/AcDbCircle.d.ts.map +1 -1
  31. package/lib/entity/AcDbCircle.js +37 -37
  32. package/lib/entity/AcDbCircle.js.map +1 -1
  33. package/lib/entity/AcDbEllipse.d.ts +9 -2
  34. package/lib/entity/AcDbEllipse.d.ts.map +1 -1
  35. package/lib/entity/AcDbEllipse.js +29 -41
  36. package/lib/entity/AcDbEllipse.js.map +1 -1
  37. package/lib/entity/AcDbEntity.d.ts +27 -2
  38. package/lib/entity/AcDbEntity.d.ts.map +1 -1
  39. package/lib/entity/AcDbEntity.js +46 -14
  40. package/lib/entity/AcDbEntity.js.map +1 -1
  41. package/lib/entity/AcDbLeader.d.ts.map +1 -1
  42. package/lib/entity/AcDbLeader.js +1 -0
  43. package/lib/entity/AcDbLeader.js.map +1 -1
  44. package/lib/entity/AcDbLine.d.ts +20 -3
  45. package/lib/entity/AcDbLine.d.ts.map +1 -1
  46. package/lib/entity/AcDbLine.js +77 -37
  47. package/lib/entity/AcDbLine.js.map +1 -1
  48. package/lib/entity/AcDbMLeader.d.ts.map +1 -1
  49. package/lib/entity/AcDbMLeader.js +2 -1
  50. package/lib/entity/AcDbMLeader.js.map +1 -1
  51. package/lib/entity/AcDbMText.d.ts.map +1 -1
  52. package/lib/entity/AcDbMText.js +3 -2
  53. package/lib/entity/AcDbMText.js.map +1 -1
  54. package/lib/entity/AcDbPolyline.d.ts +1 -1
  55. package/lib/entity/AcDbPolyline.d.ts.map +1 -1
  56. package/lib/entity/AcDbPolyline.js +54 -5
  57. package/lib/entity/AcDbPolyline.js.map +1 -1
  58. package/lib/entity/AcDbSpline.d.ts +9 -2
  59. package/lib/entity/AcDbSpline.d.ts.map +1 -1
  60. package/lib/entity/AcDbSpline.js +32 -0
  61. package/lib/entity/AcDbSpline.js.map +1 -1
  62. package/lib/entity/AcDbTextExtentsHelpers.d.ts +10 -3
  63. package/lib/entity/AcDbTextExtentsHelpers.d.ts.map +1 -1
  64. package/lib/entity/AcDbTextExtentsHelpers.js +15 -7
  65. package/lib/entity/AcDbTextExtentsHelpers.js.map +1 -1
  66. package/lib/misc/AcDbRenderingCache.d.ts +35 -0
  67. package/lib/misc/AcDbRenderingCache.d.ts.map +1 -1
  68. package/lib/misc/AcDbRenderingCache.js +116 -0
  69. package/lib/misc/AcDbRenderingCache.js.map +1 -1
  70. package/package.json +4 -4
@@ -31,6 +31,13 @@ export declare function acdbPeekDxfHeaderInfo(buffer: ArrayBuffer): AcDbDxfHeade
31
31
  * Scans with a character cursor (no full-file `string[]` of lines).
32
32
  */
33
33
  export declare function acdbMakeAsciiDxfPairReader(text: string): AcDbDxfPairReader;
34
+ /**
35
+ * Bytes decoded per `TextDecoder` call in {@link acdbMakeUtf8AsciiDxfPairReader}.
36
+ *
37
+ * Sized as a compromise: large enough that a multi-MB DXF costs hundreds of
38
+ * decode calls rather than one per line, small enough that windows still holding
39
+ * a retained value slice do not pin much memory.
40
+ */
34
41
  /**
35
42
  * ASCII pair reader that decodes UTF-8 bytes one line-aligned window at a time,
36
43
  * instead of allocating a full-file decoded string (peak memory ≈ input bytes
@@ -53,11 +60,12 @@ export interface AcDbCreateDxfPairReaderOptions {
53
60
  /**
54
61
  * Override text encoding for ASCII DXF.
55
62
  *
56
- * When omitted, the encoding is auto-detected from `$DWGCODEPAGE`
57
- * (`'utf-8'` for R2007+ drawings). When provided, it wins over the detected
58
- * value — use it to force e.g. `'cp949'` for Korean drawings whose header
59
- * lies. Common non-WHATWG aliases such as `'cp949'` are normalized to a
60
- * supported `TextDecoder` label (`'euc-kr'`).
63
+ * When omitted, the encoding is chosen automatically: bytes that validate
64
+ * as UTF-8 decode as UTF-8; otherwise a declared pre-2007 `$DWGCODEPAGE`
65
+ * is honored (see {@link acdbCreateDxfPairReader}). When provided, it wins
66
+ * over detection — use it to force e.g. `'cp949'` for Korean drawings whose
67
+ * header lies. Common non-WHATWG aliases such as `'cp949'` are normalized
68
+ * to a supported `TextDecoder` label (`'euc-kr'`).
61
69
  */
62
70
  encoding?: string;
63
71
  /** Force R12 1-byte group codes for binary DXF. */
@@ -66,9 +74,19 @@ export interface AcDbCreateDxfPairReaderOptions {
66
74
  /**
67
75
  * Create a pair reader from DXF bytes (ASCII or binary).
68
76
  *
69
- * ASCII path: peek HEADER for version/codepage when needed. UTF-8 drawings
70
- * decode one line-aligned window at a time (no full-file string). Legacy code
71
- * pages still decode once via `TextDecoder`, then scan with a character cursor.
77
+ * ASCII path encoding strategy (hybrid of byte-trust and header sniffing):
78
+ *
79
+ * 1. An explicit `options.encoding` always wins — the caller asserts the
80
+ * encoding, no sniffing contradicts it.
81
+ * 2. Otherwise the bytes are strictly validated as UTF-8. Valid UTF-8
82
+ * (including pure ASCII) decodes correctly regardless of any stale
83
+ * `$DWGCODEPAGE`, so the header is never consulted — modern files skip
84
+ * the header pre-scan entirely and stream straight from bytes.
85
+ * 3. Invalid UTF-8 means the file is not a spec-conformant modern DXF. The
86
+ * HEADER is then peeked for `$ACADVER`/`$DWGCODEPAGE`: pre-2007 drawings
87
+ * with a declared code page decode through it (matching AutoCAD), while
88
+ * R2007+ or headerless files fall back to UTF-8 (replacement chars mark
89
+ * the broken bytes).
72
90
  */
73
91
  export declare function acdbCreateDxfPairReader(data: ArrayBuffer | Uint8Array, options?: AcDbCreateDxfPairReaderOptions): AcDbDxfPairReader;
74
92
  //# sourceMappingURL=AcDbDxfPairReader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AcDbDxfPairReader.d.ts","sourceRoot":"","sources":["../../src/base/AcDbDxfPairReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAU3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAsBhD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;IACjC,IAAI,IAAI,WAAW,GAAG,SAAS,CAAA;IAC/B,IAAI,IAAI,WAAW,GAAG,SAAS,CAAA;IAC/B,QAAQ,IAAI;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CAClD;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAMzD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,CA0C5E;AAoDD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CA+D1E;AAgBD;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,UAAU,GAChB,iBAAiB,CAwGnB;AASD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACvD,iBAAiB,CAoKnB;AAED,MAAM,WAAW,8BAA8B;IAC7C;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,GAAG,UAAU,EAC9B,OAAO,GAAE,8BAAmC,GAC3C,iBAAiB,CA0DnB"}
1
+ {"version":3,"file":"AcDbDxfPairReader.d.ts","sourceRoot":"","sources":["../../src/base/AcDbDxfPairReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAU3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAwBhD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;IACjC,IAAI,IAAI,WAAW,GAAG,SAAS,CAAA;IAC/B,IAAI,IAAI,WAAW,GAAG,SAAS,CAAA;IAC/B,QAAQ,IAAI;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CAClD;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAMzD;AAkjBD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,CA0C5E;AAoDD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CA+D1E;AAOD;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,UAAU,GAChB,iBAAiB,CAEnB;AASD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACvD,iBAAiB,CAoKnB;AAED,MAAM,WAAW,8BAA8B;IAC7C;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAqDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,GAAG,UAAU,EAC9B,OAAO,GAAE,8BAAmC,GAC3C,iBAAiB,CA4EnB"}