@logic-pad/core 0.26.2 → 0.26.3

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 (240) hide show
  1. package/assets/logic-core.global.d.ts +3264 -3264
  2. package/dist/benchmark/helper.d.ts +21 -0
  3. package/dist/benchmark/helper.js +34 -0
  4. package/dist/benchmark/prepareBench.d.ts +1 -0
  5. package/dist/benchmark/prepareBench.js +140 -0
  6. package/dist/benchmark/runBench.d.ts +1 -0
  7. package/dist/benchmark/runBench.js +206 -0
  8. package/dist/src/data/config.d.ts +119 -0
  9. package/dist/src/data/config.js +72 -0
  10. package/dist/src/data/configurable.d.ts +14 -0
  11. package/dist/src/data/configurable.js +26 -0
  12. package/dist/src/data/dataHelper.d.ts +92 -0
  13. package/dist/src/data/dataHelper.js +217 -0
  14. package/dist/src/data/events/eventHelper.d.ts +1 -0
  15. package/dist/src/data/events/eventHelper.js +6 -0
  16. package/dist/src/data/events/onFinalValidation.d.ts +14 -0
  17. package/dist/src/data/events/onFinalValidation.js +4 -0
  18. package/dist/src/data/events/onGetTile.d.ts +7 -0
  19. package/dist/src/data/events/onGetTile.js +4 -0
  20. package/dist/src/data/events/onGridChange.d.ts +6 -0
  21. package/dist/src/data/events/onGridChange.js +4 -0
  22. package/dist/src/data/events/onGridResize.d.ts +9 -0
  23. package/dist/src/data/events/onGridResize.js +4 -0
  24. package/dist/src/data/events/onSetGrid.d.ts +7 -0
  25. package/dist/src/data/events/onSetGrid.js +19 -0
  26. package/dist/src/data/events/onSymbolDisplay.d.ts +16 -0
  27. package/dist/src/data/events/onSymbolDisplay.js +4 -0
  28. package/dist/src/data/events/onSymbolMerge.d.ts +10 -0
  29. package/dist/src/data/events/onSymbolMerge.js +4 -0
  30. package/dist/src/data/events/onSymbolValidation.d.ts +18 -0
  31. package/dist/src/data/events/onSymbolValidation.js +4 -0
  32. package/dist/src/data/grid.d.ts +410 -0
  33. package/dist/src/data/grid.js +1106 -0
  34. package/dist/src/data/gridConnections.d.ts +25 -0
  35. package/dist/src/data/gridConnections.js +309 -0
  36. package/dist/src/data/gridZones.d.ts +26 -0
  37. package/dist/src/data/gridZones.js +117 -0
  38. package/dist/src/data/instruction.d.ts +26 -0
  39. package/dist/src/data/instruction.js +29 -0
  40. package/dist/src/data/primitives.d.ts +138 -0
  41. package/dist/src/data/primitives.js +177 -0
  42. package/dist/src/data/puzzle.d.ts +73 -0
  43. package/dist/src/data/puzzle.js +105 -0
  44. package/dist/src/data/rules/banPatternRule.d.ts +30 -0
  45. package/dist/src/data/rules/banPatternRule.js +125 -0
  46. package/dist/src/data/rules/cellCountPerZoneRule.d.ts +23 -0
  47. package/dist/src/data/rules/cellCountPerZoneRule.js +39 -0
  48. package/dist/src/data/rules/cellCountRule.d.ts +33 -0
  49. package/dist/src/data/rules/cellCountRule.js +138 -0
  50. package/dist/src/data/rules/completePatternRule.d.ts +24 -0
  51. package/dist/src/data/rules/completePatternRule.js +46 -0
  52. package/dist/src/data/rules/connectAllRule.d.ts +29 -0
  53. package/dist/src/data/rules/connectAllRule.js +88 -0
  54. package/dist/src/data/rules/connectZonesRule.d.ts +29 -0
  55. package/dist/src/data/rules/connectZonesRule.js +111 -0
  56. package/dist/src/data/rules/containsShapeRule.d.ts +34 -0
  57. package/dist/src/data/rules/containsShapeRule.js +125 -0
  58. package/dist/src/data/rules/customRule.d.ts +34 -0
  59. package/dist/src/data/rules/customRule.js +74 -0
  60. package/dist/src/data/rules/differentCountPerZoneRule.d.ts +30 -0
  61. package/dist/src/data/rules/differentCountPerZoneRule.js +96 -0
  62. package/dist/src/data/rules/exactCountPerZoneRule.d.ts +33 -0
  63. package/dist/src/data/rules/exactCountPerZoneRule.js +99 -0
  64. package/dist/src/data/rules/foresightRule.d.ts +36 -0
  65. package/dist/src/data/rules/foresightRule.js +107 -0
  66. package/dist/src/data/rules/index.d.ts +3 -0
  67. package/dist/src/data/rules/index.js +10 -0
  68. package/dist/src/data/rules/lyingSymbolRule.d.ts +31 -0
  69. package/dist/src/data/rules/lyingSymbolRule.js +207 -0
  70. package/dist/src/data/rules/musicControlLine.d.ts +82 -0
  71. package/dist/src/data/rules/musicControlLine.js +167 -0
  72. package/dist/src/data/rules/musicGridRule.d.ts +51 -0
  73. package/dist/src/data/rules/musicGridRule.js +212 -0
  74. package/dist/src/data/rules/mysteryRule.d.ts +39 -0
  75. package/dist/src/data/rules/mysteryRule.js +146 -0
  76. package/dist/src/data/rules/noLoopsRule.d.ts +29 -0
  77. package/dist/src/data/rules/noLoopsRule.js +218 -0
  78. package/dist/src/data/rules/offByXRule.d.ts +32 -0
  79. package/dist/src/data/rules/offByXRule.js +124 -0
  80. package/dist/src/data/rules/perfectionRule.d.ts +45 -0
  81. package/dist/src/data/rules/perfectionRule.js +158 -0
  82. package/dist/src/data/rules/regionAreaRule.d.ts +34 -0
  83. package/dist/src/data/rules/regionAreaRule.js +149 -0
  84. package/dist/src/data/rules/regionShapeRule.d.ts +22 -0
  85. package/dist/src/data/rules/regionShapeRule.js +58 -0
  86. package/dist/src/data/rules/rule.d.ts +18 -0
  87. package/dist/src/data/rules/rule.js +19 -0
  88. package/dist/src/data/rules/rules.gen.d.ts +23 -0
  89. package/dist/src/data/rules/rules.gen.js +27 -0
  90. package/dist/src/data/rules/sameCountPerZoneRule.d.ts +30 -0
  91. package/dist/src/data/rules/sameCountPerZoneRule.js +95 -0
  92. package/dist/src/data/rules/sameShapeRule.d.ts +28 -0
  93. package/dist/src/data/rules/sameShapeRule.js +68 -0
  94. package/dist/src/data/rules/symbolsPerRegionRule.d.ts +38 -0
  95. package/dist/src/data/rules/symbolsPerRegionRule.js +181 -0
  96. package/dist/src/data/rules/undercluedRule.d.ts +24 -0
  97. package/dist/src/data/rules/undercluedRule.js +53 -0
  98. package/dist/src/data/rules/uniqueShapeRule.d.ts +28 -0
  99. package/dist/src/data/rules/uniqueShapeRule.js +65 -0
  100. package/dist/src/data/rules/wrapAroundRule.d.ts +36 -0
  101. package/dist/src/data/rules/wrapAroundRule.js +241 -0
  102. package/dist/src/data/serializer/allSerializers.d.ts +35 -0
  103. package/dist/src/data/serializer/allSerializers.js +78 -0
  104. package/dist/src/data/serializer/compressor/allCompressors.d.ts +14 -0
  105. package/dist/src/data/serializer/compressor/allCompressors.js +43 -0
  106. package/dist/src/data/serializer/compressor/checksumCompressor.d.ts +6 -0
  107. package/dist/src/data/serializer/compressor/checksumCompressor.js +21 -0
  108. package/dist/src/data/serializer/compressor/compressorBase.d.ts +16 -0
  109. package/dist/src/data/serializer/compressor/compressorBase.js +2 -0
  110. package/dist/src/data/serializer/compressor/deflateCompressor.d.ts +7 -0
  111. package/dist/src/data/serializer/compressor/deflateCompressor.js +17 -0
  112. package/dist/src/data/serializer/compressor/gzipCompressor.d.ts +5 -0
  113. package/dist/src/data/serializer/compressor/gzipCompressor.js +9 -0
  114. package/dist/src/data/serializer/compressor/streamCompressor.d.ts +6 -0
  115. package/dist/src/data/serializer/compressor/streamCompressor.js +41 -0
  116. package/dist/src/data/serializer/serializerBase.d.ts +32 -0
  117. package/dist/src/data/serializer/serializerBase.js +2 -0
  118. package/dist/src/data/serializer/serializer_checksum.d.ts +35 -0
  119. package/dist/src/data/serializer/serializer_checksum.js +179 -0
  120. package/dist/src/data/serializer/serializer_v0.d.ts +55 -0
  121. package/dist/src/data/serializer/serializer_v0.js +484 -0
  122. package/dist/src/data/shapes.d.ts +19 -0
  123. package/dist/src/data/shapes.js +137 -0
  124. package/dist/src/data/solver/allSolvers.d.ts +3 -0
  125. package/dist/src/data/solver/allSolvers.js +13 -0
  126. package/dist/src/data/solver/auto/autoSolver.d.ts +18 -0
  127. package/dist/src/data/solver/auto/autoSolver.js +156 -0
  128. package/dist/src/data/solver/backtrack/backtrackSolver.d.ts +11 -0
  129. package/dist/src/data/solver/backtrack/backtrackSolver.js +54 -0
  130. package/dist/src/data/solver/backtrack/backtrackWorker.d.ts +1 -0
  131. package/dist/src/data/solver/backtrack/backtrackWorker.js +312 -0
  132. package/dist/src/data/solver/backtrack/data.d.ts +47 -0
  133. package/dist/src/data/solver/backtrack/data.js +151 -0
  134. package/dist/src/data/solver/backtrack/rules/banPattern.d.ts +9 -0
  135. package/dist/src/data/solver/backtrack/rules/banPattern.js +77 -0
  136. package/dist/src/data/solver/backtrack/rules/cellCount.d.ts +7 -0
  137. package/dist/src/data/solver/backtrack/rules/cellCount.js +25 -0
  138. package/dist/src/data/solver/backtrack/rules/connectAll.d.ts +7 -0
  139. package/dist/src/data/solver/backtrack/rules/connectAll.js +44 -0
  140. package/dist/src/data/solver/backtrack/rules/regionArea.d.ts +8 -0
  141. package/dist/src/data/solver/backtrack/rules/regionArea.js +71 -0
  142. package/dist/src/data/solver/backtrack/rules/regionShape.d.ts +8 -0
  143. package/dist/src/data/solver/backtrack/rules/regionShape.js +57 -0
  144. package/dist/src/data/solver/backtrack/rules/sameShape.d.ts +8 -0
  145. package/dist/src/data/solver/backtrack/rules/sameShape.js +14 -0
  146. package/dist/src/data/solver/backtrack/rules/symbolsPerRegion.d.ts +10 -0
  147. package/dist/src/data/solver/backtrack/rules/symbolsPerRegion.js +82 -0
  148. package/dist/src/data/solver/backtrack/rules/uniqueShape.d.ts +8 -0
  149. package/dist/src/data/solver/backtrack/rules/uniqueShape.js +14 -0
  150. package/dist/src/data/solver/backtrack/symbols/areaNumber.d.ts +9 -0
  151. package/dist/src/data/solver/backtrack/symbols/areaNumber.js +75 -0
  152. package/dist/src/data/solver/backtrack/symbols/dart.d.ts +8 -0
  153. package/dist/src/data/solver/backtrack/symbols/dart.js +45 -0
  154. package/dist/src/data/solver/backtrack/symbols/directionLinker.d.ts +11 -0
  155. package/dist/src/data/solver/backtrack/symbols/directionLinker.js +121 -0
  156. package/dist/src/data/solver/backtrack/symbols/focus.d.ts +9 -0
  157. package/dist/src/data/solver/backtrack/symbols/focus.js +48 -0
  158. package/dist/src/data/solver/backtrack/symbols/galaxy.d.ts +9 -0
  159. package/dist/src/data/solver/backtrack/symbols/galaxy.js +14 -0
  160. package/dist/src/data/solver/backtrack/symbols/letter.d.ts +9 -0
  161. package/dist/src/data/solver/backtrack/symbols/letter.js +95 -0
  162. package/dist/src/data/solver/backtrack/symbols/lotus.d.ts +11 -0
  163. package/dist/src/data/solver/backtrack/symbols/lotus.js +55 -0
  164. package/dist/src/data/solver/backtrack/symbols/minesweeper.d.ts +9 -0
  165. package/dist/src/data/solver/backtrack/symbols/minesweeper.js +44 -0
  166. package/dist/src/data/solver/backtrack/symbols/myopia.d.ts +7 -0
  167. package/dist/src/data/solver/backtrack/symbols/myopia.js +73 -0
  168. package/dist/src/data/solver/backtrack/symbols/viewpoint.d.ts +7 -0
  169. package/dist/src/data/solver/backtrack/symbols/viewpoint.js +51 -0
  170. package/dist/src/data/solver/cspuz/cspuzSolver.d.ts +13 -0
  171. package/dist/src/data/solver/cspuz/cspuzSolver.js +124 -0
  172. package/dist/src/data/solver/cspuz/cspuzWorker.d.ts +1 -0
  173. package/dist/src/data/solver/cspuz/cspuzWorker.js +82 -0
  174. package/dist/src/data/solver/cspuz/jsonify.d.ts +3 -0
  175. package/dist/src/data/solver/cspuz/jsonify.js +215 -0
  176. package/dist/src/data/solver/eventIteratingSolver.d.ts +8 -0
  177. package/dist/src/data/solver/eventIteratingSolver.js +54 -0
  178. package/dist/src/data/solver/solver.d.ts +77 -0
  179. package/dist/src/data/solver/solver.js +59 -0
  180. package/dist/src/data/solver/universal/universalSolver.d.ts +7 -0
  181. package/dist/src/data/solver/universal/universalSolver.js +13 -0
  182. package/dist/src/data/solver/universal/universalWorker.d.ts +1 -0
  183. package/dist/src/data/solver/universal/universalWorker.js +128 -0
  184. package/dist/src/data/symbols/areaNumberSymbol.d.ts +31 -0
  185. package/dist/src/data/symbols/areaNumberSymbol.js +80 -0
  186. package/dist/src/data/symbols/customIconSymbol.d.ts +35 -0
  187. package/dist/src/data/symbols/customIconSymbol.js +94 -0
  188. package/dist/src/data/symbols/customSymbol.d.ts +25 -0
  189. package/dist/src/data/symbols/customSymbol.js +45 -0
  190. package/dist/src/data/symbols/customTextSymbol.d.ts +35 -0
  191. package/dist/src/data/symbols/customTextSymbol.js +95 -0
  192. package/dist/src/data/symbols/dartSymbol.d.ts +36 -0
  193. package/dist/src/data/symbols/dartSymbol.js +96 -0
  194. package/dist/src/data/symbols/directionLinkerSymbol.d.ts +29 -0
  195. package/dist/src/data/symbols/directionLinkerSymbol.js +232 -0
  196. package/dist/src/data/symbols/everyLetterSymbol.d.ts +32 -0
  197. package/dist/src/data/symbols/everyLetterSymbol.js +119 -0
  198. package/dist/src/data/symbols/focusSymbol.d.ts +40 -0
  199. package/dist/src/data/symbols/focusSymbol.js +159 -0
  200. package/dist/src/data/symbols/galaxySymbol.d.ts +27 -0
  201. package/dist/src/data/symbols/galaxySymbol.js +61 -0
  202. package/dist/src/data/symbols/hiddenSymbol.d.ts +38 -0
  203. package/dist/src/data/symbols/hiddenSymbol.js +113 -0
  204. package/dist/src/data/symbols/houseSymbol.d.ts +33 -0
  205. package/dist/src/data/symbols/houseSymbol.js +104 -0
  206. package/dist/src/data/symbols/index.d.ts +3 -0
  207. package/dist/src/data/symbols/index.js +10 -0
  208. package/dist/src/data/symbols/letterSymbol.d.ts +32 -0
  209. package/dist/src/data/symbols/letterSymbol.js +118 -0
  210. package/dist/src/data/symbols/lotusSymbol.d.ts +30 -0
  211. package/dist/src/data/symbols/lotusSymbol.js +132 -0
  212. package/dist/src/data/symbols/minesweeperSymbol.d.ts +33 -0
  213. package/dist/src/data/symbols/minesweeperSymbol.js +106 -0
  214. package/dist/src/data/symbols/myopiaSymbol.d.ts +37 -0
  215. package/dist/src/data/symbols/myopiaSymbol.js +182 -0
  216. package/dist/src/data/symbols/numberSymbol.d.ts +19 -0
  217. package/dist/src/data/symbols/numberSymbol.js +32 -0
  218. package/dist/src/data/symbols/symbol.d.ts +29 -0
  219. package/dist/src/data/symbols/symbol.js +87 -0
  220. package/dist/src/data/symbols/symbols.gen.d.ts +15 -0
  221. package/dist/src/data/symbols/symbols.gen.js +19 -0
  222. package/dist/src/data/symbols/unsupportedSymbol.d.ts +23 -0
  223. package/dist/src/data/symbols/unsupportedSymbol.js +47 -0
  224. package/dist/src/data/symbols/viewpointSymbol.d.ts +32 -0
  225. package/dist/src/data/symbols/viewpointSymbol.js +95 -0
  226. package/dist/src/data/tile.d.ts +26 -0
  227. package/dist/src/data/tile.js +56 -0
  228. package/dist/src/data/tileConnections.d.ts +25 -0
  229. package/dist/src/data/tileConnections.js +74 -0
  230. package/dist/src/data/validate.d.ts +5 -0
  231. package/dist/src/data/validate.js +131 -0
  232. package/dist/src/data/validateAsync.d.ts +15 -0
  233. package/dist/src/data/validateAsync.js +71 -0
  234. package/dist/src/data/validateAsyncWorker.d.ts +1 -0
  235. package/dist/src/data/validateAsyncWorker.js +9 -0
  236. package/dist/src/index.d.ts +109 -0
  237. package/dist/src/index.js +112 -0
  238. package/dist/src/polyfill/streamPolyfill.d.ts +2 -0
  239. package/dist/src/polyfill/streamPolyfill.js +1 -0
  240. package/package.json +1 -1
