@rasamjs/core 0.1.2 → 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 (106) hide show
  1. package/API.md +15 -5
  2. package/CHANGELOG.md +39 -1
  3. package/README.md +140 -20
  4. package/RELEASING.md +29 -21
  5. package/dist/changes/service.d.ts +5 -2
  6. package/dist/changes/service.d.ts.map +1 -1
  7. package/dist/changes/service.js +29 -4
  8. package/dist/changes/service.js.map +1 -1
  9. package/dist/changes/types.d.ts +9 -0
  10. package/dist/changes/types.d.ts.map +1 -1
  11. package/dist/changes/types.js.map +1 -1
  12. package/dist/changes.d.ts +5 -3
  13. package/dist/changes.d.ts.map +1 -1
  14. package/dist/changes.js +103 -2
  15. package/dist/changes.js.map +1 -1
  16. package/dist/dom/images.d.ts.map +1 -1
  17. package/dist/dom/images.js +3 -1
  18. package/dist/dom/images.js.map +1 -1
  19. package/dist/elements/image.d.ts.map +1 -1
  20. package/dist/elements/image.js +4 -1
  21. package/dist/elements/image.js.map +1 -1
  22. package/dist/interchange/clone.js +1 -1
  23. package/dist/interchange/clone.js.map +1 -1
  24. package/dist/interchange/dom.d.ts +3 -1
  25. package/dist/interchange/dom.d.ts.map +1 -1
  26. package/dist/interchange/dom.js +29 -5
  27. package/dist/interchange/dom.js.map +1 -1
  28. package/dist/interchange/markup.d.ts.map +1 -1
  29. package/dist/interchange/markup.js +71 -3
  30. package/dist/interchange/markup.js.map +1 -1
  31. package/dist/interchange/policy.d.ts.map +1 -1
  32. package/dist/interchange/policy.js +4 -0
  33. package/dist/interchange/policy.js.map +1 -1
  34. package/dist/interchange/types.d.ts +10 -1
  35. package/dist/interchange/types.d.ts.map +1 -1
  36. package/dist/mixins/transformable.d.ts.map +1 -1
  37. package/dist/mixins/transformable.js +25 -27
  38. package/dist/mixins/transformable.js.map +1 -1
  39. package/dist/raster/frame.d.ts +12 -0
  40. package/dist/raster/frame.d.ts.map +1 -0
  41. package/dist/raster/frame.js +43 -0
  42. package/dist/raster/frame.js.map +1 -0
  43. package/dist/raster/images.d.ts +2 -0
  44. package/dist/raster/images.d.ts.map +1 -0
  45. package/dist/raster/images.js +60 -0
  46. package/dist/raster/images.js.map +1 -0
  47. package/dist/raster/render.d.ts +3 -0
  48. package/dist/raster/render.d.ts.map +1 -0
  49. package/dist/raster/render.js +40 -0
  50. package/dist/raster/render.js.map +1 -0
  51. package/dist/raster/types.d.ts +10 -0
  52. package/dist/raster/types.d.ts.map +1 -0
  53. package/dist/raster/types.js +2 -0
  54. package/dist/raster/types.js.map +1 -0
  55. package/dist/raster.d.ts +6 -0
  56. package/dist/raster.d.ts.map +1 -0
  57. package/dist/raster.js +10 -0
  58. package/dist/raster.js.map +1 -0
  59. package/dist/resources/references.d.ts.map +1 -1
  60. package/dist/resources/references.js +3 -1
  61. package/dist/resources/references.js.map +1 -1
  62. package/dist/services/viewport.d.ts +2 -0
  63. package/dist/services/viewport.d.ts.map +1 -1
  64. package/dist/services/viewport.js +4 -3
  65. package/dist/services/viewport.js.map +1 -1
  66. package/dist/text/content.d.ts +0 -2
  67. package/dist/text/content.d.ts.map +1 -1
  68. package/dist/text/content.js +4 -10
  69. package/dist/text/content.js.map +1 -1
  70. package/dist/text/policies.d.ts +7 -0
  71. package/dist/text/policies.d.ts.map +1 -0
  72. package/dist/text/policies.js +13 -0
  73. package/dist/text/policies.js.map +1 -0
  74. package/package.json +6 -1
  75. package/reports/adoption.json +20 -20
  76. package/reports/animation-benchmark.json +617 -617
  77. package/reports/benchmark.json +44 -44
  78. package/reports/creation.json +26 -26
  79. package/reports/interchange-benchmark.json +85 -85
  80. package/reports/public-api-contract.json +20 -7
  81. package/reports/public-api-review.md +23 -0
  82. package/reports/size-parity.json +54 -19
  83. package/reports/size.json +2 -2
  84. package/reports/svgjs-comparison.json +3464 -3464
  85. package/reports/svgjs-comparison.md +19 -19
  86. package/reports/svgjs-parity-current.json +58 -34
  87. package/src/changes/service.ts +39 -5
  88. package/src/changes/types.ts +9 -0
  89. package/src/changes.ts +93 -4
  90. package/src/dom/images.ts +2 -1
  91. package/src/elements/image.ts +4 -1
  92. package/src/interchange/clone.ts +1 -1
  93. package/src/interchange/dom.ts +34 -5
  94. package/src/interchange/markup.ts +77 -3
  95. package/src/interchange/policy.ts +6 -0
  96. package/src/interchange/types.ts +10 -1
  97. package/src/mixins/transformable.ts +23 -25
  98. package/src/raster/frame.ts +53 -0
  99. package/src/raster/images.ts +73 -0
  100. package/src/raster/render.ts +45 -0
  101. package/src/raster/types.ts +9 -0
  102. package/src/raster.ts +13 -0
  103. package/src/resources/references.ts +5 -1
  104. package/src/services/viewport.ts +5 -4
  105. package/src/text/content.ts +4 -14
  106. package/src/text/policies.ts +18 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "fixture": "scripts/benchmark.mjs",
