@squinch/core 0.1.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 (64) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +41 -0
  3. package/dist/api.d.ts +91 -0
  4. package/dist/api.js +232 -0
  5. package/dist/browser.d.ts +3 -0
  6. package/dist/browser.js +9 -0
  7. package/dist/diff/diff.d.ts +30 -0
  8. package/dist/diff/diff.js +365 -0
  9. package/dist/fonts.generated.d.ts +1 -0
  10. package/dist/fonts.generated.js +6 -0
  11. package/dist/grammar/parser.js +22 -0
  12. package/dist/grammar/parser.terms.js +115 -0
  13. package/dist/index.d.ts +4 -0
  14. package/dist/index.js +4 -0
  15. package/dist/layout/layout.d.ts +197 -0
  16. package/dist/layout/layout.js +1721 -0
  17. package/dist/metrics.d.ts +20 -0
  18. package/dist/metrics.generated.d.ts +4 -0
  19. package/dist/metrics.generated.js +4 -0
  20. package/dist/metrics.js +57 -0
  21. package/dist/model/build.d.ts +8 -0
  22. package/dist/model/build.js +1343 -0
  23. package/dist/model/packs.d.ts +13 -0
  24. package/dist/model/packs.js +29 -0
  25. package/dist/model/source.d.ts +10 -0
  26. package/dist/model/source.js +28 -0
  27. package/dist/model/suggest.d.ts +2 -0
  28. package/dist/model/suggest.js +24 -0
  29. package/dist/model/types.d.ts +226 -0
  30. package/dist/model/types.js +24 -0
  31. package/dist/packs/node-fs.d.ts +1 -0
  32. package/dist/packs/node-fs.js +37 -0
  33. package/dist/packs/registry.d.ts +61 -0
  34. package/dist/packs/registry.js +122 -0
  35. package/dist/packs/sanitize.d.ts +12 -0
  36. package/dist/packs/sanitize.js +127 -0
  37. package/dist/packs/sysGlyphs.d.ts +2 -0
  38. package/dist/packs/sysGlyphs.js +21 -0
  39. package/dist/render/adaptive.d.ts +13 -0
  40. package/dist/render/adaptive.js +112 -0
  41. package/dist/render/html/runtime.d.ts +1 -0
  42. package/dist/render/html/runtime.generated.d.ts +1 -0
  43. package/dist/render/html/runtime.generated.js +6 -0
  44. package/dist/render/html/runtime.js +362 -0
  45. package/dist/render/html.d.ts +39 -0
  46. package/dist/render/html.js +235 -0
  47. package/dist/render/svg.d.ts +75 -0
  48. package/dist/render/svg.js +1403 -0
  49. package/dist/render/validate.d.ts +4 -0
  50. package/dist/render/validate.js +9 -0
  51. package/dist/themes/index.d.ts +84 -0
  52. package/dist/themes/index.js +90 -0
  53. package/dist/view/dive.d.ts +55 -0
  54. package/dist/view/dive.js +57 -0
  55. package/dist/view/navigate.d.ts +38 -0
  56. package/dist/view/navigate.js +81 -0
  57. package/dist/view/resolve.d.ts +92 -0
  58. package/dist/view/resolve.js +591 -0
  59. package/fonts/inter-400.ttf +0 -0
  60. package/fonts/inter-500.ttf +0 -0
  61. package/fonts/inter-600.ttf +0 -0
  62. package/fonts/mono-400.ttf +0 -0
  63. package/metrics.json +510 -0
  64. package/package.json +89 -0