@@ -0,0 +1,131 @@
1
+ import { handlesFinalValidation } from './events/onFinalValidation.js';
2
+ import { handlesSymbolValidation } from './events/onSymbolValidation.js';
3
+ import { Color, State } from './primitives.js';
4
+ export function aggregateState(rules, grid, symbols) {
5
+ if (rules.some(s => s.state === State.Error))
6
+ return State.Error;
7
+ for (const [_, symbolList] of symbols) {
8
+ if (symbolList.some(s => s === State.Error))
9
+ return State.Error;
10
+ }
11
+ if (rules.some((s, idx) => s.state === State.Incomplete && grid.rules[idx].necessaryForCompletion))
12
+ return State.Incomplete;
13
+ for (const [key, symbolList] of symbols) {
14
+ if (symbolList.some((s, idx) => s === State.Incomplete &&
15
+ grid.symbols.get(key)[idx].necessaryForCompletion))
16
+ return State.Incomplete;
17
+ }
18
+ if (rules.length === 0 && symbols.size === 0)
19
+ return State.Incomplete;
20
+ return State.Satisfied;
21
+ }
22
+ export function applyFinalOverrides(grid, solution, state) {
23
+ grid.symbols.forEach(list => {
24
+ list.forEach(sym => {
25
+ if (handlesFinalValidation(sym)) {
26
+ state = sym.onFinalValidation(grid, solution, state);
27
+ }
28
+ });
29
+ });
30
+ grid.rules.forEach(rule => {
31
+ if (handlesFinalValidation(rule)) {
32
+ state = rule.onFinalValidation(grid, solution, state);
33
+ }
34
+ });
35
+ return state;
36
+ }
37
+ export default function validateGrid(grid, solution) {
38
+ let requireSolution = false;
39
+ // validate all rules with self-contained logic
40
+ const ruleStates = grid.rules.map(rule => {
41
+ if (rule.validateWithSolution)
42
+ requireSolution = true;
43
+ return rule.validateGrid(grid);
44
+ });
45
+ // validate all symbols with symbol overrides
46
+ const symbolOverrideStates = ruleStates.map(() => []);
47
+ const applySymbolOverrides = (grid, rules, symbol, validator) => {
48
+ const [rule, ...rest] = rules;
49
+ if (rule) {
50
+ const newValidator = (grid) => applySymbolOverrides(grid, rest, symbol, () => validator(grid));
51
+ if (!handlesSymbolValidation(rule))
52
+ return newValidator(grid);
53
+ const result = rule.onSymbolValidation(grid, symbol, newValidator);
54
+ if (result === undefined) {
55
+ return newValidator(grid);
56
+ }
57
+ const index = grid.rules.indexOf(rule);
58
+ symbolOverrideStates[index].push(result);
59
+ return result;
60
+ }
61
+ return validator(grid);
62
+ };
63
+ const symbolStates = new Map();
64
+ grid.symbols.forEach((symbolList, id) => symbolStates.set(id, symbolList.map(s => {
65
+ if (s.validateWithSolution)
66
+ requireSolution = true;
67
+ return applySymbolOverrides(grid, grid.rules, s, g => s.validateSymbol(g, solution));
68
+ })));
69
+ // apply the result of symbol overrides to the rules that provided them
70
+ symbolOverrideStates.forEach((states, i) => {
71
+ if (ruleStates[i].state !== State.Incomplete)
72
+ return;
73
+ if (states.some(s => s === State.Error))
74
+ ruleStates[i] = { state: State.Error, positions: [] };
75
+ else if (states.length > 0 && states.every(s => State.isSatisfied(s)))
76
+ ruleStates[i] = { state: State.Satisfied };
77
+ });
78
+ let final = aggregateState(ruleStates, grid, symbolStates);
79
+ // in addition to satisfying all rules and symbols, a solution must also fill the grid completely
80
+ if (!requireSolution && State.isSatisfied(final)) {
81
+ final = grid.forEach(tile => tile.exists && tile.color === Color.Gray ? true : undefined)
82
+ ? State.Incomplete
83
+ : State.Satisfied;
84
+ }
85
+ // return early if there is no need to validate against a solution
86
+ if (State.isSatisfied(final) ||
87
+ !requireSolution ||
88
+ !solution ||
89
+ solution.width !== grid.width ||
90
+ solution.height !== grid.height) {
91
+ return applyFinalOverrides(grid, solution, {
92
+ final,
93
+ rules: ruleStates,
94
+ symbols: symbolStates,
95
+ });
96
+ }
97
+ // validate against the solution
98
+ for (let y = 0; y < grid.height; y++) {
99
+ for (let x = 0; x < grid.width; x++) {
100
+ if (grid.getTile(x, y).exists &&
101
+ grid.getTile(x, y).color !== solution.getTile(x, y).color) {
102
+ return applyFinalOverrides(grid, solution, {
103
+ final: State.Incomplete,
104
+ rules: ruleStates,
105
+ symbols: symbolStates,
106
+ });
107
+ }
108
+ }
109
+ }
110
+ // mark all rules and symbols that are satisfied by the solution
111
+ grid.rules.forEach((rule, i) => {
112
+ if (rule.validateWithSolution) {
113
+ ruleStates[i] = { ...ruleStates[i], state: State.Satisfied };
114
+ }
115
+ });
116
+ grid.symbols.forEach((_, id) => {
117
+ const symbolList = symbolStates.get(id);
118
+ symbolList.forEach((_, i) => {
119
+ const symbol = grid.symbols.get(id)[i];
120
+ if (symbol.validateWithSolution) {
121
+ symbolList[i] = State.Satisfied;
122
+ }
123
+ });
124
+ });
125
+ const finalState = {
126
+ final: State.Satisfied,
127
+ rules: ruleStates,
128
+ symbols: symbolStates,
129
+ };
130
+ return applyFinalOverrides(grid, solution, finalState);
131
+ }
@@ -0,0 +1,15 @@
1
+ import GridData from './grid.js';
2
+ import { GridState } from './primitives.js';
3
+ export declare class GridValidator {
4
+ private worker;
5
+ private stateListeners;
6
+ private loadListeners;
7
+ private readonly validateGridDebounced;
8
+ readonly validateGrid: (grid: GridData, solution: GridData | null) => void;
9
+ private readonly notifyState;
10
+ readonly subscribeToState: (listener: (state: GridState) => void) => () => void;
11
+ private readonly notifyLoad;
12
+ readonly subscribeToLoad: (listener: () => void) => () => void;
13
+ readonly isLoading: () => boolean;
14
+ readonly delete: () => void;
15
+ }
@@ -0,0 +1,71 @@
1
+ import debounce from 'lodash/debounce.js';
2
+ import { Serializer } from './serializer/allSerializers.js';
3
+ import validateGrid from './validate.js';
4
+ const SYNC_VALIDATION_THRESHOLD = 10000;
5
+ export class GridValidator {
6
+ worker = null;
7
+ stateListeners = new Set();
8
+ loadListeners = new Set();
9
+ validateGridDebounced = debounce((grid, solution) => {
10
+ this.worker?.terminate();
11
+ this.worker = new Worker(new URL('./validateAsyncWorker.js', import.meta.url), { type: 'module' });
12
+ this.worker.onmessage = (event) => {
13
+ if (event.data) {
14
+ this.notifyState(event.data);
15
+ }
16
+ this.worker?.terminate();
17
+ this.worker = null;
18
+ this.notifyLoad();
19
+ };
20
+ this.worker.onmessageerror = (error) => {
21
+ console.error('Validation worker error:', error);
22
+ this.worker?.terminate();
23
+ this.worker = null;
24
+ this.notifyLoad();
25
+ };
26
+ this.worker.postMessage({
27
+ grid: Serializer.stringifyGrid(grid),
28
+ solution: solution ? Serializer.stringifyGrid(solution) : null,
29
+ });
30
+ this.notifyLoad();
31
+ }, 300, { leading: true, trailing: true });
32
+ validateGrid = (grid, solution) => {
33
+ if (grid.width * grid.height <= SYNC_VALIDATION_THRESHOLD) {
34
+ // Synchronous validation for small grids
35
+ // to avoid the overhead of worker communication.
36
+ const state = validateGrid(grid, solution);
37
+ this.notifyState(state);
38
+ }
39
+ else {
40
+ this.validateGridDebounced(grid, solution);
41
+ }
42
+ };
43
+ notifyState = (state) => {
44
+ this.stateListeners.forEach(listener => listener(state));
45
+ };
46
+ subscribeToState = (listener) => {
47
+ this.stateListeners.add(listener);
48
+ return () => {
49
+ this.stateListeners.delete(listener);
50
+ };
51
+ };
52
+ notifyLoad = () => {
53
+ this.loadListeners.forEach(listener => listener());
54
+ };
55
+ subscribeToLoad = (listener) => {
56
+ this.loadListeners.add(listener);
57
+ return () => {
58
+ this.loadListeners.delete(listener);
59
+ };
60
+ };
61
+ isLoading = () => {
62
+ return this.worker !== null;
63
+ };
64
+ delete = () => {
65
+ if (this.worker) {
66
+ this.worker.terminate();
67
+ this.worker = null;
68
+ }
69
+ this.stateListeners.clear();
70
+ };
71
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import { Serializer } from './serializer/allSerializers.js';
2
+ import validateGrid from './validate.js';
3
+ onmessage = e => {
4
+ const data = e.data;
5
+ const grid = Serializer.parseGrid(data.grid);
6
+ const solution = data.solution ? Serializer.parseGrid(data.solution) : null;
7
+ const state = validateGrid(grid, solution);
8
+ postMessage(state);
9
+ };
@@ -0,0 +1,109 @@
1
+ import { ConfigType, configEquals } from './data/config.js';
2
+ import Configurable from './data/configurable.js';
3
+ import { CachedAccess, allEqual, array, directionToRotation, escape, isSameEdge, maxBy, minBy, move, orientationToRotation, resize, unescape } from './data/dataHelper.js';
4
+ import { isEventHandler } from './data/events/eventHelper.js';
5
+ import { handlesFinalValidation } from './data/events/onFinalValidation.js';
6
+ import { handlesGetTile } from './data/events/onGetTile.js';
7
+ import { handlesGridChange } from './data/events/onGridChange.js';
8
+ import { handlesGridResize } from './data/events/onGridResize.js';
9
+ import { handlesSetGrid, invokeSetGrid } from './data/events/onSetGrid.js';
10
+ import { handlesSymbolDisplay } from './data/events/onSymbolDisplay.js';
11
+ import { handlesSymbolMerge } from './data/events/onSymbolMerge.js';
12
+ import { handlesSymbolValidation } from './data/events/onSymbolValidation.js';
13
+ import GridData, { NEIGHBOR_OFFSETS, NEIGHBOR_OFFSETS_8 } from './data/grid.js';
14
+ import GridConnections from './data/gridConnections.js';
15
+ import GridZones from './data/gridZones.js';
16
+ import Instruction from './data/instruction.js';
17
+ import { COMPARISONS, Color, Comparison, DIRECTIONS, DRUM_SAMPLES, Direction, INSTRUMENTS, Instrument, MajorRule, Mode, ORIENTATIONS, Orientation, PuzzleType, State, WRAPPINGS, Wrapping, directionToggle, isDrumSample, orientationToggle } from './data/primitives.js';
18
+ import { MetadataSchema, PuzzleSchema, getPuzzleTypes, puzzleEquals, validatePuzzleChecklist } from './data/puzzle.js';
19
+ import BanPatternRule from './data/rules/banPatternRule.js';
20
+ import CellCountPerZoneRule from './data/rules/cellCountPerZoneRule.js';
21
+ import CellCountRule from './data/rules/cellCountRule.js';
22
+ import CompletePatternRule from './data/rules/completePatternRule.js';
23
+ import ConnectAllRule from './data/rules/connectAllRule.js';
24
+ import ConnectZonesRule from './data/rules/connectZonesRule.js';
25
+ import ContainsShapeRule from './data/rules/containsShapeRule.js';
26
+ import CustomRule from './data/rules/customRule.js';
27
+ import DifferentCountPerZoneRule from './data/rules/differentCountPerZoneRule.js';
28
+ import ExactCountPerZoneRule from './data/rules/exactCountPerZoneRule.js';
29
+ import ForesightRule from './data/rules/foresightRule.js';
30
+ import { allRules } from './data/rules/index.js';
31
+ import LyingSymbolRule from './data/rules/lyingSymbolRule.js';
32
+ import { ControlLine, Row } from './data/rules/musicControlLine.js';
33
+ import MusicGridRule from './data/rules/musicGridRule.js';
34
+ import MysteryRule from './data/rules/mysteryRule.js';
35
+ import NoLoopsRule from './data/rules/noLoopsRule.js';
36
+ import OffByXRule from './data/rules/offByXRule.js';
37
+ import PerfectionRule from './data/rules/perfectionRule.js';
38
+ import RegionAreaRule from './data/rules/regionAreaRule.js';
39
+ import RegionShapeRule from './data/rules/regionShapeRule.js';
40
+ import Rule from './data/rules/rule.js';
41
+ import SameCountPerZoneRule from './data/rules/sameCountPerZoneRule.js';
42
+ import SameShapeRule from './data/rules/sameShapeRule.js';
43
+ import SymbolsPerRegionRule from './data/rules/symbolsPerRegionRule.js';
44
+ import UndercluedRule from './data/rules/undercluedRule.js';
45
+ import UniqueShapeRule from './data/rules/uniqueShapeRule.js';
46
+ import WrapAroundRule from './data/rules/wrapAroundRule.js';
47
+ import { Serializer } from './data/serializer/allSerializers.js';
48
+ import { Compressor } from './data/serializer/compressor/allCompressors.js';
49
+ import ChecksumCompressor from './data/serializer/compressor/checksumCompressor.js';
50
+ import CompressorBase from './data/serializer/compressor/compressorBase.js';
51
+ import DeflateCompressor from './data/serializer/compressor/deflateCompressor.js';
52
+ import GzipCompressor from './data/serializer/compressor/gzipCompressor.js';
53
+ import StreamCompressor from './data/serializer/compressor/streamCompressor.js';
54
+ import SerializerBase from './data/serializer/serializerBase.js';
55
+ import SerializerChecksum from './data/serializer/serializer_checksum.js';
56
+ import SerializerV0, { OFFSETS, orientationChars } from './data/serializer/serializer_v0.js';
57
+ import { getShapeVariants, normalizeShape, positionsToShape, sanitizePatternGrid, shapeEquals, tilesToShape } from './data/shapes.js';
58
+ import { allSolvers } from './data/solver/allSolvers.js';
59
+ import AutoSolver from './data/solver/auto/autoSolver.js';
60
+ import BacktrackSolver from './data/solver/backtrack/backtrackSolver.js';
61
+ import BTModule, { BTGridData, BTTile, IntArray2D, checkSubtilePlacement, colorToBTTile, createOneTileResult, getOppositeColor } from './data/solver/backtrack/data.js';
62
+ import BanPatternBTModule from './data/solver/backtrack/rules/banPattern.js';
63
+ import CellCountBTModule from './data/solver/backtrack/rules/cellCount.js';
64
+ import ConnectAllBTModule from './data/solver/backtrack/rules/connectAll.js';
65
+ import RegionAreaBTModule from './data/solver/backtrack/rules/regionArea.js';
66
+ import RegionShapeBTModule from './data/solver/backtrack/rules/regionShape.js';
67
+ import SameShapeBTModule from './data/solver/backtrack/rules/sameShape.js';
68
+ import SymbolsPerRegionBTModule from './data/solver/backtrack/rules/symbolsPerRegion.js';
69
+ import UniqueShapeBTModule from './data/solver/backtrack/rules/uniqueShape.js';
70
+ import AreaNumberBTModule from './data/solver/backtrack/symbols/areaNumber.js';
71
+ import DartBTModule from './data/solver/backtrack/symbols/dart.js';
72
+ import DirectionLinkerBTModule from './data/solver/backtrack/symbols/directionLinker.js';
73
+ import FocusBTModule from './data/solver/backtrack/symbols/focus.js';
74
+ import GalaxyBTModule from './data/solver/backtrack/symbols/galaxy.js';
75
+ import LetterBTModule from './data/solver/backtrack/symbols/letter.js';
76
+ import LotusBTModule from './data/solver/backtrack/symbols/lotus.js';
77
+ import MinesweeperBTModule from './data/solver/backtrack/symbols/minesweeper.js';
78
+ import MyopiaBTModule from './data/solver/backtrack/symbols/myopia.js';
79
+ import ViewpointBTModule from './data/solver/backtrack/symbols/viewpoint.js';
80
+ import CspuzSolver from './data/solver/cspuz/cspuzSolver.js';
81
+ import { gridToJson } from './data/solver/cspuz/jsonify.js';
82
+ import EventIteratingSolver from './data/solver/eventIteratingSolver.js';
83
+ import Solver from './data/solver/solver.js';
84
+ import UniversalSolver from './data/solver/universal/universalSolver.js';
85
+ import AreaNumberSymbol from './data/symbols/areaNumberSymbol.js';
86
+ import CustomIconSymbol from './data/symbols/customIconSymbol.js';
87
+ import CustomSymbol from './data/symbols/customSymbol.js';
88
+ import CustomTextSymbol from './data/symbols/customTextSymbol.js';
89
+ import DartSymbol from './data/symbols/dartSymbol.js';
90
+ import DirectionLinkerSymbol from './data/symbols/directionLinkerSymbol.js';
91
+ import EveryLetterSymbol from './data/symbols/everyLetterSymbol.js';
92
+ import FocusSymbol from './data/symbols/focusSymbol.js';
93
+ import GalaxySymbol from './data/symbols/galaxySymbol.js';
94
+ import HiddenSymbol from './data/symbols/hiddenSymbol.js';
95
+ import HouseSymbol from './data/symbols/houseSymbol.js';
96
+ import { allSymbols } from './data/symbols/index.js';
97
+ import LetterSymbol from './data/symbols/letterSymbol.js';
98
+ import LotusSymbol from './data/symbols/lotusSymbol.js';
99
+ import MinesweeperSymbol from './data/symbols/minesweeperSymbol.js';
100
+ import MyopiaSymbol from './data/symbols/myopiaSymbol.js';
101
+ import NumberSymbol from './data/symbols/numberSymbol.js';
102
+ import Symbol from './data/symbols/symbol.js';
103
+ import UnsupportedSymbol from './data/symbols/unsupportedSymbol.js';
104
+ import ViewpointSymbol from './data/symbols/viewpointSymbol.js';
105
+ import TileData from './data/tile.js';
106
+ import TileConnections from './data/tileConnections.js';
107
+ import validateGrid, { aggregateState, applyFinalOverrides } from './data/validate.js';
108
+ import { GridValidator } from './data/validateAsync.js';
109
+ export { ConfigType, configEquals, Configurable, CachedAccess, allEqual, array, directionToRotation, escape, isSameEdge, maxBy, minBy, move, orientationToRotation, resize, unescape, isEventHandler, handlesFinalValidation, handlesGetTile, handlesGridChange, handlesGridResize, handlesSetGrid, invokeSetGrid, handlesSymbolDisplay, handlesSymbolMerge, handlesSymbolValidation, GridData, NEIGHBOR_OFFSETS, NEIGHBOR_OFFSETS_8, GridConnections, GridZones, Instruction, COMPARISONS, Color, Comparison, DIRECTIONS, DRUM_SAMPLES, Direction, INSTRUMENTS, Instrument, MajorRule, Mode, ORIENTATIONS, Orientation, PuzzleType, State, WRAPPINGS, Wrapping, directionToggle, isDrumSample, orientationToggle, MetadataSchema, PuzzleSchema, getPuzzleTypes, puzzleEquals, validatePuzzleChecklist, BanPatternRule, CellCountPerZoneRule, CellCountRule, CompletePatternRule, ConnectAllRule, ConnectZonesRule, ContainsShapeRule, CustomRule, DifferentCountPerZoneRule, ExactCountPerZoneRule, ForesightRule, allRules, LyingSymbolRule, ControlLine, Row, MusicGridRule, MysteryRule, NoLoopsRule, OffByXRule, PerfectionRule, RegionAreaRule, RegionShapeRule, Rule, SameCountPerZoneRule, SameShapeRule, SymbolsPerRegionRule, UndercluedRule, UniqueShapeRule, WrapAroundRule, Serializer, Compressor, ChecksumCompressor, CompressorBase, DeflateCompressor, GzipCompressor, StreamCompressor, SerializerBase, SerializerChecksum, SerializerV0, OFFSETS, orientationChars, getShapeVariants, normalizeShape, positionsToShape, sanitizePatternGrid, shapeEquals, tilesToShape, allSolvers, AutoSolver, BacktrackSolver, BTModule, BTGridData, BTTile, IntArray2D, checkSubtilePlacement, colorToBTTile, createOneTileResult, getOppositeColor, BanPatternBTModule, CellCountBTModule, ConnectAllBTModule, RegionAreaBTModule, RegionShapeBTModule, SameShapeBTModule, SymbolsPerRegionBTModule, UniqueShapeBTModule, AreaNumberBTModule, DartBTModule, DirectionLinkerBTModule, FocusBTModule, GalaxyBTModule, LetterBTModule, LotusBTModule, MinesweeperBTModule, MyopiaBTModule, ViewpointBTModule, CspuzSolver, gridToJson, EventIteratingSolver, Solver, UniversalSolver, AreaNumberSymbol, CustomIconSymbol, CustomSymbol, CustomTextSymbol, DartSymbol, DirectionLinkerSymbol, EveryLetterSymbol, FocusSymbol, GalaxySymbol, HiddenSymbol, HouseSymbol, allSymbols, LetterSymbol, LotusSymbol, MinesweeperSymbol, MyopiaSymbol, NumberSymbol, Symbol, UnsupportedSymbol, ViewpointSymbol, TileData, TileConnections, validateGrid, aggregateState, applyFinalOverrides, GridValidator, };
@@ -0,0 +1,112 @@
1
+ /* prettier-ignore-start */
2
+ /* eslint-disable */
3
+ // noinspection JSUnusedGlobalSymbols
4
+ import { ConfigType, configEquals } from './data/config.js';
5
+ import Configurable from './data/configurable.js';
6
+ import { CachedAccess, allEqual, array, directionToRotation, escape, isSameEdge, maxBy, minBy, move, orientationToRotation, resize, unescape } from './data/dataHelper.js';
7
+ import { isEventHandler } from './data/events/eventHelper.js';
8
+ import { handlesFinalValidation } from './data/events/onFinalValidation.js';
9
+ import { handlesGetTile } from './data/events/onGetTile.js';
10
+ import { handlesGridChange } from './data/events/onGridChange.js';
11
+ import { handlesGridResize } from './data/events/onGridResize.js';
12
+ import { handlesSetGrid, invokeSetGrid } from './data/events/onSetGrid.js';
13
+ import { handlesSymbolDisplay } from './data/events/onSymbolDisplay.js';
14
+ import { handlesSymbolMerge } from './data/events/onSymbolMerge.js';
15
+ import { handlesSymbolValidation } from './data/events/onSymbolValidation.js';
16
+ import GridData, { NEIGHBOR_OFFSETS, NEIGHBOR_OFFSETS_8 } from './data/grid.js';
17
+ import GridConnections from './data/gridConnections.js';
18
+ import GridZones from './data/gridZones.js';
19
+ import Instruction from './data/instruction.js';
20
+ import { COMPARISONS, Color, Comparison, DIRECTIONS, DRUM_SAMPLES, Direction, INSTRUMENTS, Instrument, MajorRule, Mode, ORIENTATIONS, Orientation, PuzzleType, State, WRAPPINGS, Wrapping, directionToggle, isDrumSample, orientationToggle } from './data/primitives.js';
21
+ import { MetadataSchema, PuzzleSchema, getPuzzleTypes, puzzleEquals, validatePuzzleChecklist } from './data/puzzle.js';
22
+ import BanPatternRule from './data/rules/banPatternRule.js';
23
+ import CellCountPerZoneRule from './data/rules/cellCountPerZoneRule.js';
24
+ import CellCountRule from './data/rules/cellCountRule.js';
25
+ import CompletePatternRule from './data/rules/completePatternRule.js';
26
+ import ConnectAllRule from './data/rules/connectAllRule.js';
27
+ import ConnectZonesRule from './data/rules/connectZonesRule.js';
28
+ import ContainsShapeRule from './data/rules/containsShapeRule.js';
29
+ import CustomRule from './data/rules/customRule.js';
30
+ import DifferentCountPerZoneRule from './data/rules/differentCountPerZoneRule.js';
31
+ import ExactCountPerZoneRule from './data/rules/exactCountPerZoneRule.js';
32
+ import ForesightRule from './data/rules/foresightRule.js';
33
+ import { allRules } from './data/rules/index.js';
34
+ import LyingSymbolRule from './data/rules/lyingSymbolRule.js';
35
+ import { ControlLine, Row } from './data/rules/musicControlLine.js';
36
+ import MusicGridRule from './data/rules/musicGridRule.js';
37
+ import MysteryRule from './data/rules/mysteryRule.js';
38
+ import NoLoopsRule from './data/rules/noLoopsRule.js';
39
+ import OffByXRule from './data/rules/offByXRule.js';
40
+ import PerfectionRule from './data/rules/perfectionRule.js';
41
+ import RegionAreaRule from './data/rules/regionAreaRule.js';
42
+ import RegionShapeRule from './data/rules/regionShapeRule.js';
43
+ import Rule from './data/rules/rule.js';
44
+ import SameCountPerZoneRule from './data/rules/sameCountPerZoneRule.js';
45
+ import SameShapeRule from './data/rules/sameShapeRule.js';
46
+ import SymbolsPerRegionRule from './data/rules/symbolsPerRegionRule.js';
47
+ import UndercluedRule from './data/rules/undercluedRule.js';
48
+ import UniqueShapeRule from './data/rules/uniqueShapeRule.js';
49
+ import WrapAroundRule from './data/rules/wrapAroundRule.js';
50
+ import { Serializer } from './data/serializer/allSerializers.js';
51
+ import { Compressor } from './data/serializer/compressor/allCompressors.js';
52
+ import ChecksumCompressor from './data/serializer/compressor/checksumCompressor.js';
53
+ import CompressorBase from './data/serializer/compressor/compressorBase.js';
54
+ import DeflateCompressor from './data/serializer/compressor/deflateCompressor.js';
55
+ import GzipCompressor from './data/serializer/compressor/gzipCompressor.js';
56
+ import StreamCompressor from './data/serializer/compressor/streamCompressor.js';
57
+ import SerializerBase from './data/serializer/serializerBase.js';
58
+ import SerializerChecksum from './data/serializer/serializer_checksum.js';
59
+ import SerializerV0, { OFFSETS, orientationChars } from './data/serializer/serializer_v0.js';
60
+ import { getShapeVariants, normalizeShape, positionsToShape, sanitizePatternGrid, shapeEquals, tilesToShape } from './data/shapes.js';
61
+ import { allSolvers } from './data/solver/allSolvers.js';
62
+ import AutoSolver from './data/solver/auto/autoSolver.js';
63
+ import BacktrackSolver from './data/solver/backtrack/backtrackSolver.js';
64
+ import BTModule, { BTGridData, BTTile, IntArray2D, checkSubtilePlacement, colorToBTTile, createOneTileResult, getOppositeColor } from './data/solver/backtrack/data.js';
65
+ import BanPatternBTModule from './data/solver/backtrack/rules/banPattern.js';
66
+ import CellCountBTModule from './data/solver/backtrack/rules/cellCount.js';
67
+ import ConnectAllBTModule from './data/solver/backtrack/rules/connectAll.js';
68
+ import RegionAreaBTModule from './data/solver/backtrack/rules/regionArea.js';
69
+ import RegionShapeBTModule from './data/solver/backtrack/rules/regionShape.js';
70
+ import SameShapeBTModule from './data/solver/backtrack/rules/sameShape.js';
71
+ import SymbolsPerRegionBTModule from './data/solver/backtrack/rules/symbolsPerRegion.js';
72
+ import UniqueShapeBTModule from './data/solver/backtrack/rules/uniqueShape.js';
73
+ import AreaNumberBTModule from './data/solver/backtrack/symbols/areaNumber.js';
74
+ import DartBTModule from './data/solver/backtrack/symbols/dart.js';
75
+ import DirectionLinkerBTModule from './data/solver/backtrack/symbols/directionLinker.js';
76
+ import FocusBTModule from './data/solver/backtrack/symbols/focus.js';
77
+ import GalaxyBTModule from './data/solver/backtrack/symbols/galaxy.js';
78
+ import LetterBTModule from './data/solver/backtrack/symbols/letter.js';
79
+ import LotusBTModule from './data/solver/backtrack/symbols/lotus.js';
80
+ import MinesweeperBTModule from './data/solver/backtrack/symbols/minesweeper.js';
81
+ import MyopiaBTModule from './data/solver/backtrack/symbols/myopia.js';
82
+ import ViewpointBTModule from './data/solver/backtrack/symbols/viewpoint.js';
83
+ import CspuzSolver from './data/solver/cspuz/cspuzSolver.js';
84
+ import { gridToJson } from './data/solver/cspuz/jsonify.js';
85
+ import EventIteratingSolver from './data/solver/eventIteratingSolver.js';
86
+ import Solver from './data/solver/solver.js';
87
+ import UniversalSolver from './data/solver/universal/universalSolver.js';
88
+ import AreaNumberSymbol from './data/symbols/areaNumberSymbol.js';
89
+ import CustomIconSymbol from './data/symbols/customIconSymbol.js';
90
+ import CustomSymbol from './data/symbols/customSymbol.js';
91
+ import CustomTextSymbol from './data/symbols/customTextSymbol.js';
92
+ import DartSymbol from './data/symbols/dartSymbol.js';
93
+ import DirectionLinkerSymbol from './data/symbols/directionLinkerSymbol.js';
94
+ import EveryLetterSymbol from './data/symbols/everyLetterSymbol.js';
95
+ import FocusSymbol from './data/symbols/focusSymbol.js';
96
+ import GalaxySymbol from './data/symbols/galaxySymbol.js';
97
+ import HiddenSymbol from './data/symbols/hiddenSymbol.js';
98
+ import HouseSymbol from './data/symbols/houseSymbol.js';
99
+ import { allSymbols } from './data/symbols/index.js';
100
+ import LetterSymbol from './data/symbols/letterSymbol.js';
101
+ import LotusSymbol from './data/symbols/lotusSymbol.js';
102
+ import MinesweeperSymbol from './data/symbols/minesweeperSymbol.js';
103
+ import MyopiaSymbol from './data/symbols/myopiaSymbol.js';
104
+ import NumberSymbol from './data/symbols/numberSymbol.js';
105
+ import Symbol from './data/symbols/symbol.js';
106
+ import UnsupportedSymbol from './data/symbols/unsupportedSymbol.js';
107
+ import ViewpointSymbol from './data/symbols/viewpointSymbol.js';
108
+ import TileData from './data/tile.js';
109
+ import TileConnections from './data/tileConnections.js';
110
+ import validateGrid, { aggregateState, applyFinalOverrides } from './data/validate.js';
111
+ import { GridValidator } from './data/validateAsync.js';
112
+ export { ConfigType, configEquals, Configurable, CachedAccess, allEqual, array, directionToRotation, escape, isSameEdge, maxBy, minBy, move, orientationToRotation, resize, unescape, isEventHandler, handlesFinalValidation, handlesGetTile, handlesGridChange, handlesGridResize, handlesSetGrid, invokeSetGrid, handlesSymbolDisplay, handlesSymbolMerge, handlesSymbolValidation, GridData, NEIGHBOR_OFFSETS, NEIGHBOR_OFFSETS_8, GridConnections, GridZones, Instruction, COMPARISONS, Color, Comparison, DIRECTIONS, DRUM_SAMPLES, Direction, INSTRUMENTS, Instrument, MajorRule, Mode, ORIENTATIONS, Orientation, PuzzleType, State, WRAPPINGS, Wrapping, directionToggle, isDrumSample, orientationToggle, MetadataSchema, PuzzleSchema, getPuzzleTypes, puzzleEquals, validatePuzzleChecklist, BanPatternRule, CellCountPerZoneRule, CellCountRule, CompletePatternRule, ConnectAllRule, ConnectZonesRule, ContainsShapeRule, CustomRule, DifferentCountPerZoneRule, ExactCountPerZoneRule, ForesightRule, allRules, LyingSymbolRule, ControlLine, Row, MusicGridRule, MysteryRule, NoLoopsRule, OffByXRule, PerfectionRule, RegionAreaRule, RegionShapeRule, Rule, SameCountPerZoneRule, SameShapeRule, SymbolsPerRegionRule, UndercluedRule, UniqueShapeRule, WrapAroundRule, Serializer, Compressor, ChecksumCompressor, CompressorBase, DeflateCompressor, GzipCompressor, StreamCompressor, SerializerBase, SerializerChecksum, SerializerV0, OFFSETS, orientationChars, getShapeVariants, normalizeShape, positionsToShape, sanitizePatternGrid, shapeEquals, tilesToShape, allSolvers, AutoSolver, BacktrackSolver, BTModule, BTGridData, BTTile, IntArray2D, checkSubtilePlacement, colorToBTTile, createOneTileResult, getOppositeColor, BanPatternBTModule, CellCountBTModule, ConnectAllBTModule, RegionAreaBTModule, RegionShapeBTModule, SameShapeBTModule, SymbolsPerRegionBTModule, UniqueShapeBTModule, AreaNumberBTModule, DartBTModule, DirectionLinkerBTModule, FocusBTModule, GalaxyBTModule, LetterBTModule, LotusBTModule, MinesweeperBTModule, MyopiaBTModule, ViewpointBTModule, CspuzSolver, gridToJson, EventIteratingSolver, Solver, UniversalSolver, AreaNumberSymbol, CustomIconSymbol, CustomSymbol, CustomTextSymbol, DartSymbol, DirectionLinkerSymbol, EveryLetterSymbol, FocusSymbol, GalaxySymbol, HiddenSymbol, HouseSymbol, allSymbols, LetterSymbol, LotusSymbol, MinesweeperSymbol, MyopiaSymbol, NumberSymbol, Symbol, UnsupportedSymbol, ViewpointSymbol, TileData, TileConnections, validateGrid, aggregateState, applyFinalOverrides, GridValidator, };
@@ -0,0 +1,2 @@
1
+ import 'compression-streams-polyfill';
2
+ export {};
@@ -0,0 +1 @@
1
+ import 'compression-streams-polyfill';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logic-pad/core",
3
- "version": "0.26.2",
3
+ "version": "0.26.3",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",