@rasamjs/core 0.1.1 → 0.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 (115) hide show
  1. package/API.md +15 -5
  2. package/CHANGELOG.md +51 -1
  3. package/README.md +140 -20
  4. package/RELEASING.md +29 -18
  5. package/dist/changes/restore.js +2 -0
  6. package/dist/changes/restore.js.map +1 -1
  7. package/dist/changes/service.d.ts +5 -2
  8. package/dist/changes/service.d.ts.map +1 -1
  9. package/dist/changes/service.js +29 -4
  10. package/dist/changes/service.js.map +1 -1
  11. package/dist/changes/types.d.ts +9 -0
  12. package/dist/changes/types.d.ts.map +1 -1
  13. package/dist/changes/types.js.map +1 -1
  14. package/dist/changes.d.ts +5 -3
  15. package/dist/changes.d.ts.map +1 -1
  16. package/dist/changes.js +103 -2
  17. package/dist/changes.js.map +1 -1
  18. package/dist/dom/images.d.ts.map +1 -1
  19. package/dist/dom/images.js +3 -1
  20. package/dist/dom/images.js.map +1 -1
  21. package/dist/elements/image.d.ts.map +1 -1
  22. package/dist/elements/image.js +4 -1
  23. package/dist/elements/image.js.map +1 -1
  24. package/dist/elements/text.js +4 -4
  25. package/dist/elements/text.js.map +1 -1
  26. package/dist/interchange/clone.js +1 -1
  27. package/dist/interchange/clone.js.map +1 -1
  28. package/dist/interchange/dom.d.ts +3 -1
  29. package/dist/interchange/dom.d.ts.map +1 -1
  30. package/dist/interchange/dom.js +29 -5
  31. package/dist/interchange/dom.js.map +1 -1
  32. package/dist/interchange/markup.d.ts.map +1 -1
  33. package/dist/interchange/markup.js +71 -3
  34. package/dist/interchange/markup.js.map +1 -1
  35. package/dist/interchange/policy.d.ts.map +1 -1
  36. package/dist/interchange/policy.js +4 -0
  37. package/dist/interchange/policy.js.map +1 -1
  38. package/dist/interchange/types.d.ts +10 -1
  39. package/dist/interchange/types.d.ts.map +1 -1
  40. package/dist/mixins/transformable.d.ts.map +1 -1
  41. package/dist/mixins/transformable.js +25 -27
  42. package/dist/mixins/transformable.js.map +1 -1
  43. package/dist/raster/frame.d.ts +12 -0
  44. package/dist/raster/frame.d.ts.map +1 -0
  45. package/dist/raster/frame.js +43 -0
  46. package/dist/raster/frame.js.map +1 -0
  47. package/dist/raster/images.d.ts +2 -0
  48. package/dist/raster/images.d.ts.map +1 -0
  49. package/dist/raster/images.js +60 -0
  50. package/dist/raster/images.js.map +1 -0
  51. package/dist/raster/render.d.ts +3 -0
  52. package/dist/raster/render.d.ts.map +1 -0
  53. package/dist/raster/render.js +40 -0
  54. package/dist/raster/render.js.map +1 -0
  55. package/dist/raster/types.d.ts +10 -0
  56. package/dist/raster/types.d.ts.map +1 -0
  57. package/dist/raster/types.js +2 -0
  58. package/dist/raster/types.js.map +1 -0
  59. package/dist/raster.d.ts +6 -0
  60. package/dist/raster.d.ts.map +1 -0
  61. package/dist/raster.js +10 -0
  62. package/dist/raster.js.map +1 -0
  63. package/dist/resources/references.d.ts.map +1 -1
  64. package/dist/resources/references.js +3 -1
  65. package/dist/resources/references.js.map +1 -1
  66. package/dist/services/viewport.d.ts +2 -0
  67. package/dist/services/viewport.d.ts.map +1 -1
  68. package/dist/services/viewport.js +4 -3
  69. package/dist/services/viewport.js.map +1 -1
  70. package/dist/text/content.d.ts +0 -2
  71. package/dist/text/content.d.ts.map +1 -1
  72. package/dist/text/content.js +4 -10
  73. package/dist/text/content.js.map +1 -1
  74. package/dist/text/policies.d.ts +7 -0
  75. package/dist/text/policies.d.ts.map +1 -0
  76. package/dist/text/policies.js +13 -0
  77. package/dist/text/policies.js.map +1 -0
  78. package/dist/text/rich-textual.js +3 -3
  79. package/dist/text/rich-textual.js.map +1 -1
  80. package/package.json +6 -1
  81. package/reports/adoption.json +20 -20
  82. package/reports/animation-benchmark.json +613 -613
  83. package/reports/benchmark.json +51 -51
  84. package/reports/creation.json +26 -26
  85. package/reports/interchange-benchmark.json +85 -85
  86. package/reports/public-api-contract.json +20 -7
  87. package/reports/public-api-review.md +23 -0
  88. package/reports/size-parity.json +54 -19
  89. package/reports/size.json +2 -2
  90. package/reports/svgjs-comparison.json +3542 -3542
  91. package/reports/svgjs-comparison.md +17 -17
  92. package/reports/svgjs-parity-current.json +60 -39
  93. package/src/changes/restore.ts +2 -0
  94. package/src/changes/service.ts +39 -5
  95. package/src/changes/types.ts +9 -0
  96. package/src/changes.ts +93 -4
  97. package/src/dom/images.ts +2 -1
  98. package/src/elements/image.ts +4 -1
  99. package/src/elements/text.ts +3 -3
  100. package/src/interchange/clone.ts +1 -1
  101. package/src/interchange/dom.ts +34 -5
  102. package/src/interchange/markup.ts +77 -3
  103. package/src/interchange/policy.ts +6 -0
  104. package/src/interchange/types.ts +10 -1
  105. package/src/mixins/transformable.ts +23 -25
  106. package/src/raster/frame.ts +53 -0
  107. package/src/raster/images.ts +73 -0
  108. package/src/raster/render.ts +45 -0
  109. package/src/raster/types.ts +9 -0
  110. package/src/raster.ts +13 -0
  111. package/src/resources/references.ts +5 -1
  112. package/src/services/viewport.ts +5 -4
  113. package/src/text/content.ts +4 -14
  114. package/src/text/policies.ts +18 -0
  115. package/src/text/rich-textual.ts +2 -2
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "fixture": "scripts/benchmark.mjs",
3
- "date": "2026-10-31T17:41:50.469Z",
3
+ "date": "2026-11-06T20:46:47.900Z",
4
4
  "browser": "Chromium 156.0.8078.4",