3
- "date": "2026-11-02T00:13:34.754Z",
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",
@@ -9,26 +9,12 @@
9
9
  "count": 1000,
10
10
  "warmup": 20,
11
11
  "iterations": 100,
12
- "medianMs": 0.5,
13
- "p95Ms": 0.699999988079071,
12
+ "medianMs": 0.6000000238418579,
13
+ "p95Ms": 0.8000000715255737,
14
14
  "targetMedianMs": 16,
15
15
  "includes": "logical mutations and synchronous DOM commit; excludes paint",
16
16
  "timings": [
17
17
  0.3999999761581421,
18
- 0.3999999761581421,
19
- 0.3999999761581421,
20
- 0.3999999761581421,
21
- 0.3999999761581421,
22
- 0.3999999761581421,
23
- 0.3999999761581421,
24
- 0.3999999761581421,
25
- 0.3999999761581421,
26
- 0.3999999761581421,
27
- 0.40000003576278687,
28
- 0.40000003576278687,
29
- 0.40000003576278687,
30
- 0.40000003576278687,
31
- 0.40000003576278687,
32
18
  0.5,
33
19
  0.5,
34
20
  0.5,
@@ -65,25 +51,13 @@
65
51
  0.5,
66
52
  0.5,
67
53
  0.5,
68
- 0.5,
69
- 0.5,
70
- 0.5,
71
- 0.5,
72
- 0.5,
73
- 0.5,
74
- 0.5,
75
- 0.5999999642372131,
76
- 0.5999999642372131,
77
- 0.5999999642372131,
78
- 0.5999999642372131,
79
- 0.5999999642372131,
80
- 0.5999999642372131,
81
- 0.5999999642372131,
82
- 0.5999999642372131,
83
- 0.5999999642372131,
84
- 0.5999999642372131,
85
- 0.5999999642372131,
86
- 0.5999999642372131,
54
+ 0.5999999046325684,
55
+ 0.5999999046325684,
56
+ 0.5999999046325684,
57
+ 0.5999999046325684,
58
+ 0.5999999046325684,
59
+ 0.6000000238418579,
60
+ 0.6000000238418579,
87
61
  0.6000000238418579,
88
62
  0.6000000238418579,
89
63
  0.6000000238418579,
@@ -104,15 +78,41 @@
104
78
  0.6000000238418579,
105
79
  0.6000000238418579,
106
80
  0.6000000238418579,
107
- 0.699999988079071,
108
- 0.699999988079071,
109
- 0.699999988079071,
110
- 0.699999988079071,
111
- 0.699999988079071,
81
+ 0.6000000238418579,
82
+ 0.6000000238418579,
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,
105
+ 0.7000000476837158,
106
+ 0.7000000476837158,
112
107
  0.7000000476837158,
113
108
  0.7000000476837158,
114
- 0.800000011920929,
115
- 1.0999999642372131,
116
- 1.399999976158142
109
+ 0.7999999523162842,
110
+ 0.7999999523162842,
111
+ 0.8000000715255737,
112
+ 0.8000000715255737,
113
+ 0.8999999761581421,
114
+ 1,
115
+ 1,
116
+ 1
117
117
  ]
