@sectile/core 0.1.0 → 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 (298) hide show
  1. package/README.md +3 -2
  2. package/package.json +100 -2
  3. package/dist/accordion.d.ts +0 -43
  4. package/dist/accordion.d.ts.map +0 -1
  5. package/dist/accordion.js +0 -83
  6. package/dist/accordion.js.map +0 -1
  7. package/dist/alert-dialog.d.ts +0 -18
  8. package/dist/alert-dialog.d.ts.map +0 -1
  9. package/dist/alert-dialog.js +0 -9
  10. package/dist/alert-dialog.js.map +0 -1
  11. package/dist/calendar.d.ts +0 -2
  12. package/dist/calendar.d.ts.map +0 -1
  13. package/dist/calendar.js +0 -2
  14. package/dist/calendar.js.map +0 -1
  15. package/dist/carousel.d.ts +0 -40
  16. package/dist/carousel.d.ts.map +0 -1
  17. package/dist/carousel.js +0 -51
  18. package/dist/carousel.js.map +0 -1
  19. package/dist/checkbox-group.d.ts +0 -12
  20. package/dist/checkbox-group.d.ts.map +0 -1
  21. package/dist/checkbox-group.js +0 -12
  22. package/dist/checkbox-group.js.map +0 -1
  23. package/dist/checkbox.d.ts +0 -2
  24. package/dist/checkbox.d.ts.map +0 -1
  25. package/dist/checkbox.js +0 -2
  26. package/dist/checkbox.js.map +0 -1
  27. package/dist/combobox.d.ts +0 -16
  28. package/dist/combobox.d.ts.map +0 -1
  29. package/dist/combobox.js +0 -42
  30. package/dist/combobox.js.map +0 -1
  31. package/dist/date-field.d.ts +0 -58
  32. package/dist/date-field.d.ts.map +0 -1
  33. package/dist/date-field.js +0 -233
  34. package/dist/date-field.js.map +0 -1
  35. package/dist/date-picker.d.ts +0 -53
  36. package/dist/date-picker.d.ts.map +0 -1
  37. package/dist/date-picker.js +0 -157
  38. package/dist/date-picker.js.map +0 -1
  39. package/dist/date-range-picker.d.ts +0 -28
  40. package/dist/date-range-picker.d.ts.map +0 -1
  41. package/dist/date-range-picker.js +0 -85
  42. package/dist/date-range-picker.js.map +0 -1
  43. package/dist/date-time-field.d.ts +0 -53
  44. package/dist/date-time-field.d.ts.map +0 -1
  45. package/dist/date-time-field.js +0 -253
  46. package/dist/date-time-field.js.map +0 -1
  47. package/dist/date-time-picker.d.ts +0 -54
  48. package/dist/date-time-picker.d.ts.map +0 -1
  49. package/dist/date-time-picker.js +0 -151
  50. package/dist/date-time-picker.js.map +0 -1
  51. package/dist/date-time-range-picker.d.ts +0 -67
  52. package/dist/date-time-range-picker.d.ts.map +0 -1
  53. package/dist/date-time-range-picker.js +0 -226
  54. package/dist/date-time-range-picker.js.map +0 -1
  55. package/dist/dialog.d.ts +0 -16
  56. package/dist/dialog.d.ts.map +0 -1
  57. package/dist/dialog.js +0 -5
  58. package/dist/dialog.js.map +0 -1
  59. package/dist/disclosure.d.ts +0 -2
  60. package/dist/disclosure.d.ts.map +0 -1
  61. package/dist/disclosure.js +0 -2
  62. package/dist/disclosure.js.map +0 -1
  63. package/dist/feed.d.ts +0 -29
  64. package/dist/feed.d.ts.map +0 -1
  65. package/dist/feed.js +0 -26
  66. package/dist/feed.js.map +0 -1
  67. package/dist/index.d.ts +0 -17
  68. package/dist/index.d.ts.map +0 -1
  69. package/dist/index.js +0 -2
  70. package/dist/index.js.map +0 -1
  71. package/dist/interaction.d.ts +0 -14
  72. package/dist/interaction.d.ts.map +0 -1
  73. package/dist/interaction.js +0 -38
  74. package/dist/interaction.js.map +0 -1
  75. package/dist/internal/composites/calendar.d.ts +0 -35
  76. package/dist/internal/composites/calendar.d.ts.map +0 -1
  77. package/dist/internal/composites/calendar.js +0 -139
  78. package/dist/internal/composites/calendar.js.map +0 -1
  79. package/dist/internal/composites/combobox.d.ts +0 -41
  80. package/dist/internal/composites/combobox.d.ts.map +0 -1
  81. package/dist/internal/composites/combobox.js +0 -184
  82. package/dist/internal/composites/combobox.js.map +0 -1
  83. package/dist/internal/composites/grid-control.d.ts +0 -36
  84. package/dist/internal/composites/grid-control.d.ts.map +0 -1
  85. package/dist/internal/composites/grid-control.js +0 -86
  86. package/dist/internal/composites/grid-control.js.map +0 -1
  87. package/dist/internal/composites/linear-action.d.ts +0 -35
  88. package/dist/internal/composites/linear-action.d.ts.map +0 -1
  89. package/dist/internal/composites/linear-action.js +0 -92
  90. package/dist/internal/composites/linear-action.js.map +0 -1
  91. package/dist/internal/composites/linear-choice.d.ts +0 -41
  92. package/dist/internal/composites/linear-choice.d.ts.map +0 -1
  93. package/dist/internal/composites/linear-choice.js +0 -139
  94. package/dist/internal/composites/linear-choice.js.map +0 -1
  95. package/dist/internal/composites/listbox.d.ts +0 -50
  96. package/dist/internal/composites/listbox.d.ts.map +0 -1
  97. package/dist/internal/composites/listbox.js +0 -243
  98. package/dist/internal/composites/listbox.js.map +0 -1
  99. package/dist/internal/composites/menu.d.ts +0 -28
  100. package/dist/internal/composites/menu.d.ts.map +0 -1
  101. package/dist/internal/composites/menu.js +0 -72
  102. package/dist/internal/composites/menu.js.map +0 -1
  103. package/dist/internal/composites/popup.d.ts +0 -20
  104. package/dist/internal/composites/popup.d.ts.map +0 -1
  105. package/dist/internal/composites/popup.js +0 -8
  106. package/dist/internal/composites/popup.js.map +0 -1
  107. package/dist/internal/composites/slider.d.ts +0 -20
  108. package/dist/internal/composites/slider.d.ts.map +0 -1
  109. package/dist/internal/composites/slider.js +0 -69
  110. package/dist/internal/composites/slider.js.map +0 -1
  111. package/dist/internal/composites/tree-grid.d.ts +0 -65
  112. package/dist/internal/composites/tree-grid.d.ts.map +0 -1
  113. package/dist/internal/composites/tree-grid.js +0 -274
  114. package/dist/internal/composites/tree-grid.js.map +0 -1
  115. package/dist/internal/composites/tree-view.d.ts +0 -39
  116. package/dist/internal/composites/tree-view.d.ts.map +0 -1
  117. package/dist/internal/composites/tree-view.js +0 -175
  118. package/dist/internal/composites/tree-view.js.map +0 -1
  119. package/dist/internal/editing/text.d.ts +0 -64
  120. package/dist/internal/editing/text.d.ts.map +0 -1
  121. package/dist/internal/editing/text.js +0 -238
  122. package/dist/internal/editing/text.js.map +0 -1
  123. package/dist/internal/kernel/decimal.d.ts +0 -22
  124. package/dist/internal/kernel/decimal.d.ts.map +0 -1
  125. package/dist/internal/kernel/decimal.js +0 -137
  126. package/dist/internal/kernel/decimal.js.map +0 -1
  127. package/dist/internal/kernel/foundation.d.ts +0 -12
  128. package/dist/internal/kernel/foundation.d.ts.map +0 -1
  129. package/dist/internal/kernel/foundation.js +0 -132
  130. package/dist/internal/kernel/foundation.js.map +0 -1
  131. package/dist/internal/kernel/indexed-sequence.d.ts +0 -26
  132. package/dist/internal/kernel/indexed-sequence.d.ts.map +0 -1
  133. package/dist/internal/kernel/indexed-sequence.js +0 -117
  134. package/dist/internal/kernel/indexed-sequence.js.map +0 -1
  135. package/dist/internal/kernel/machine.d.ts +0 -8
  136. package/dist/internal/kernel/machine.d.ts.map +0 -1
  137. package/dist/internal/kernel/machine.js +0 -6
  138. package/dist/internal/kernel/machine.js.map +0 -1
  139. package/dist/internal/runtime/revision.d.ts +0 -22
  140. package/dist/internal/runtime/revision.d.ts.map +0 -1
  141. package/dist/internal/runtime/revision.js +0 -72
  142. package/dist/internal/runtime/revision.js.map +0 -1
  143. package/dist/internal/state/checked.d.ts +0 -21
  144. package/dist/internal/state/checked.d.ts.map +0 -1
  145. package/dist/internal/state/checked.js +0 -29
  146. package/dist/internal/state/checked.js.map +0 -1
  147. package/dist/internal/state/cursor.d.ts +0 -13
  148. package/dist/internal/state/cursor.d.ts.map +0 -1
  149. package/dist/internal/state/cursor.js +0 -24
  150. package/dist/internal/state/cursor.js.map +0 -1
  151. package/dist/internal/state/expansion.d.ts +0 -8
  152. package/dist/internal/state/expansion.d.ts.map +0 -1
  153. package/dist/internal/state/expansion.js +0 -23
  154. package/dist/internal/state/expansion.js.map +0 -1
  155. package/dist/internal/state/open-state.d.ts +0 -16
  156. package/dist/internal/state/open-state.d.ts.map +0 -1
  157. package/dist/internal/state/open-state.js +0 -25
  158. package/dist/internal/state/open-state.js.map +0 -1
  159. package/dist/internal/state/selection.d.ts +0 -23
  160. package/dist/internal/state/selection.d.ts.map +0 -1
  161. package/dist/internal/state/selection.js +0 -110
  162. package/dist/internal/state/selection.js.map +0 -1
  163. package/dist/listbox.d.ts +0 -2
  164. package/dist/listbox.d.ts.map +0 -1
  165. package/dist/listbox.js +0 -2
  166. package/dist/listbox.js.map +0 -1
  167. package/dist/menu-button.d.ts +0 -3
  168. package/dist/menu-button.d.ts.map +0 -1
  169. package/dist/menu-button.js +0 -3
  170. package/dist/menu-button.js.map +0 -1
  171. package/dist/menu.d.ts +0 -8
  172. package/dist/menu.d.ts.map +0 -1
  173. package/dist/menu.js +0 -4
  174. package/dist/menu.js.map +0 -1
  175. package/dist/menubar.d.ts +0 -3
  176. package/dist/menubar.d.ts.map +0 -1
  177. package/dist/menubar.js +0 -3
  178. package/dist/menubar.js.map +0 -1
  179. package/dist/multi-thumb-slider.d.ts +0 -35
  180. package/dist/multi-thumb-slider.d.ts.map +0 -1
  181. package/dist/multi-thumb-slider.js +0 -68
  182. package/dist/multi-thumb-slider.js.map +0 -1
  183. package/dist/number-field.d.ts +0 -49
  184. package/dist/number-field.d.ts.map +0 -1
  185. package/dist/number-field.js +0 -454
  186. package/dist/number-field.js.map +0 -1
  187. package/dist/pagination.d.ts +0 -63
  188. package/dist/pagination.d.ts.map +0 -1
  189. package/dist/pagination.js +0 -190
  190. package/dist/pagination.js.map +0 -1
  191. package/dist/pin-input.d.ts +0 -29
  192. package/dist/pin-input.d.ts.map +0 -1
  193. package/dist/pin-input.js +0 -49
  194. package/dist/pin-input.js.map +0 -1
  195. package/dist/quantity-field.d.ts +0 -58
  196. package/dist/quantity-field.d.ts.map +0 -1
  197. package/dist/quantity-field.js +0 -250
  198. package/dist/quantity-field.js.map +0 -1
  199. package/dist/radio-group.d.ts +0 -22
  200. package/dist/radio-group.d.ts.map +0 -1
  201. package/dist/radio-group.js +0 -16
  202. package/dist/radio-group.js.map +0 -1
  203. package/dist/rating.d.ts +0 -17
  204. package/dist/rating.d.ts.map +0 -1
  205. package/dist/rating.js +0 -15
  206. package/dist/rating.js.map +0 -1
  207. package/dist/result.d.ts +0 -10
  208. package/dist/result.d.ts.map +0 -1
  209. package/dist/result.js +0 -19
  210. package/dist/result.js.map +0 -1
  211. package/dist/revision.d.ts +0 -2
  212. package/dist/revision.d.ts.map +0 -1
  213. package/dist/revision.js +0 -2
  214. package/dist/revision.js.map +0 -1
  215. package/dist/select.d.ts +0 -30
  216. package/dist/select.d.ts.map +0 -1
  217. package/dist/select.js +0 -28
  218. package/dist/select.js.map +0 -1
  219. package/dist/shared.d.ts +0 -42
  220. package/dist/shared.d.ts.map +0 -1
  221. package/dist/shared.js +0 -3
  222. package/dist/shared.js.map +0 -1
  223. package/dist/slider.d.ts +0 -2
  224. package/dist/slider.d.ts.map +0 -1
  225. package/dist/slider.js +0 -2
  226. package/dist/slider.js.map +0 -1
  227. package/dist/spin-button.d.ts +0 -29
  228. package/dist/spin-button.d.ts.map +0 -1
  229. package/dist/spin-button.js +0 -61
  230. package/dist/spin-button.js.map +0 -1
  231. package/dist/stepper.d.ts +0 -17
  232. package/dist/stepper.d.ts.map +0 -1
  233. package/dist/stepper.js +0 -12
  234. package/dist/stepper.js.map +0 -1
  235. package/dist/structures/grid.d.ts +0 -27
  236. package/dist/structures/grid.d.ts.map +0 -1
  237. package/dist/structures/grid.js +0 -197
  238. package/dist/structures/grid.js.map +0 -1
  239. package/dist/structures/range.d.ts +0 -39
  240. package/dist/structures/range.d.ts.map +0 -1
  241. package/dist/structures/range.js +0 -242
  242. package/dist/structures/range.js.map +0 -1
  243. package/dist/structures/sequence.d.ts +0 -17
  244. package/dist/structures/sequence.d.ts.map +0 -1
  245. package/dist/structures/sequence.js +0 -24
  246. package/dist/structures/sequence.js.map +0 -1
  247. package/dist/structures/tree.d.ts +0 -32
  248. package/dist/structures/tree.d.ts.map +0 -1
  249. package/dist/structures/tree.js +0 -234
  250. package/dist/structures/tree.js.map +0 -1
  251. package/dist/switch.d.ts +0 -20
  252. package/dist/switch.d.ts.map +0 -1
  253. package/dist/switch.js +0 -4
  254. package/dist/switch.js.map +0 -1
  255. package/dist/tabs.d.ts +0 -15
  256. package/dist/tabs.d.ts.map +0 -1
  257. package/dist/tabs.js +0 -23
  258. package/dist/tabs.js.map +0 -1
  259. package/dist/tags-input.d.ts +0 -41
  260. package/dist/tags-input.d.ts.map +0 -1
  261. package/dist/tags-input.js +0 -44
  262. package/dist/tags-input.js.map +0 -1
  263. package/dist/text.d.ts +0 -2
  264. package/dist/text.d.ts.map +0 -1
  265. package/dist/text.js +0 -2
  266. package/dist/text.js.map +0 -1
  267. package/dist/time-field.d.ts +0 -46
  268. package/dist/time-field.d.ts.map +0 -1
  269. package/dist/time-field.js +0 -148
  270. package/dist/time-field.js.map +0 -1
  271. package/dist/toggle-button.d.ts +0 -19
  272. package/dist/toggle-button.d.ts.map +0 -1
  273. package/dist/toggle-button.js +0 -16
  274. package/dist/toggle-button.js.map +0 -1
  275. package/dist/toolbar.d.ts +0 -2
  276. package/dist/toolbar.d.ts.map +0 -1
  277. package/dist/toolbar.js +0 -2
  278. package/dist/toolbar.js.map +0 -1
  279. package/dist/tooltip.d.ts +0 -2
  280. package/dist/tooltip.d.ts.map +0 -1
  281. package/dist/tooltip.js +0 -2
  282. package/dist/tooltip.js.map +0 -1
  283. package/dist/tree-grid.d.ts +0 -10
  284. package/dist/tree-grid.d.ts.map +0 -1
  285. package/dist/tree-grid.js +0 -14
  286. package/dist/tree-grid.js.map +0 -1
  287. package/dist/tree-view.d.ts +0 -2
  288. package/dist/tree-view.d.ts.map +0 -1
  289. package/dist/tree-view.js +0 -2
  290. package/dist/tree-view.js.map +0 -1
  291. package/dist/units.d.ts +0 -72
  292. package/dist/units.d.ts.map +0 -1
  293. package/dist/units.js +0 -496
  294. package/dist/units.js.map +0 -1
  295. package/dist/window-splitter.d.ts +0 -2
  296. package/dist/window-splitter.d.ts.map +0 -1
  297. package/dist/window-splitter.js +0 -2
  298. package/dist/window-splitter.js.map +0 -1