5
5
  "node": "v24.21.0",
6
6
  "os": "win32 10.0.26200",
@@ -10,10 +10,11 @@
10
10
  "warmup": 20,
11
11
  "iterations": 100,
12
12
  "medianMs": 0.6000000238418579,
13
- "p95Ms": 0.9000000357627869,
13
+ "p95Ms": 0.8000000715255737,
14
14
  "targetMedianMs": 16,
15
15
  "includes": "logical mutations and synchronous DOM commit; excludes paint",
16
16
  "timings": [
17
+ 0.3999999761581421,
17
18
  0.5,
18
19
  0.5,
19
20
  0.5,
@@ -35,25 +36,28 @@
35
36
  0.5,
36
37
  0.5,
37
38
  0.5,
38
- 0.5999999642372131,
39
- 0.5999999642372131,
40
- 0.5999999642372131,
41
- 0.5999999642372131,
42
- 0.5999999642372131,
43
- 0.5999999642372131,
44
- 0.5999999642372131,
45
- 0.5999999642372131,
46
- 0.5999999642372131,
47
- 0.5999999642372131,
48
- 0.5999999642372131,
49
- 0.5999999642372131,
50
- 0.5999999642372131,
51
- 0.5999999642372131,
52
- 0.5999999642372131,
53
- 0.5999999642372131,
54
- 0.5999999642372131,
55
- 0.5999999642372131,
56
- 0.5999999642372131,
39
+ 0.5,
40
+ 0.5,
41
+ 0.5,
42
+ 0.5,
43
+ 0.5,
44
+ 0.5,
45
+ 0.5,
46
+ 0.5,
47
+ 0.5,
48
+ 0.5,
49
+ 0.5,
50
+ 0.5,
51
+ 0.5,
52
+ 0.5,
53
+ 0.5,
54
+ 0.5999999046325684,
55
+ 0.5999999046325684,
56
+ 0.5999999046325684,
57
+ 0.5999999046325684,
58
+ 0.5999999046325684,
59
+ 0.6000000238418579,
60
+ 0.6000000238418579,
57
61
  0.6000000238418579,
58
62
  0.6000000238418579,
59
63
  0.6000000238418579,
@@ -76,43 +80,39 @@
76
80
  0.6000000238418579,
77
81
  0.6000000238418579,
78
82
  0.6000000238418579,
79
- 0.699999988079071,
80
- 0.699999988079071,
81
- 0.699999988079071,
82
- 0.699999988079071,
83
- 0.699999988079071,
84
- 0.699999988079071,
85
- 0.699999988079071,
86
- 0.699999988079071,
87
- 0.699999988079071,
88
- 0.699999988079071,
89
- 0.699999988079071,
90
- 0.699999988079071,
91
- 0.699999988079071,
92
- 0.699999988079071,
93
- 0.699999988079071,
83
+ 0.6000000238418579,
84
+ 0.6000000238418579,
85
+ 0.6000000238418579,
86
+ 0.6000000238418579,
87
+ 0.6000000238418579,
88
+ 0.6000000238418579,
89
+ 0.6000000238418579,
90
+ 0.6000000238418579,
91
+ 0.6000000238418579,
92
+ 0.6000000238418579,
93
+ 0.6999999284744263,
94
+ 0.6999999284744263,
95
+ 0.6999999284744263,
96
+ 0.6999999284744263,
97
+ 0.6999999284744263,
98
+ 0.6999999284744263,
99
+ 0.6999999284744263,
100
+ 0.6999999284744263,
101
+ 0.7000000476837158,
102
+ 0.7000000476837158,
103
+ 0.7000000476837158,
104
+ 0.7000000476837158,
94
105
  0.7000000476837158,
95
106
  0.7000000476837158,
96
107
  0.7000000476837158,
97
108
  0.7000000476837158,
98
109
  0.7999999523162842,
99
- 0.800000011920929,
100
- 0.800000011920929,
101
- 0.800000011920929,
102
- 0.800000011920929,
103
- 0.800000011920929,
104
- 0.800000011920929,
105
- 0.800000011920929,
106
- 0.800000011920929,
107
- 0.8999999761581421,
108
- 0.8999999761581421,
110
+ 0.7999999523162842,
111
+ 0.8000000715255737,
112
+ 0.8000000715255737,
109
113
  0.8999999761581421,
110
- 0.9000000357627869,
111
- 0.9000000357627869,
112
114
  1,
113
115
  1,
114
- 1.100000023841858,
115
- 1.199999988079071,
116
- 1.4000000357627869
116
+ 1
117
117
  ]