118
118
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "fixture": "scripts/benchmark-creation.mjs",
3
- "date": "2026-11-02T00:13:22.779Z",
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": 26.705100000000016,
13
- "medianPointerMovesMs": 8.671500000000037,
12
+ "medianCreationMs": 22.994300000000067,
13
+ "medianPointerMovesMs": 7.282600000000002,
14
14
  "samples": [
15
15
  {
16
- "creationMs": 33.11779999999999,
17
- "pointerMovesMs": 15.405399999999986
16
+ "creationMs": 31.776499999999942,
17
+ "pointerMovesMs": 8.679300000000012
18
18
  },
19
19
  {
20
- "creationMs": 26.705100000000016,
21
- "pointerMovesMs": 8.671500000000037
20
+ "creationMs": 26.4683,
21
+ "pointerMovesMs": 7.282600000000002
22
22
  },
23
23
  {
24
- "creationMs": 28.883399999999938,
25
- "pointerMovesMs": 12.037599999999998
24
+ "creationMs": 22.994300000000067,
25
+ "pointerMovesMs": 7.207400000000007
26
26
  },
27
27
  {
28
- "creationMs": 24.3522999999999,
29
- "pointerMovesMs": 8.336500000000001
28
+ "creationMs": 21.127500000000055,
29
+ "pointerMovesMs": 7.402299999999968
30
30
  },
31
31
  {
32
- "creationMs": 24.069499999999948,
33
- "pointerMovesMs": 7.400499999999965
32
+ "creationMs": 19.99980000000005,
33
+ "pointerMovesMs": 6.323700000000031
34
34
  }
35
35
  ]
36
36
  },
37
37
  {
38
38
  "count": 8000,
39
- "medianCreationMs": 78.9511,
40
- "medianPointerMovesMs": 6.612600000000157,
39
+ "medianCreationMs": 58.684099999999944,
40
+ "medianPointerMovesMs": 5.811899999999923,
41
41
  "samples": [
42
42
  {
43
- "creationMs": 96.93219999999985,
44
- "pointerMovesMs": 7.832300000000032
43
+ "creationMs": 97.0326,
44
+ "pointerMovesMs": 6.8799999999999955
45
45
  },
46
46
  {
47
- "creationMs": 81.06889999999999,
48
- "pointerMovesMs": 6.612600000000157
47
+ "creationMs": 57.53489999999988,
48
+ "pointerMovesMs": 6.402499999999918
49
49
  },
50
50
  {
51
- "creationMs": 61.077400000000125,
52
- "pointerMovesMs": 6.204999999999927
51
+ "creationMs": 58.684099999999944,
52
+ "pointerMovesMs": 5.383299999999963
53
53
  },
54
54
  {
55
- "creationMs": 78.9511,
56
- "pointerMovesMs": 6.264099999999871
55
+ "creationMs": 46.910699999999906,
56
+ "pointerMovesMs": 5.320499999999811
57
57
  },
58
58
  {
59
- "creationMs": 70.96590000000015,
60
- "pointerMovesMs": 6.688599999999951
59
+ "creationMs": 67.3143,
60
+ "pointerMovesMs": 5.811899999999923
61
61
  }
62
62
  ]
63
63
  }
64
64
  ],
