brep-io-kernel 1.0.0 → 1.0.12

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 (134) hide show
  1. package/README.md +16 -3
  2. package/package.json +5 -1
  3. package/dist-kernel/help/CONTRIBUTING.html +0 -248
  4. package/dist-kernel/help/LICENSE.html +0 -248
  5. package/dist-kernel/help/MODELING.png +0 -0
  6. package/dist-kernel/help/PMI.png +0 -0
  7. package/dist-kernel/help/SKETCH.png +0 -0
  8. package/dist-kernel/help/assembly-constraints__Coincident_Constraint_dialog.png +0 -0
  9. package/dist-kernel/help/assembly-constraints___Angle_Constraint_dialog.png +0 -0
  10. package/dist-kernel/help/assembly-constraints___Distance_Constraint_dialog.png +0 -0
  11. package/dist-kernel/help/assembly-constraints___Fixed_Constraint_dialog.png +0 -0
  12. package/dist-kernel/help/assembly-constraints___Parallel_Constraint_dialog.png +0 -0
  13. package/dist-kernel/help/assembly-constraints___Touch_Align_Constraint_dialog.png +0 -0
  14. package/dist-kernel/help/assembly-constraints__angle-constraint.html +0 -248
  15. package/dist-kernel/help/assembly-constraints__coincident-constraint.html +0 -248
  16. package/dist-kernel/help/assembly-constraints__distance-constraint.html +0 -248
  17. package/dist-kernel/help/assembly-constraints__fixed-constraint.html +0 -248
  18. package/dist-kernel/help/assembly-constraints__parallel-constraint.html +0 -248
  19. package/dist-kernel/help/assembly-constraints__solver.html +0 -248
  20. package/dist-kernel/help/assembly-constraints__touch-align-constraint.html +0 -248
  21. package/dist-kernel/help/brep-api.html +0 -263
  22. package/dist-kernel/help/brep-kernel.html +0 -258
  23. package/dist-kernel/help/brep-model.html +0 -248
  24. package/dist-kernel/help/cylindrical-face-radius-embedding.html +0 -290
  25. package/dist-kernel/help/dialog-screenshots.html +0 -248
  26. package/dist-kernel/help/extruded-sketch-radius-embedding.html +0 -336
  27. package/dist-kernel/help/features__Assembly_Component_dialog.png +0 -0
  28. package/dist-kernel/help/features__Boolean_dialog.png +0 -0
  29. package/dist-kernel/help/features__Chamfer_dialog.png +0 -0
  30. package/dist-kernel/help/features__Datium_dialog.png +0 -0
  31. package/dist-kernel/help/features__Extrude_dialog.png +0 -0
  32. package/dist-kernel/help/features__Fillet_dialog.png +0 -0
  33. package/dist-kernel/help/features__Helix_dialog.png +0 -0
  34. package/dist-kernel/help/features__Hole_dialog.png +0 -0
  35. package/dist-kernel/help/features__Image_Heightmap_Solid_dialog.png +0 -0
  36. package/dist-kernel/help/features__Image_to_Face_dialog.png +0 -0
  37. package/dist-kernel/help/features__Import_3D_Model_dialog.png +0 -0
  38. package/dist-kernel/help/features__Loft_dialog.png +0 -0
  39. package/dist-kernel/help/features__Mirror_dialog.png +0 -0
  40. package/dist-kernel/help/features__Offset_Shell_dialog.png +0 -0
  41. package/dist-kernel/help/features__Overlap_Cleanup_dialog.png +0 -0
  42. package/dist-kernel/help/features__Pattern_Linear_dialog.png +0 -0
  43. package/dist-kernel/help/features__Pattern_Radial_dialog.png +0 -0
  44. package/dist-kernel/help/features__Pattern_dialog.png +0 -0
  45. package/dist-kernel/help/features__Plane_dialog.png +0 -0
  46. package/dist-kernel/help/features__Primitive_Cone_dialog.png +0 -0
  47. package/dist-kernel/help/features__Primitive_Cube_dialog.png +0 -0
  48. package/dist-kernel/help/features__Primitive_Cylinder_dialog.png +0 -0
  49. package/dist-kernel/help/features__Primitive_Pyramid_dialog.png +0 -0
  50. package/dist-kernel/help/features__Primitive_Sphere_dialog.png +0 -0
  51. package/dist-kernel/help/features__Primitive_Torus_dialog.png +0 -0
  52. package/dist-kernel/help/features__Remesh_dialog.png +0 -0
  53. package/dist-kernel/help/features__Revolve_dialog.png +0 -0
  54. package/dist-kernel/help/features__Sheet_Metal_Contour_Flange_dialog.png +0 -0
  55. package/dist-kernel/help/features__Sheet_Metal_Cutout_dialog.png +0 -0
  56. package/dist-kernel/help/features__Sheet_Metal_Flange_dialog.png +0 -0
  57. package/dist-kernel/help/features__Sheet_Metal_Tab_dialog.png +0 -0
  58. package/dist-kernel/help/features__Sketch_dialog.png +0 -0
  59. package/dist-kernel/help/features__Spline_dialog.png +0 -0
  60. package/dist-kernel/help/features__Sweep_dialog.png +0 -0
  61. package/dist-kernel/help/features__Transform_dialog.png +0 -0
  62. package/dist-kernel/help/features__Tube_dialog.png +0 -0
  63. package/dist-kernel/help/features__assembly-component.html +0 -248
  64. package/dist-kernel/help/features__boolean.html +0 -248
  65. package/dist-kernel/help/features__chamfer.html +0 -248
  66. package/dist-kernel/help/features__datium.html +0 -248
  67. package/dist-kernel/help/features__datum.html +0 -248
  68. package/dist-kernel/help/features__extrude.html +0 -248
  69. package/dist-kernel/help/features__fillet.html +0 -248
  70. package/dist-kernel/help/features__helix.html +0 -248
  71. package/dist-kernel/help/features__hole.html +0 -248
  72. package/dist-kernel/help/features__image-heightmap-solid.html +0 -248
  73. package/dist-kernel/help/features__image-to-face-2D_dialog.png +0 -0
  74. package/dist-kernel/help/features__image-to-face-3D_dialog.png +0 -0
  75. package/dist-kernel/help/features__image-to-face.html +0 -248
  76. package/dist-kernel/help/features__import-3d-model.html +0 -248
  77. package/dist-kernel/help/features__index.html +0 -248
  78. package/dist-kernel/help/features__loft.html +0 -248
  79. package/dist-kernel/help/features__mirror.html +0 -248
  80. package/dist-kernel/help/features__offset-shell.html +0 -248
  81. package/dist-kernel/help/features__pattern-linear.html +0 -248
  82. package/dist-kernel/help/features__pattern-radial.html +0 -248
  83. package/dist-kernel/help/features__pattern.html +0 -248
  84. package/dist-kernel/help/features__plane.html +0 -248
  85. package/dist-kernel/help/features__primitive-cone.html +0 -248
  86. package/dist-kernel/help/features__primitive-cube.html +0 -248
  87. package/dist-kernel/help/features__primitive-cylinder.html +0 -248
  88. package/dist-kernel/help/features__primitive-pyramid.html +0 -248
  89. package/dist-kernel/help/features__primitive-sphere.html +0 -248
  90. package/dist-kernel/help/features__primitive-torus.html +0 -248
  91. package/dist-kernel/help/features__remesh.html +0 -248
  92. package/dist-kernel/help/features__revolve.html +0 -248
  93. package/dist-kernel/help/features__sheet-metal-contour-flange.html +0 -248
  94. package/dist-kernel/help/features__sheet-metal-flange.html +0 -248
  95. package/dist-kernel/help/features__sheet-metal-tab.html +0 -248
  96. package/dist-kernel/help/features__sketch.html +0 -248
  97. package/dist-kernel/help/features__spline.html +0 -248
  98. package/dist-kernel/help/features__sweep.html +0 -248
  99. package/dist-kernel/help/features__transform.html +0 -248
  100. package/dist-kernel/help/features__tube.html +0 -248
  101. package/dist-kernel/help/file-formats.html +0 -248
  102. package/dist-kernel/help/getting-started.html +0 -248
  103. package/dist-kernel/help/highlights.html +0 -248
  104. package/dist-kernel/help/history-systems.html +0 -248
  105. package/dist-kernel/help/how-it-works.html +0 -248
  106. package/dist-kernel/help/index.html +0 -862
  107. package/dist-kernel/help/input-params-schema.html +0 -363
  108. package/dist-kernel/help/inspector-improvements.html +0 -248
  109. package/dist-kernel/help/inspector.html +0 -248
  110. package/dist-kernel/help/modes__modeling.html +0 -248
  111. package/dist-kernel/help/modes__pmi.html +0 -248
  112. package/dist-kernel/help/modes__sketch.html +0 -248
  113. package/dist-kernel/help/plugins.html +0 -248
  114. package/dist-kernel/help/pmi-annotations__Angle_Dimension_dialog.png +0 -0
  115. package/dist-kernel/help/pmi-annotations__Explode_Body_dialog.png +0 -0
  116. package/dist-kernel/help/pmi-annotations__Hole_Callout_dialog.png +0 -0
  117. package/dist-kernel/help/pmi-annotations__Leader_dialog.png +0 -0
  118. package/dist-kernel/help/pmi-annotations__Linear_Dimension_dialog.png +0 -0
  119. package/dist-kernel/help/pmi-annotations__Note_dialog.png +0 -0
  120. package/dist-kernel/help/pmi-annotations__Radial_Dimension_dialog.png +0 -0
  121. package/dist-kernel/help/pmi-annotations__angle-dimension.html +0 -248
  122. package/dist-kernel/help/pmi-annotations__explode-body.html +0 -248
  123. package/dist-kernel/help/pmi-annotations__hole-callout.html +0 -248
  124. package/dist-kernel/help/pmi-annotations__index.html +0 -248
  125. package/dist-kernel/help/pmi-annotations__leader.html +0 -248
  126. package/dist-kernel/help/pmi-annotations__linear-dimension.html +0 -248
  127. package/dist-kernel/help/pmi-annotations__note.html +0 -248
  128. package/dist-kernel/help/pmi-annotations__radial-dimension.html +0 -248
  129. package/dist-kernel/help/search-index.json +0 -464
  130. package/dist-kernel/help/simplified-radial-dimensions.html +0 -298
  131. package/dist-kernel/help/solid-methods.html +0 -359
  132. package/dist-kernel/help/table-of-contents.html +0 -330
  133. package/dist-kernel/help/ui-overview.html +0 -248
  134. package/dist-kernel/help/whats-new.html +0 -248