118
118
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "fixture": "scripts/benchmark-creation.mjs",
3
- "date": "2026-10-31T17:41:39.778Z",
3
+ "date": "2026-11-06T20:46:39.500Z",
4
4
  "node": "v24.21.0",
5
5
  "os": "win32 10.0.26200",
6
6
  "cpu": "Intel(R) Core(TM) i7-10610U CPU @ 1.80GHz",
@@ -9,60 +9,60 @@
9
9
  "results": [
10
10
  {
11
11
  "count": 2000,
12
- "medianCreationMs": 24.234699999999975,
13
- "medianPointerMovesMs": 12.174800000000005,
12
+ "medianCreationMs": 22.994300000000067,
13
+ "medianPointerMovesMs": 7.282600000000002,
14
14
  "samples": [
15
15
  {
16
- "creationMs": 32.91459999999995,
17
- "pointerMovesMs": 15.681800000000067
16
+ "creationMs": 31.776499999999942,
17
+ "pointerMovesMs": 8.679300000000012
18
18
  },
19
19
  {
20
- "creationMs": 24.583600000000047,
21
- "pointerMovesMs": 14.334299999999985
20
+ "creationMs": 26.4683,
21
+ "pointerMovesMs": 7.282600000000002
22
22
  },
23
23
  {
24
- "creationMs": 23.18640000000005,
25
- "pointerMovesMs": 12.174800000000005
24
+ "creationMs": 22.994300000000067,
25
+ "pointerMovesMs": 7.207400000000007
26
26
  },
27
27
  {
28
- "creationMs": 24.234699999999975,
29
- "pointerMovesMs": 8.607499999999959
28
+ "creationMs": 21.127500000000055,
29
+ "pointerMovesMs": 7.402299999999968
30
30
  },
31
31
  {
32
- "creationMs": 23.999599999999987,
33
- "pointerMovesMs": 7.295199999999909
32
+ "creationMs": 19.99980000000005,
33
+ "pointerMovesMs": 6.323700000000031
34
34
  }
35
35
  ]
36
36
  },
37
37
  {
38
38
  "count": 8000,
39
- "medianCreationMs": 67.95839999999998,
40
- "medianPointerMovesMs": 6.303200000000061,
39
+ "medianCreationMs": 58.684099999999944,
40
+ "medianPointerMovesMs": 5.811899999999923,
41
41
  "samples": [
42
42
  {
43
- "creationMs": 112.0308,
44
- "pointerMovesMs": 7.958700000000135
43
+ "creationMs": 97.0326,
44
+ "pointerMovesMs": 6.8799999999999955
45
45
  },
46
46
  {
47
- "creationMs": 67.95839999999998,
48
- "pointerMovesMs": 29.208000000000084
47
+ "creationMs": 57.53489999999988,
48
+ "pointerMovesMs": 6.402499999999918
49
49
  },
50
50
  {
51
- "creationMs": 65.25170000000003,
52
- "pointerMovesMs": 6.303200000000061
51
+ "creationMs": 58.684099999999944,
52
+ "pointerMovesMs": 5.383299999999963
53
53
  },
54
54
  {
55
- "creationMs": 54.209299999999985,
56
- "pointerMovesMs": 6.035499999999956
55
+ "creationMs": 46.910699999999906,
56
+ "pointerMovesMs": 5.320499999999811
57
57
  },
58
58
  {
59
- "creationMs": 81.11660000000006,
60
- "pointerMovesMs": 6.156099999999924
59
+ "creationMs": 67.3143,
60
+ "pointerMovesMs": 5.811899999999923
61
61
  }
62
62
  ]
63
63
  }
64
64
  ],