65
- "creationGrowth": 2.956405330816958,
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-11-02T00:13:31.392Z",
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": 23.380999999999972,
17
- "p95Ms": 38.50459999999998,
16
+ "medianMs": 14.36850000000004,
17
+ "p95Ms": 25.575800000000072,
18
18
  "samples": [
19
- 23.380999999999972,
20
- 20.48440000000005,
21
- 26.748000000000047,
22
- 36.8599999999999,
23
- 18.861400000000003,
24
- 22.280199999999923,
25
- 38.50459999999998
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": 11.591599999999971,
30
- "p95Ms": 94.22260000000006,
29
+ "medianMs": 6.32000000000005,
30
+ "p95Ms": 58.25649999999996,
31
31
  "samples": [
32
- 23.898900000000026,
33
- 94.22260000000006,
34
- 7.6426000000001295,
35
- 14.268799999999828,
36
- 9.160500000000184,
37
- 11.591599999999971,
38
- 8.695199999999886
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": 32.36749999999995,
43
- "p95Ms": 61.8922,
42
+ "medianMs": 22.17560000000003,
43
+ "p95Ms": 40.97770000000003,
44
44
  "samples": [
45
- 32.36749999999995,
46
- 38.87099999999987,
47
- 32.03800000000001,
48
- 61.8922,
49
- 31.651000000000067,
50
- 37.60699999999997,
51
- 28.491300000000138
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": 31.575600000000122,
59
- "p95Ms": 84.21369999999979,
58
+ "medianMs": 36.39790000000016,
59
+ "p95Ms": 67.91699999999992,
60
60
  "samples": [
61
- 31.575600000000122,
62
- 29.292899999999918,
63
- 84.21369999999979,
64
- 30.08069999999998,
65
- 28.73829999999998,
66
- 43.51350000000002,
67
- 44.92489999999998
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": 29.19920000000002,
72
- "p95Ms": 48.35719999999992,
71
+ "medianMs": 12.001600000000053,
72
+ "p95Ms": 26.850000000000136,
73
73
  "samples": [
74
- 13.85089999999991,
75
- 32.823199999999815,
76
- 48.35719999999992,
77
- 28.33600000000024,
78
- 29.19920000000002,
79
- 34.56640000000016,
80
- 12.802100000000337
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": 53.96369999999979,
85
- "p95Ms": 76.07709999999997,
84
+ "medianMs": 40.34269999999992,
85
+ "p95Ms": 58.42690000000016,
86
86
  "samples": [
87
- 53.96369999999979,
88
- 49.51159999999982,
89
- 52.294200000000274,
90
- 76.07709999999997,
91
- 66.52050000000008,
92
- 51.23730000000023,
93
- 63.930199999999786
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": 92.53090000000066,
101
- "p95Ms": 107.92509999999993,
100
+ "medianMs": 60.02669999999989,
101
+ "p95Ms": 103.83410000000003,
102
102
  "samples": [
103
- 107.92509999999993,
104
- 105.73300000000017,
105
- 89.36130000000048,
106
- 92.53090000000066,
107
- 79.21529999999984,
108
- 90.03070000000025,
109
- 94.65950000000066
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": 53.40429999999924,
114
- "p95Ms": 99.54770000000008,
113
+ "medianMs": 33.539800000000014,
114
+ "p95Ms": 36.14080000000013,
115
115
  "samples": [
116
- 43.141299999999774,
117
- 53.40429999999924,
118
- 99.54770000000008,
119
- 49.497699999999895,
120
- 40.45460000000003,
121
- 55.76590000000033,
122
- 54.46190000000024
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": 159.21590000000015,
127
- "p95Ms": 175.88940000000002,
126
+ "medianMs": 108.88810000000012,
127
+ "p95Ms": 136.57619999999997,
128
128
  "samples": [
129
- 175.88940000000002,
130
- 164.67600000000039,
131
- 139.2474000000002,
132
- 136.66079999999965,
133
- 137.1938,
134
- 166.03060000000005,
135
- 159.21590000000015
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": 3.9575253410889513,
142
- "export": 4.607155181338157,
143
- "import": 4.919005174944014
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