package/metrics.json ADDED
@@ -0,0 +1,510 @@
1
+ {
2
+ "inter": {
3
+ "400": {
4
+ "advances": {
5
+ "0": 0.630859,
6
+ "1": 0.406738,
7
+ "2": 0.609863,
8
+ "3": 0.617676,
9
+ "4": 0.645996,
10
+ "5": 0.593262,
11
+ "6": 0.620117,
12
+ "7": 0.565918,
13
+ "8": 0.618652,
14
+ "9": 0.620117,
15
+ " ": 0.28125,
16
+ "!": 0.287598,
17
+ "\"": 0.46582,
18
+ "#": 0.633301,
19
+ "$": 0.641602,
20
+ "%": 0.981934,
21
+ "&": 0.644043,
22
+ "'": 0.299805,
23
+ "(": 0.364746,
24
+ ")": 0.364746,
25
+ "*": 0.500977,
26
+ "+": 0.661621,
27
+ ",": 0.288086,
28
+ "-": 0.459961,
29
+ ".": 0.288086,
30
+ "/": 0.360352,
31
+ ":": 0.288086,
32
+ ";": 0.301758,
33
+ "<": 0.661621,
34
+ "=": 0.661621,
35
+ ">": 0.661621,
36
+ "?": 0.51123,
37
+ "@": 0.96582,
38
+ "A": 0.689941,
39
+ "B": 0.654297,
40
+ "C": 0.730469,
41
+ "D": 0.72168,
42
+ "E": 0.601074,
43
+ "F": 0.590332,
44
+ "G": 0.746094,
45
+ "H": 0.743164,
46
+ "I": 0.268555,
47
+ "J": 0.570801,
48
+ "K": 0.671875,
49
+ "L": 0.56543,
50
+ "M": 0.90332,
51
+ "N": 0.753418,
52
+ "O": 0.764648,
53
+ "P": 0.638672,
54
+ "Q": 0.764648,
55
+ "R": 0.643555,
56
+ "S": 0.641602,
57
+ "T": 0.645508,
58
+ "U": 0.744141,
59
+ "V": 0.689941,
60
+ "W": 0.985352,
61
+ "X": 0.682129,
62
+ "Y": 0.678711,
63
+ "Z": 0.628906,
64
+ "[": 0.364746,
65
+ "\\": 0.360352,
66
+ "]": 0.364746,
67
+ "^": 0.471191,
68
+ "_": 0.456055,
69
+ "`": 0.322754,
70
+ "a": 0.561523,
71
+ "b": 0.612305,
72
+ "c": 0.571289,
73
+ "d": 0.612305,
74
+ "e": 0.583008,
75
+ "f": 0.370117,
76
+ "g": 0.613281,
77
+ "h": 0.591309,
78
+ "i": 0.242188,
79
+ "j": 0.242188,
80
+ "k": 0.548828,
81
+ "l": 0.242188,
82
+ "m": 0.875977,
83
+ "n": 0.59082,
84
+ "o": 0.599609,
85
+ "p": 0.612305,
86
+ "q": 0.612305,
87
+ "r": 0.376465,
88
+ "s": 0.527832,
89
+ "t": 0.327148,
90
+ "u": 0.591309,
91
+ "v": 0.562012,
92
+ "w": 0.818359,
93
+ "x": 0.545898,
94
+ "y": 0.562012,
95
+ "z": 0.552246,
96
+ "{": 0.42627,
97
+ "|": 0.33252,
98
+ "}": 0.42627,
99
+ "~": 0.661621,
100
+ "·": 0.288086,
101
+ "×": 0.661621,
102
+ "…": 0.864258,
103
+ "—": 1,
104
+ "–": 0.5,
105
+ "‘": 0.260742,
106
+ "’": 0.260742,
107
+ "“": 0.44043,
108
+ "”": 0.44043,
109
+ "→": 0.65625,
110
+ "←": 0.65625,
111
+ "↔": 0.65625,
112
+ "•": 0.5625,
113
+ "§": 0.568359,
114
+ "©": 0.914063,
115
+ "®": 0.666016,
116
+ "™": 0.61084,
117
+ "°": 0.455566,
118
+ "±": 0.661621,
119
+ "≈": 0.65625,
120
+ "≥": 0.65625,
121
+ "≤": 0.65625,
122
+ "‹": 0.384277,
123
+ "›": 0.384277,
124
+ "«": 0.58252,
125
+ "»": 0.58252
126
+ },
127
+ "fallback": 0.565131
128
+ },
129
+ "500": {
130
+ "advances": {
131
+ "0": 0.645508,
132
+ "1": 0.415039,
133
+ "2": 0.616211,
134
+ "3": 0.626953,
135
+ "4": 0.65625,
136
+ "5": 0.603027,
137
+ "6": 0.629883,
138
+ "7": 0.571289,
139
+ "8": 0.629395,
140
+ "9": 0.629883,
141
+ " ": 0.266602,
142
+ "!": 0.304199,
143
+ "\"": 0.494141,
144
+ "#": 0.638672,
145
+ "$": 0.645996,
146
+ "%": 0.993164,
147
+ "&": 0.65332,
148
+ "'": 0.312988,
149
+ "(": 0.368652,
150
+ ")": 0.368652,
151
+ "*": 0.520508,
152
+ "+": 0.66748,
153
+ ",": 0.303223,
154
+ "-": 0.462402,
155
+ ".": 0.303223,
156
+ "/": 0.369629,
157
+ ":": 0.303223,
158
+ ";": 0.31543,
159
+ "<": 0.66748,
160
+ "=": 0.66748,
161
+ ">": 0.66748,
162
+ "?": 0.527344,
163
+ "@": 0.982422,
164
+ "A": 0.708984,
165
+ "B": 0.656738,
166
+ "C": 0.733398,
167
+ "D": 0.72168,
168
+ "E": 0.603027,
169
+ "F": 0.589355,
170
+ "G": 0.747559,
171
+ "H": 0.744629,
172
+ "I": 0.272461,
173
+ "J": 0.575195,
174
+ "K": 0.6875,
175
+ "L": 0.56543,
176
+ "M": 0.912598,
177
+ "N": 0.756348,
178
+ "O": 0.766602,
179
+ "P": 0.641602,
180
+ "Q": 0.768555,
181
+ "R": 0.647949,
182
+ "S": 0.645996,
183
+ "T": 0.652832,
184
+ "U": 0.740234,
185
+ "V": 0.708984,
186
+ "W": 1.00293,
187
+ "X": 0.700684,
188
+ "Y": 0.696289,
189
+ "Z": 0.640625,
190
+ "[": 0.368652,
191
+ "\\": 0.369629,
192
+ "]": 0.368652,
193
+ "^": 0.476563,
194
+ "_": 0.462891,
195
+ "`": 0.336914,
196
+ "a": 0.567871,
197
+ "b": 0.618164,
198
+ "c": 0.577148,
199
+ "d": 0.618164,
200
+ "e": 0.587402,
201
+ "f": 0.379395,
202
+ "g": 0.619629,
203
+ "h": 0.601563,
204
+ "i": 0.251953,
205
+ "j": 0.251953,
206
+ "k": 0.559082,
207
+ "l": 0.251953,
208
+ "m": 0.888184,
209
+ "n": 0.601563,
210
+ "o": 0.604004,
211
+ "p": 0.618164,
212
+ "q": 0.618164,
213
+ "r": 0.386719,
214
+ "s": 0.538574,
215
+ "t": 0.340332,
216
+ "u": 0.601563,
217
+ "v": 0.574707,
218
+ "w": 0.829102,
219
+ "x": 0.557129,
220
+ "y": 0.575195,
221
+ "z": 0.559082,
222
+ "{": 0.44043,
223
+ "|": 0.345703,
224
+ "}": 0.44043,
225
+ "~": 0.66748,
226
+ "·": 0.303223,
227
+ "×": 0.66748,
228
+ "…": 0.910156,
229
+ "—": 1,
230
+ "–": 0.5,
231
+ "‘": 0.277344,
232
+ "’": 0.277344,
233
+ "“": 0.473633,
234
+ "”": 0.470703,
235
+ "→": 0.65625,
236
+ "←": 0.65625,
237
+ "↔": 0.65625,
238
+ "•": 0.533203,
239
+ "§": 0.568359,
240
+ "©": 0.914063,
241
+ "®": 0.664551,
242
+ "™": 0.620605,
243
+ "°": 0.457031,
244
+ "±": 0.66748,
245
+ "≈": 0.65625,
246
+ "≥": 0.65625,
247
+ "≤": 0.65625,
248
+ "‹": 0.399902,
249
+ "›": 0.399902,
250
+ "«": 0.608398,
251
+ "»": 0.608398
252
+ },
253
+ "fallback": 0.573791
254
+ },
255
+ "600": {
256
+ "advances": {
257
+ "0": 0.659668,
258
+ "1": 0.422852,
259
+ "2": 0.623047,
260
+ "3": 0.63623,
261
+ "4": 0.666016,
262
+ "5": 0.612305,
263
+ "6": 0.639648,
264
+ "7": 0.576172,
265
+ "8": 0.640137,
266
+ "9": 0.639648,
267
+ " ": 0.251953,
268
+ "!": 0.321289,
269
+ "\"": 0.522949,
270
+ "#": 0.643555,
271
+ "$": 0.650391,
272
+ "%": 1.004395,
273
+ "&": 0.662598,
274
+ "'": 0.325684,
275
+ "(": 0.373047,
276
+ ")": 0.373047,
277
+ "*": 0.539551,
278
+ "+": 0.672852,
279
+ ",": 0.318848,
280
+ "-": 0.465332,
281
+ ".": 0.318848,
282
+ "/": 0.378906,
283
+ ":": 0.318848,
284
+ ";": 0.329102,
285
+ "<": 0.672852,
286
+ "=": 0.672852,
287
+ ">": 0.672852,
288
+ "?": 0.543457,
289
+ "@": 0.999023,
290
+ "A": 0.727539,
291
+ "B": 0.65918,
292
+ "C": 0.736816,
293
+ "D": 0.722168,
294
+ "E": 0.605469,
295
+ "F": 0.587891,
296
+ "G": 0.749023,
297
+ "H": 0.745605,
298
+ "I": 0.276855,
299
+ "J": 0.57959,
300
+ "K": 0.703125,
301
+ "L": 0.56543,
302
+ "M": 0.922363,
303
+ "N": 0.759277,
304
+ "O": 0.768555,
305
+ "P": 0.64502,
306
+ "Q": 0.772949,
307
+ "R": 0.652344,
308
+ "S": 0.650391,
309
+ "T": 0.660156,
310
+ "U": 0.73584,
311
+ "V": 0.727539,
312
+ "W": 1.02002,
313
+ "X": 0.719727,
314
+ "Y": 0.713379,
315
+ "Z": 0.652344,
316
+ "[": 0.373047,
317
+ "\\": 0.378906,
318
+ "]": 0.373047,
319
+ "^": 0.481445,
320
+ "_": 0.469238,
321
+ "`": 0.351074,
322
+ "a": 0.574219,
323
+ "b": 0.624023,
324
+ "c": 0.58252,
325
+ "d": 0.624023,
326
+ "e": 0.591309,
327
+ "f": 0.388672,
328
+ "g": 0.625488,
329
+ "h": 0.612305,
330
+ "i": 0.261719,
331
+ "j": 0.261719,
332
+ "k": 0.569336,
333
+ "l": 0.261719,
334
+ "m": 0.900391,
335
+ "n": 0.611816,
336
+ "o": 0.608887,
337
+ "p": 0.624023,
338
+ "q": 0.624023,
339
+ "r": 0.396973,
340
+ "s": 0.549316,
341
+ "t": 0.353027,
342
+ "u": 0.612305,
343
+ "v": 0.586914,
344
+ "w": 0.839355,
345
+ "x": 0.568848,
346
+ "y": 0.588379,
347
+ "z": 0.565918,
348
+ "{": 0.45459,
349
+ "|": 0.358887,
350
+ "}": 0.45459,
351
+ "~": 0.672852,
352
+ "·": 0.318848,
353
+ "×": 0.672852,
354
+ "…": 0.956055,
355
+ "—": 1,
356
+ "–": 0.5,
357
+ "‘": 0.293945,
358
+ "’": 0.293945,
359
+ "“": 0.506836,
360
+ "”": 0.501465,
361
+ "→": 0.65625,
362
+ "←": 0.65625,
363
+ "↔": 0.65625,
364
+ "•": 0.503418,
365
+ "§": 0.568359,
366
+ "©": 0.914063,
367
+ "®": 0.663574,
368
+ "™": 0.630371,
369
+ "°": 0.458008,
370
+ "±": 0.672852,
371
+ "≈": 0.65625,
372
+ "≥": 0.65625,
373
+ "≤": 0.65625,
374
+ "‹": 0.415527,
375
+ "›": 0.415527,
376
+ "«": 0.634277,
377
+ "»": 0.634277
378
+ },
379
+ "fallback": 0.582423
380
+ }
381
+ },
382
+ "mono": {
383
+ "400": {
384
+ "advances": {
385
+ "0": 0.6,
386
+ "1": 0.6,
387
+ "2": 0.6,
388
+ "3": 0.6,
389
+ "4": 0.6,
390
+ "5": 0.6,
391
+ "6": 0.6,
392
+ "7": 0.6,
393
+ "8": 0.6,
394
+ "9": 0.6,
395
+ " ": 0.6,
396
+ "!": 0.6,
397
+ "\"": 0.6,
398
+ "#": 0.6,
399
+ "$": 0.6,
400
+ "%": 0.6,
401
+ "&": 0.6,
402
+ "'": 0.6,
403
+ "(": 0.6,
404
+ ")": 0.6,
405
+ "*": 0.6,
406
+ "+": 0.6,
407
+ ",": 0.6,
408
+ "-": 0.6,
409
+ ".": 0.6,
410
+ "/": 0.6,
411
+ ":": 0.6,
412
+ ";": 0.6,
413
+ "<": 0.6,
414
+ "=": 0.6,
415
+ ">": 0.6,
416
+ "?": 0.6,
417
+ "@": 0.6,
418
+ "A": 0.6,
419
+ "B": 0.6,
420
+ "C": 0.6,
421
+ "D": 0.6,
422
+ "E": 0.6,
423
+ "F": 0.6,
424
+ "G": 0.6,
425
+ "H": 0.6,
426
+ "I": 0.6,
427
+ "J": 0.6,
428
+ "K": 0.6,
429
+ "L": 0.6,
430
+ "M": 0.6,
431
+ "N": 0.6,
432
+ "O": 0.6,
433
+ "P": 0.6,
434
+ "Q": 0.6,
435
+ "R": 0.6,
436
+ "S": 0.6,
437
+ "T": 0.6,
438
+ "U": 0.6,
439
+ "V": 0.6,
440
+ "W": 0.6,
441
+ "X": 0.6,
442
+ "Y": 0.6,
443
+ "Z": 0.6,
444
+ "[": 0.6,
445
+ "\\": 0.6,
446
+ "]": 0.6,
447
+ "^": 0.6,
448
+ "_": 0.6,
449
+ "`": 0.6,
450
+ "a": 0.6,
451
+ "b": 0.6,
452
+ "c": 0.6,
453
+ "d": 0.6,
454
+ "e": 0.6,
455
+ "f": 0.6,
456
+ "g": 0.6,
457
+ "h": 0.6,
458
+ "i": 0.6,
459
+ "j": 0.6,
460
+ "k": 0.6,
461
+ "l": 0.6,
462
+ "m": 0.6,
463
+ "n": 0.6,
464
+ "o": 0.6,
465
+ "p": 0.6,
466
+ "q": 0.6,
467
+ "r": 0.6,
468
+ "s": 0.6,
469
+ "t": 0.6,
470
+ "u": 0.6,
471
+ "v": 0.6,
472
+ "w": 0.6,
473
+ "x": 0.6,
474
+ "y": 0.6,
475
+ "z": 0.6,
476
+ "{": 0.6,
477
+ "|": 0.6,
478
+ "}": 0.6,
479
+ "~": 0.6,
480
+ "·": 0.6,
481
+ "×": 0.6,
482
+ "…": 0.6,
483
+ "—": 0.6,
484
+ "–": 0.6,
485
+ "‘": 0.6,
486
+ "’": 0.6,
487
+ "“": 0.6,
488
+ "”": 0.6,
489
+ "→": 0.6,
490
+ "←": 0.6,
491
+ "↔": 0.6,
492
+ "•": 0.6,
493
+ "§": 0.6,
494
+ "©": 0.6,
495
+ "®": 0.6,
496
+ "™": 0.6,
497
+ "°": 0.6,
498
+ "±": 0.6,
499
+ "≈": 0.6,
500
+ "≥": 0.6,
501
+ "≤": 0.6,
502
+ "‹": 0.6,
503
+ "›": 0.6,
504
+ "«": 0.6,
505
+ "»": 0.6
506
+ },
507
+ "fallback": 0.6
508
+ }
509
+ }
510
+ }
package/package.json ADDED
@@ -0,0 +1,89 @@
1
+ {
2
+ "name": "@squinch/core",
3
+ "version": "0.1.0",
4
+ "description": "The Squinch engine: parse, model, layout and deterministic SVG rendering for architecture diagrams as code.",
5
+ "keywords": [
6
+ "architecture",
7
+ "diagrams",
8
+ "diagrams-as-code",
9
+ "svg",
10
+ "aws",
11
+ "azure",
12
+ "kubernetes",
13
+ "ai",
14
+ "llm",
15
+ "agents"
16
+ ],
17
+ "license": "Apache-2.0",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/jquatier/squinch.git",
21
+ "directory": "packages/core"
22
+ },
23
+ "homepage": "https://squinch.cc/",
24
+ "bugs": {
25
+ "url": "https://github.com/jquatier/squinch/issues"
26
+ },
27
+ "publishConfig": {
28
+ "access": "public"
29
+ },
30
+ "type": "module",
31
+ "dependencies": {
32
+ "@lezer/common": "^1.5.2",
33
+ "@lezer/lr": "^1.4.10",
34
+ "elkjs": "^0.12.0",
35
+ "fast-xml-parser": "^5.10.1",
36
+ "@squinch/pack-aws": "0.1.0",
37
+ "@squinch/pack-azure": "0.1.0",
38
+ "@squinch/pack-k8s": "0.1.0",
39
+ "@squinch/pack-logos": "0.1.0",
40
+ "@squinch/pack-sys": "0.1.0"
41
+ },
42
+ "devDependencies": {
43
+ "@fontsource/ibm-plex-mono": "^5.3.0",
44
+ "@fontsource/inter": "^5.3.0",
45
+ "@lezer/generator": "^1.8.0",
46
+ "@playwright/test": "^1.62.1",
47
+ "esbuild": "^0.28.1",
48
+ "fontkit": "^2.0.4",
49
+ "subset-font": "^2.5.0",
50
+ "tsx": "^4.23.1",
51
+ "typescript": "^7.0.2",
52
+ "vitest": "^4.1.10"
53
+ },
54
+ "main": "./dist/index.js",
55
+ "types": "./dist/index.d.ts",
56
+ "exports": {
57
+ ".": {
58
+ "types": "./dist/index.d.ts",
59
+ "default": "./dist/index.js"
60
+ },
61
+ "./browser": {
62
+ "types": "./dist/browser.d.ts",
63
+ "default": "./dist/browser.js"
64
+ },
65
+ "./grammar": {
66
+ "default": "./dist/grammar/parser.js"
67
+ },
68
+ "./fonts/*": "./fonts/*"
69
+ },
70
+ "files": [
71
+ "dist",
72
+ "fonts",
73
+ "metrics.json",
74
+ "LICENSE",
75
+ "NOTICE"
76
+ ],
77
+ "scripts": {
78
+ "grammar": "lezer-generator src/grammar/squinch.grammar -o src/grammar/parser.js",
79
+ "build": "npm run grammar && tsc -p tsconfig.build.json && node scripts/copy-grammar.mjs",
80
+ "typecheck": "tsc --noEmit",
81
+ "test": "npm run grammar && vitest run",
82
+ "demo": "npm run grammar && tsx scripts/demo.ts",
83
+ "gen-metrics": "tsx scripts/gen-metrics.ts && tsx scripts/gen-metrics-module.ts",
84
+ "test:e2e": "playwright test",
85
+ "gen-html-runtime": "tsx scripts/gen-html-runtime.ts",
86
+ "gen-fonts": "tsx scripts/gen-fonts.ts",
87
+ "bench": "npm run grammar && tsx scripts/bench.ts"
88
+ }
89
+ }