65
- "creationGrowth": 2.804177481049902,
65
+ "creationGrowth": 2.552115089391709,
66
66
  "maxCreationGrowth": 8,
67
67
  "includes": "logical creation and native append; excludes final frame commit, paint and destruction"
68
68
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "fixture": "scripts/benchmark-interchange.mjs",
3
- "date": "2026-10-31T17:41:46.938Z",
3
+ "date": "2026-11-06T20:46:45.233Z",
4
4
  "node": "v24.21.0",
5
5
  "os": "win32 10.0.26200",
6
6
  "cpu": "Intel(R) Core(TM) i7-10610U CPU @ 1.80GHz",
@@ -13,134 +13,134 @@
13
13
  {
14
14
  "count": 250,
15
15
  "clone": {
16
- "medianMs": 15.192800000000034,
17
- "p95Ms": 19.029499999999985,
16
+ "medianMs": 14.36850000000004,
17
+ "p95Ms": 25.575800000000072,
18
18
  "samples": [
19
- 19.029499999999985,
20
- 17.752700000000004,
21
- 15.192800000000034,
22
- 14.218999999999937,
23
- 15.405200000000036,
24
- 14.449899999999843,
25
- 13.832000000000107
19
+ 17.1789,
20
+ 14.36850000000004,
21
+ 12.423800000000028,
22
+ 23.65319999999997,
23
+ 12.553499999999985,
24
+ 11.732599999999934,
25
+ 25.575800000000072
26
26
  ]
27
27
  },
28
28
  "export": {
29
- "medianMs": 7.225299999999834,
30
- "p95Ms": 66.19130000000007,
29
+ "medianMs": 6.32000000000005,
30
+ "p95Ms": 58.25649999999996,
31
31
  "samples": [
32
- 22.054499999999962,
33
- 66.19130000000007,
34
- 6.383600000000001,
35
- 7.630699999999933,
36
- 7.225299999999834,
37
- 6.538099999999986,
38
- 6.597099999999955
32
+ 20.354299999999967,
33
+ 58.25649999999996,
34
+ 5.651700000000005,
35
+ 6.599199999999996,
36
+ 6.32000000000005,
37
+ 5.825900000000047,
38
+ 5.610500000000002
39
39
  ]
40
40
  },
41
41
  "import": {
42
- "medianMs": 39.42650000000003,
43
- "p95Ms": 50.12569999999994,
42
+ "medianMs": 22.17560000000003,
43
+ "p95Ms": 40.97770000000003,
44
44
  "samples": [
45
- 28.03589999999997,
46
- 27.06490000000008,
47
- 39.42650000000003,
48
- 50.12569999999994,
49
- 40.90090000000009,
50
- 42.54500000000007,
51
- 25.43029999999999
45
+ 24.787900000000036,
46
+ 22.17560000000003,
47
+ 20.307199999999966,
48
+ 40.97770000000003,
49
+ 34.016200000000026,
50
+ 21.543699999999944,
51
+ 19.876000000000204
52
52
  ]
53
53
  }
54
54
  },
