@rasamjs/core 0.2.0 → 0.3.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 (162) hide show
  1. package/API.md +14 -4
  2. package/CHANGELOG.md +59 -0
  3. package/COMPONENTS.md +229 -0
  4. package/README.md +39 -6
  5. package/RELEASING.md +4 -2
  6. package/dist/advanced.d.ts +1 -1
  7. package/dist/advanced.d.ts.map +1 -1
  8. package/dist/catalog/fragment.d.ts +2 -2
  9. package/dist/catalog/fragment.d.ts.map +1 -1
  10. package/dist/catalog/fragment.js.map +1 -1
  11. package/dist/changes/derived.d.ts +10 -0
  12. package/dist/changes/derived.d.ts.map +1 -0
  13. package/dist/changes/derived.js +14 -0
  14. package/dist/changes/derived.js.map +1 -0
  15. package/dist/changes/restore.d.ts.map +1 -1
  16. package/dist/changes/restore.js +22 -4
  17. package/dist/changes/restore.js.map +1 -1
  18. package/dist/changes/service.d.ts +5 -0
  19. package/dist/changes/service.d.ts.map +1 -1
  20. package/dist/changes/service.js +16 -2
  21. package/dist/changes/service.js.map +1 -1
  22. package/dist/components/changes.d.ts +34 -0
  23. package/dist/components/changes.d.ts.map +1 -0
  24. package/dist/components/changes.js +119 -0
  25. package/dist/components/changes.js.map +1 -0
  26. package/dist/components/component.d.ts +62 -0
  27. package/dist/components/component.d.ts.map +1 -0
  28. package/dist/components/component.js +355 -0
  29. package/dist/components/component.js.map +1 -0
  30. package/dist/components/decorators.d.ts +7 -0
  31. package/dist/components/decorators.d.ts.map +1 -0
  32. package/dist/components/decorators.js +81 -0
  33. package/dist/components/decorators.js.map +1 -0
  34. package/dist/components/metadata.d.ts +10 -0
  35. package/dist/components/metadata.d.ts.map +1 -0
  36. package/dist/components/metadata.js +85 -0
  37. package/dist/components/metadata.js.map +1 -0
  38. package/dist/components/registry.d.ts +24 -0
  39. package/dist/components/registry.d.ts.map +1 -0
  40. package/dist/components/registry.js +78 -0
  41. package/dist/components/registry.js.map +1 -0
  42. package/dist/components/types.d.ts +54 -0
  43. package/dist/components/types.d.ts.map +1 -0
  44. package/dist/components/types.js +2 -0
  45. package/dist/components/types.js.map +1 -0
  46. package/dist/components/view.d.ts +9 -0
  47. package/dist/components/view.d.ts.map +1 -0
  48. package/dist/components/view.js +104 -0
  49. package/dist/components/view.js.map +1 -0
  50. package/dist/components.d.ts +6 -0
  51. package/dist/components.d.ts.map +1 -0
  52. package/dist/components.js +5 -0
  53. package/dist/components.js.map +1 -0
  54. package/dist/core/node.d.ts +7 -0
  55. package/dist/core/node.d.ts.map +1 -1
  56. package/dist/core/node.js +30 -0
  57. package/dist/core/node.js.map +1 -1
  58. package/dist/interchange/clone.d.ts.map +1 -1
  59. package/dist/interchange/clone.js +3 -2
  60. package/dist/interchange/clone.js.map +1 -1
  61. package/dist/interchange/reconstruct.d.ts.map +1 -1
  62. package/dist/interchange/reconstruct.js +16 -12
  63. package/dist/interchange/reconstruct.js.map +1 -1
  64. package/dist/interchange/references.d.ts.map +1 -1
  65. package/dist/interchange/references.js +10 -4
  66. package/dist/interchange/references.js.map +1 -1
  67. package/dist/mixins/parent-internals.d.ts +6 -0
  68. package/dist/mixins/parent-internals.d.ts.map +1 -1
  69. package/dist/mixins/parent-internals.js +34 -0
  70. package/dist/mixins/parent-internals.js.map +1 -1
  71. package/dist/mixins/parent.d.ts.map +1 -1
  72. package/dist/mixins/parent.js +6 -1
  73. package/dist/mixins/parent.js.map +1 -1
  74. package/dist/mixins/types.d.ts +2 -2
  75. package/dist/mixins/types.d.ts.map +1 -1
  76. package/dist/resources/references.d.ts +2 -0
  77. package/dist/resources/references.d.ts.map +1 -1
  78. package/dist/resources/references.js +3 -3
  79. package/dist/resources/references.js.map +1 -1
  80. package/dist/services/catalog.d.ts.map +1 -1
  81. package/dist/services/catalog.js +5 -3
  82. package/dist/services/catalog.js.map +1 -1
  83. package/dist/services/defs-manager.d.ts +2 -0
  84. package/dist/services/defs-manager.d.ts.map +1 -1
  85. package/dist/services/defs-manager.js +4 -0
  86. package/dist/services/defs-manager.js.map +1 -1
  87. package/dist/services/element-key.d.ts +4 -0
  88. package/dist/services/element-key.d.ts.map +1 -0
  89. package/dist/services/element-key.js +12 -0
  90. package/dist/services/element-key.js.map +1 -0
  91. package/dist/services/initialization.d.ts +7 -0
  92. package/dist/services/initialization.d.ts.map +1 -0
  93. package/dist/services/initialization.js +27 -0
  94. package/dist/services/initialization.js.map +1 -0
  95. package/dist/services/registry.d.ts +8 -0
  96. package/dist/services/registry.d.ts.map +1 -1
  97. package/dist/services/registry.js +45 -10
  98. package/dist/services/registry.js.map +1 -1
  99. package/dist/services/types.d.ts +17 -0
  100. package/dist/services/types.d.ts.map +1 -1
  101. package/dist/template/parts.d.ts +12 -6
  102. package/dist/template/parts.d.ts.map +1 -1
  103. package/dist/template/parts.js +36 -29
  104. package/dist/template/parts.js.map +1 -1
  105. package/dist/template/render.d.ts +6 -7
  106. package/dist/template/render.d.ts.map +1 -1
  107. package/dist/template/render.js +188 -44
  108. package/dist/template/render.js.map +1 -1
  109. package/dist/template/svg-tag.d.ts +5 -1
  110. package/dist/template/svg-tag.d.ts.map +1 -1
  111. package/dist/template/svg-tag.js.map +1 -1
  112. package/dist/text/internals.d.ts +1 -0
  113. package/dist/text/internals.d.ts.map +1 -1
  114. package/dist/types/common.d.ts +27 -0
  115. package/dist/types/common.d.ts.map +1 -1
  116. package/package.json +156 -148
  117. package/reports/adoption.json +20 -20
  118. package/reports/animation-benchmark.json +612 -612
  119. package/reports/benchmark.json +40 -40
  120. package/reports/components-benchmark-before.json +10 -0
  121. package/reports/components-benchmark.json +10 -0
  122. package/reports/creation.json +26 -26
  123. package/reports/interchange-benchmark.json +85 -85
  124. package/reports/public-api-contract.json +334 -17
  125. package/reports/size-components.json +102 -0
  126. package/reports/size-parity.json +47 -34
  127. package/reports/size.json +6 -4
  128. package/reports/svgjs-comparison.json +3100 -3100
  129. package/reports/svgjs-comparison.md +16 -16
  130. package/reports/svgjs-parity-current.json +135 -42
  131. package/src/advanced.ts +1 -1
  132. package/src/catalog/fragment.ts +2 -2
  133. package/src/changes/derived.ts +19 -0
  134. package/src/changes/restore.ts +27 -4
  135. package/src/changes/service.ts +21 -6
  136. package/src/components/changes.ts +131 -0
  137. package/src/components/component.ts +401 -0
  138. package/src/components/decorators.ts +104 -0
  139. package/src/components/metadata.ts +111 -0
  140. package/src/components/registry.ts +79 -0
  141. package/src/components/types.ts +66 -0
  142. package/src/components/view.ts +123 -0
  143. package/src/components.ts +15 -0
  144. package/src/core/node.ts +32 -1
  145. package/src/interchange/clone.ts +3 -2
  146. package/src/interchange/reconstruct.ts +16 -12
  147. package/src/interchange/references.ts +12 -4
  148. package/src/mixins/parent-internals.ts +37 -0
  149. package/src/mixins/parent.ts +13 -4
  150. package/src/mixins/types.ts +2 -2
  151. package/src/resources/references.ts +5 -5
  152. package/src/services/catalog.ts +5 -3
  153. package/src/services/defs-manager.ts +5 -0
  154. package/src/services/element-key.ts +14 -0
  155. package/src/services/initialization.ts +25 -0
  156. package/src/services/registry.ts +47 -10
  157. package/src/services/types.ts +21 -0
  158. package/src/template/parts.ts +54 -39
  159. package/src/template/render.ts +211 -54
  160. package/src/template/svg-tag.ts +6 -1
  161. package/src/text/internals.ts +1 -0
  162. package/src/types/common.ts +29 -0