@@ -1,862 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width,initial-scale=1" />
6
- <title>[BREP](https://github.com/mmiscool/BREP) - BREP</title>
7
- <style>
8
- :root{
9
- --bg:#0b0f14; --panel:#0f141b; --text:#d7dde6; --muted:#9aa7b2;
10
- --border:#1b2430; --accent:#5cc8ff; --chip:#121823;
11
- }
12
- *{box-sizing:border-box}
13
- html,body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,'Liberation Mono','Courier New',monospace}
14
- main{max-width:1100px;margin:0 auto;padding:28px}
15
- h1{margin:0 0 18px;font-size:22px;color:var(--accent);font-weight:700}
16
- .summary{color:var(--muted);margin-bottom:22px}
17
- .card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:18px;margin:0 0 18px}
18
- .readme{padding:0}
19
- .readme .header{padding:16px 18px;border-bottom:1px solid var(--border)}
20
- .readme .content{padding:18px}
21
- .doc-card{padding:18px}
22
- .doc-nav{margin:0 0 18px;display:flex;gap:12px;flex-wrap:wrap;align-items:center;color:var(--muted)}
23
- .doc-nav-links{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
24
- .doc-nav a{color:var(--accent);font-weight:600}
25
- .doc-list{list-style:none;margin:18px 0;padding:0}
26
- .doc-list li{margin:6px 0}
27
- .doc-list a{color:var(--accent)}
28
- .nav-search{margin-left:auto;position:relative;display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;min-width:240px;max-width:520px}
29
- .search-title{font-weight:700;font-size:14px;margin-bottom:4px}
30
- .search-hint{color:var(--muted);font-size:12px;margin:0}
31
- .search-input-row{display:flex;gap:8px;align-items:center;width:100%}
32
- .search-input{flex:1;border:1px solid var(--border);border-radius:10px;background:var(--chip);color:var(--text);padding:10px 12px}
33
- .search-input:focus{outline:1px solid var(--accent);box-shadow:0 0 0 3px rgba(92,200,255,0.15)}
34
- .search-clear{border:1px solid var(--border);background:var(--panel);color:var(--muted);border-radius:10px;padding:9px 12px;cursor:pointer;font-weight:600}
35
- .search-clear:hover{border-color:var(--accent);color:var(--accent)}
36
- .search-status{color:var(--muted);font-size:12px;margin-top:4px;width:100%;text-align:right}
37
- .search-results{position:absolute;top:100%;right:0;margin-top:10px;border:1px solid var(--border);border-radius:12px;background:var(--panel);max-height:360px;overflow:auto;min-width:320px;max-width:520px;box-shadow:0 12px 30px rgba(0,0,0,0.35);z-index:25}
38
- .search-results ul{list-style:none;margin:0;padding:0}
39
- .search-item{padding:10px 12px;border-bottom:1px solid var(--border)}
40
- .search-item:last-child{border-bottom:none}
41
- .search-item a{display:block;color:var(--accent);font-weight:600}
42
- .search-snippet{color:var(--muted);font-size:13px;margin-top:4px}
43
- .search-results mark{background:rgba(92,200,255,0.2);color:var(--text);border-radius:4px;padding:0 2px}
44
- .prose h1{font-size:24px;margin:0 0 12px}
45
- .prose h2{font-size:18px;margin:18px 0 8px}
46
- .prose h3{font-size:16px;margin:14px 0 6px}
47
- .prose p{margin:0 0 10px}
48
- .prose ul,.prose ol{margin:0 0 10px 18px}
49
- .prose li{margin:4px 0}
50
- .prose code{background:#0d1520;border:1px solid var(--border);padding:1px 5px;border-radius:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'Liberation Mono','Courier New',monospace;font-size:12px}
51
- .prose pre{background:#0d1520;border:1px solid var(--border);padding:12px;border-radius:12px;overflow:auto}
52
- .prose a{color:var(--accent)}
53
- .prose img{max-width:100%;height:auto;}
54
- .prose table{border-collapse:collapse;width:100%;margin:16px 0;background:var(--panel);border:1px solid var(--border);border-radius:8px;overflow:hidden}
55
- .prose th,.prose td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--border)}
56
- .prose th{background:var(--chip);color:var(--text);font-weight:600;font-size:13px}
57
- .prose tr:last-child td{border-bottom:none}
58
- .prose tbody tr:hover{background:rgba(92,200,255,0.05)}
59
- .license{
60
- background:var(--panel);border:1px solid var(--border);border-radius:14px;
61
- padding:16px 16px 8px;margin:0 0 18px;
62
- }
63
- .license > h2{margin:0 0 10px;font-size:16px;font-weight:700}
64
- .pkg{
65
- border-top:1px solid var(--border);padding:10px 0;
66
- display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;
67
- }
68
- .pkg:first-of-type{border-top:none}
69
- .pkg .meta{display:flex;gap:10px;flex-wrap:wrap}
70
- .pkg .name{font-weight:600}
71
- .pkg .desc{color:var(--muted);margin-top:2px}
72
- a{color:var(--accent);text-decoration:none} a:hover{text-decoration:underline}
73
- .chip{background:var(--chip);border:1px solid var(--border);border-radius:999px;padding:2px 8px;font-size:12px;color:var(--muted)}
74
- .footer{margin-top:26px;color:var(--muted);font-size:12px}
75
- </style>
76
- </head>
77
- <body>
78
- <main>
79
- <nav class="doc-nav">
80
- <div class="doc-nav-links">
81
- <a href="index.html">Help Home</a><span>&middot;</span><a href="/help/table-of-contents.html">Table of Contents</a><span>&middot;</span><a href="https://github.com/mmiscool/BREP" target="_blank" rel="noopener noreferrer">GitHub</a>
82
- </div>
83
- <div class="nav-search">
84
- <div class="search-input-row">
85
- <input type="search" id="doc-search" class="search-input" placeholder="Search docs... Type at least 2 characters to search" autocomplete="off" spellcheck="false" />
86
- <button type="button" class="search-clear" id="doc-search-clear">Clear</button>
87
- </div>
88
- <div class="search-status" id="doc-search-status"></div>
89
- <div class="search-results" id="doc-search-results" hidden>
90
- <ul id="doc-search-list"></ul>
91
- </div>
92
- </div>
93
- </nav>
94
- <section class="card doc-card">
95
-
96
- <div class="prose">
97
- <h1><a href="https://github.com/mmiscool/BREP">BREP</a></h1><h2><a href="https://github.com/mmiscool/BREP">Source repo <a href="https://github.com/mmiscool/BREP" target="_blank" rel="noopener noreferrer">https://github.com/mmiscool/BREP</a></a></h2><p>A feature-based modeling playground experimenting with BREP-style workflows on top of triangle meshes. It combines robust manifold CSG (via the <a href="https://github.com/elalish/manifold/">Manifold</a> library) with a simple face and edge representation, a history pipeline, and Three.js visualization. Import meshes (STL), repair and group them into faces, then perform boolean operations, fillets, chamfers, sweeps, lofts, and more.</p><p>This project is actively evolving; expect rough edges while APIs settle. <a href="modes__modeling.html"><img src="MODELING.png" alt="Modeling Mode" loading="lazy" /></a> <a href="modes__sketch.html"><img src="SKETCH.png" alt="Sketch Mode" loading="lazy" /></a> <a href="modes__pmi.html"><img src="PMI.png" alt="PMI Mode" loading="lazy" /></a> <a href="features__image-to-face.html"><img src="features__image-to-face-2D_dialog.png" alt="Image to Face 2D Trace" width="280" loading="lazy" /></a> <a href="features__image-to-face.html"><img src="features__image-to-face-3D_dialog.png" alt="Image to Face 3D Result" width="280" loading="lazy" /></a></p><h2>Documentation Map</h2><ul><li><a href="highlights.html">Highlights</a></li><li><a href="whats-new.html">What&#39;s New</a></li><li><a href="getting-started.html">Getting Started</a></li><li><a href="ui-overview.html">UI Overview (Browser)</a></li><li><a href="how-it-works.html">How It Works</a></li><li><a href="history-systems.html">History Systems</a></li><li><a href="input-params-schema.html">Input Params Schema</a></li><li><a href="brep-model.html">BREP Model and Classes</a></li><li><a href="brep-api.html">BREP API (BREP.js exports)</a></li><li><a href="brep-kernel.html">BREP Kernel (core classes &amp; helpers)</a></li><li><a href="file-formats.html">File Formats: Import and Export</a></li><li><a href="plugins.html">Plugins and Examples</a></li><li><a href="inspector-improvements.html">Recent Inspector Improvements</a></li><li><a href="inspector.html">Inspector</a></li></ul><h2>Dialog Screenshots</h2><p>See <a href="dialog-screenshots.html">Dialog Screenshots</a> for the capture helpers, output locations, and configuration options.</p><h2>Run Local Dev Environment</h2><p><pre><code># clone repo and cd to the folder
98
- pnpm install
99
- pnpm dev</code></pre></p><h2>Produce Static build</h2><p><pre><code># clone repo and cd to the folder
100
- pnpm install
101
- pnpm build</code></pre> Generating a static build will create a <pre><code>dist</code></pre> folder containing a static build suitable for hosting on a CDN or just being copied to a web server.</p><h2>Application Mode Guides</h2><ul><li><a href="modes__modeling.html">Modeling Mode</a></li><li><a href="modes__sketch.html">Sketch Mode</a></li><li><a href="modes__pmi.html">PMI Mode</a></li><li><a href="assembly-constraints__solver.html">Assembly Constraint Solver</a></li></ul><h2>Modeling Features</h2><ul><li><a href="features__primitive-cube.html">Primitive Cube</a> — Implemented</li><li><a href="features__primitive-cylinder.html">Primitive Cylinder</a> — Implemented</li><li><a href="features__primitive-cone.html">Primitive Cone</a> — Implemented</li><li><a href="features__primitive-sphere.html">Primitive Sphere</a> — Implemented</li><li><a href="features__primitive-torus.html">Primitive Torus</a> — Implemented</li><li><a href="features__primitive-pyramid.html">Primitive Pyramid</a> — Implemented</li><li><a href="features__plane.html">Plane</a> — Implemented</li><li><a href="features__datum.html">Datum</a> — Implemented</li><li><a href="features__sketch.html">Sketch</a> — Implemented</li><li><a href="features__helix.html">Helix</a> — Implemented</li><li><a href="features__extrude.html">Extrude</a> — Implemented</li><li><a href="features__sweep.html">Sweep</a> — Implemented</li><li><a href="features__tube.html">Tube</a> — Implemented</li><li><a href="features__loft.html">Loft</a> — Implemented</li><li><a href="features__revolve.html">Revolve</a> — Implemented</li><li><a href="features__mirror.html">Mirror</a> — Implemented</li><li><a href="features__boolean.html">Boolean</a> — Implemented</li><li><a href="features__fillet.html">Fillet</a> — Implemented</li><li><a href="features__chamfer.html">Chamfer</a> — Implemented</li><li><a href="features__hole.html">Hole</a> — Implemented</li><li><a href="features__offset-shell.html">Offset Shell</a> — Implemented</li><li><a href="features__remesh.html">Remesh</a> — Implemented</li><li><a href="features__import-3d-model.html">Import 3D Model (STL or 3MF)</a> — Implemented</li><li><a href="features__image-heightmap-solid.html">Image Heightmap Solid</a> — Implemented</li><li><a href="features__image-to-face.html">Image to Face (image trace)</a> — Implemented</li><li><a href="features__transform.html">Transform (move, rotate, scale)</a> — Implemented</li><li><a href="features__pattern-linear.html">Pattern Linear</a> — Implemented</li><li><a href="features__pattern-radial.html">Pattern Radial</a> — Implemented</li><li><a href="features__pattern.html">Pattern (legacy combined)</a> — Implemented</li><li><a href="features__assembly-component.html">Assembly Component</a> — Implemented</li><li><a href="features__sheet-metal-tab.html">Sheet Metal Tab</a> — Implemented</li><li><a href="features__sheet-metal-contour-flange.html">Sheet Metal Contour Flange</a> — Implemented</li><li><a href="features__sheet-metal-flange.html">Sheet Metal Flange</a> — Implemented</li></ul><h2>Assembly Constraints</h2><p>Assemblies can be constrained with the iterative solver described in <a href="assembly-constraints__solver.html">Assembly Constraint Solver</a>. Each constraint instance stores clear selections plus persistent solve data so runs resume quickly after edits. The constraint registry currently ships with:</p><ul><li><a href="assembly-constraints__coincident-constraint.html">Coincident</a> – mates two datum points or implicit origins.</li><li><a href="assembly-constraints__distance-constraint.html">Distance</a> – fixes an offset between reference points along a chosen axis or free space.</li><li><a href="assembly-constraints__angle-constraint.html">Angle</a> – enforces a target angle between two axes or faces.</li><li><a href="assembly-constraints__parallel-constraint.html">Parallel</a> – locks component axes or normals into parallel alignment.</li><li><a href="assembly-constraints__touch-align-constraint.html">Touch Align</a> – slides surfaces until they touch and optionally shares tangency.</li><li><a href="assembly-constraints__fixed-constraint.html">Fixed</a> – anchors a component so downstream constraints treat it as immobile.</li></ul><p>Adding, removing, or editing any of these entries queues an automatic background solve, and the UI exposes constraint status plus debugging messages pulled from each <code>persistentData</code> record.</p><h2>PMI annotations</h2><p>PMI mode focuses on downstream manufacturing communication. Annotating the model augments the saved <code>.brep</code> history and the embedded 3MF metadata. The PMI tools mirror the dialog capture pages in <code>docs/pmi-annotations</code>:</p><ul><li><a href="pmi-annotations__linear-dimension.html">Linear Dimension</a> – measures distances between vertices with alignment, offsets, and extension controls.</li><li><a href="pmi-annotations__radial-dimension.html">Radial Dimension</a> – reports diameter/radius for arcs, circles, and cylinders.</li><li><a href="pmi-annotations__angle-dimension.html">Angle Dimension</a> – dimension angular relationships across edges or faces.</li><li><a href="pmi-annotations__leader.html">Leader</a> – callouts with free-form text, arrowhead placement, and captured drag offsets.</li><li><a href="pmi-annotations__note.html">Note</a> – rich-text style annotations tied to PMI views without leader geometry.</li><li><a href="pmi-annotations__explode-body.html">Explode Body</a> – stores exploded-view offsets per component for presentation layouts.</li><li><a href="pmi-annotations__hole-callout.html">Hole Callout</a> – leader-style callout that reports hole feature parameters (diameters, depths, countersink/counterbore).</li></ul><p>Each annotation stores associative references and view metadata so reloading a part restores the PMI viewport, label placement, and formatting settings.</p><h2>Using as an npm package (not completed yet. Will change and is not currently working)</h2><ul><li>Install:</li><p>- <code>pnpm add brep-io-kernel</code></p><li>Import options:</li></ul><p>- <code>import { BREP, PartHistory } from &#39;brep-io-kernel&#39;;</code> - <code>import { BREP } from &#39;brep-io-kernel/BREP&#39;;</code> - <code>import { PartHistory } from &#39;brep-io-kernel/PartHistory&#39;;</code> - <code>import { AssemblyConstraintHistory, AssemblyConstraintRegistry } from &#39;brep-io-kernel&#39;;</code></p><h2>License</h2><p>See <a href="LICENSE.html">LICENSE.md</a>. This project uses a dual-licensing strategy managed by Autodrop3d LLC.</p><h2>Contributing</h2><p>See <a href="CONTRIBUTING.html">CONTRIBUTING.md</a> for guidelines on submitting pull requests, reporting issues, and participating in discussions.</p>
102
-
103
- <h2>Documentation</h2>
104
- <ul class="doc-list"><li><a href="./assembly-constraints__angle-constraint.html">Angle Constraint</a></li>
105
- <li><a href="./assembly-constraints__coincident-constraint.html">Coincident Constraint</a></li>
106
- <li><a href="./assembly-constraints__distance-constraint.html">Distance Constraint</a></li>
107
- <li><a href="./assembly-constraints__fixed-constraint.html">Fixed Constraint</a></li>
108
- <li><a href="./assembly-constraints__parallel-constraint.html">Parallel Constraint</a></li>
109
- <li><a href="./assembly-constraints__solver.html">Assembly Constraint Solver</a></li>
110
- <li><a href="./assembly-constraints__touch-align-constraint.html">Touch Align Constraint</a></li>
111
- <li><a href="./brep-api.html">BREP.js Export Map and Usage</a></li>
112
- <li><a href="./brep-kernel.html">BREP Kernel Reference</a></li>
113
- <li><a href="./brep-model.html">BREP Model and Classes</a></li>
114
- <li><a href="./CONTRIBUTING.html">CONTRIBUTING</a></li>
115
- <li><a href="./cylindrical-face-radius-embedding.html">Cylindrical Face Radius Embedding</a></li>
116
- <li><a href="./dialog-screenshots.html">Dialog Screenshots</a></li>
117
- <li><a href="./extruded-sketch-radius-embedding.html">Radius Metadata for Extruded Sketches</a></li>
118
- <li><a href="./features__assembly-component.html">Assembly Component</a></li>
119
- <li><a href="./features__boolean.html">Boolean</a></li>
120
- <li><a href="./features__chamfer.html">Chamfer</a></li>
121
- <li><a href="./features__datium.html">Datium</a></li>
122
- <li><a href="./features__datum.html">Datum</a></li>
123
- <li><a href="./features__extrude.html">Extrude</a></li>
124
- <li><a href="./features__fillet.html">Fillet</a></li>
125
- <li><a href="./features__helix.html">Helix</a></li>
126
- <li><a href="./features__hole.html">Hole</a></li>
127
- <li><a href="./features__image-heightmap-solid.html">Image Heightmap Solid</a></li>
128
- <li><a href="./features__image-to-face.html">Image to Face</a></li>
129
- <li><a href="./features__import-3d-model.html">Import 3D Model</a></li>
130
- <li><a href="./features__index.html">Features</a></li>
131
- <li><a href="./features__loft.html">Loft</a></li>
132
- <li><a href="./features__mirror.html">Mirror</a></li>
133
- <li><a href="./features__offset-shell.html">Offset Shell</a></li>
134
- <li><a href="./features__pattern-linear.html">Pattern Linear</a></li>
135
- <li><a href="./features__pattern-radial.html">Pattern Radial</a></li>
136
- <li><a href="./features__pattern.html">Pattern (Legacy)</a></li>
137
- <li><a href="./features__plane.html">Plane</a></li>
138
- <li><a href="./features__primitive-cone.html">Primitive Cone</a></li>
139
- <li><a href="./features__primitive-cube.html">Primitive Cube</a></li>
140
- <li><a href="./features__primitive-cylinder.html">Primitive Cylinder</a></li>
141
- <li><a href="./features__primitive-pyramid.html">Primitive Pyramid</a></li>
142
- <li><a href="./features__primitive-sphere.html">Primitive Sphere</a></li>
143
- <li><a href="./features__primitive-torus.html">Primitive Torus</a></li>
144
- <li><a href="./features__remesh.html">Remesh</a></li>
145
- <li><a href="./features__revolve.html">Revolve</a></li>
146
- <li><a href="./features__sheet-metal-contour-flange.html">Sheet Metal Contour Flange</a></li>
147
- <li><a href="./features__sheet-metal-flange.html">Sheet Metal Flange</a></li>
148
- <li><a href="./features__sheet-metal-tab.html">Sheet Metal Tab</a></li>
149
- <li><a href="./features__sketch.html">Sketch</a></li>
150
- <li><a href="./features__spline.html">Spline</a></li>
151
- <li><a href="./features__sweep.html">Sweep</a></li>
152
- <li><a href="./features__transform.html">Transform</a></li>
153
- <li><a href="./features__tube.html">Tube Feature</a></li>
154
- <li><a href="./file-formats.html">File Formats: Import and Export</a></li>
155
- <li><a href="./getting-started.html">Getting Started</a></li>
156
- <li><a href="./highlights.html">Highlights</a></li>
157
- <li><a href="./history-systems.html">History Systems</a></li>
158
- <li><a href="./how-it-works.html">How It Works</a></li>
159
- <li><a href="./input-params-schema.html">Input Params Schema</a></li>
160
- <li><a href="./inspector-improvements.html">Recent Inspector Improvements</a></li>
161
- <li><a href="./inspector.html">Inspector</a></li>
162
- <li><a href="./LICENSE.html">LICENSE</a></li>
163
- <li><a href="./modes__modeling.html">Modeling Mode</a></li>
164
- <li><a href="./modes__pmi.html">PMI Mode</a></li>
165
- <li><a href="./modes__sketch.html">Sketch Mode</a></li>
166
- <li><a href="./plugins.html">Plugins and Examples</a></li>
167
- <li><a href="./pmi-annotations__angle-dimension.html">Angle Dimension</a></li>
168
- <li><a href="./pmi-annotations__explode-body.html">Explode Body (View Transform)</a></li>
169
- <li><a href="./pmi-annotations__hole-callout.html">Hole Callout</a></li>
170
- <li><a href="./pmi-annotations__index.html">PMI Annotations</a></li>
171
- <li><a href="./pmi-annotations__leader.html">Leader</a></li>
172
- <li><a href="./pmi-annotations__linear-dimension.html">Linear Dimension</a></li>
173
- <li><a href="./pmi-annotations__note.html">Note</a></li>
174
- <li><a href="./pmi-annotations__radial-dimension.html">Radial Dimension</a></li>
175
- <li><a href="./simplified-radial-dimensions.html">Simplified Radial Dimension Interface</a></li>
176
- <li><a href="./solid-methods.html">Solid Methods Reference</a></li>
177
- <li><a href="./ui-overview.html">UI Overview (Browser)</a></li>
178
- <li><a href="./whats-new.html">What&#39;s New</a></li></ul>
179
-
180
- </div>
181
- </section>
182
-
183
- <section class="card">
184
- <h1>This project's license</h1>
185
- <div style="white-space: pre-wrap;">Copyright 2026 Autodrop3d LLC
186
- https://autodrop3d.com
187
-
188
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
189
-
190
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
191
-
192
- THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</div>
193
- </section>
194
-
195
- <h1>Licenses Report of libraries used in this package</h1>
196
- <div class="summary">55 packages • 9 license types</div>
197
- <section class="license">
198
- <h2>(MIT AND Zlib) <span class="chip">1 package</span></h2>
199
- <div class="pkg">
200
- <div>
201
- <div class="name">pako <span class="chip">1 version</span></div>
202
- <div class="desc">zlib port to javascript - fast, modularized, with browser support</div>
203
-
204
- </div>
205
- <div class="meta">
206
- <a class="chip" href="https://github.com/nodeca/pako" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
207
- </div>
208
- </div></section><section class="license">
209
- <h2>(MIT OR GPL-3.0-or-later) <span class="chip">1 package</span></h2>
210
- <div class="pkg">
211
- <div>
212
- <div class="name">jszip <span class="chip">1 version</span></div>
213
- <div class="desc">Create, read and edit .zip files with JavaScript http://stuartk.com/jszip</div>
214
- <div class="desc">Author: Stuart Knightley</div>
215
- </div>
216
- <div class="meta">
217
- <a class="chip" href="https://github.com/Stuk/jszip#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
218
- </div>
219
- </div></section><section class="license">
220
- <h2>(MPL-2.0 OR Apache-2.0) <span class="chip">1 package</span></h2>
221
- <div class="pkg">
222
- <div>
223
- <div class="name">dompurify <span class="chip">1 version</span></div>
224
- <div class="desc">DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It&#39;s written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else using Blink or WebKit). DOMPurify is written by security people who have vast background in web attacks and XSS. Fear not.</div>
225
- <div class="desc">Author: Dr.-Ing. Mario Heiderich, Cure53</div>
226
- </div>
227
- <div class="meta">
228
- <a class="chip" href="https://github.com/cure53/DOMPurify" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
229
- </div>
230
- </div></section><section class="license">
231
- <h2>Apache-2.0 <span class="chip">5 packages</span></h2>
232
- <div class="pkg">
233
- <div>
234
- <div class="name">@img/sharp-linux-x64 <span class="chip">1 version</span></div>
235
- <div class="desc">Prebuilt sharp for use with Linux (glibc) x64</div>
236
- <div class="desc">Author: Lovell Fuller</div>
237
- </div>
238
- <div class="meta">
239
- <a class="chip" href="https://sharp.pixelplumbing.com" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
240
- </div>
241
- </div><div class="pkg">
242
- <div>
243
- <div class="name">@img/sharp-linuxmusl-x64 <span class="chip">1 version</span></div>
244
- <div class="desc">Prebuilt sharp for use with Linux (musl) x64</div>
245
- <div class="desc">Author: Lovell Fuller</div>
246
- </div>
247
- <div class="meta">
248
- <a class="chip" href="https://sharp.pixelplumbing.com" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
249
- </div>
250
- </div><div class="pkg">
251
- <div>
252
- <div class="name">detect-libc <span class="chip">1 version</span></div>
253
- <div class="desc">Node.js module to detect the C standard library (libc) implementation family and version</div>
254
- <div class="desc">Author: Lovell Fuller</div>
255
- </div>
256
- <div class="meta">
257
- <a class="chip" href="https://github.com/lovell/detect-libc#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
258
- </div>
259
- </div><div class="pkg">
260
- <div>
261
- <div class="name">manifold-3d <span class="chip">1 version</span></div>
262
- <div class="desc">Geometry library for topological robustness</div>
263
-
264
- </div>
265
- <div class="meta">
266
- <a class="chip" href="https://github.com/elalish/manifold#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
267
- </div>
268
- </div><div class="pkg">
269
- <div>
270
- <div class="name">sharp <span class="chip">1 version</span></div>
271
- <div class="desc">High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images</div>
272
- <div class="desc">Author: Lovell Fuller</div>
273
- </div>
274
- <div class="meta">
275
- <a class="chip" href="https://sharp.pixelplumbing.com" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
276
- </div>
277
- </div></section><section class="license">
278
- <h2>bsd-2-clause <span class="chip">1 package</span></h2>
279
- <div class="pkg">
280
- <div>
281
- <div class="name">esbuild-plugin-text-replace <span class="chip">1 version</span></div>
282
- <div class="desc">Replace Text with Regex in files before bundling.</div>
283
- <div class="desc">Author: Andreas Heissenberger</div>
284
- </div>
285
- <div class="meta">
286
- <a class="chip" href="https://github.com/aheissenberger/esbuild-plugin-text-replace" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
287
- </div>
288
- </div></section><section class="license">
289
- <h2>ISC <span class="chip">2 packages</span></h2>
290
- <div class="pkg">
291
- <div>
292
- <div class="name">inherits <span class="chip">1 version</span></div>
293
- <div class="desc">Browser-friendly inheritance fully compatible with standard node.js inherits()</div>
294
-
295
- </div>
296
- <div class="meta">
297
- <a class="chip" href="https://github.com/isaacs/inherits#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
298
- </div>
299
- </div><div class="pkg">
300
- <div>
301
- <div class="name">semver <span class="chip">1 version</span></div>
302
- <div class="desc">The semantic version parser used by npm.</div>
303
- <div class="desc">Author: GitHub Inc.</div>
304
- </div>
305
- <div class="meta">
306
- <a class="chip" href="https://github.com/npm/node-semver#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
307
- </div>
308
- </div></section><section class="license">
309
- <h2>LGPL-3.0-or-later <span class="chip">2 packages</span></h2>
310
- <div class="pkg">
311
- <div>
312
- <div class="name">@img/sharp-libvips-linux-x64 <span class="chip">1 version</span></div>
313
- <div class="desc">Prebuilt libvips and dependencies for use with sharp on Linux (glibc) x64</div>
314
- <div class="desc">Author: Lovell Fuller</div>
315
- </div>
316
- <div class="meta">
317
- <a class="chip" href="https://sharp.pixelplumbing.com" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
318
- </div>
319
- </div><div class="pkg">
320
- <div>
321
- <div class="name">@img/sharp-libvips-linuxmusl-x64 <span class="chip">1 version</span></div>
322
- <div class="desc">Prebuilt libvips and dependencies for use with sharp on Linux (musl) x64</div>
323
- <div class="desc">Author: Lovell Fuller</div>
324
- </div>
325
- <div class="meta">
326
- <a class="chip" href="https://sharp.pixelplumbing.com" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
327
- </div>
328
- </div></section><section class="license">
329
- <h2>MIT <span class="chip">41 packages</span></h2>
330
- <div class="pkg">
331
- <div>
332
- <div class="name">@gltf-transform/core <span class="chip">1 version</span></div>
333
- <div class="desc">glTF 2.0 SDK for JavaScript and TypeScript, on Web and Node.js.</div>
334
- <div class="desc">Author: Don McCurdy</div>
335
- </div>
336
- <div class="meta">
337
- <a class="chip" href="https://gltf-transform.dev/" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
338
- </div>
339
- </div><div class="pkg">
340
- <div>
341
- <div class="name">@gltf-transform/extensions <span class="chip">1 version</span></div>
342
- <div class="desc">Adds extension support to @gltf-transform/core</div>
343
- <div class="desc">Author: Don McCurdy</div>
344
- </div>
345
- <div class="meta">
346
- <a class="chip" href="https://gltf-transform.dev/extensions.html" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
347
- </div>
348
- </div><div class="pkg">
349
- <div>
350
- <div class="name">@gltf-transform/functions <span class="chip">1 version</span></div>
351
- <div class="desc">Functions for common glTF modifications, written using the core API</div>
352
- <div class="desc">Author: Don McCurdy</div>
353
- </div>
354
- <div class="meta">
355
- <a class="chip" href="https://gltf-transform.dev/functions.html" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
356
- </div>
357
- </div><div class="pkg">
358
- <div>
359
- <div class="name">@img/colour <span class="chip">1 version</span></div>
360
- <div class="desc">The ESM-only &#39;color&#39; package made compatible for use with CommonJS runtimes</div>
361
-
362
- </div>
363
- <div class="meta">
364
- <a class="chip" href="https://github.com/lovell/colour#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
365
- </div>
366
- </div><div class="pkg">
367
- <div>
368
- <div class="name">@jridgewell/resolve-uri <span class="chip">1 version</span></div>
369
- <div class="desc">Resolve a URI relative to an optional base URI</div>
370
- <div class="desc">Author: Justin Ridgewell</div>
371
- </div>
372
- <div class="meta">
373
- <a class="chip" href="https://github.com/jridgewell/resolve-uri#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
374
- </div>
375
- </div><div class="pkg">
376
- <div>
377
- <div class="name">@jridgewell/sourcemap-codec <span class="chip">1 version</span></div>
378
- <div class="desc">Encode/decode sourcemap mappings</div>
379
- <div class="desc">Author: Justin Ridgewell</div>
380
- </div>
381
- <div class="meta">
382
- <a class="chip" href="https://github.com/jridgewell/sourcemaps/tree/main/packages/sourcemap-codec" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
383
- </div>
384
- </div><div class="pkg">
385
- <div>
386
- <div class="name">@jridgewell/trace-mapping <span class="chip">1 version</span></div>
387
- <div class="desc">Trace the original position through a source map</div>
388
- <div class="desc">Author: Justin Ridgewell</div>
389
- </div>
390
- <div class="meta">
391
- <a class="chip" href="https://github.com/jridgewell/sourcemaps/tree/main/packages/trace-mapping" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
392
- </div>
393
- </div><div class="pkg">
394
- <div>
395
- <div class="name">@jscadui/3mf-export <span class="chip">1 version</span></div>
396
- <div class="desc">3mf export</div>
397
-
398
- </div>
399
- <div class="meta">
400
-
401
- </div>
402
- </div><div class="pkg">
403
- <div>
404
- <div class="name">@tarikjabiri/dxf <span class="chip">1 version</span></div>
405
- <div class="desc">A JavaScript interface to Dxf written in TypeScript.</div>
406
- <div class="desc">Author: Tarik EL JABIRI</div>
407
- </div>
408
- <div class="meta">
409
- <a class="chip" href="https://dxf.vercel.app" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
410
- </div>
411
- </div><div class="pkg">
412
- <div>
413
- <div class="name">@types/ndarray <span class="chip">1 version</span></div>
414
- <div class="desc">TypeScript definitions for ndarray</div>
415
-
416
- </div>
417
- <div class="meta">
418
- <a class="chip" href="https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/ndarray" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
419
- </div>
420
- </div><div class="pkg">
421
- <div>
422
- <div class="name">@types/trusted-types <span class="chip">1 version</span></div>
423
- <div class="desc">TypeScript definitions for trusted-types</div>
424
-
425
- </div>
426
- <div class="meta">
427
- <a class="chip" href="https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/trusted-types" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
428
- </div>
429
- </div><div class="pkg">
430
- <div>
431
- <div class="name">commander <span class="chip">1 version</span></div>
432
- <div class="desc">the complete solution for node.js command-line programs</div>
433
- <div class="desc">Author: TJ Holowaychuk</div>
434
- </div>
435
- <div class="meta">
436
- <a class="chip" href="https://github.com/tj/commander.js#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
437
- </div>
438
- </div><div class="pkg">
439
- <div>
440
- <div class="name">convert-source-map <span class="chip">1 version</span></div>
441
- <div class="desc">Converts a source-map from/to different formats and allows adding/changing properties.</div>
442
- <div class="desc">Author: Thorsten Lorenz</div>
443
- </div>
444
- <div class="meta">
445
- <a class="chip" href="https://github.com/thlorenz/convert-source-map" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
446
- </div>
447
- </div><div class="pkg">
448
- <div>
449
- <div class="name">core-js <span class="chip">1 version</span></div>
450
- <div class="desc">Standard library</div>
451
- <div class="desc">Author: Denis Pushkarev</div>
452
- </div>
453
- <div class="meta">
454
- <a class="chip" href="https://core-js.io" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
455
- </div>
456
- </div><div class="pkg">
457
- <div>
458
- <div class="name">core-util-is <span class="chip">1 version</span></div>
459
- <div class="desc">The `util.is*` functions introduced in Node v0.12.</div>
460
- <div class="desc">Author: Isaac Z. Schlueter</div>
461
- </div>
462
- <div class="meta">
463
- <a class="chip" href="https://github.com/isaacs/core-util-is#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
464
- </div>
465
- </div><div class="pkg">
466
- <div>
467
- <div class="name">cwise-compiler <span class="chip">1 version</span></div>
468
- <div class="desc">cwise&#39;s internal compiler</div>
469
- <div class="desc">Author: Mikola Lysenko</div>
470
- </div>
471
- <div class="meta">
472
- <a class="chip" href="https://github.com/scijs/cwise-compiler#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
473
- </div>
474
- </div><div class="pkg">
475
- <div>
476
- <div class="name">esbuild-wasm <span class="chip">1 version</span></div>
477
- <div class="desc">The cross-platform WebAssembly binary for esbuild, a JavaScript bundler.</div>
478
-
479
- </div>
480
- <div class="meta">
481
- <a class="chip" href="https://github.com/evanw/esbuild#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
482
- </div>
483
- </div><div class="pkg">
484
- <div>
485
- <div class="name">fflate <span class="chip">1 version</span></div>
486
- <div class="desc">High performance (de)compression in an 8kB package</div>
487
- <div class="desc">Author: Arjun Barrett</div>
488
- </div>
489
- <div class="meta">
490
- <a class="chip" href="https://101arrowz.github.io/fflate" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
491
- </div>
492
- </div><div class="pkg">
493
- <div>
494
- <div class="name">immediate <span class="chip">1 version</span></div>
495
- <div class="desc">A cross browser microtask library</div>
496
-
497
- </div>
498
- <div class="meta">
499
- <a class="chip" href="https://github.com/calvinmetcalf/immediate#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
500
- </div>
501
- </div><div class="pkg">
502
- <div>
503
- <div class="name">iota-array <span class="chip">1 version</span></div>
504
- <div class="desc">Generates an array of consecutive integers starting at 0</div>
505
- <div class="desc">Author: Mikola Lysenko</div>
506
- </div>
507
- <div class="meta">
508
- <a class="chip" href="https://github.com/mikolalysenko/iota-array#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
509
- </div>
510
- </div><div class="pkg">
511
- <div>
512
- <div class="name">is-buffer <span class="chip">1 version</span></div>
513
- <div class="desc">Determine if an object is a Buffer</div>
514
- <div class="desc">Author: Feross Aboukhadijeh</div>
515
- </div>
516
- <div class="meta">
517
- <a class="chip" href="https://github.com/feross/is-buffer#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
518
- </div>
519
- </div><div class="pkg">
520
- <div>
521
- <div class="name">isarray <span class="chip">1 version</span></div>
522
- <div class="desc">Array#isArray for older browsers</div>
523
- <div class="desc">Author: Julian Gruber</div>
524
- </div>
525
- <div class="meta">
526
- <a class="chip" href="https://github.com/juliangruber/isarray" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
527
- </div>
528
- </div><div class="pkg">
529
- <div>
530
- <div class="name">ktx-parse <span class="chip">1 version</span></div>
531
- <div class="desc">KTX 2.0 (.ktx2) parser and serializer.</div>
532
- <div class="desc">Author: Don McCurdy</div>
533
- </div>
534
- <div class="meta">
535
- <a class="chip" href="https://github.com/donmccurdy/ktx-parse#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
536
- </div>
537
- </div><div class="pkg">
538
- <div>
539
- <div class="name">lie <span class="chip">1 version</span></div>
540
- <div class="desc">A basic but performant promise implementation</div>
541
-
542
- </div>
543
- <div class="meta">
544
- <a class="chip" href="https://github.com/calvinmetcalf/lie#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
545
- </div>
546
- </div><div class="pkg">
547
- <div>
548
- <div class="name">marked <span class="chip">1 version</span></div>
549
- <div class="desc">A markdown parser built for speed</div>
550
- <div class="desc">Author: Christopher Jeffrey</div>
551
- </div>
552
- <div class="meta">
553
- <a class="chip" href="https://marked.js.org" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
554
- </div>
555
- </div><div class="pkg">
556
- <div>
557
- <div class="name">monaco-editor <span class="chip">1 version</span></div>
558
- <div class="desc">A browser based code editor</div>
559
- <div class="desc">Author: Microsoft Corporation</div>
560
- </div>
561
- <div class="meta">
562
- <a class="chip" href="https://github.com/microsoft/monaco-editor" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
563
- </div>
564
- </div><div class="pkg">
565
- <div>
566
- <div class="name">ndarray <span class="chip">1 version</span></div>
567
- <div class="desc">Multidimensional Arrays</div>
568
- <div class="desc">Author: Mikola Lysenko</div>
569
- </div>
570
- <div class="meta">
571
- <a class="chip" href="https://github.com/mikolalysenko/ndarray#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
572
- </div>
573
- </div><div class="pkg">
574
- <div>
575
- <div class="name">ndarray-lanczos <span class="chip">1 version</span></div>
576
- <div class="desc">Resize an ndarray with Lanczos resampling</div>
577
- <div class="desc">Author: Don McCurdy</div>
578
- </div>
579
- <div class="meta">
580
- <a class="chip" href="https://github.com/donmccurdy/ndarray-lanczos#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
581
- </div>
582
- </div><div class="pkg">
583
- <div>
584
- <div class="name">ndarray-ops <span class="chip">1 version</span></div>
585
- <div class="desc">Common operations for ndarray arrays</div>
586
- <div class="desc">Author: Mikola Lysenko</div>
587
- </div>
588
- <div class="meta">
589
- <a class="chip" href="https://github.com/mikolalysenko/ndarray-ops#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
590
- </div>
591
- </div><div class="pkg">
592
- <div>
593
- <div class="name">ndarray-pixels <span class="chip">1 version</span></div>
594
- <div class="desc">ndarray-pixels</div>
595
- <div class="desc">Author: Don McCurdy</div>
596
- </div>
597
- <div class="meta">
598
- <a class="chip" href="https://github.com/donmccurdy/ndarray-pixels#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
599
- </div>
600
- </div><div class="pkg">
601
- <div>
602
- <div class="name">process-nextick-args <span class="chip">1 version</span></div>
603
- <div class="desc">process.nextTick but always with args</div>
604
-
605
- </div>
606
- <div class="meta">
607
- <a class="chip" href="https://github.com/calvinmetcalf/process-nextick-args" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
608
- </div>
609
- </div><div class="pkg">
610
- <div>
611
- <div class="name">property-graph <span class="chip">1 version</span></div>
612
- <div class="desc">Base for creating objects that behave like a Property Graph.</div>
613
- <div class="desc">Author: Don McCurdy</div>
614
- </div>
615
- <div class="meta">
616
- <a class="chip" href="https://github.com/donmccurdy/property-graph#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
617
- </div>
618
- </div><div class="pkg">
619
- <div>
620
- <div class="name">readable-stream <span class="chip">1 version</span></div>
621
- <div class="desc">Streams3, a user-land copy of the stream library from Node.js</div>
622
-
623
- </div>
624
- <div class="meta">
625
- <a class="chip" href="https://github.com/nodejs/readable-stream#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
626
- </div>
627
- </div><div class="pkg">
628
- <div>
629
- <div class="name">safe-buffer <span class="chip">1 version</span></div>
630
- <div class="desc">Safer Node.js Buffer API</div>
631
- <div class="desc">Author: Feross Aboukhadijeh</div>
632
- </div>
633
- <div class="meta">
634
- <a class="chip" href="https://github.com/feross/safe-buffer" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
635
- </div>
636
- </div><div class="pkg">
637
- <div>
638
- <div class="name">setimmediate <span class="chip">1 version</span></div>
639
- <div class="desc">A shim for the setImmediate efficient script yielding API</div>
640
- <div class="desc">Author: YuzuJS</div>
641
- </div>
642
- <div class="meta">
643
- <a class="chip" href="https://github.com/YuzuJS/setImmediate#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
644
- </div>
645
- </div><div class="pkg">
646
- <div>
647
- <div class="name">string_decoder <span class="chip">1 version</span></div>
648
- <div class="desc">The string_decoder module from Node core</div>
649
-
650
- </div>
651
- <div class="meta">
652
- <a class="chip" href="https://github.com/nodejs/string_decoder" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
653
- </div>
654
- </div><div class="pkg">
655
- <div>
656
- <div class="name">three <span class="chip">1 version</span></div>
657
- <div class="desc">JavaScript 3D library</div>
658
- <div class="desc">Author: mrdoob</div>
659
- </div>
660
- <div class="meta">
661
- <a class="chip" href="https://threejs.org/" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
662
- </div>
663
- </div><div class="pkg">
664
- <div>
665
- <div class="name">three-mesh-bvh <span class="chip">1 version</span></div>
666
- <div class="desc">A BVH implementation to speed up raycasting against three.js meshes.</div>
667
- <div class="desc">Author: Garrett Johnson</div>
668
- </div>
669
- <div class="meta">
670
- <a class="chip" href="https://github.com/gkjohnson/three-mesh-bvh#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
671
- </div>
672
- </div><div class="pkg">
673
- <div>
674
- <div class="name">ts-replace-all <span class="chip">1 version</span></div>
675
-
676
-
677
- </div>
678
- <div class="meta">
679
- <a class="chip" href="https://github.com/LinusU/ts-replace-all#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
680
- </div>
681
- </div><div class="pkg">
682
- <div>
683
- <div class="name">uniq <span class="chip">1 version</span></div>
684
- <div class="desc">Removes duplicates from a sorted array in place</div>
685
- <div class="desc">Author: Mikola Lysenko</div>
686
- </div>
687
- <div class="meta">
688
- <a class="chip" href="https://github.com/mikolalysenko/uniq#readme" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
689
- </div>
690
- </div><div class="pkg">
691
- <div>
692
- <div class="name">util-deprecate <span class="chip">1 version</span></div>
693
- <div class="desc">The Node.js `util.deprecate()` function with browser support</div>
694
- <div class="desc">Author: Nathan Rajlich</div>
695
- </div>
696
- <div class="meta">
697
- <a class="chip" href="https://github.com/TooTallNate/util-deprecate" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
698
- </div>
699
- </div></section><section class="license">
700
- <h2>SGI-B-2.0 <span class="chip">1 package</span></h2>
701
- <div class="pkg">
702
- <div>
703
- <div class="name">tess2 <span class="chip">1 version</span></div>
704
- <div class="desc">GLU tesselator ported to Javascript, performs polygon boolean operations and triangulation</div>
705
- <div class="desc">Author: Matt DesLauriers</div>
706
- </div>
707
- <div class="meta">
708
- <a class="chip" href="https://github.com/memononen/tess2.js" target="_blank" rel="noopener noreferrer">Repo / Homepage</a>
709
- </div>
710
- </div></section><div class="footer">Generated from <code>pnpm licenses list --prod --long --json</code></div>
711
- <div class="prose">
712
- </div>
713
- </section>
714
- </main>
715
- <script>
716
- (() => {
717
- const searchInput = document.getElementById("doc-search");
718
- const resultsBox = document.getElementById("doc-search-results");
719
- const resultsList = document.getElementById("doc-search-list");
720
- const statusEl = document.getElementById("doc-search-status");
721
- const clearBtn = document.getElementById("doc-search-clear");
722
- if (!searchInput || !resultsBox || !resultsList || !statusEl || !clearBtn) return;
723
- const indexUrl = "./search-index.json";
724
- let indexPromise = null;
725
- let cachedEntries = null;
726
-
727
- const escapeHtml = (text = "") =>
728
- text
729
- .replace(/&/g, "&amp;")
730
- .replace(/</g, "&lt;")
731
- .replace(/>/g, "&gt;");
732
-
733
- const escapeRegExp = (text = "") => text.replace(/[.*+?^{}()|[]\$]/g, "\$&");
734
-
735
- const highlight = (text, terms) => {
736
- if (!terms.length) return escapeHtml(text);
737
- const pattern = terms.map(escapeRegExp).join("|");
738
- const regex = new RegExp(`(${pattern})`, "gi");
739
- return escapeHtml(text).replace(regex, "<mark>$1</mark>");
740
- };
741
-
742
- const buildSnippet = (entry, terms) => {
743
- const source = entry.content || entry.summary || "";
744
- if (!source) return { plain: "", highlighted: "" };
745
- let hit = source.length;
746
- for (const term of terms) {
747
- const idx = entry.contentLower.indexOf(term);
748
- if (idx !== -1 && idx < hit) hit = idx;
749
- }
750
- if (!Number.isFinite(hit) || hit === source.length) hit = 0;
751
- const start = Math.max(0, hit - 60);
752
- const end = Math.min(source.length, hit + 140);
753
- const snippet = source.slice(start, end);
754
- return { plain: snippet, highlighted: highlight(snippet, terms) };
755
- };
756
-
757
- const updateStatus = (message) => {
758
- statusEl.textContent = message;
759
- };
760
-
761
- const loadIndex = async () => {
762
- if (cachedEntries) return cachedEntries;
763
- if (!indexPromise) {
764
- indexPromise = fetch(indexUrl, { cache: "no-store" })
765
- .then((res) => {
766
- if (!res.ok) throw new Error("Failed to load search index");
767
- return res.json();
768
- })
769
- .then((json) => {
770
- cachedEntries = Array.isArray(json)
771
- ? json.map((entry) => ({
772
- ...entry,
773
- contentLower: (entry.content || "").toLowerCase(),
774
- titleLower: (entry.title || "").toLowerCase(),
775
- }))
776
- : [];
777
- return cachedEntries;
778
- })
779
- .catch((err) => {
780
- console.error("Search index load failed", err);
781
- cachedEntries = [];
782
- throw err;
783
- });
784
- }
785
- return indexPromise;
786
- };
787
-
788
- const renderResults = (entries, terms) => {
789
- if (!terms.length) {
790
- resultsBox.hidden = true;
791
- return;
792
- }
793
- if (!entries.length) {
794
- resultsList.innerHTML = '<li class="search-item"><div class="search-snippet">No matches found.</div></li>';
795
- resultsBox.hidden = false;
796
- return;
797
- }
798
- const rendered = entries
799
- .slice(0, 30)
800
- .map((entry) => {
801
- const snippet = buildSnippet(entry, terms);
802
- const title = highlight(entry.title || entry.href, terms);
803
- const hasFragment = snippet.plain && snippet.plain.trim().length > 0;
804
- const fragment = hasFragment ? `#:~:text=${encodeURIComponent(snippet.plain.trim())}` : "";
805
- const hrefWithFragment = hasFragment
806
- ? (entry.href.includes("#") ? `${entry.href}&:~:text=${encodeURIComponent(snippet.plain.trim())}` : `${entry.href}${fragment}`)
807
- : entry.href;
808
- const snippetHtml = snippet.highlighted ? `<div class="search-snippet">${snippet.highlighted}</div>` : "";
809
- return `<li class="search-item"><a href="${hrefWithFragment}">${title}</a>${snippetHtml}</li>`;
810
- })
811
- .join("");
812
- resultsList.innerHTML = rendered;
813
- resultsBox.hidden = false;
814
- };
815
-
816
- const performSearch = async () => {
817
- const rawQuery = searchInput.value.trim();
818
- if (rawQuery.length < 2) {
819
- updateStatus("Type at least 2 characters to search.");
820
- resultsBox.hidden = true;
821
- return;
822
- }
823
- const terms = rawQuery.toLowerCase().split(/\s+/).filter(Boolean);
824
- updateStatus("Searching...");
825
- try {
826
- const entries = await loadIndex();
827
- const matches = entries.filter((entry) =>
828
- terms.every((term) => entry.contentLower.includes(term) || entry.titleLower.includes(term))
829
- );
830
- renderResults(matches, terms);
831
- updateStatus(matches.length ? `${matches.length} result${matches.length === 1 ? "" : "s"} for "${rawQuery}"` : "No matches found.");
832
- } catch (err) {
833
- updateStatus("Search unavailable (could not load index).");
834
- }
835
- };
836
-
837
- searchInput.addEventListener("input", performSearch);
838
-
839
- searchInput.addEventListener("focus", () => {
840
- if (!cachedEntries) {
841
- loadIndex().catch(() => updateStatus("Search unavailable (could not load index)."));
842
- }
843
- });
844
-
845
- clearBtn.addEventListener("click", () => {
846
- searchInput.value = "";
847
- resultsBox.hidden = true;
848
- updateStatus("Type at least 2 characters to search.");
849
- searchInput.focus();
850
- });
851
-
852
- document.addEventListener("keydown", (evt) => {
853
- if (evt.key === "Escape" && document.activeElement === searchInput) {
854
- searchInput.value = "";
855
- resultsBox.hidden = true;
856
- updateStatus("Type at least 2 characters to search.");
857
- }
858
- });
859
- })();
860
- </script>
861
- </body>
862
- </html>