55
55
  {
56
56
  "count": 500,
57
57
  "clone": {
58
- "medianMs": 42.58919999999989,
59
- "p95Ms": 77.36059999999998,
58
+ "medianMs": 36.39790000000016,
59
+ "p95Ms": 67.91699999999992,
60
60
  "samples": [
61
- 45.20119999999997,
62
- 27.24500000000012,
63
- 77.36059999999998,
64
- 42.58919999999989,
65
- 42.67599999999993,
66
- 25.58349999999973,
67
- 26.126600000000053
61
+ 36.39790000000016,
62
+ 21.91450000000009,
63
+ 67.91699999999992,
64
+ 37.66339999999991,
65
+ 36.05690000000004,
66
+ 21.885700000000043,
67
+ 38.212999999999965
68
68
  ]
69
69
  },
70
70
  "export": {
71
- "medianMs": 28.847999999999956,
72
- "p95Ms": 33.63689999999997,
71
+ "medianMs": 12.001600000000053,
72
+ "p95Ms": 26.850000000000136,
73
73
  "samples": [
74
- 13.430200000000013,
75
- 28.847999999999956,
76
- 13.799299999999903,
77
- 33.25420000000008,
78
- 12.216199999999844,
79
- 33.63689999999997,
80
- 29.007800000000316
74
+ 11.47589999999991,
75
+ 25.010999999999967,
76
+ 12.001600000000053,
77
+ 11.017700000000104,
78
+ 10.565200000000004,
79
+ 26.850000000000136,
80
+ 26.13059999999996
81
81
  ]
82
82
  },
83
83
  "import": {
84
- "medianMs": 52.136400000000094,
85
- "p95Ms": 67.91799999999967,
84
+ "medianMs": 40.34269999999992,
85
+ "p95Ms": 58.42690000000016,
86
86
  "samples": [
87
- 63.91820000000007,
88
- 49.559299999999894,
89
- 52.136400000000094,
90
- 47.43359999999984,
91
- 63.53829999999971,
92
- 67.91799999999967,
93
- 45.48579999999993
87
+ 53.97910000000002,
88
+ 37.91249999999991,
89
+ 40.34269999999992,
90
+ 58.42690000000016,
91
+ 53.251900000000205,
92
+ 37.406600000000026,
93
+ 37.35789999999997
94
94
  ]
95
95
  }
96
96
  },
97
97
  {
98
98
  "count": 1000,
99
99
  "clone": {
100
- "medianMs": 81.37660000000005,
101
- "p95Ms": 116.55470000000014,
100
+ "medianMs": 60.02669999999989,
101
+ "p95Ms": 103.83410000000003,
102
102
  "samples": [
103
- 89.22820000000002,
104
- 77.06989999999996,
105
- 116.55470000000014,
106
- 81.37660000000005,
107
- 58.0021999999999,
108
- 70.65490000000045,
109
- 81.68069999999989
103
+ 61.13799999999992,
104
+ 60.02669999999989,
105
+ 103.83410000000003,
106
+ 59.36310000000003,
107
+ 44.89000000000033,
108
+ 60.998499999999694,
109
+ 57.07690000000002
110
110
  ]
111
111
  },
112
112
  "export": {
113
- "medianMs": 41.614300000000185,
114
- "p95Ms": 49.92590000000018,
113
+ "medianMs": 33.539800000000014,
114
+ "p95Ms": 36.14080000000013,
115
115
  "samples": [
116
- 46.092699999999695,
117
- 29.53839999999991,
118
- 29.11279999999988,
119
- 41.614300000000185,
120
- 40.93419999999969,
121
- 49.92590000000018,
122
- 43.43040000000019
116
+ 34.11229999999978,
117
+ 21.14890000000014,
118
+ 22.764500000000226,
119
+ 36.14080000000013,
120
+ 32.53719999999976,
121
+ 34.116799999999785,
122
+ 33.539800000000014
123
123
  ]
124
124
  },
125
125
  "import": {
126
- "medianMs": 135.04780000000028,
127
- "p95Ms": 169.56860000000006,
126
+ "medianMs": 108.88810000000012,
127
+ "p95Ms": 136.57619999999997,
128
128
  "samples": [
129
- 142.11339999999973,
130
- 169.56860000000006,
131
- 149.2601999999997,
132
- 135.04780000000028,
133
- 120.63550000000032,
134
- 121.02990000000045,
135
- 128.70439999999962
129
+ 108.88810000000012,
130
+ 136.57619999999997,
131
+ 123.6588999999999,
132
+ 117.4067,
133
+ 104.08899999999994,
134
+ 88.07529999999997,
135
+ 100.63900000000012
136
136
  ]
137
137
  }
138
138
  }
