@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.
- package/assets/logic-core.global.d.ts +3264 -3264
- package/dist/benchmark/helper.d.ts +21 -0
- package/dist/benchmark/helper.js +34 -0
- package/dist/benchmark/prepareBench.d.ts +1 -0
- package/dist/benchmark/prepareBench.js +140 -0
- package/dist/benchmark/runBench.d.ts +1 -0
- package/dist/benchmark/runBench.js +206 -0
- package/dist/src/data/config.d.ts +119 -0
- package/dist/src/data/config.js +72 -0
- package/dist/src/data/configurable.d.ts +14 -0
- package/dist/src/data/configurable.js +26 -0
- package/dist/src/data/dataHelper.d.ts +92 -0
- package/dist/src/data/dataHelper.js +217 -0
- package/dist/src/data/events/eventHelper.d.ts +1 -0
- package/dist/src/data/events/eventHelper.js +6 -0
- package/dist/src/data/events/onFinalValidation.d.ts +14 -0
- package/dist/src/data/events/onFinalValidation.js +4 -0
- package/dist/src/data/events/onGetTile.d.ts +7 -0
- package/dist/src/data/events/onGetTile.js +4 -0
- package/dist/src/data/events/onGridChange.d.ts +6 -0
- package/dist/src/data/events/onGridChange.js +4 -0
- package/dist/src/data/events/onGridResize.d.ts +9 -0
- package/dist/src/data/events/onGridResize.js +4 -0
- package/dist/src/data/events/onSetGrid.d.ts +7 -0
- package/dist/src/data/events/onSetGrid.js +19 -0
- package/dist/src/data/events/onSymbolDisplay.d.ts +16 -0
- package/dist/src/data/events/onSymbolDisplay.js +4 -0
- package/dist/src/data/events/onSymbolMerge.d.ts +10 -0
- package/dist/src/data/events/onSymbolMerge.js +4 -0
- package/dist/src/data/events/onSymbolValidation.d.ts +18 -0
- package/dist/src/data/events/onSymbolValidation.js +4 -0
- package/dist/src/data/grid.d.ts +410 -0
- package/dist/src/data/grid.js +1106 -0
- package/dist/src/data/gridConnections.d.ts +25 -0
- package/dist/src/data/gridConnections.js +309 -0
- package/dist/src/data/gridZones.d.ts +26 -0
- package/dist/src/data/gridZones.js +117 -0
- package/dist/src/data/instruction.d.ts +26 -0
- package/dist/src/data/instruction.js +29 -0
- package/dist/src/data/primitives.d.ts +138 -0
- package/dist/src/data/primitives.js +177 -0
- package/dist/src/data/puzzle.d.ts +73 -0
- package/dist/src/data/puzzle.js +105 -0
- package/dist/src/data/rules/banPatternRule.d.ts +30 -0
- package/dist/src/data/rules/banPatternRule.js +125 -0
- package/dist/src/data/rules/cellCountPerZoneRule.d.ts +23 -0
- package/dist/src/data/rules/cellCountPerZoneRule.js +39 -0
- package/dist/src/data/rules/cellCountRule.d.ts +33 -0
- package/dist/src/data/rules/cellCountRule.js +138 -0
- package/dist/src/data/rules/completePatternRule.d.ts +24 -0
- package/dist/src/data/rules/completePatternRule.js +46 -0
- package/dist/src/data/rules/connectAllRule.d.ts +29 -0
- package/dist/src/data/rules/connectAllRule.js +88 -0
- package/dist/src/data/rules/connectZonesRule.d.ts +29 -0
- package/dist/src/data/rules/connectZonesRule.js +111 -0
- package/dist/src/data/rules/containsShapeRule.d.ts +34 -0
- package/dist/src/data/rules/containsShapeRule.js +125 -0
- package/dist/src/data/rules/customRule.d.ts +34 -0
- package/dist/src/data/rules/customRule.js +74 -0
- package/dist/src/data/rules/differentCountPerZoneRule.d.ts +30 -0
- package/dist/src/data/rules/differentCountPerZoneRule.js +96 -0
- package/dist/src/data/rules/exactCountPerZoneRule.d.ts +33 -0
- package/dist/src/data/rules/exactCountPerZoneRule.js +99 -0
- package/dist/src/data/rules/foresightRule.d.ts +36 -0
- package/dist/src/data/rules/foresightRule.js +107 -0
- package/dist/src/data/rules/index.d.ts +3 -0
- package/dist/src/data/rules/index.js +10 -0
- package/dist/src/data/rules/lyingSymbolRule.d.ts +31 -0
- package/dist/src/data/rules/lyingSymbolRule.js +207 -0
- package/dist/src/data/rules/musicControlLine.d.ts +82 -0
- package/dist/src/data/rules/musicControlLine.js +167 -0
- package/dist/src/data/rules/musicGridRule.d.ts +51 -0
- package/dist/src/data/rules/musicGridRule.js +212 -0
- package/dist/src/data/rules/mysteryRule.d.ts +39 -0
- package/dist/src/data/rules/mysteryRule.js +146 -0
- package/dist/src/data/rules/noLoopsRule.d.ts +29 -0
- package/dist/src/data/rules/noLoopsRule.js +218 -0
- package/dist/src/data/rules/offByXRule.d.ts +32 -0
- package/dist/src/data/rules/offByXRule.js +124 -0
- package/dist/src/data/rules/perfectionRule.d.ts +45 -0
- package/dist/src/data/rules/perfectionRule.js +158 -0
- package/dist/src/data/rules/regionAreaRule.d.ts +34 -0
- package/dist/src/data/rules/regionAreaRule.js +149 -0
- package/dist/src/data/rules/regionShapeRule.d.ts +22 -0
- package/dist/src/data/rules/regionShapeRule.js +58 -0
- package/dist/src/data/rules/rule.d.ts +18 -0
- package/dist/src/data/rules/rule.js +19 -0
- package/dist/src/data/rules/rules.gen.d.ts +23 -0
- package/dist/src/data/rules/rules.gen.js +27 -0
- package/dist/src/data/rules/sameCountPerZoneRule.d.ts +30 -0
- package/dist/src/data/rules/sameCountPerZoneRule.js +95 -0
- package/dist/src/data/rules/sameShapeRule.d.ts +28 -0
- package/dist/src/data/rules/sameShapeRule.js +68 -0
- package/dist/src/data/rules/symbolsPerRegionRule.d.ts +38 -0
- package/dist/src/data/rules/symbolsPerRegionRule.js +181 -0
- package/dist/src/data/rules/undercluedRule.d.ts +24 -0
- package/dist/src/data/rules/undercluedRule.js +53 -0
- package/dist/src/data/rules/uniqueShapeRule.d.ts +28 -0
- package/dist/src/data/rules/uniqueShapeRule.js +65 -0
- package/dist/src/data/rules/wrapAroundRule.d.ts +36 -0
- package/dist/src/data/rules/wrapAroundRule.js +241 -0
- package/dist/src/data/serializer/allSerializers.d.ts +35 -0
- package/dist/src/data/serializer/allSerializers.js +78 -0
- package/dist/src/data/serializer/compressor/allCompressors.d.ts +14 -0
- package/dist/src/data/serializer/compressor/allCompressors.js +43 -0
- package/dist/src/data/serializer/compressor/checksumCompressor.d.ts +6 -0
- package/dist/src/data/serializer/compressor/checksumCompressor.js +21 -0
- package/dist/src/data/serializer/compressor/compressorBase.d.ts +16 -0
- package/dist/src/data/serializer/compressor/compressorBase.js +2 -0
- package/dist/src/data/serializer/compressor/deflateCompressor.d.ts +7 -0
- package/dist/src/data/serializer/compressor/deflateCompressor.js +17 -0
- package/dist/src/data/serializer/compressor/gzipCompressor.d.ts +5 -0
- package/dist/src/data/serializer/compressor/gzipCompressor.js +9 -0
- package/dist/src/data/serializer/compressor/streamCompressor.d.ts +6 -0
- package/dist/src/data/serializer/compressor/streamCompressor.js +41 -0
- package/dist/src/data/serializer/serializerBase.d.ts +32 -0
- package/dist/src/data/serializer/serializerBase.js +2 -0
- package/dist/src/data/serializer/serializer_checksum.d.ts +35 -0
- package/dist/src/data/serializer/serializer_checksum.js +179 -0
- package/dist/src/data/serializer/serializer_v0.d.ts +55 -0
- package/dist/src/data/serializer/serializer_v0.js +484 -0
- package/dist/src/data/shapes.d.ts +19 -0
- package/dist/src/data/shapes.js +137 -0
- package/dist/src/data/solver/allSolvers.d.ts +3 -0
- package/dist/src/data/solver/allSolvers.js +13 -0
- package/dist/src/data/solver/auto/autoSolver.d.ts +18 -0
- package/dist/src/data/solver/auto/autoSolver.js +156 -0
- package/dist/src/data/solver/backtrack/backtrackSolver.d.ts +11 -0
- package/dist/src/data/solver/backtrack/backtrackSolver.js +54 -0
- package/dist/src/data/solver/backtrack/backtrackWorker.d.ts +1 -0
- package/dist/src/data/solver/backtrack/backtrackWorker.js +312 -0
- package/dist/src/data/solver/backtrack/data.d.ts +47 -0
- package/dist/src/data/solver/backtrack/data.js +151 -0
- package/dist/src/data/solver/backtrack/rules/banPattern.d.ts +9 -0
- package/dist/src/data/solver/backtrack/rules/banPattern.js +77 -0
- package/dist/src/data/solver/backtrack/rules/cellCount.d.ts +7 -0
- package/dist/src/data/solver/backtrack/rules/cellCount.js +25 -0
- package/dist/src/data/solver/backtrack/rules/connectAll.d.ts +7 -0
- package/dist/src/data/solver/backtrack/rules/connectAll.js +44 -0
- package/dist/src/data/solver/backtrack/rules/regionArea.d.ts +8 -0
- package/dist/src/data/solver/backtrack/rules/regionArea.js +71 -0
- package/dist/src/data/solver/backtrack/rules/regionShape.d.ts +8 -0
- package/dist/src/data/solver/backtrack/rules/regionShape.js +57 -0
- package/dist/src/data/solver/backtrack/rules/sameShape.d.ts +8 -0
- package/dist/src/data/solver/backtrack/rules/sameShape.js +14 -0
- package/dist/src/data/solver/backtrack/rules/symbolsPerRegion.d.ts +10 -0
- package/dist/src/data/solver/backtrack/rules/symbolsPerRegion.js +82 -0
- package/dist/src/data/solver/backtrack/rules/uniqueShape.d.ts +8 -0
- package/dist/src/data/solver/backtrack/rules/uniqueShape.js +14 -0
- package/dist/src/data/solver/backtrack/symbols/areaNumber.d.ts +9 -0
- package/dist/src/data/solver/backtrack/symbols/areaNumber.js +75 -0
- package/dist/src/data/solver/backtrack/symbols/dart.d.ts +8 -0
- package/dist/src/data/solver/backtrack/symbols/dart.js +45 -0
- package/dist/src/data/solver/backtrack/symbols/directionLinker.d.ts +11 -0
- package/dist/src/data/solver/backtrack/symbols/directionLinker.js +121 -0
- package/dist/src/data/solver/backtrack/symbols/focus.d.ts +9 -0
- package/dist/src/data/solver/backtrack/symbols/focus.js +48 -0
- package/dist/src/data/solver/backtrack/symbols/galaxy.d.ts +9 -0
- package/dist/src/data/solver/backtrack/symbols/galaxy.js +14 -0
- package/dist/src/data/solver/backtrack/symbols/letter.d.ts +9 -0
- package/dist/src/data/solver/backtrack/symbols/letter.js +95 -0
- package/dist/src/data/solver/backtrack/symbols/lotus.d.ts +11 -0
- package/dist/src/data/solver/backtrack/symbols/lotus.js +55 -0
- package/dist/src/data/solver/backtrack/symbols/minesweeper.d.ts +9 -0
- package/dist/src/data/solver/backtrack/symbols/minesweeper.js +44 -0
- package/dist/src/data/solver/backtrack/symbols/myopia.d.ts +7 -0
- package/dist/src/data/solver/backtrack/symbols/myopia.js +73 -0
- package/dist/src/data/solver/backtrack/symbols/viewpoint.d.ts +7 -0
- package/dist/src/data/solver/backtrack/symbols/viewpoint.js +51 -0
- package/dist/src/data/solver/cspuz/cspuzSolver.d.ts +13 -0
- package/dist/src/data/solver/cspuz/cspuzSolver.js +124 -0
- package/dist/src/data/solver/cspuz/cspuzWorker.d.ts +1 -0
- package/dist/src/data/solver/cspuz/cspuzWorker.js +82 -0
- package/dist/src/data/solver/cspuz/jsonify.d.ts +3 -0
- package/dist/src/data/solver/cspuz/jsonify.js +215 -0
- package/dist/src/data/solver/eventIteratingSolver.d.ts +8 -0
- package/dist/src/data/solver/eventIteratingSolver.js +54 -0
- package/dist/src/data/solver/solver.d.ts +77 -0
- package/dist/src/data/solver/solver.js +59 -0
- package/dist/src/data/solver/universal/universalSolver.d.ts +7 -0
- package/dist/src/data/solver/universal/universalSolver.js +13 -0
- package/dist/src/data/solver/universal/universalWorker.d.ts +1 -0
- package/dist/src/data/solver/universal/universalWorker.js +128 -0
- package/dist/src/data/symbols/areaNumberSymbol.d.ts +31 -0
- package/dist/src/data/symbols/areaNumberSymbol.js +80 -0
- package/dist/src/data/symbols/customIconSymbol.d.ts +35 -0
- package/dist/src/data/symbols/customIconSymbol.js +94 -0
- package/dist/src/data/symbols/customSymbol.d.ts +25 -0
- package/dist/src/data/symbols/customSymbol.js +45 -0
- package/dist/src/data/symbols/customTextSymbol.d.ts +35 -0
- package/dist/src/data/symbols/customTextSymbol.js +95 -0
- package/dist/src/data/symbols/dartSymbol.d.ts +36 -0
- package/dist/src/data/symbols/dartSymbol.js +96 -0
- package/dist/src/data/symbols/directionLinkerSymbol.d.ts +29 -0
- package/dist/src/data/symbols/directionLinkerSymbol.js +232 -0
- package/dist/src/data/symbols/everyLetterSymbol.d.ts +32 -0
- package/dist/src/data/symbols/everyLetterSymbol.js +119 -0
- package/dist/src/data/symbols/focusSymbol.d.ts +40 -0
- package/dist/src/data/symbols/focusSymbol.js +159 -0
- package/dist/src/data/symbols/galaxySymbol.d.ts +27 -0
- package/dist/src/data/symbols/galaxySymbol.js +61 -0
- package/dist/src/data/symbols/hiddenSymbol.d.ts +38 -0
- package/dist/src/data/symbols/hiddenSymbol.js +113 -0
- package/dist/src/data/symbols/houseSymbol.d.ts +33 -0
- package/dist/src/data/symbols/houseSymbol.js +104 -0
- package/dist/src/data/symbols/index.d.ts +3 -0
- package/dist/src/data/symbols/index.js +10 -0
- package/dist/src/data/symbols/letterSymbol.d.ts +32 -0
- package/dist/src/data/symbols/letterSymbol.js +118 -0
- package/dist/src/data/symbols/lotusSymbol.d.ts +30 -0
- package/dist/src/data/symbols/lotusSymbol.js +132 -0
- package/dist/src/data/symbols/minesweeperSymbol.d.ts +33 -0
- package/dist/src/data/symbols/minesweeperSymbol.js +106 -0
- package/dist/src/data/symbols/myopiaSymbol.d.ts +37 -0
- package/dist/src/data/symbols/myopiaSymbol.js +182 -0
- package/dist/src/data/symbols/numberSymbol.d.ts +19 -0
- package/dist/src/data/symbols/numberSymbol.js +32 -0
- package/dist/src/data/symbols/symbol.d.ts +29 -0
- package/dist/src/data/symbols/symbol.js +87 -0
- package/dist/src/data/symbols/symbols.gen.d.ts +15 -0
- package/dist/src/data/symbols/symbols.gen.js +19 -0
- package/dist/src/data/symbols/unsupportedSymbol.d.ts +23 -0
- package/dist/src/data/symbols/unsupportedSymbol.js +47 -0
- package/dist/src/data/symbols/viewpointSymbol.d.ts +32 -0
- package/dist/src/data/symbols/viewpointSymbol.js +95 -0
- package/dist/src/data/tile.d.ts +26 -0
- package/dist/src/data/tile.js +56 -0
- package/dist/src/data/tileConnections.d.ts +25 -0
- package/dist/src/data/tileConnections.js +74 -0
- package/dist/src/data/validate.d.ts +5 -0
- package/dist/src/data/validate.js +131 -0
- package/dist/src/data/validateAsync.d.ts +15 -0
- package/dist/src/data/validateAsync.js +71 -0
- package/dist/src/data/validateAsyncWorker.d.ts +1 -0
- package/dist/src/data/validateAsyncWorker.js +9 -0
- package/dist/src/index.d.ts +109 -0
- package/dist/src/index.js +112 -0
- package/dist/src/polyfill/streamPolyfill.d.ts +2 -0
- package/dist/src/polyfill/streamPolyfill.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { ConfigType, } from '../config.js';
|
|
2
|
+
import SerializerV0, { orientationChars } from './serializer_v0.js';
|
|
3
|
+
import { DIRECTIONS, ORIENTATIONS, } from '../primitives.js';
|
|
4
|
+
import { escape } from '../dataHelper.js';
|
|
5
|
+
import { normalizeShape, tilesToShape } from '../shapes.js';
|
|
6
|
+
export default class SerializerChecksum extends SerializerV0 {
|
|
7
|
+
version = 4;
|
|
8
|
+
parseTile(_str) {
|
|
9
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
10
|
+
}
|
|
11
|
+
stringifyControlLine(line) {
|
|
12
|
+
const result = [];
|
|
13
|
+
result.push(`c${line.column}`);
|
|
14
|
+
result.push(`r${line.rows.map(row => `n${row.note ?? ''}`).join(',')}`);
|
|
15
|
+
return result.join('|');
|
|
16
|
+
}
|
|
17
|
+
parseControlLine(_str) {
|
|
18
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
19
|
+
}
|
|
20
|
+
stringifyConfig(instruction, config) {
|
|
21
|
+
switch (config.type) {
|
|
22
|
+
case ConfigType.Boolean:
|
|
23
|
+
return (config.field +
|
|
24
|
+
'=' +
|
|
25
|
+
(instruction[config.field] ? '1' : '0'));
|
|
26
|
+
case ConfigType.Number:
|
|
27
|
+
case ConfigType.Color:
|
|
28
|
+
case ConfigType.Comparison:
|
|
29
|
+
case ConfigType.Wrapping:
|
|
30
|
+
case ConfigType.Direction:
|
|
31
|
+
case ConfigType.Orientation:
|
|
32
|
+
return (config.field +
|
|
33
|
+
'=' +
|
|
34
|
+
String(instruction[config.field])
|
|
35
|
+
.toLowerCase()
|
|
36
|
+
.trim());
|
|
37
|
+
case ConfigType.NullableBoolean:
|
|
38
|
+
return (config.field +
|
|
39
|
+
'=' +
|
|
40
|
+
(instruction[config.field] === null
|
|
41
|
+
? ''
|
|
42
|
+
: instruction[config.field]
|
|
43
|
+
? '1'
|
|
44
|
+
: '0'));
|
|
45
|
+
case ConfigType.NullableNumber:
|
|
46
|
+
return (config.field +
|
|
47
|
+
'=' +
|
|
48
|
+
(instruction[config.field] === null
|
|
49
|
+
? ''
|
|
50
|
+
: String(instruction[config.field])));
|
|
51
|
+
case ConfigType.DirectionToggle:
|
|
52
|
+
return (config.field +
|
|
53
|
+
'=' +
|
|
54
|
+
DIRECTIONS.filter(dir => instruction[config.field][dir])
|
|
55
|
+
.map(x => orientationChars[x])
|
|
56
|
+
.join('')
|
|
57
|
+
.toLowerCase()
|
|
58
|
+
.trim());
|
|
59
|
+
case ConfigType.OrientationToggle:
|
|
60
|
+
return (config.field +
|
|
61
|
+
'=' +
|
|
62
|
+
ORIENTATIONS.filter(dir => instruction[config.field][dir])
|
|
63
|
+
.map(x => orientationChars[x])
|
|
64
|
+
.join('')
|
|
65
|
+
.toLowerCase()
|
|
66
|
+
.trim());
|
|
67
|
+
case ConfigType.String:
|
|
68
|
+
case ConfigType.Icon:
|
|
69
|
+
return (config.field +
|
|
70
|
+
'=' +
|
|
71
|
+
escape(instruction[config.field]
|
|
72
|
+
.toLowerCase()
|
|
73
|
+
.trim()));
|
|
74
|
+
case ConfigType.NullableNote:
|
|
75
|
+
return (config.field +
|
|
76
|
+
'=' +
|
|
77
|
+
escape(instruction[config.field] === null
|
|
78
|
+
? ''
|
|
79
|
+
: escape(String(instruction[config.field])
|
|
80
|
+
.toLowerCase()
|
|
81
|
+
.trim())));
|
|
82
|
+
case ConfigType.NullableInstrument:
|
|
83
|
+
return config.field + '='; // do not include instrument in checksum
|
|
84
|
+
case ConfigType.Tile:
|
|
85
|
+
case ConfigType.Grid:
|
|
86
|
+
return (config.field +
|
|
87
|
+
'=' +
|
|
88
|
+
escape(this.stringifyGrid(instruction[config.field])));
|
|
89
|
+
case ConfigType.Shape:
|
|
90
|
+
return (config.field +
|
|
91
|
+
'=' +
|
|
92
|
+
escape(normalizeShape(tilesToShape(instruction[config.field].tiles))
|
|
93
|
+
.elements.map(elm => `${elm.x}-${elm.y}-${elm.color}`)
|
|
94
|
+
.sort()
|
|
95
|
+
.join('/')));
|
|
96
|
+
case ConfigType.NullableGrid:
|
|
97
|
+
return (config.field +
|
|
98
|
+
'=' +
|
|
99
|
+
escape(instruction[config.field] === null
|
|
100
|
+
? ''
|
|
101
|
+
: this.stringifyGrid(instruction[config.field])));
|
|
102
|
+
case ConfigType.ControlLines:
|
|
103
|
+
return (config.field +
|
|
104
|
+
'=' +
|
|
105
|
+
escape(instruction[config.field]
|
|
106
|
+
.map(line => this.stringifyControlLine(line))
|
|
107
|
+
.join(':')));
|
|
108
|
+
case ConfigType.SolvePath:
|
|
109
|
+
return (config.field +
|
|
110
|
+
'=' +
|
|
111
|
+
escape(instruction[config.field]
|
|
112
|
+
?.map(pos => `${pos.x}_${pos.y}`)
|
|
113
|
+
.join('/') ?? ''));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
parseConfig(_configs, _entry) {
|
|
117
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
118
|
+
}
|
|
119
|
+
parseRule(_str) {
|
|
120
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
121
|
+
}
|
|
122
|
+
parseSymbol(_str) {
|
|
123
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
124
|
+
}
|
|
125
|
+
parseConnections(_input) {
|
|
126
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
127
|
+
}
|
|
128
|
+
stringifyZones(zones) {
|
|
129
|
+
return `Z${zones.edges
|
|
130
|
+
.map(edge => `${edge.x1}_${edge.y1}_${edge.x2 - edge.x1}_${edge.y2 - edge.y1}`)
|
|
131
|
+
.sort()
|
|
132
|
+
.join(':')}`;
|
|
133
|
+
}
|
|
134
|
+
parseZones(_input) {
|
|
135
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
136
|
+
}
|
|
137
|
+
parseTiles(_input) {
|
|
138
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
139
|
+
}
|
|
140
|
+
stringifyRules(rules) {
|
|
141
|
+
return `R${rules
|
|
142
|
+
.filter(rule => rule.necessaryForCompletion)
|
|
143
|
+
.map(rule => this.stringifyRule(rule))
|
|
144
|
+
.sort()
|
|
145
|
+
.join(':')}`;
|
|
146
|
+
}
|
|
147
|
+
parseRules(_input) {
|
|
148
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
149
|
+
}
|
|
150
|
+
stringifySymbols(symbols) {
|
|
151
|
+
return `S${Array.from(symbols.values())
|
|
152
|
+
.flat()
|
|
153
|
+
.filter(symbol => symbol.necessaryForCompletion)
|
|
154
|
+
.map(symbol => this.stringifySymbol(symbol))
|
|
155
|
+
.sort()
|
|
156
|
+
.join(':')}`;
|
|
157
|
+
}
|
|
158
|
+
parseSymbols(_input) {
|
|
159
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
160
|
+
}
|
|
161
|
+
stringifyGrid(grid) {
|
|
162
|
+
return super.stringifyGrid(grid.resetTiles());
|
|
163
|
+
}
|
|
164
|
+
parseGrid(_input) {
|
|
165
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
166
|
+
}
|
|
167
|
+
stringifyGridWithSolution(puzzle) {
|
|
168
|
+
return this.stringifyGrid(puzzle.grid);
|
|
169
|
+
}
|
|
170
|
+
parseGridWithSolution(_input) {
|
|
171
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
172
|
+
}
|
|
173
|
+
stringifyPuzzle(puzzle) {
|
|
174
|
+
return this.stringifyGrid(puzzle.grid);
|
|
175
|
+
}
|
|
176
|
+
parsePuzzle(_input) {
|
|
177
|
+
throw new Error('Checksum serializer does not support parsing');
|
|
178
|
+
}
|
|
179
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import GridData from '../grid.js';
|
|
2
|
+
import GridConnections from '../gridConnections.js';
|
|
3
|
+
import Rule from '../rules/rule.js';
|
|
4
|
+
import TileData from '../tile.js';
|
|
5
|
+
import Symbol from '../symbols/symbol.js';
|
|
6
|
+
import Instruction from '../instruction.js';
|
|
7
|
+
import { AnyConfig } from '../config.js';
|
|
8
|
+
import SerializerBase from './serializerBase.js';
|
|
9
|
+
import { Puzzle, PuzzleData } from '../puzzle.js';
|
|
10
|
+
import { ControlLine } from '../rules/musicControlLine.js';
|
|
11
|
+
import GridZones from '../gridZones.js';
|
|
12
|
+
export declare const OFFSETS: {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
}[];
|
|
16
|
+
export declare const orientationChars: {
|
|
17
|
+
up: string;
|
|
18
|
+
"up-right": string;
|
|
19
|
+
right: string;
|
|
20
|
+
"down-right": string;
|
|
21
|
+
down: string;
|
|
22
|
+
"down-left": string;
|
|
23
|
+
left: string;
|
|
24
|
+
"up-left": string;
|
|
25
|
+
};
|
|
26
|
+
export default class SerializerV0 extends SerializerBase {
|
|
27
|
+
readonly version: number;
|
|
28
|
+
stringifyTile(tile: TileData): string;
|
|
29
|
+
parseTile(str: string): TileData;
|
|
30
|
+
stringifyControlLine(line: ControlLine): string;
|
|
31
|
+
parseControlLine(str: string): ControlLine;
|
|
32
|
+
stringifyConfig(instruction: Instruction, config: AnyConfig): string;
|
|
33
|
+
parseConfig(configs: readonly AnyConfig[], entry: string): [string, unknown];
|
|
34
|
+
stringifyInstruction(instruction: Instruction): string;
|
|
35
|
+
stringifyRule(rule: Rule): string;
|
|
36
|
+
stringifySymbol(symbol: Symbol): string;
|
|
37
|
+
parseRule(str: string): Rule;
|
|
38
|
+
parseSymbol(str: string): Symbol;
|
|
39
|
+
stringifyConnections(connections: GridConnections): string;
|
|
40
|
+
parseConnections(input: string): GridConnections;
|
|
41
|
+
stringifyZones(zones: GridZones): string;
|
|
42
|
+
parseZones(input: string): GridZones;
|
|
43
|
+
stringifyTiles(tiles: readonly (readonly TileData[])[]): string;
|
|
44
|
+
parseTiles(input: string): TileData[][];
|
|
45
|
+
stringifyRules(rules: readonly Rule[]): string;
|
|
46
|
+
parseRules(input: string): Rule[];
|
|
47
|
+
stringifySymbols(symbols: ReadonlyMap<string, readonly Symbol[]>): string;
|
|
48
|
+
parseSymbols(input: string): Map<string, Symbol[]>;
|
|
49
|
+
stringifyGrid(grid: GridData): string;
|
|
50
|
+
parseGrid(input: string): GridData;
|
|
51
|
+
stringifyGridWithSolution(puzzle: PuzzleData): string;
|
|
52
|
+
parseGridWithSolution(input: string): PuzzleData;
|
|
53
|
+
stringifyPuzzle(puzzle: Puzzle): string;
|
|
54
|
+
parsePuzzle(input: string): Puzzle;
|
|
55
|
+
}
|