@@ -1,137 +0,0 @@
1
- const DECIMAL = /^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))$/u;
2
- export function parseDecimal(value) {
3
- const match = DECIMAL.exec(value);
4
- if (match === null)
5
- return null;
6
- const sign = match[1] === '-' ? -1n : 1n;
7
- const integer = match[2] ?? '0';
8
- const fraction = match[3] ?? match[4] ?? '';
9
- let coefficient = sign * BigInt(`${integer}${fraction}`);
10
- let scale = fraction.length;
11
- if (coefficient === 0n)
12
- return { coefficient: 0n, scale: 0 };
13
- while (scale > 0 && coefficient % 10n === 0n) {
14
- coefficient /= 10n;
15
- scale -= 1;
16
- }
17
- return { coefficient, scale };
18
- }
19
- export function decimalToString(value) {
20
- const normalized = normalizeDecimal(value);
21
- const negative = normalized.coefficient < 0n;
22
- const digits = (negative ? -normalized.coefficient : normalized.coefficient).toString();
23
- if (normalized.scale === 0)
24
- return `${negative ? '-' : ''}${digits}`;
25
- const padded = digits.padStart(normalized.scale + 1, '0');
26
- const split = padded.length - normalized.scale;
27
- return `${negative ? '-' : ''}${padded.slice(0, split)}.${padded.slice(split)}`;
28
- }
29
- export function normalizeDecimal(value) {
30
- let { coefficient, scale } = value;
31
- if (coefficient === 0n)
32
- return { coefficient: 0n, scale: 0 };
33
- while (scale > 0 && coefficient % 10n === 0n) {
34
- coefficient /= 10n;
35
- scale -= 1;
36
- }
37
- return { coefficient, scale };
38
- }
39
- export function alignDecimals(left, right) {
40
- const scale = Math.max(left.scale, right.scale);
41
- return [
42
- left.coefficient * pow10(scale - left.scale),
43
- right.coefficient * pow10(scale - right.scale),
44
- scale,
45
- ];
46
- }
47
- export function compareDecimal(left, right) {
48
- const [a, b] = alignDecimals(left, right);
49
- return a === b ? 0 : a < b ? -1 : 1;
50
- }
51
- export function addDecimal(left, right) {
52
- const [a, b, scale] = alignDecimals(left, right);
53
- return normalizeDecimal({ coefficient: a + b, scale });
54
- }
55
- export function subtractDecimal(left, right) {
56
- const [a, b, scale] = alignDecimals(left, right);
57
- return normalizeDecimal({ coefficient: a - b, scale });
58
- }
59
- export function negateDecimal(value) {
60
- return Object.freeze({ coefficient: -value.coefficient, scale: value.scale });
61
- }
62
- export function multiplyDecimal(left, right) {
63
- return normalizeDecimal({
64
- coefficient: left.coefficient * right.coefficient,
65
- scale: left.scale + right.scale,
66
- });
67
- }
68
- export function multiplyDecimalByInteger(value, factor) {
69
- return normalizeDecimal({ coefficient: value.coefficient * factor, scale: value.scale });
70
- }
71
- export function decimalQuotient(numerator, denominator) {
72
- const numeratorInteger = numerator.coefficient * pow10(denominator.scale);
73
- const denominatorInteger = denominator.coefficient * pow10(numerator.scale);
74
- if (denominatorInteger === 0n)
75
- throw new RangeError('division by zero');
76
- return denominatorInteger < 0n
77
- ? [-numeratorInteger, -denominatorInteger]
78
- : [numeratorInteger, denominatorInteger];
79
- }
80
- export function divideDecimal(numerator, denominator, scale, rounding) {
81
- if (!Number.isSafeInteger(scale) || scale < 0) {
82
- throw new RangeError('division scale must be a non-negative safe integer');
83
- }
84
- if (!isDecimalRounding(rounding)) {
85
- throw new RangeError('unsupported decimal rounding policy');
86
- }
87
- if (denominator.coefficient === 0n)
88
- return null;
89
- const [rawNumerator, rawDenominator] = decimalQuotient(numerator, denominator);
90
- const negative = rawNumerator < 0n;
91
- const absoluteNumerator = negative ? -rawNumerator : rawNumerator;
92
- const scaled = absoluteNumerator * pow10(scale);
93
- let coefficient = scaled / rawDenominator;
94
- const remainder = scaled % rawDenominator;
95
- if (rounding !== 'toward-zero' && remainder !== 0n) {
96
- const comparison = remainder * 2n - rawDenominator;
97
- if (comparison > 0n
98
- || (comparison === 0n && rounding === 'half-up')
99
- || (comparison === 0n && rounding === 'half-even' && coefficient % 2n !== 0n)) {
100
- coefficient += 1n;
101
- }
102
- }
103
- return normalizeDecimal({ coefficient: negative ? -coefficient : coefficient, scale });
104
- }
105
- export function greatestCommonDivisor(left, right) {
106
- let a = left < 0n ? -left : left;
107
- let b = right < 0n ? -right : right;
108
- while (b !== 0n)
109
- [a, b] = [b, a % b];
110
- return a;
111
- }
112
- export function reduceFraction(numerator, denominator) {
113
- if (denominator === 0n)
114
- throw new RangeError('denominator must not be zero');
115
- const sign = denominator < 0n ? -1n : 1n;
116
- const gcd = greatestCommonDivisor(numerator, denominator);
117
- if (gcd === 0n)
118
- return [0n, 1n];
119
- return [(numerator / gcd) * sign, (denominator / gcd) * sign];
120
- }
121
- export function floorFraction(numerator, denominator) {
122
- if (denominator <= 0n)
123
- throw new RangeError('positive denominator required');
124
- if (numerator >= 0n)
125
- return numerator / denominator;
126
- return -((-numerator + denominator - 1n) / denominator);
127
- }
128
- export function pow10(exponent) {
129
- if (!Number.isSafeInteger(exponent) || exponent < 0) {
130
- throw new RangeError('decimal scale must be a non-negative safe integer');
131
- }
132
- return 10n ** BigInt(exponent);
133
- }
134
- function isDecimalRounding(value) {
135
- return value === 'half-even' || value === 'half-up' || value === 'toward-zero';
136
- }
137
- //# sourceMappingURL=decimal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decimal.js","sourceRoot":"","sources":["../../../src/internal/kernel/decimal.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { type Result, type SectileError, type StableID } from '../../shared.js';
2
- export declare function ok<T>(value: T): Result<T>;
3
- export declare function fail<T = never>(errorClass: SectileError['class'], code: string, message: string, details?: Readonly<Record<string, unknown>>): Result<T>;
4
- export declare function resourceError(code: string, message: string, details?: Readonly<Record<string, unknown>>): SectileError;
5
- export declare function isWellFormedUTF16(value: string): boolean;
6
- export declare function validateStableID(id: string, maxIDCodeUnits?: number): SectileError | null;
7
- export declare function validateSafeCeiling(value: number, name: string, minimum?: number): SectileError | null;
8
- export declare function normalizeMaxScan(maxScan: number | undefined): number | SectileError;
9
- export declare function freezeArray<T>(values: readonly T[]): readonly T[];
10
- export declare function assertNever(value: never): never;
11
- export declare function validateUniqueIDs<ID extends StableID>(ids: readonly ID[], maxIDCodeUnits: number): Result<readonly ID[]>;
12
- //# sourceMappingURL=foundation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"foundation.d.ts","sourceRoot":"","sources":["../../../src/internal/kernel/foundation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAEzC;AAED,wBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,EAC5B,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC1C,MAAM,CAAC,CAAC,CAAC,CAUX;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC1C,YAAY,CAOd;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAYxD;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,cAAc,GAAE,MAAkC,GACjD,YAAY,GAAG,IAAI,CAyCrB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,SAAI,GACV,YAAY,GAAG,IAAI,CAUrB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,CAUnF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAEjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE/C;AASD,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,QAAQ,EACnD,GAAG,EAAE,SAAS,EAAE,EAAE,EAClB,cAAc,EAAE,MAAM,GACrB,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAkBvB"}
@@ -1,132 +0,0 @@
1
- import { DEFAULT_MAX_ID_CODE_UNITS, } from '../../shared.js';
2
- export function ok(value) {
3
- return { ok: true, value };
4
- }
5
- export function fail(errorClass, code, message, details) {
6
- return {
7
- ok: false,
8
- error: {
9
- class: errorClass,
10
- code,
11
- message,
12
- ...(details === undefined ? {} : { details }),
13
- },
14
- };
15
- }
16
- export function resourceError(code, message, details) {
17
- return {
18
- class: 'resource-rejection',
19
- code,
20
- message,
21
- ...(details === undefined ? {} : { details }),
22
- };
23
- }
24
- export function isWellFormedUTF16(value) {
25
- for (let index = 0; index < value.length; index += 1) {
26
- const code = value.charCodeAt(index);
27
- if (code >= 0xd800 && code <= 0xdbff) {
28
- const next = value.charCodeAt(index + 1);
29
- if (!(next >= 0xdc00 && next <= 0xdfff))
30
- return false;
31
- index += 1;
32
- }
33
- else if (code >= 0xdc00 && code <= 0xdfff) {
34
- return false;
35
- }
36
- }
37
- return true;
38
- }
39
- export function validateStableID(id, maxIDCodeUnits = DEFAULT_MAX_ID_CODE_UNITS) {
40
- if (typeof id !== 'string') {
41
- return {
42
- class: 'construction',
43
- code: 'invalid-id-type',
44
- message: 'Stable IDs must be strings.',
45
- details: { receivedType: typeof id },
46
- };
47
- }
48
- if (!Number.isSafeInteger(maxIDCodeUnits) || maxIDCodeUnits < 1) {
49
- return {
50
- class: 'construction',
51
- code: 'invalid-max-id-code-units',
52
- message: 'maxIDCodeUnits must be a positive safe integer.',
53
- details: { maxIDCodeUnits },
54
- };
55
- }
56
- if (id.length === 0) {
57
- return {
58
- class: 'construction',
59
- code: 'empty-id',
60
- message: 'Stable IDs must not be empty.',
61
- };
62
- }
63
- if (!isWellFormedUTF16(id)) {
64
- return {
65
- class: 'construction',
66
- code: 'ill-formed-id',
67
- message: 'Stable IDs must be well-formed UTF-16 strings.',
68
- details: { id },
69
- };
70
- }
71
- if (id.length > maxIDCodeUnits) {
72
- return {
73
- class: 'resource-rejection',
74
- code: 'id-code-unit-ceiling-exceeded',
75
- message: 'Stable ID exceeds maxIDCodeUnits.',
76
- details: { idCodeUnits: id.length, maxIDCodeUnits },
77
- };
78
- }
79
- return null;
80
- }
81
- export function validateSafeCeiling(value, name, minimum = 0) {
82
- if (!Number.isSafeInteger(value) || value < minimum) {
83
- return {
84
- class: 'construction',
85
- code: `invalid-${toKebabCase(name)}`,
86
- message: `${name} must be a safe integer greater than or equal to ${minimum}.`,
87
- details: { [name]: value },
88
- };
89
- }
90
- return null;
91
- }
92
- export function normalizeMaxScan(maxScan) {
93
- if (maxScan === undefined)
94
- return Number.MAX_SAFE_INTEGER;
95
- if (!Number.isSafeInteger(maxScan) || maxScan < 0) {
96
- return resourceError('invalid-scan-ceiling', 'maxScan must be a non-negative safe integer.', { maxScan });
97
- }
98
- return maxScan;
99
- }
100
- export function freezeArray(values) {
101
- return Object.freeze([...values]);
102
- }
103
- export function assertNever(value) {
104
- throw new Error(`Internal invariant breach: unexpected value ${String(value)}`);
105
- }
106
- function toKebabCase(value) {
107
- return value
108
- .replace(/([a-z0-9])([A-Z])/gu, '$1-$2')
109
- .replace(/([A-Z]+)([A-Z][a-z])/gu, '$1-$2')
110
- .toLowerCase();
111
- }
112
- export function validateUniqueIDs(ids, maxIDCodeUnits) {
113
- const seen = new Set();
114
- for (let index = 0; index < ids.length; index += 1) {
115
- const id = ids[index];
116
- if (id === undefined) {
117
- return fail('construction', 'invalid-id-type', 'Stable IDs must be strings.', { index });
118
- }
119
- const idError = validateStableID(id, maxIDCodeUnits);
120
- if (idError !== null)
121
- return { ok: false, error: idError };
122
- if (seen.has(id)) {
123
- return fail('construction', 'duplicate-id', 'Stable identities must be unique.', {
124
- id,
125
- index,
126
- });
127
- }
128
- seen.add(id);
129
- }
130
- return ok(freezeArray(ids));
131
- }
132
- //# sourceMappingURL=foundation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"foundation.js","sourceRoot":"","sources":["../../../src/internal/kernel/foundation.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import { type BoundaryPolicy, type Direction, type MoveResult, type Result, type ScanOptions, type StableID } from '../../shared.js';
2
- export interface SequenceView<ID extends StableID> {
3
- readonly size: number;
4
- readonly ids: readonly ID[];
5
- at(index: number): ID | null;
6
- indexOf(id: ID): number | null;
7
- contains(id: ID): boolean;
8
- compare(left: ID, right: ID): -1 | 0 | 1 | null;
9
- project(predicate: (id: ID, index: number) => boolean): SequenceView<ID>;
10
- move(current: ID, direction: Direction, boundary?: BoundaryPolicy, options?: ScanOptions<ID>): MoveResult<ID>;
11
- }
12
- export declare class IndexedSequence<ID extends StableID> implements SequenceView<ID> {
13
- #private;
14
- readonly ids: readonly ID[];
15
- constructor(ids: readonly ID[]);
16
- get size(): number;
17
- at(index: number): ID | null;
18
- indexOf(id: ID): number | null;
19
- contains(id: ID): boolean;
20
- compare(left: ID, right: ID): -1 | 0 | 1 | null;
21
- project(predicate: (id: ID, index: number) => boolean): IndexedSequence<ID>;
22
- move(current: ID, direction: Direction, boundary?: BoundaryPolicy, options?: ScanOptions<ID>): MoveResult<ID>;
23
- }
24
- export declare function moveInSequence<ID extends StableID>(ids: readonly ID[], index: ReadonlyMap<ID, number> | null, current: ID, direction: Direction, boundary: BoundaryPolicy, options: ScanOptions<ID>): MoveResult<ID>;
25
- export declare function findEligibleFromEdge<ID extends StableID>(sequence: SequenceView<ID>, direction: Direction, options?: ScanOptions<ID>): Result<ID | null>;
26
- //# sourceMappingURL=indexed-sequence.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"indexed-sequence.d.ts","sourceRoot":"","sources":["../../../src/internal/kernel/indexed-sequence.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,WAAW,EAEhB,KAAK,QAAQ,EACd,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,YAAY,CAAC,EAAE,SAAS,QAAQ;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC;IAC5B,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IAC1B,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAChD,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IACzE,IAAI,CACF,OAAO,EAAE,EAAE,EACX,SAAS,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,cAAc,EACzB,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,GACxB,UAAU,CAAC,EAAE,CAAC,CAAC;CACnB;AAED,qBAAa,eAAe,CAAC,EAAE,SAAS,QAAQ,CAAE,YAAW,YAAY,CAAC,EAAE,CAAC;;IAC3E,SAAgB,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC;IAGnC,YAAmB,GAAG,EAAE,SAAS,EAAE,EAAE,EAIpC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAEM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI,CAIlC;IAEM,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI,CAEpC;IAEM,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAE/B;IAEM,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAKrD;IAEM,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,eAAe,CAAC,EAAE,CAAC,CAEjF;IAEM,IAAI,CACT,OAAO,EAAE,EAAE,EACX,SAAS,EAAE,SAAS,EACpB,QAAQ,GAAE,cAAuB,EACjC,OAAO,GAAE,WAAW,CAAC,EAAE,CAAM,GAC5B,UAAU,CAAC,EAAE,CAAC,CAEhB;CACF;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,QAAQ,EAChD,GAAG,EAAE,SAAS,EAAE,EAAE,EAClB,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,EACrC,OAAO,EAAE,EAAE,EACX,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,GACvB,UAAU,CAAC,EAAE,CAAC,CAuChB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,QAAQ,EACtD,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,EAC1B,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,WAAW,CAAC,EAAE,CAAM,GAC5B,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,CAwBnB"}
@@ -1,117 +0,0 @@
1
- import {} from '../../shared.js';
2
- import { freezeArray, normalizeMaxScan, ok, resourceError } from './foundation.js';
3
- export class IndexedSequence {
4
- ids;
5
- #index;
6
- constructor(ids) {
7
- this.ids = freezeArray(ids);
8
- this.#index = new Map(this.ids.map((id, index) => [id, index]));
9
- Object.freeze(this);
10
- }
11
- get size() {
12
- return this.ids.length;
13
- }
14
- at(index) {
15
- return Number.isSafeInteger(index) && index >= 0 && index < this.ids.length
16
- ? (this.ids[index] ?? null)
17
- : null;
18
- }
19
- indexOf(id) {
20
- return this.#index.get(id) ?? null;
21
- }
22
- contains(id) {
23
- return this.#index.has(id);
24
- }
25
- compare(left, right) {
26
- const leftIndex = this.#index.get(left);
27
- const rightIndex = this.#index.get(right);
28
- if (leftIndex === undefined || rightIndex === undefined)
29
- return null;
30
- return leftIndex === rightIndex ? 0 : leftIndex < rightIndex ? -1 : 1;
31
- }
32
- project(predicate) {
33
- return new IndexedSequence(this.ids.filter(predicate));
34
- }
35
- move(current, direction, boundary = 'stop', options = {}) {
36
- return moveInSequence(this.ids, this.#index, current, direction, boundary, options);
37
- }
38
- }
39
- export function moveInSequence(ids, index, current, direction, boundary, options) {
40
- const currentIndex = index === null ? ids.indexOf(current) : index.get(current);
41
- if (currentIndex === undefined || currentIndex < 0)
42
- return { kind: 'none', scanned: 0 };
43
- if (direction !== -1 && direction !== 1)
44
- return invalidMovement('invalid-direction');
45
- if (boundary !== 'stop' && boundary !== 'wrap')
46
- return invalidMovement('invalid-boundary');
47
- const normalized = normalizeMaxScan(options.maxScan);
48
- if (typeof normalized !== 'number') {
49
- return { kind: 'resource-rejected', scanned: 0, error: normalized };
50
- }
51
- const eligible = options.eligible ?? (() => true);
52
- const size = ids.length;
53
- let scanned = 0;
54
- let candidateIndex = currentIndex + direction;
55
- while (candidateIndex >= 0 && candidateIndex < size) {
56
- if (scanned === normalized)
57
- return scanRejected(scanned, normalized);
58
- const candidate = ids[candidateIndex];
59
- scanned += 1;
60
- if (candidate !== undefined && eligible(candidate)) {
61
- return { kind: 'found', id: candidate, scanned };
62
- }
63
- candidateIndex += direction;
64
- }
65
- if (boundary === 'wrap') {
66
- candidateIndex = direction > 0 ? 0 : size - 1;
67
- while (candidateIndex !== currentIndex) {
68
- if (scanned === normalized)
69
- return scanRejected(scanned, normalized);
70
- const candidate = ids[candidateIndex];
71
- scanned += 1;
72
- if (candidate !== undefined && eligible(candidate)) {
73
- return { kind: 'found', id: candidate, scanned };
74
- }
75
- candidateIndex += direction;
76
- }
77
- }
78
- return { kind: 'none', scanned };
79
- }
80
- export function findEligibleFromEdge(sequence, direction, options = {}) {
81
- const maxScan = normalizeMaxScan(options.maxScan);
82
- if (typeof maxScan !== 'number')
83
- return { ok: false, error: maxScan };
84
- const eligible = options.eligible ?? (() => true);
85
- let scanned = 0;
86
- let index = direction > 0 ? 0 : sequence.size - 1;
87
- while (index >= 0 && index < sequence.size) {
88
- if (scanned === maxScan) {
89
- return {
90
- ok: false,
91
- error: resourceError('scan-ceiling-reached', 'Movement reached maxScan before its semantic result was determined.', { maxScan }),
92
- };
93
- }
94
- const id = sequence.at(index);
95
- scanned += 1;
96
- if (id !== null && eligible(id))
97
- return ok(id);
98
- index += direction;
99
- }
100
- return ok(null);
101
- }
102
- function scanRejected(scanned, maxScan) {
103
- return {
104
- kind: 'resource-rejected',
105
- scanned,
106
- error: resourceError('scan-ceiling-reached', 'Movement reached maxScan before its semantic result was determined.', { maxScan }),
107
- };
108
- }
109
- function invalidMovement(code) {
110
- const error = {
111
- class: 'internal-invariant',
112
- code,
113
- message: 'Movement received an impossible runtime value.',
114
- };
115
- return { kind: 'resource-rejected', scanned: 0, error };
116
- }
117
- //# sourceMappingURL=indexed-sequence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"indexed-sequence.js","sourceRoot":"","sources":["../../../src/internal/kernel/indexed-sequence.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { Result } from '../../shared.js';
2
- export interface MachineUpdate<State, Command> {
3
- readonly state: State;
4
- readonly commands: readonly Command[];
5
- }
6
- export type EventReducer<State, Event, Command> = (state: State, event: Event) => Result<MachineUpdate<State, Command>>;
7
- export declare function createMachineUpdate<State, Command extends object>(state: State, commands?: readonly Command[]): Result<MachineUpdate<State, Command>>;
8
- //# sourceMappingURL=machine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../../src/internal/kernel/machine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG9C,MAAM,WAAW,aAAa,CAAC,KAAK,EAAE,OAAO;IAC3C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;CACvC;AAED,MAAM,MAAM,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,CAChD,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,KACT,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,SAAS,MAAM,EAC/D,KAAK,EAAE,KAAK,EACZ,QAAQ,GAAE,SAAS,OAAO,EAAO,GAChC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAKvC"}
@@ -1,6 +0,0 @@
1
- import { freezeArray, ok } from './foundation.js';
2
- export function createMachineUpdate(state, commands = []) {
3
- const frozenCommands = freezeArray(commands.map((command) => Object.freeze({ ...command })));
4
- return ok(Object.freeze({ state, commands: frozenCommands }));
5
- }
6
- //# sourceMappingURL=machine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"machine.js","sourceRoot":"","sources":["../../../src/internal/kernel/machine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAYlD,MAAM,UAAU,mBAAmB,CACjC,KAAY,EACZ,QAAQ,GAAuB,EAAE;IAEjC,MAAM,cAAc,GAAG,WAAW,CAChC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,CAAY,CAAC,CACpE,CAAC;IACF,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;AAChE,CAAC"}
@@ -1,22 +0,0 @@
1
- import type { Result, SectileError } from '../../shared.js';
2
- import type { EventReducer } from '../kernel/machine.js';
3
- export type { EventReducer, MachineUpdate } from '../kernel/machine.js';
4
- export interface RevisionSnapshot<State> {
5
- readonly revision: number;
6
- readonly state: State;
7
- }
8
- export type RevisionResult<State, Command> = {
9
- readonly ok: true;
10
- readonly snapshot: RevisionSnapshot<State>;
11
- readonly commands: readonly Command[];
12
- } | {
13
- readonly ok: false;
14
- readonly snapshot: RevisionSnapshot<State>;
15
- readonly commands: readonly [];
16
- readonly error: SectileError;
17
- };
18
- export declare function createRevisionSnapshot<State>(state: State, revision?: number): Result<RevisionSnapshot<State>>;
19
- export declare function applyRevisionedEvent<State, Event, Command>(current: RevisionSnapshot<State>, expectedRevision: number, event: Event, reducer: EventReducer<State, Event, Command>): RevisionResult<State, Command>;
20
- export declare function mapRevisionCommands<State, Command, Effect>(result: RevisionResult<State, Command>, toEffect: (command: Command) => Effect): RevisionResult<State, Effect>;
21
- export declare function rejectRevisionInput<State, Command = never>(current: RevisionSnapshot<State>, error: SectileError): RevisionResult<State, Command>;
22
- //# sourceMappingURL=revision.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"revision.d.ts","sourceRoot":"","sources":["../../../src/internal/runtime/revision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAExE,MAAM,WAAW,gBAAgB,CAAC,KAAK;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,IACrC;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;CACvC,GACD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B,CAAC;AAEN,wBAAgB,sBAAsB,CAAC,KAAK,EAC1C,KAAK,EAAE,KAAK,EACZ,QAAQ,SAAI,GACX,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAUjC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EACxD,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAChC,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAC3C,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAwChC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EACxD,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,EACtC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GACrC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAO/B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,EACxD,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAChC,KAAK,EAAE,YAAY,GAClB,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAEhC"}
@@ -1,72 +0,0 @@
1
- import { fail, freezeArray, ok } from '../kernel/foundation.js';
2
- export function createRevisionSnapshot(state, revision = 0) {
3
- if (!Number.isSafeInteger(revision) || revision < 0) {
4
- return fail('construction', 'invalid-revision', 'Machine revision must be a non-negative safe integer.', { revision });
5
- }
6
- return ok(snapshot(revision, state));
7
- }
8
- export function applyRevisionedEvent(current, expectedRevision, event, reducer) {
9
- if (!Number.isSafeInteger(expectedRevision) || expectedRevision < 0) {
10
- return rejected(current, {
11
- class: 'transition-rejection',
12
- code: 'invalid-expected-revision',
13
- message: 'Expected revision must be a non-negative safe integer.',
14
- details: { expectedRevision },
15
- });
16
- }
17
- if (expectedRevision !== current.revision) {
18
- return rejected(current, {
19
- class: 'transition-rejection',
20
- code: 'stale-revision',
21
- message: 'Expected revision does not match the current machine revision.',
22
- details: { expectedRevision, currentRevision: current.revision },
23
- });
24
- }
25
- if (typeof reducer !== 'function') {
26
- return rejected(current, {
27
- class: 'transition-rejection',
28
- code: 'invalid-machine-reducer',
29
- message: 'Revisioned machine reducer must be a function.',
30
- });
31
- }
32
- if (current.revision === Number.MAX_SAFE_INTEGER) {
33
- return rejected(current, {
34
- class: 'resource-rejection',
35
- code: 'revision-ceiling-reached',
36
- message: 'Machine revision cannot advance beyond the safe-integer ceiling.',
37
- details: { revision: current.revision },
38
- });
39
- }
40
- const update = reducer(current.state, event);
41
- if (!update.ok)
42
- return rejected(current, update.error);
43
- return Object.freeze({
44
- ok: true,
45
- snapshot: snapshot(current.revision + 1, update.value.state),
46
- commands: freezeArray(update.value.commands),
47
- });
48
- }
49
- export function mapRevisionCommands(result, toEffect) {
50
- if (!result.ok)
51
- return result;
52
- return Object.freeze({
53
- ok: true,
54
- snapshot: result.snapshot,
55
- commands: freezeArray(result.commands.map(toEffect)),
56
- });
57
- }
58
- export function rejectRevisionInput(current, error) {
59
- return rejected(current, error);
60
- }
61
- function snapshot(revision, state) {
62
- return Object.freeze({ revision, state });
63
- }
64
- function rejected(current, error) {
65
- return Object.freeze({
66
- ok: false,
67
- snapshot: current,
68
- commands: Object.freeze([]),
69
- error,
70
- });
71
- }
72
- //# sourceMappingURL=revision.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"revision.js","sourceRoot":"","sources":["../../../src/internal/runtime/revision.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { Result } from '../../shared.js';
2
- import { type MachineUpdate } from '../kernel/machine.js';
3
- export type CheckedValue = boolean | 'mixed';
4
- export interface CheckedState {
5
- readonly checked: CheckedValue;
6
- }
7
- export type CheckedEvent = 'toggle' | {
8
- readonly type: 'set-checked';
9
- readonly checked: CheckedValue;
10
- };
11
- export type CheckedCommand = {
12
- readonly type: 'checked-changed';
13
- readonly checked: CheckedValue;
14
- };
15
- export interface CheckedPolicies {
16
- readonly allowMixed?: boolean;
17
- readonly mixedToggle?: boolean;
18
- }
19
- export declare function createCheckedState(value?: CheckedValue, policies?: CheckedPolicies): Result<CheckedState>;
20
- export declare function applyCheckedEvent(state: CheckedState, event: CheckedEvent, policies?: CheckedPolicies): Result<MachineUpdate<CheckedState, CheckedCommand>>;
21
- //# sourceMappingURL=checked.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checked.d.ts","sourceRoot":"","sources":["../../../src/internal/state/checked.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;AAC7C,MAAM,WAAW,YAAY;IAAG,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE;AAChE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC;AACvG,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC;AAClG,MAAM,WAAW,eAAe;IAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE;AAElG,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,YAAoB,EAAE,QAAQ,GAAE,eAAoB,GAAG,MAAM,CAAC,YAAY,CAAC,CAKpH;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,GAAE,eAAoB,GAAG,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAY/J"}