139
139
  ],
140
140
  "growth": {
141
- "clone": 5.356260860407553,
142
- "export": 5.759525556032433,
143
- "import": 3.4253053149531447
141
+ "clone": 4.1776594634095225,
142
+ "export": 5.306930379746795,
143
+ "import": 4.910266238568515
144
144
  },
145
145
  "maxGrowth": 8
146
146
  }
@@ -7759,6 +7759,7 @@
7759
7759
  "changeKey",
7760
7760
  "claimRecorder",
7761
7761
  "combineChanges",
7762
+ "deriveChanges",
7762
7763
  "observeChanges",
7763
7764
  "restoreChanges",
7764
7765
  "restoreModelState",
@@ -7788,6 +7789,7 @@
7788
7789
  },
7789
7790
  "typeExports": [
7790
7791
  "ChangeBatch",
7792
+ "ChangeDerivation",
7791
7793
  "ChangeEvent",
7792
7794
  "ChangeGroup",
7793
7795
  "ChangeMetadata",
@@ -8936,6 +8938,11 @@
8936
8938
  "constructors": {},
8937
8939
  "typeExports": ["NodePredicate"]
8938
8940
  },
8941
+ "./raster": {
8942
+ "runtimeExports": ["exportImage"],
8943
+ "constructors": {},
8944
+ "typeExports": ["RasterOptions"]
8945
+ },
8939
8946
  "./resources": {
8940
8947
  "runtimeExports": ["classifyReference", "consumers", "resolveReference", "unbindConsumers"],
8941
8948
  "constructors": {},
@@ -9353,10 +9360,10 @@
9353
9360
  "catalog.d.ts": "bc06549507eb428e0b1976ef41dba3b2e9ffbb600790e834d576c09a65e2ff17",
9354
9361
  "changes/mutation.d.ts": "cd991dbe82484b064999b5550b8b61065d93d8ce52e7f2af5304bd8ee21c5266",
9355
9362
  "changes/restore.d.ts": "6e491519aedde32d0212824b28220453e6154b5a68dfda6376450bfd28fb0a21",
9356
- "changes/service.d.ts": "f4372c953b6af797291b26f608fab5511b15a988025e83de797f92710edc7251",
9363
+ "changes/service.d.ts": "dc7f6e0855e75d21fa931236ebc836d6a8ee792d2791b54fbe44b8cfda4a6842",
9357
9364
  "changes/state.d.ts": "3cda6b0aefa9195df654d7640b20767825063245954b1efb651f959dea3977d6",
9358
- "changes/types.d.ts": "bc89ca5295ce9452d9aa82b0393ad237dcf6dca2299d3fdd65cfd4b1891e4c72",
9359
- "changes.d.ts": "ac80323ba0a1f13a6285cb9c345f5b5709323cced8c86e5cfc2ff933283daeee",
9365
+ "changes/types.d.ts": "98627f8d2e451de4a60aff3cfd4f060f4bf705d741b7292dce731a76e4c7551f",
9366
+ "changes.d.ts": "7c05ff496cca33e70c09cbb2e57033f13c60800bf413965792609d0a68f5f46f",
9360
9367
  "core/attribute-validation.d.ts": "0b71aa592f9ddc43e813fd0c3afc637234c94ba1d04faf8316d5a8b9da1b7b9e",
9361
9368
  "core/destruction.d.ts": "f8c3b53b71ec426b1db15483f1963c9e1033b714bb3e28f95f24b5bcf9428f30",
9362
9369
  "core/mix.d.ts": "a535f1c9515e144c1adbd0117329954ad326d2ad83fef0ed66aa5a9a2a2ef120",
@@ -9423,13 +9430,13 @@
9423
9430
  "geometry/point-list.d.ts": "2de99bb471c47b87ae7117fe069a18975a5d5ffee1c127f0c3de72406fc67fc4",
9424
9431
  "index.d.ts": "5f43de5a9e02bd0fd3131e732e9fabce3a428d63834ef8808c1123a79d09cb4c",
9425
9432
  "interchange/clone.d.ts": "66872445bfb16c22ebce7e859c066df8e4a33e09e1e06cf30349895cf1854c61",
9426
- "interchange/dom.d.ts": "e6d0ed419d60f1e5238524df9aca6b72d8bfc4f328c095d6f77c23503a32d38d",
9433
+ "interchange/dom.d.ts": "ab644b639bc06c70651e28aeaf51d7a7cc0b3b9aa2e4c061292b1f0fc3ccc738",
9427
9434
  "interchange/markup.d.ts": "50e565c1cde341c988f3665954877dcddad379ad29ea451ac45d8f5a816f387f",
9428
9435
  "interchange/policy.d.ts": "734f40462862daa6e75cb5cb2779765717c68f96c239813da6c7072a379639ae",
9429
9436
  "interchange/reconstruct.d.ts": "7ab7e8c489ec2fd064aa8299c4bd4684404bd679bfc8992e13cc0d1fb874cf63",
9430
9437
  "interchange/references.d.ts": "3d477867846c20a4e61463cbe9f0a4d020e35918719a7bcb16b9bd7c47b8ec96",
9431
9438
  "interchange/snapshot.d.ts": "7539f476b1ec0fe5dc37337067171a1255f3b0f40d99593225d1cc82e54fe1d1",
9432
- "interchange/types.d.ts": "7c48a11ed300def0d2604a42bf155bd5934429030b6fbcc38b2d2040496c77b9",
9439
+ "interchange/types.d.ts": "51d5a52ed967e5696e91055a6d26347d1a9ab9798b4ea946ac2fc9eb33301299",
9433
9440
  "interchange.d.ts": "95a22e27571dcf7b81290a429b2361dca77f619c4b9239a60647a1779dd43d66",
9434
9441
  "masks.d.ts": "c474634ef9476f86d89e656629aad72ac09623fa84884809d945b69ebe74c7fe",
9435
9442
  "math/bbox.d.ts": "fafa245e13885cce7eca458086b45c6bdb946fe0e3ac1816bab54c437b629d7a",
@@ -9460,6 +9467,11 @@
9460
9467
  "path/transform-arc.d.ts": "4e9c17fa3d8a813d75911d8d3a562a35b61d36ea86b69cc03c77c7d9bb0d7d95",
9461
9468
  "patterns.d.ts": "69e63ebf3c054d4629b768280c65278f8c9f1199f1a655316226c58b30bf9d5f",
9462
9469
  "query.d.ts": "ae0a1ed8a258b84d274fa86846f178c25249b06cda3a3953ea8b5e018d432532",
9470
+ "raster/frame.d.ts": "0cd983a4babb9972516c4df15d55919671ed19a9151a392a175408244bb3b9af",
9471
+ "raster/images.d.ts": "fc1e95921726bf57b582a9006f9935509c8749509177718722d3ca8f0b1ca75a",
9472
+ "raster/render.d.ts": "fbb5687f5611486d6bab07deb93793a75e4b0c3eedf0a74197c41b88eced79e7",
9473
+ "raster/types.d.ts": "c2b078976875b8865a50931bfd97c363b516ca96d7bf7cf2666cf7ae6fb32b43",
9474
+ "raster.d.ts": "e5b66a567c809f05b097a020273d0b021ed4cb4a4f5cf9484df7c7cb78293f46",
9463
9475
  "resources/content.d.ts": "3a8587867cc13f2562e80029b9f34e35203ff41632626e780c2358604314d670",
9464
9476
  "resources/references.d.ts": "eccfc09bdaa82d9bdd0a6043a5e39e054016a9d44674610e0bbe62c667da9ae5",
9465
9477
  "resources/validation.d.ts": "e3b341076369fa10c53d06225d21760a90ccc98bb44ab433396d1f8cf45cd192",
@@ -9473,14 +9485,15 @@
9473
9485
  "services/registry.d.ts": "dbca30ef26360d1de89eadea11d2507dc1bde7fcf40b25fbcbca7a472894b4c4",
9474
9486
  "services/scheduler.d.ts": "82d56d64434a02b548c94df3a90c7f1b37fcdf8c56caf077048a884de2e6b541",
9475
9487
  "services/types.d.ts": "da38dc8f9e82c170999a6fd2da8ab0327f9457da1fd1b1b2352905805c398023",
9476
- "services/viewport.d.ts": "899dd9a6f96922940247c51f9b9ae82cac1621dc89a9051f2caa4da4941746ca",
9488
+ "services/viewport.d.ts": "62fee85c15795d443d22fb1524417e6c707812dd6a3ff0003b26758d9475f61b",
9477
9489
  "svg.d.ts": "cfc13ecfa09cc5f6774f70e8625d01c3495d4a1d96357da7773a6a3fafdb698d",
9478
9490
  "template/parts.d.ts": "dfebe5a32b964b594aaaf9e9622739accb644f0fa6f53329648f732f3b542c5e",
9479
9491
  "template/render.d.ts": "c5a22fbef5dd52005098d5e808e85ef92d7c6efde14778c9f47b54643948578a",
9480
9492
  "template/svg-tag.d.ts": "d5b07bde53a6d75ff8ca0b7e139e62362f55e2d530d8ea1578d9b8bbc0a6aedd",
9481
- "text/content.d.ts": "a25b631c4ccb24e912dc95f3562e2a5c441a52c2c3147c74a7583e0c59d1e6f5",
9493
+ "text/content.d.ts": "2beb6d185d30453dfcfbbc64139bf7cdb90170b9c55b5fb2596937bf2d6c8bff",
9482
9494
  "text/internals.d.ts": "08e768cca8c679ca8f591575aa956bd577ac195582c24d61813b49be9f617e46",
9483
9495
  "text/measure.d.ts": "3a35c2c6840fd6584023bd408c1bf94210be01b4dc9913e03ab053d5f5f50ea6",
9496
+ "text/policies.d.ts": "80e82e6a329ae4d85b5a0d11afe675659f0fc8f3a2448743f0f632f11ed2f402",
9484
9497
  "text/rich-textual.d.ts": "9b70abd855cb7dc33e899cd62b5dc66da73778f301737f724e383f8d68998fc1",
9485
9498
  "text/types.d.ts": "62d9deea62e470bde960189c2b88efee6eb58a78c5b3c71f3ef1fdb571f4812b",
9486
9499
  "text/validation.d.ts": "9b460cb33cc9754b09860b5f21ad3995f1a5460d545b80b8c7b076881f3f1d2e",
@@ -1,5 +1,28 @@
1
1
  # Public API review
2
2
 
3
+ Phase 8 (2026-11-03) adds only the optional `./raster` public module:
4
+ `exportImage` and type `RasterOptions`, with five new declaration files. Existing
5
+ entry exports, prototypes and declaration hashes remain unchanged. The raster
6
+ fixture measures 9,688/12,288 B gzip and is excluded from existing entry bundles.
7
+ The packed consumer verifies typed usage and document-free imports. Raster pixels,
8
+ resource failures, format negotiation and source preservation have native browser
9
+ coverage; web-font/style embedding is explicitly outside this first version.
10
+
11
+ ## Editor foundations (2026-11-03)
12
+
13
+ Phase 1 adds `ChangeMetadata.label`, its optional `groupstart` event field,
14
+ `ChangeGroup.cancel()` and the optional restored-cancellation event flag. History remains
15
+ an independent consumer. Cancellation recording and restoration stay in the opt-in changes
16
+ entry; the root only transports metadata and the completion flag. Conflicts leave an active
17
+ group available for retry, and permanent disposal invalidates cancellation. Observer failures
18
+ after restoration are reported after ending the group.
19
+
20
+ `ExportOptions.frame: 'content'` and `padding` frame geometric root-space content on the
21
+ detached export. `ImportOptions.document` unwraps one outer SVG document and accepts its
22
+ XML declaration; fragment mode and passive import validation remain available. Parse errors
23
+ now use `SyntaxError` with the first parser error line. No new runtime exports or peers are
24
+ introduced. The existing `BBox.union()` covers the bounds-union requirement.
25
+
3
26
  P11 adds only opt-in `@rasamjs/core/query` (`query`, `queryFirst`, `matches`, `queryNative`,
4
27
  type `NodePredicate`) and `@rasamjs/core/interchange` (`cloneNode`, `exportSvg`, `importSvg`
5
28
  and their option types). Constructors remain drawing-registered; queries do not