package/package.json CHANGED
@@ -1,148 +1,156 @@
1
- {
2
- "name": "@rasamjs/core",
3
- "version": "0.2.0",
4
- "license": "MIT",
5
- "description": "A typed SVG drawing library with shapes, templates, transforms and pointer interaction.",
6
- "type": "module",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/hdevlop/rasam.git",
10
- "directory": "packages/rasam"
11
- },
12
- "files": [
13
- "dist",
14
- "src",
15
- "API.md",
16
- "RELEASING.md",
17
- "reports/*.md",
18
- "reports/*.json",
19
- "!reports/release-readiness*",
20
- "CHANGELOG.md"
21
- ],
22
- "types": "./dist/index.d.ts",
23
- "exports": {
24
- "./raster": {
25
- "rasam-source": "./src/raster.ts",
26
- "types": "./dist/raster.d.ts",
27
- "import": "./dist/raster.js"
28
- },
29
- "./query": {
30
- "rasam-source": "./src/query.ts",
31
- "types": "./dist/query.d.ts",
32
- "import": "./dist/query.js"
33
- },
34
- "./interchange": {
35
- "rasam-source": "./src/interchange.ts",
36
- "types": "./dist/interchange.d.ts",
37
- "import": "./dist/interchange.js"
38
- },
39
- "./catalog": {
40
- "rasam-source": "./src/catalog.ts",
41
- "types": "./dist/catalog.d.ts",
42
- "import": "./dist/catalog.js"
43
- },
44
- "./text": {
45
- "rasam-source": "./src/text.ts",
46
- "types": "./dist/text.d.ts",
47
- "import": "./dist/text.js"
48
- },
49
- "./media": {
50
- "rasam-source": "./src/media.ts",
51
- "types": "./dist/media.d.ts",
52
- "import": "./dist/media.js"
53
- },
54
- ".": {
55
- "rasam-source": "./src/index.ts",
56
- "types": "./dist/index.d.ts",
57
- "import": "./dist/index.js"
58
- },
59
- "./advanced": {
60
- "rasam-source": "./src/advanced.ts",
61
- "types": "./dist/advanced.d.ts",
62
- "import": "./dist/advanced.js"
63
- },
64
- "./tree": {
65
- "rasam-source": "./src/tree.ts",
66
- "types": "./dist/tree.d.ts",
67
- "import": "./dist/tree.js"
68
- },
69
- "./events": {
70
- "rasam-source": "./src/events.ts",
71
- "types": "./dist/events.d.ts",
72
- "import": "./dist/events.js"
73
- },
74
- "./resources": {
75
- "rasam-source": "./src/resources.ts",
76
- "types": "./dist/resources.d.ts",
77
- "import": "./dist/resources.js"
78
- },
79
- "./viewport": {
80
- "rasam-source": "./src/viewport.ts",
81
- "types": "./dist/viewport.d.ts",
82
- "import": "./dist/viewport.js"
83
- },
84
- "./masks": {
85
- "rasam-source": "./src/masks.ts",
86
- "types": "./dist/masks.d.ts",
87
- "import": "./dist/masks.js"
88
- },
89
- "./patterns": {
90
- "rasam-source": "./src/patterns.ts",
91
- "types": "./dist/patterns.d.ts",
92
- "import": "./dist/patterns.js"
93
- },
94
- "./animation": {
95
- "rasam-source": "./src/animation.ts",
96
- "types": "./dist/animation.d.ts",
97
- "import": "./dist/animation.js"
98
- },
99
- "./data": {
100
- "rasam-source": "./src/data.ts",
101
- "types": "./dist/data.d.ts",
102
- "import": "./dist/data.js"
103
- },
104
- "./changes": {
105
- "rasam-source": "./src/changes.ts",
106
- "types": "./dist/changes.d.ts",
107
- "import": "./dist/changes.js"
108
- }
109
- },
110
- "sideEffects": false,
111
- "scripts": {
112
- "bench:animation": "node scripts/benchmark-animation.mjs",
113
- "api:check": "node scripts/check-api.mjs",
114
- "api:update": "node scripts/check-api.mjs --update",
115
- "check:docs": "node scripts/check-docs.mjs",
116
- "release:check": "node scripts/check-release.mjs",
117
- "release:assess": "node scripts/check-release.mjs --assess",
118
- "typecheck": "tsc -p tsconfig.check.json",
119
- "build": "node scripts/build.mjs",
120
- "test": "vitest run",
121
- "test:browser": "playwright test",
122
- "dev": "vite --host 127.0.0.1",
123
- "check:consumer": "node scripts/check-consumer.mjs",
124
- "check:size": "node scripts/check-size.mjs",
125
- "bench": "node scripts/benchmark.mjs",
126
- "bench:create": "node scripts/benchmark-creation.mjs",
127
- "bench:adopt": "node scripts/benchmark-adoption.mjs",
128
- "bench:interchange": "node scripts/benchmark-interchange.mjs",
129
- "bench:svgjs": "node scripts/benchmark-svgjs.mjs",
130
- "parity:baseline": "node scripts/svgjs-baseline.mjs --output reports/svgjs-parity-current.json",
131
- "parity:coverage": "node scripts/svgjs-coverage.mjs",
132
- "parity:check": "node scripts/svgjs-coverage.mjs --check",
133
- "format": "prettier --write src tests scripts playground fixtures *.json *.ts *.md examples",
134
- "format:check": "prettier --check src tests scripts playground fixtures *.json *.ts *.md examples",
135
- "check:preview": "node scripts/preview.mjs"
136
- },
137
- "devDependencies": {
138
- "@playwright/test": "^1.64.1",
139
- "@svgdotjs/svg.js": "3.2.8",
140
- "@types/node": "^26.6.5",
141
- "esbuild": "^0.28.2",
142
- "happy-dom": "^21.0.4",
143
- "prettier": "^3.9.10",
144
- "typescript": "^7.0.2",
145
- "vite": "^8.3.5",
146
- "vitest": "^5.0.5"
147
- }
148
- }
1
+ {
2
+ "name": "@rasamjs/core",
3
+ "version": "0.3.0",
4
+ "license": "MIT",
5
+ "description": "A typed SVG drawing library with shapes, templates, transforms and pointer interaction.",
6
+ "type": "module",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/hdevlop/rasam.git",
10
+ "directory": "packages/rasam"
11
+ },
12
+ "files": [
13
+ "dist",
14
+ "src",
15
+ "API.md",
16
+ "COMPONENTS.md",
17
+ "RELEASING.md",
18
+ "reports/*.md",
19
+ "reports/*.json",
20
+ "!reports/release-readiness*",
21
+ "CHANGELOG.md"
22
+ ],
23
+ "types": "./dist/index.d.ts",
24
+ "exports": {
25
+ "./components": {
26
+ "rasam-source": "./src/components.ts",
27
+ "types": "./dist/components.d.ts",
28
+ "import": "./dist/components.js"
29
+ },
30
+ "./raster": {
31
+ "rasam-source": "./src/raster.ts",
32
+ "types": "./dist/raster.d.ts",
33
+ "import": "./dist/raster.js"
34
+ },
35
+ "./query": {
36
+ "rasam-source": "./src/query.ts",
37
+ "types": "./dist/query.d.ts",
38
+ "import": "./dist/query.js"
39
+ },
40
+ "./interchange": {
41
+ "rasam-source": "./src/interchange.ts",
42
+ "types": "./dist/interchange.d.ts",
43
+ "import": "./dist/interchange.js"
44
+ },
45
+ "./catalog": {
46
+ "rasam-source": "./src/catalog.ts",
47
+ "types": "./dist/catalog.d.ts",
48
+ "import": "./dist/catalog.js"
49
+ },
50
+ "./text": {
51
+ "rasam-source": "./src/text.ts",
52
+ "types": "./dist/text.d.ts",
53
+ "import": "./dist/text.js"
54
+ },
55
+ "./media": {
56
+ "rasam-source": "./src/media.ts",
57
+ "types": "./dist/media.d.ts",
58
+ "import": "./dist/media.js"
59
+ },
60
+ ".": {
61
+ "rasam-source": "./src/index.ts",
62
+ "types": "./dist/index.d.ts",
63
+ "import": "./dist/index.js"
64
+ },
65
+ "./advanced": {
66
+ "rasam-source": "./src/advanced.ts",
67
+ "types": "./dist/advanced.d.ts",
68
+ "import": "./dist/advanced.js"
69
+ },
70
+ "./tree": {
71
+ "rasam-source": "./src/tree.ts",
72
+ "types": "./dist/tree.d.ts",
73
+ "import": "./dist/tree.js"
74
+ },
75
+ "./events": {
76
+ "rasam-source": "./src/events.ts",
77
+ "types": "./dist/events.d.ts",
78
+ "import": "./dist/events.js"
79
+ },
80
+ "./resources": {
81
+ "rasam-source": "./src/resources.ts",
82
+ "types": "./dist/resources.d.ts",
83
+ "import": "./dist/resources.js"
84
+ },
85
+ "./viewport": {
86
+ "rasam-source": "./src/viewport.ts",
87
+ "types": "./dist/viewport.d.ts",
88
+ "import": "./dist/viewport.js"
89
+ },
90
+ "./masks": {
91
+ "rasam-source": "./src/masks.ts",
92
+ "types": "./dist/masks.d.ts",
93
+ "import": "./dist/masks.js"
94
+ },
95
+ "./patterns": {
96
+ "rasam-source": "./src/patterns.ts",
97
+ "types": "./dist/patterns.d.ts",
98
+ "import": "./dist/patterns.js"
99
+ },
100
+ "./animation": {
101
+ "rasam-source": "./src/animation.ts",
102
+ "types": "./dist/animation.d.ts",
103
+ "import": "./dist/animation.js"
104
+ },
105
+ "./data": {
106
+ "rasam-source": "./src/data.ts",
107
+ "types": "./dist/data.d.ts",
108
+ "import": "./dist/data.js"
109
+ },
110
+ "./changes": {
111
+ "rasam-source": "./src/changes.ts",
112
+ "types": "./dist/changes.d.ts",
113
+ "import": "./dist/changes.js"
114
+ }
115
+ },
116
+ "sideEffects": false,
117
+ "scripts": {
118
+ "bench:animation": "node scripts/benchmark-animation.mjs",
119
+ "bench:components": "node scripts/benchmark-components.mjs",
120
+ "api:check": "node scripts/check-api.mjs",
121
+ "api:update": "node scripts/check-api.mjs --update",
122
+ "check:docs": "node scripts/check-docs.mjs",
123
+ "release:check": "node scripts/check-release.mjs",
124
+ "release:assess": "node scripts/check-release.mjs --assess",
125
+ "typecheck": "tsc -p tsconfig.check.json",
126
+ "build": "node scripts/build.mjs",
127
+ "test": "vitest run",
128
+ "test:browser": "playwright test",
129
+ "dev": "vite --host 127.0.0.1",
130
+ "check:consumer": "node scripts/check-consumer.mjs",
131
+ "check:size": "node scripts/check-size.mjs",
132
+ "check:size:components": "node scripts/check-components-size.mjs",
133
+ "bench": "node scripts/benchmark.mjs",
134
+ "bench:create": "node scripts/benchmark-creation.mjs",
135
+ "bench:adopt": "node scripts/benchmark-adoption.mjs",
136
+ "bench:interchange": "node scripts/benchmark-interchange.mjs",
137
+ "bench:svgjs": "node scripts/benchmark-svgjs.mjs",
138
+ "parity:baseline": "node scripts/svgjs-baseline.mjs --output reports/svgjs-parity-current.json",
139
+ "parity:coverage": "node scripts/svgjs-coverage.mjs",
140
+ "parity:check": "node scripts/svgjs-coverage.mjs --check",
141
+ "format": "prettier --write src tests scripts playground fixtures *.json *.ts *.md examples",
142
+ "format:check": "prettier --check src tests scripts playground fixtures *.json *.ts *.md examples",
143
+ "check:preview": "node scripts/preview.mjs"
144
+ },
145
+ "devDependencies": {
146
+ "@playwright/test": "^1.64.1",
147
+ "@svgdotjs/svg.js": "3.2.8",
148
+ "@types/node": "^26.6.5",
149
+ "esbuild": "^0.28.2",
150
+ "happy-dom": "^21.0.4",
151
+ "prettier": "^3.9.10",
152
+ "typescript": "^7.0.2",
153
+ "vite": "^8.3.5",
154
+ "vitest": "^5.0.5"
155
+ }
156
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "fixture": "scripts/benchmark-adoption.mjs",
3
- "date": "2026-11-06T20:46:40.973Z",
3
+ "date": "2026-11-07T18:31:11.930Z",
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,39 +9,39 @@
9
9
  "results": [
10
10
  {
11
11
  "count": 1000,
12
- "medianMs": 11.34170000000006,
12
+ "medianMs": 9.038999999999987,
13
13
  "samples": [
14
- 14.644900000000007,
15
- 10.950199999999995,
16
- 11.34170000000006,
17
- 10.127700000000004,
18
- 11.417300000000068
14
+ 13.795000000000073,
15
+ 8.669100000000071,
16
+ 7.492200000000025,
17
+ 9.038999999999987,
18
+ 9.710100000000011
19
19
  ]
20
20
  },
21
21
  {
22
22
  "count": 2000,
23
- "medianMs": 17.21589999999992,
23
+ "medianMs": 17.615999999999985,
24
24
  "samples": [
25
- 15.42629999999997,
26
- 17.319200000000023,
27
- 16.930500000000052,
28
- 19.18259999999998,
29
- 17.21589999999992
25
+ 11.926400000000058,
26
+ 17.722499999999968,
27
+ 17.615999999999985,
28
+ 18.942800000000034,
29
+ 11.66199999999992
30
30
  ]
31
31
  },
32
32
  {
33
33
  "count": 4000,
34
- "medianMs": 35.30169999999987,
34
+ "medianMs": 35.59010000000012,
35
35
  "samples": [
36
- 35.30169999999987,
37
- 34.59019999999987,
38
- 35.08140000000003,
39
- 35.661099999999806,
40
- 35.37279999999987
36
+ 23.020500000000084,
37
+ 35.731599999999844,
38
+ 35.490299999999934,
39
+ 35.59010000000012,
40
+ 40.76299999999992
41
41
  ]
42
42
  }
43
43
  ],
44
- "growth": 3.1125580821216996,
44
+ "growth": 3.937393516981986,
45
45
  "maxGrowth": 8,
46
46
  "includes": "SVG(native) validation and wrapping; excludes DOM construction, paint and destruction"
47
47
  }