@sudobility/sudojo_types 1.2.5 → 1.2.7
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/dist/index.cjs +326 -1
- package/dist/index.d.ts +114 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +326 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* TypeScript types for Sudojo API - Sudoku learning platform
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.BELT_ICON_VIEWBOX = exports.BELT_ICON_PATHS = exports.BELT_COLORS = exports.TECHNIQUE_TITLE_TO_ID = exports.TechniqueId = exports.HINT_LEVEL_LIMITS = void 0;
|
|
7
|
+
exports.DEFAULT_SCRAMBLE_CONFIG = exports.TOTAL_CELLS = exports.BLOCK_SIZE = exports.BOARD_SIZE = exports.BELT_ICON_VIEWBOX = exports.BELT_ICON_PATHS = exports.BELT_COLORS = exports.TECHNIQUE_TITLE_TO_ID = exports.TechniqueId = exports.HINT_LEVEL_LIMITS = void 0;
|
|
8
8
|
exports.successResponse = successResponse;
|
|
9
9
|
exports.errorResponse = errorResponse;
|
|
10
10
|
exports.techniqueToBit = techniqueToBit;
|
|
@@ -14,6 +14,10 @@ exports.getBeltForLevel = getBeltForLevel;
|
|
|
14
14
|
exports.getAllBelts = getAllBelts;
|
|
15
15
|
exports.getBeltIconSvg = getBeltIconSvg;
|
|
16
16
|
exports.getBeltIconForLevel = getBeltIconForLevel;
|
|
17
|
+
exports.parseBoardString = parseBoardString;
|
|
18
|
+
exports.stringifyBoard = stringifyBoard;
|
|
19
|
+
exports.scrambleBoard = scrambleBoard;
|
|
20
|
+
exports.noScramble = noScramble;
|
|
17
21
|
/** Create a success response */
|
|
18
22
|
function successResponse(data) {
|
|
19
23
|
return {
|
|
@@ -187,4 +191,325 @@ function getBeltIconForLevel(levelIndex, width = 100, height = 40) {
|
|
|
187
191
|
return null;
|
|
188
192
|
return getBeltIconSvg(belt.hex, width, height);
|
|
189
193
|
}
|
|
194
|
+
// =============================================================================
|
|
195
|
+
// Board Utilities (for parsing and manipulating Sudoku boards)
|
|
196
|
+
// =============================================================================
|
|
197
|
+
/** Board size constant (9x9 grid) */
|
|
198
|
+
exports.BOARD_SIZE = 9;
|
|
199
|
+
/** Block size constant (3x3 blocks) */
|
|
200
|
+
exports.BLOCK_SIZE = 3;
|
|
201
|
+
/** Total cells in a board */
|
|
202
|
+
exports.TOTAL_CELLS = exports.BOARD_SIZE * exports.BOARD_SIZE;
|
|
203
|
+
/**
|
|
204
|
+
* Parses an 81-character board string into a 2D array of numbers
|
|
205
|
+
* @param boardString - 81-character string where '0' or '.' represents empty cells
|
|
206
|
+
* @returns 9x9 array of numbers (0 = empty, 1-9 = filled)
|
|
207
|
+
*/
|
|
208
|
+
function parseBoardString(boardString) {
|
|
209
|
+
if (boardString.length !== exports.TOTAL_CELLS) {
|
|
210
|
+
throw new Error(`Invalid board string length: expected ${exports.TOTAL_CELLS}, got ${boardString.length}`);
|
|
211
|
+
}
|
|
212
|
+
const board = [];
|
|
213
|
+
for (let row = 0; row < exports.BOARD_SIZE; row++) {
|
|
214
|
+
const rowArray = [];
|
|
215
|
+
for (let col = 0; col < exports.BOARD_SIZE; col++) {
|
|
216
|
+
const index = row * exports.BOARD_SIZE + col;
|
|
217
|
+
const char = boardString[index];
|
|
218
|
+
if (char === undefined) {
|
|
219
|
+
throw new Error(`Missing character at position ${index}`);
|
|
220
|
+
}
|
|
221
|
+
const value = char === '.' ? 0 : parseInt(char, 10);
|
|
222
|
+
if (isNaN(value) || value < 0 || value > 9) {
|
|
223
|
+
throw new Error(`Invalid character at position ${index}: '${char}'`);
|
|
224
|
+
}
|
|
225
|
+
rowArray.push(value);
|
|
226
|
+
}
|
|
227
|
+
board.push(rowArray);
|
|
228
|
+
}
|
|
229
|
+
return board;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Converts a 2D number array back to an 81-character string
|
|
233
|
+
* @param board - 9x9 array of numbers
|
|
234
|
+
* @returns 81-character string
|
|
235
|
+
*/
|
|
236
|
+
function stringifyBoard(board) {
|
|
237
|
+
if (board.length !== exports.BOARD_SIZE) {
|
|
238
|
+
throw new Error(`Invalid board rows: expected ${exports.BOARD_SIZE}, got ${board.length}`);
|
|
239
|
+
}
|
|
240
|
+
let result = '';
|
|
241
|
+
for (let row = 0; row < exports.BOARD_SIZE; row++) {
|
|
242
|
+
if (board[row]?.length !== exports.BOARD_SIZE) {
|
|
243
|
+
throw new Error(`Invalid row ${row} length: expected ${exports.BOARD_SIZE}, got ${board[row]?.length}`);
|
|
244
|
+
}
|
|
245
|
+
for (let col = 0; col < exports.BOARD_SIZE; col++) {
|
|
246
|
+
const value = board[row]?.[col];
|
|
247
|
+
if (value === undefined || value < 0 || value > 9) {
|
|
248
|
+
throw new Error(`Invalid value at (${row}, ${col}): ${value}`);
|
|
249
|
+
}
|
|
250
|
+
result += value.toString();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return result;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Default scramble configuration (all transformations enabled)
|
|
257
|
+
*/
|
|
258
|
+
exports.DEFAULT_SCRAMBLE_CONFIG = {
|
|
259
|
+
scrambleRows: true,
|
|
260
|
+
scrambleColumns: true,
|
|
261
|
+
scrambleRowBlocks: true,
|
|
262
|
+
scrambleColumnBlocks: true,
|
|
263
|
+
scrambleDigits: true,
|
|
264
|
+
rotate: true,
|
|
265
|
+
mirror: true,
|
|
266
|
+
};
|
|
267
|
+
/**
|
|
268
|
+
* Fisher-Yates shuffle algorithm for arrays
|
|
269
|
+
*/
|
|
270
|
+
function shuffleArray(array) {
|
|
271
|
+
for (let i = array.length - 1; i > 0; i--) {
|
|
272
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
273
|
+
const temp = array[i];
|
|
274
|
+
array[i] = array[j];
|
|
275
|
+
array[j] = temp;
|
|
276
|
+
}
|
|
277
|
+
return array;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Creates a random digit mapping (1-9 -> 1-9)
|
|
281
|
+
*/
|
|
282
|
+
function createDigitMapping() {
|
|
283
|
+
const digits = [1, 2, 3, 4, 5, 6, 7, 8, 9];
|
|
284
|
+
const shuffled = shuffleArray([...digits]);
|
|
285
|
+
const mapping = new Map();
|
|
286
|
+
for (let i = 0; i < digits.length; i++) {
|
|
287
|
+
mapping.set(digits[i], shuffled[i]);
|
|
288
|
+
}
|
|
289
|
+
return mapping;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Creates the reverse of a digit mapping
|
|
293
|
+
*/
|
|
294
|
+
function reverseDigitMapping(mapping) {
|
|
295
|
+
const reverse = new Map();
|
|
296
|
+
for (const [original, scrambled] of mapping) {
|
|
297
|
+
reverse.set(scrambled, original);
|
|
298
|
+
}
|
|
299
|
+
return reverse;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Applies digit mapping to a board
|
|
303
|
+
*/
|
|
304
|
+
function applyDigitMapping(board, mapping) {
|
|
305
|
+
return board.map((row) => row.map((value) => {
|
|
306
|
+
if (value === 0)
|
|
307
|
+
return 0;
|
|
308
|
+
return mapping.get(value) ?? value;
|
|
309
|
+
}));
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Rotates the board 90 degrees clockwise
|
|
313
|
+
*/
|
|
314
|
+
function rotateBoard90(board) {
|
|
315
|
+
const rotated = [];
|
|
316
|
+
for (let col = 0; col < exports.BOARD_SIZE; col++) {
|
|
317
|
+
const newRow = [];
|
|
318
|
+
for (let row = exports.BOARD_SIZE - 1; row >= 0; row--) {
|
|
319
|
+
newRow.push(board[row]?.[col] ?? 0);
|
|
320
|
+
}
|
|
321
|
+
rotated.push(newRow);
|
|
322
|
+
}
|
|
323
|
+
return rotated;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Mirrors the board horizontally (left-right)
|
|
327
|
+
*/
|
|
328
|
+
function mirrorHorizontally(board) {
|
|
329
|
+
return board.map((row) => [...row].reverse());
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Mirrors the board vertically (top-bottom)
|
|
333
|
+
*/
|
|
334
|
+
function mirrorVertically(board) {
|
|
335
|
+
return [...board].reverse().map((row) => [...row]);
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Scrambles a Sudoku board while preserving its logical structure.
|
|
339
|
+
*
|
|
340
|
+
* Scrambling preserves the logical structure of a Sudoku puzzle while making it
|
|
341
|
+
* appear different. This is useful for:
|
|
342
|
+
* - Preventing players from recognizing puzzles they've seen before
|
|
343
|
+
* - Creating variety from a limited puzzle database
|
|
344
|
+
* - Making it harder to look up solutions online
|
|
345
|
+
*
|
|
346
|
+
* @param puzzle - 81-character puzzle string
|
|
347
|
+
* @param solution - 81-character solution string
|
|
348
|
+
* @param config - Scramble configuration (defaults to all transformations enabled)
|
|
349
|
+
* @returns Scramble result with scrambled puzzle, solution, and digit mapping
|
|
350
|
+
*
|
|
351
|
+
* @example
|
|
352
|
+
* ```typescript
|
|
353
|
+
* const result = scrambleBoard(puzzle, solution);
|
|
354
|
+
* console.log(result.puzzle); // Scrambled puzzle
|
|
355
|
+
* console.log(result.solution); // Scrambled solution
|
|
356
|
+
* console.log(result.digitMapping); // Map from original to scrambled digits
|
|
357
|
+
* ```
|
|
358
|
+
*/
|
|
359
|
+
function scrambleBoard(puzzle, solution, config = exports.DEFAULT_SCRAMBLE_CONFIG) {
|
|
360
|
+
// Parse the boards
|
|
361
|
+
let puzzleBoard = parseBoardString(puzzle);
|
|
362
|
+
let solutionBoard = parseBoardString(solution);
|
|
363
|
+
// Create digit mapping (applied to both puzzle and solution)
|
|
364
|
+
let digitMapping = new Map();
|
|
365
|
+
for (let i = 1; i <= 9; i++) {
|
|
366
|
+
digitMapping.set(i, i); // Identity mapping by default
|
|
367
|
+
}
|
|
368
|
+
if (config.scrambleDigits) {
|
|
369
|
+
digitMapping = createDigitMapping();
|
|
370
|
+
puzzleBoard = applyDigitMapping(puzzleBoard, digitMapping);
|
|
371
|
+
solutionBoard = applyDigitMapping(solutionBoard, digitMapping);
|
|
372
|
+
}
|
|
373
|
+
// Scramble rows within blocks
|
|
374
|
+
if (config.scrambleRows) {
|
|
375
|
+
const rowPermutations = [];
|
|
376
|
+
for (let blockRow = 0; blockRow < exports.BLOCK_SIZE; blockRow++) {
|
|
377
|
+
rowPermutations.push(shuffleArray([0, 1, 2]));
|
|
378
|
+
}
|
|
379
|
+
const applyRowPermutation = (board) => {
|
|
380
|
+
for (let blockRow = 0; blockRow < exports.BLOCK_SIZE; blockRow++) {
|
|
381
|
+
const startRow = blockRow * exports.BLOCK_SIZE;
|
|
382
|
+
const perm = rowPermutations[blockRow];
|
|
383
|
+
const rowsCopy = [
|
|
384
|
+
[...(board[startRow] ?? [])],
|
|
385
|
+
[...(board[startRow + 1] ?? [])],
|
|
386
|
+
[...(board[startRow + 2] ?? [])],
|
|
387
|
+
];
|
|
388
|
+
for (let i = 0; i < exports.BLOCK_SIZE; i++) {
|
|
389
|
+
board[startRow + i] = rowsCopy[perm[i]];
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
applyRowPermutation(puzzleBoard);
|
|
394
|
+
applyRowPermutation(solutionBoard);
|
|
395
|
+
}
|
|
396
|
+
// Scramble columns within blocks
|
|
397
|
+
if (config.scrambleColumns) {
|
|
398
|
+
const colPermutations = [];
|
|
399
|
+
for (let blockCol = 0; blockCol < exports.BLOCK_SIZE; blockCol++) {
|
|
400
|
+
colPermutations.push(shuffleArray([0, 1, 2]));
|
|
401
|
+
}
|
|
402
|
+
const applyColPermutation = (board) => {
|
|
403
|
+
for (let blockCol = 0; blockCol < exports.BLOCK_SIZE; blockCol++) {
|
|
404
|
+
const startCol = blockCol * exports.BLOCK_SIZE;
|
|
405
|
+
const perm = colPermutations[blockCol];
|
|
406
|
+
for (let row = 0; row < exports.BOARD_SIZE; row++) {
|
|
407
|
+
const boardRow = board[row];
|
|
408
|
+
if (boardRow) {
|
|
409
|
+
const colsCopy = [
|
|
410
|
+
boardRow[startCol],
|
|
411
|
+
boardRow[startCol + 1],
|
|
412
|
+
boardRow[startCol + 2],
|
|
413
|
+
];
|
|
414
|
+
for (let i = 0; i < exports.BLOCK_SIZE; i++) {
|
|
415
|
+
boardRow[startCol + i] = colsCopy[perm[i]];
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
applyColPermutation(puzzleBoard);
|
|
422
|
+
applyColPermutation(solutionBoard);
|
|
423
|
+
}
|
|
424
|
+
// Scramble row blocks
|
|
425
|
+
if (config.scrambleRowBlocks) {
|
|
426
|
+
const blockOrder = shuffleArray([0, 1, 2]);
|
|
427
|
+
const applyRowBlockPermutation = (board) => {
|
|
428
|
+
const allRows = board.map((row) => [...row]);
|
|
429
|
+
const result = [];
|
|
430
|
+
for (let newBlockIndex = 0; newBlockIndex < exports.BLOCK_SIZE; newBlockIndex++) {
|
|
431
|
+
const oldBlockIndex = blockOrder[newBlockIndex];
|
|
432
|
+
for (let i = 0; i < exports.BLOCK_SIZE; i++) {
|
|
433
|
+
result.push(allRows[oldBlockIndex * exports.BLOCK_SIZE + i]);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return result;
|
|
437
|
+
};
|
|
438
|
+
puzzleBoard = applyRowBlockPermutation(puzzleBoard);
|
|
439
|
+
solutionBoard = applyRowBlockPermutation(solutionBoard);
|
|
440
|
+
}
|
|
441
|
+
// Scramble column blocks
|
|
442
|
+
if (config.scrambleColumnBlocks) {
|
|
443
|
+
const blockOrder = shuffleArray([0, 1, 2]);
|
|
444
|
+
const applyColBlockPermutation = (board) => {
|
|
445
|
+
const result = board.map(() => new Array(exports.BOARD_SIZE).fill(0));
|
|
446
|
+
for (let newBlockIndex = 0; newBlockIndex < exports.BLOCK_SIZE; newBlockIndex++) {
|
|
447
|
+
const oldBlockIndex = blockOrder[newBlockIndex];
|
|
448
|
+
for (let i = 0; i < exports.BLOCK_SIZE; i++) {
|
|
449
|
+
const oldCol = oldBlockIndex * exports.BLOCK_SIZE + i;
|
|
450
|
+
const newCol = newBlockIndex * exports.BLOCK_SIZE + i;
|
|
451
|
+
for (let row = 0; row < exports.BOARD_SIZE; row++) {
|
|
452
|
+
const resultRow = result[row];
|
|
453
|
+
if (resultRow) {
|
|
454
|
+
resultRow[newCol] = board[row]?.[oldCol] ?? 0;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
return result;
|
|
460
|
+
};
|
|
461
|
+
puzzleBoard = applyColBlockPermutation(puzzleBoard);
|
|
462
|
+
solutionBoard = applyColBlockPermutation(solutionBoard);
|
|
463
|
+
}
|
|
464
|
+
// Rotate
|
|
465
|
+
if (config.rotate) {
|
|
466
|
+
const rotations = Math.floor(Math.random() * 4);
|
|
467
|
+
for (let i = 0; i < rotations; i++) {
|
|
468
|
+
puzzleBoard = rotateBoard90(puzzleBoard);
|
|
469
|
+
solutionBoard = rotateBoard90(solutionBoard);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
// Mirror
|
|
473
|
+
if (config.mirror) {
|
|
474
|
+
const mirrorType = Math.floor(Math.random() * 4);
|
|
475
|
+
const applyMirror = (board) => {
|
|
476
|
+
switch (mirrorType) {
|
|
477
|
+
case 1:
|
|
478
|
+
return mirrorHorizontally(board);
|
|
479
|
+
case 2:
|
|
480
|
+
return mirrorVertically(board);
|
|
481
|
+
case 3:
|
|
482
|
+
return mirrorVertically(mirrorHorizontally(board));
|
|
483
|
+
default:
|
|
484
|
+
return board;
|
|
485
|
+
}
|
|
486
|
+
};
|
|
487
|
+
puzzleBoard = applyMirror(puzzleBoard);
|
|
488
|
+
solutionBoard = applyMirror(solutionBoard);
|
|
489
|
+
}
|
|
490
|
+
return {
|
|
491
|
+
puzzle: stringifyBoard(puzzleBoard),
|
|
492
|
+
solution: stringifyBoard(solutionBoard),
|
|
493
|
+
digitMapping,
|
|
494
|
+
reverseDigitMapping: reverseDigitMapping(digitMapping),
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Creates an identity scramble result (no scrambling)
|
|
499
|
+
* @param puzzle - 81-character puzzle string
|
|
500
|
+
* @param solution - 81-character solution string
|
|
501
|
+
* @returns ScrambleResult with identity mapping
|
|
502
|
+
*/
|
|
503
|
+
function noScramble(puzzle, solution) {
|
|
504
|
+
const identityMapping = new Map();
|
|
505
|
+
for (let i = 1; i <= 9; i++) {
|
|
506
|
+
identityMapping.set(i, i);
|
|
507
|
+
}
|
|
508
|
+
return {
|
|
509
|
+
puzzle,
|
|
510
|
+
solution,
|
|
511
|
+
digitMapping: identityMapping,
|
|
512
|
+
reverseDigitMapping: identityMapping,
|
|
513
|
+
};
|
|
514
|
+
}
|
|
190
515
|
//# sourceMappingURL=index.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -388,6 +388,36 @@ export interface TechniqueExampleUpdateRequest {
|
|
|
388
388
|
hint_data: Optional<string>;
|
|
389
389
|
source_board_uuid: Optional<string | null>;
|
|
390
390
|
}
|
|
391
|
+
export interface TechniquePractice {
|
|
392
|
+
uuid: string;
|
|
393
|
+
/** Reference to the technique this practice is for */
|
|
394
|
+
technique_uuid: string | null;
|
|
395
|
+
/** Board state (merged - looks like fresh puzzle) */
|
|
396
|
+
board: string;
|
|
397
|
+
/** Pencilmarks at this state (comma-delimited) */
|
|
398
|
+
pencilmarks: string | null;
|
|
399
|
+
/** Solution for reference */
|
|
400
|
+
solution: string;
|
|
401
|
+
/** Hint data as JSON string */
|
|
402
|
+
hint_data: string | null;
|
|
403
|
+
/** Source example UUID for reference */
|
|
404
|
+
source_example_uuid: string | null;
|
|
405
|
+
created_at: Date | null;
|
|
406
|
+
}
|
|
407
|
+
export interface TechniquePracticeCreateRequest {
|
|
408
|
+
technique_uuid: string;
|
|
409
|
+
board: string;
|
|
410
|
+
pencilmarks: Optional<string>;
|
|
411
|
+
solution: string;
|
|
412
|
+
hint_data: Optional<string>;
|
|
413
|
+
source_example_uuid: Optional<string | null>;
|
|
414
|
+
}
|
|
415
|
+
/** Practice count item for list endpoint */
|
|
416
|
+
export interface TechniquePracticeCountItem {
|
|
417
|
+
technique_uuid: string;
|
|
418
|
+
technique_title: string;
|
|
419
|
+
count: number;
|
|
420
|
+
}
|
|
391
421
|
/** Belt information for a level */
|
|
392
422
|
export interface Belt {
|
|
393
423
|
/** Belt name (e.g., "White", "Yellow") */
|
|
@@ -439,4 +469,88 @@ export declare function getBeltIconSvg(fill: string, width?: number, height?: nu
|
|
|
439
469
|
* @returns SVG string or null if level is invalid
|
|
440
470
|
*/
|
|
441
471
|
export declare function getBeltIconForLevel(levelIndex: number, width?: number, height?: number): string | null;
|
|
472
|
+
/** Board size constant (9x9 grid) */
|
|
473
|
+
export declare const BOARD_SIZE = 9;
|
|
474
|
+
/** Block size constant (3x3 blocks) */
|
|
475
|
+
export declare const BLOCK_SIZE = 3;
|
|
476
|
+
/** Total cells in a board */
|
|
477
|
+
export declare const TOTAL_CELLS: number;
|
|
478
|
+
/**
|
|
479
|
+
* Parses an 81-character board string into a 2D array of numbers
|
|
480
|
+
* @param boardString - 81-character string where '0' or '.' represents empty cells
|
|
481
|
+
* @returns 9x9 array of numbers (0 = empty, 1-9 = filled)
|
|
482
|
+
*/
|
|
483
|
+
export declare function parseBoardString(boardString: string): number[][];
|
|
484
|
+
/**
|
|
485
|
+
* Converts a 2D number array back to an 81-character string
|
|
486
|
+
* @param board - 9x9 array of numbers
|
|
487
|
+
* @returns 81-character string
|
|
488
|
+
*/
|
|
489
|
+
export declare function stringifyBoard(board: number[][]): string;
|
|
490
|
+
/**
|
|
491
|
+
* Scramble configuration options
|
|
492
|
+
*/
|
|
493
|
+
export interface ScrambleConfig {
|
|
494
|
+
/** Whether to scramble rows within blocks */
|
|
495
|
+
scrambleRows: boolean;
|
|
496
|
+
/** Whether to scramble columns within blocks */
|
|
497
|
+
scrambleColumns: boolean;
|
|
498
|
+
/** Whether to scramble row blocks (groups of 3 rows) */
|
|
499
|
+
scrambleRowBlocks: boolean;
|
|
500
|
+
/** Whether to scramble column blocks (groups of 3 columns) */
|
|
501
|
+
scrambleColumnBlocks: boolean;
|
|
502
|
+
/** Whether to scramble digit mapping (1-9 -> 1-9) */
|
|
503
|
+
scrambleDigits: boolean;
|
|
504
|
+
/** Whether to rotate the board (0, 90, 180, 270 degrees) */
|
|
505
|
+
rotate: boolean;
|
|
506
|
+
/** Whether to mirror the board */
|
|
507
|
+
mirror: boolean;
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* Default scramble configuration (all transformations enabled)
|
|
511
|
+
*/
|
|
512
|
+
export declare const DEFAULT_SCRAMBLE_CONFIG: ScrambleConfig;
|
|
513
|
+
/**
|
|
514
|
+
* Result of scrambling a board
|
|
515
|
+
*/
|
|
516
|
+
export interface ScrambleResult {
|
|
517
|
+
/** The scrambled puzzle string */
|
|
518
|
+
puzzle: string;
|
|
519
|
+
/** The scrambled solution string */
|
|
520
|
+
solution: string;
|
|
521
|
+
/** The digit mapping used (original -> scrambled) */
|
|
522
|
+
digitMapping: Map<number, number>;
|
|
523
|
+
/** The reverse digit mapping (scrambled -> original) */
|
|
524
|
+
reverseDigitMapping: Map<number, number>;
|
|
525
|
+
}
|
|
526
|
+
/**
|
|
527
|
+
* Scrambles a Sudoku board while preserving its logical structure.
|
|
528
|
+
*
|
|
529
|
+
* Scrambling preserves the logical structure of a Sudoku puzzle while making it
|
|
530
|
+
* appear different. This is useful for:
|
|
531
|
+
* - Preventing players from recognizing puzzles they've seen before
|
|
532
|
+
* - Creating variety from a limited puzzle database
|
|
533
|
+
* - Making it harder to look up solutions online
|
|
534
|
+
*
|
|
535
|
+
* @param puzzle - 81-character puzzle string
|
|
536
|
+
* @param solution - 81-character solution string
|
|
537
|
+
* @param config - Scramble configuration (defaults to all transformations enabled)
|
|
538
|
+
* @returns Scramble result with scrambled puzzle, solution, and digit mapping
|
|
539
|
+
*
|
|
540
|
+
* @example
|
|
541
|
+
* ```typescript
|
|
542
|
+
* const result = scrambleBoard(puzzle, solution);
|
|
543
|
+
* console.log(result.puzzle); // Scrambled puzzle
|
|
544
|
+
* console.log(result.solution); // Scrambled solution
|
|
545
|
+
* console.log(result.digitMapping); // Map from original to scrambled digits
|
|
546
|
+
* ```
|
|
547
|
+
*/
|
|
548
|
+
export declare function scrambleBoard(puzzle: string, solution: string, config?: ScrambleConfig): ScrambleResult;
|
|
549
|
+
/**
|
|
550
|
+
* Creates an identity scramble result (no scrambling)
|
|
551
|
+
* @param puzzle - 81-character puzzle string
|
|
552
|
+
* @param solution - 81-character solution string
|
|
553
|
+
* @returns ScrambleResult with identity mapping
|
|
554
|
+
*/
|
|
555
|
+
export declare function noScramble(puzzle: string, solution: string): ScrambleResult;
|
|
442
556
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* TypeScript types for Sudojo API - Sudoku learning platform
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.BELT_ICON_VIEWBOX = exports.BELT_ICON_PATHS = exports.BELT_COLORS = exports.TECHNIQUE_TITLE_TO_ID = exports.TechniqueId = exports.HINT_LEVEL_LIMITS = void 0;
|
|
7
|
+
exports.DEFAULT_SCRAMBLE_CONFIG = exports.TOTAL_CELLS = exports.BLOCK_SIZE = exports.BOARD_SIZE = exports.BELT_ICON_VIEWBOX = exports.BELT_ICON_PATHS = exports.BELT_COLORS = exports.TECHNIQUE_TITLE_TO_ID = exports.TechniqueId = exports.HINT_LEVEL_LIMITS = void 0;
|
|
8
8
|
exports.successResponse = successResponse;
|
|
9
9
|
exports.errorResponse = errorResponse;
|
|
10
10
|
exports.techniqueToBit = techniqueToBit;
|
|
@@ -14,6 +14,10 @@ exports.getBeltForLevel = getBeltForLevel;
|
|
|
14
14
|
exports.getAllBelts = getAllBelts;
|
|
15
15
|
exports.getBeltIconSvg = getBeltIconSvg;
|
|
16
16
|
exports.getBeltIconForLevel = getBeltIconForLevel;
|
|
17
|
+
exports.parseBoardString = parseBoardString;
|
|
18
|
+
exports.stringifyBoard = stringifyBoard;
|
|
19
|
+
exports.scrambleBoard = scrambleBoard;
|
|
20
|
+
exports.noScramble = noScramble;
|
|
17
21
|
/** Create a success response */
|
|
18
22
|
function successResponse(data) {
|
|
19
23
|
return {
|
|
@@ -187,4 +191,325 @@ function getBeltIconForLevel(levelIndex, width = 100, height = 40) {
|
|
|
187
191
|
return null;
|
|
188
192
|
return getBeltIconSvg(belt.hex, width, height);
|
|
189
193
|
}
|
|
194
|
+
// =============================================================================
|
|
195
|
+
// Board Utilities (for parsing and manipulating Sudoku boards)
|
|
196
|
+
// =============================================================================
|
|
197
|
+
/** Board size constant (9x9 grid) */
|
|
198
|
+
exports.BOARD_SIZE = 9;
|
|
199
|
+
/** Block size constant (3x3 blocks) */
|
|
200
|
+
exports.BLOCK_SIZE = 3;
|
|
201
|
+
/** Total cells in a board */
|
|
202
|
+
exports.TOTAL_CELLS = exports.BOARD_SIZE * exports.BOARD_SIZE;
|
|
203
|
+
/**
|
|
204
|
+
* Parses an 81-character board string into a 2D array of numbers
|
|
205
|
+
* @param boardString - 81-character string where '0' or '.' represents empty cells
|
|
206
|
+
* @returns 9x9 array of numbers (0 = empty, 1-9 = filled)
|
|
207
|
+
*/
|
|
208
|
+
function parseBoardString(boardString) {
|
|
209
|
+
if (boardString.length !== exports.TOTAL_CELLS) {
|
|
210
|
+
throw new Error(`Invalid board string length: expected ${exports.TOTAL_CELLS}, got ${boardString.length}`);
|
|
211
|
+
}
|
|
212
|
+
const board = [];
|
|
213
|
+
for (let row = 0; row < exports.BOARD_SIZE; row++) {
|
|
214
|
+
const rowArray = [];
|
|
215
|
+
for (let col = 0; col < exports.BOARD_SIZE; col++) {
|
|
216
|
+
const index = row * exports.BOARD_SIZE + col;
|
|
217
|
+
const char = boardString[index];
|
|
218
|
+
if (char === undefined) {
|
|
219
|
+
throw new Error(`Missing character at position ${index}`);
|
|
220
|
+
}
|
|
221
|
+
const value = char === '.' ? 0 : parseInt(char, 10);
|
|
222
|
+
if (isNaN(value) || value < 0 || value > 9) {
|
|
223
|
+
throw new Error(`Invalid character at position ${index}: '${char}'`);
|
|
224
|
+
}
|
|
225
|
+
rowArray.push(value);
|
|
226
|
+
}
|
|
227
|
+
board.push(rowArray);
|
|
228
|
+
}
|
|
229
|
+
return board;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Converts a 2D number array back to an 81-character string
|
|
233
|
+
* @param board - 9x9 array of numbers
|
|
234
|
+
* @returns 81-character string
|
|
235
|
+
*/
|
|
236
|
+
function stringifyBoard(board) {
|
|
237
|
+
if (board.length !== exports.BOARD_SIZE) {
|
|
238
|
+
throw new Error(`Invalid board rows: expected ${exports.BOARD_SIZE}, got ${board.length}`);
|
|
239
|
+
}
|
|
240
|
+
let result = '';
|
|
241
|
+
for (let row = 0; row < exports.BOARD_SIZE; row++) {
|
|
242
|
+
if (board[row]?.length !== exports.BOARD_SIZE) {
|
|
243
|
+
throw new Error(`Invalid row ${row} length: expected ${exports.BOARD_SIZE}, got ${board[row]?.length}`);
|
|
244
|
+
}
|
|
245
|
+
for (let col = 0; col < exports.BOARD_SIZE; col++) {
|
|
246
|
+
const value = board[row]?.[col];
|
|
247
|
+
if (value === undefined || value < 0 || value > 9) {
|
|
248
|
+
throw new Error(`Invalid value at (${row}, ${col}): ${value}`);
|
|
249
|
+
}
|
|
250
|
+
result += value.toString();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return result;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Default scramble configuration (all transformations enabled)
|
|
257
|
+
*/
|
|
258
|
+
exports.DEFAULT_SCRAMBLE_CONFIG = {
|
|
259
|
+
scrambleRows: true,
|
|
260
|
+
scrambleColumns: true,
|
|
261
|
+
scrambleRowBlocks: true,
|
|
262
|
+
scrambleColumnBlocks: true,
|
|
263
|
+
scrambleDigits: true,
|
|
264
|
+
rotate: true,
|
|
265
|
+
mirror: true,
|
|
266
|
+
};
|
|
267
|
+
/**
|
|
268
|
+
* Fisher-Yates shuffle algorithm for arrays
|
|
269
|
+
*/
|
|
270
|
+
function shuffleArray(array) {
|
|
271
|
+
for (let i = array.length - 1; i > 0; i--) {
|
|
272
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
273
|
+
const temp = array[i];
|
|
274
|
+
array[i] = array[j];
|
|
275
|
+
array[j] = temp;
|
|
276
|
+
}
|
|
277
|
+
return array;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Creates a random digit mapping (1-9 -> 1-9)
|
|
281
|
+
*/
|
|
282
|
+
function createDigitMapping() {
|
|
283
|
+
const digits = [1, 2, 3, 4, 5, 6, 7, 8, 9];
|
|
284
|
+
const shuffled = shuffleArray([...digits]);
|
|
285
|
+
const mapping = new Map();
|
|
286
|
+
for (let i = 0; i < digits.length; i++) {
|
|
287
|
+
mapping.set(digits[i], shuffled[i]);
|
|
288
|
+
}
|
|
289
|
+
return mapping;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Creates the reverse of a digit mapping
|
|
293
|
+
*/
|
|
294
|
+
function reverseDigitMapping(mapping) {
|
|
295
|
+
const reverse = new Map();
|
|
296
|
+
for (const [original, scrambled] of mapping) {
|
|
297
|
+
reverse.set(scrambled, original);
|
|
298
|
+
}
|
|
299
|
+
return reverse;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Applies digit mapping to a board
|
|
303
|
+
*/
|
|
304
|
+
function applyDigitMapping(board, mapping) {
|
|
305
|
+
return board.map((row) => row.map((value) => {
|
|
306
|
+
if (value === 0)
|
|
307
|
+
return 0;
|
|
308
|
+
return mapping.get(value) ?? value;
|
|
309
|
+
}));
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Rotates the board 90 degrees clockwise
|
|
313
|
+
*/
|
|
314
|
+
function rotateBoard90(board) {
|
|
315
|
+
const rotated = [];
|
|
316
|
+
for (let col = 0; col < exports.BOARD_SIZE; col++) {
|
|
317
|
+
const newRow = [];
|
|
318
|
+
for (let row = exports.BOARD_SIZE - 1; row >= 0; row--) {
|
|
319
|
+
newRow.push(board[row]?.[col] ?? 0);
|
|
320
|
+
}
|
|
321
|
+
rotated.push(newRow);
|
|
322
|
+
}
|
|
323
|
+
return rotated;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Mirrors the board horizontally (left-right)
|
|
327
|
+
*/
|
|
328
|
+
function mirrorHorizontally(board) {
|
|
329
|
+
return board.map((row) => [...row].reverse());
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Mirrors the board vertically (top-bottom)
|
|
333
|
+
*/
|
|
334
|
+
function mirrorVertically(board) {
|
|
335
|
+
return [...board].reverse().map((row) => [...row]);
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Scrambles a Sudoku board while preserving its logical structure.
|
|
339
|
+
*
|
|
340
|
+
* Scrambling preserves the logical structure of a Sudoku puzzle while making it
|
|
341
|
+
* appear different. This is useful for:
|
|
342
|
+
* - Preventing players from recognizing puzzles they've seen before
|
|
343
|
+
* - Creating variety from a limited puzzle database
|
|
344
|
+
* - Making it harder to look up solutions online
|
|
345
|
+
*
|
|
346
|
+
* @param puzzle - 81-character puzzle string
|
|
347
|
+
* @param solution - 81-character solution string
|
|
348
|
+
* @param config - Scramble configuration (defaults to all transformations enabled)
|
|
349
|
+
* @returns Scramble result with scrambled puzzle, solution, and digit mapping
|
|
350
|
+
*
|
|
351
|
+
* @example
|
|
352
|
+
* ```typescript
|
|
353
|
+
* const result = scrambleBoard(puzzle, solution);
|
|
354
|
+
* console.log(result.puzzle); // Scrambled puzzle
|
|
355
|
+
* console.log(result.solution); // Scrambled solution
|
|
356
|
+
* console.log(result.digitMapping); // Map from original to scrambled digits
|
|
357
|
+
* ```
|
|
358
|
+
*/
|
|
359
|
+
function scrambleBoard(puzzle, solution, config = exports.DEFAULT_SCRAMBLE_CONFIG) {
|
|
360
|
+
// Parse the boards
|
|
361
|
+
let puzzleBoard = parseBoardString(puzzle);
|
|
362
|
+
let solutionBoard = parseBoardString(solution);
|
|
363
|
+
// Create digit mapping (applied to both puzzle and solution)
|
|
364
|
+
let digitMapping = new Map();
|
|
365
|
+
for (let i = 1; i <= 9; i++) {
|
|
366
|
+
digitMapping.set(i, i); // Identity mapping by default
|
|
367
|
+
}
|
|
368
|
+
if (config.scrambleDigits) {
|
|
369
|
+
digitMapping = createDigitMapping();
|
|
370
|
+
puzzleBoard = applyDigitMapping(puzzleBoard, digitMapping);
|
|
371
|
+
solutionBoard = applyDigitMapping(solutionBoard, digitMapping);
|
|
372
|
+
}
|
|
373
|
+
// Scramble rows within blocks
|
|
374
|
+
if (config.scrambleRows) {
|
|
375
|
+
const rowPermutations = [];
|
|
376
|
+
for (let blockRow = 0; blockRow < exports.BLOCK_SIZE; blockRow++) {
|
|
377
|
+
rowPermutations.push(shuffleArray([0, 1, 2]));
|
|
378
|
+
}
|
|
379
|
+
const applyRowPermutation = (board) => {
|
|
380
|
+
for (let blockRow = 0; blockRow < exports.BLOCK_SIZE; blockRow++) {
|
|
381
|
+
const startRow = blockRow * exports.BLOCK_SIZE;
|
|
382
|
+
const perm = rowPermutations[blockRow];
|
|
383
|
+
const rowsCopy = [
|
|
384
|
+
[...(board[startRow] ?? [])],
|
|
385
|
+
[...(board[startRow + 1] ?? [])],
|
|
386
|
+
[...(board[startRow + 2] ?? [])],
|
|
387
|
+
];
|
|
388
|
+
for (let i = 0; i < exports.BLOCK_SIZE; i++) {
|
|
389
|
+
board[startRow + i] = rowsCopy[perm[i]];
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
applyRowPermutation(puzzleBoard);
|
|
394
|
+
applyRowPermutation(solutionBoard);
|
|
395
|
+
}
|
|
396
|
+
// Scramble columns within blocks
|
|
397
|
+
if (config.scrambleColumns) {
|
|
398
|
+
const colPermutations = [];
|
|
399
|
+
for (let blockCol = 0; blockCol < exports.BLOCK_SIZE; blockCol++) {
|
|
400
|
+
colPermutations.push(shuffleArray([0, 1, 2]));
|
|
401
|
+
}
|
|
402
|
+
const applyColPermutation = (board) => {
|
|
403
|
+
for (let blockCol = 0; blockCol < exports.BLOCK_SIZE; blockCol++) {
|
|
404
|
+
const startCol = blockCol * exports.BLOCK_SIZE;
|
|
405
|
+
const perm = colPermutations[blockCol];
|
|
406
|
+
for (let row = 0; row < exports.BOARD_SIZE; row++) {
|
|
407
|
+
const boardRow = board[row];
|
|
408
|
+
if (boardRow) {
|
|
409
|
+
const colsCopy = [
|
|
410
|
+
boardRow[startCol],
|
|
411
|
+
boardRow[startCol + 1],
|
|
412
|
+
boardRow[startCol + 2],
|
|
413
|
+
];
|
|
414
|
+
for (let i = 0; i < exports.BLOCK_SIZE; i++) {
|
|
415
|
+
boardRow[startCol + i] = colsCopy[perm[i]];
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
applyColPermutation(puzzleBoard);
|
|
422
|
+
applyColPermutation(solutionBoard);
|
|
423
|
+
}
|
|
424
|
+
// Scramble row blocks
|
|
425
|
+
if (config.scrambleRowBlocks) {
|
|
426
|
+
const blockOrder = shuffleArray([0, 1, 2]);
|
|
427
|
+
const applyRowBlockPermutation = (board) => {
|
|
428
|
+
const allRows = board.map((row) => [...row]);
|
|
429
|
+
const result = [];
|
|
430
|
+
for (let newBlockIndex = 0; newBlockIndex < exports.BLOCK_SIZE; newBlockIndex++) {
|
|
431
|
+
const oldBlockIndex = blockOrder[newBlockIndex];
|
|
432
|
+
for (let i = 0; i < exports.BLOCK_SIZE; i++) {
|
|
433
|
+
result.push(allRows[oldBlockIndex * exports.BLOCK_SIZE + i]);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return result;
|
|
437
|
+
};
|
|
438
|
+
puzzleBoard = applyRowBlockPermutation(puzzleBoard);
|
|
439
|
+
solutionBoard = applyRowBlockPermutation(solutionBoard);
|
|
440
|
+
}
|
|
441
|
+
// Scramble column blocks
|
|
442
|
+
if (config.scrambleColumnBlocks) {
|
|
443
|
+
const blockOrder = shuffleArray([0, 1, 2]);
|
|
444
|
+
const applyColBlockPermutation = (board) => {
|
|
445
|
+
const result = board.map(() => new Array(exports.BOARD_SIZE).fill(0));
|
|
446
|
+
for (let newBlockIndex = 0; newBlockIndex < exports.BLOCK_SIZE; newBlockIndex++) {
|
|
447
|
+
const oldBlockIndex = blockOrder[newBlockIndex];
|
|
448
|
+
for (let i = 0; i < exports.BLOCK_SIZE; i++) {
|
|
449
|
+
const oldCol = oldBlockIndex * exports.BLOCK_SIZE + i;
|
|
450
|
+
const newCol = newBlockIndex * exports.BLOCK_SIZE + i;
|
|
451
|
+
for (let row = 0; row < exports.BOARD_SIZE; row++) {
|
|
452
|
+
const resultRow = result[row];
|
|
453
|
+
if (resultRow) {
|
|
454
|
+
resultRow[newCol] = board[row]?.[oldCol] ?? 0;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
return result;
|
|
460
|
+
};
|
|
461
|
+
puzzleBoard = applyColBlockPermutation(puzzleBoard);
|
|
462
|
+
solutionBoard = applyColBlockPermutation(solutionBoard);
|
|
463
|
+
}
|
|
464
|
+
// Rotate
|
|
465
|
+
if (config.rotate) {
|
|
466
|
+
const rotations = Math.floor(Math.random() * 4);
|
|
467
|
+
for (let i = 0; i < rotations; i++) {
|
|
468
|
+
puzzleBoard = rotateBoard90(puzzleBoard);
|
|
469
|
+
solutionBoard = rotateBoard90(solutionBoard);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
// Mirror
|
|
473
|
+
if (config.mirror) {
|
|
474
|
+
const mirrorType = Math.floor(Math.random() * 4);
|
|
475
|
+
const applyMirror = (board) => {
|
|
476
|
+
switch (mirrorType) {
|
|
477
|
+
case 1:
|
|
478
|
+
return mirrorHorizontally(board);
|
|
479
|
+
case 2:
|
|
480
|
+
return mirrorVertically(board);
|
|
481
|
+
case 3:
|
|
482
|
+
return mirrorVertically(mirrorHorizontally(board));
|
|
483
|
+
default:
|
|
484
|
+
return board;
|
|
485
|
+
}
|
|
486
|
+
};
|
|
487
|
+
puzzleBoard = applyMirror(puzzleBoard);
|
|
488
|
+
solutionBoard = applyMirror(solutionBoard);
|
|
489
|
+
}
|
|
490
|
+
return {
|
|
491
|
+
puzzle: stringifyBoard(puzzleBoard),
|
|
492
|
+
solution: stringifyBoard(solutionBoard),
|
|
493
|
+
digitMapping,
|
|
494
|
+
reverseDigitMapping: reverseDigitMapping(digitMapping),
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Creates an identity scramble result (no scrambling)
|
|
499
|
+
* @param puzzle - 81-character puzzle string
|
|
500
|
+
* @param solution - 81-character solution string
|
|
501
|
+
* @returns ScrambleResult with identity mapping
|
|
502
|
+
*/
|
|
503
|
+
function noScramble(puzzle, solution) {
|
|
504
|
+
const identityMapping = new Map();
|
|
505
|
+
for (let i = 1; i <= 9; i++) {
|
|
506
|
+
identityMapping.set(i, i);
|
|
507
|
+
}
|
|
508
|
+
return {
|
|
509
|
+
puzzle,
|
|
510
|
+
solution,
|
|
511
|
+
digitMapping: identityMapping,
|
|
512
|
+
reverseDigitMapping: identityMapping,
|
|
513
|
+
};
|
|
514
|
+
}
|
|
190
515
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|