@nawa-captcha/server 0.0.0-stage → 0.1.1
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/README.md +65 -2
- package/dist/binding.d.ts +22 -0
- package/dist/binding.d.ts.map +1 -0
- package/dist/binding.js +46 -0
- package/dist/binding.js.map +1 -0
- package/dist/catalog.d.ts +12 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +42 -0
- package/dist/catalog.js.map +1 -0
- package/dist/crypto.d.ts +44 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +108 -0
- package/dist/crypto.js.map +1 -0
- package/dist/engine.d.ts +245 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +407 -0
- package/dist/engine.js.map +1 -0
- package/dist/express.d.ts +47 -0
- package/dist/express.d.ts.map +1 -0
- package/dist/express.js +107 -0
- package/dist/express.js.map +1 -0
- package/dist/heuristics.d.ts +33 -0
- package/dist/heuristics.d.ts.map +1 -0
- package/dist/heuristics.js +152 -0
- package/dist/heuristics.js.map +1 -0
- package/dist/http.d.ts +51 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +70 -0
- package/dist/http.js.map +1 -0
- package/dist/i18n.d.ts +237 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +92 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/primitives.browser.d.ts +15 -0
- package/dist/primitives.browser.d.ts.map +1 -0
- package/dist/primitives.browser.js +328 -0
- package/dist/primitives.browser.js.map +1 -0
- package/dist/primitives.d.ts +17 -0
- package/dist/primitives.d.ts.map +1 -0
- package/dist/primitives.js +58 -0
- package/dist/primitives.js.map +1 -0
- package/dist/puzzles/accessible.d.ts +43 -0
- package/dist/puzzles/accessible.d.ts.map +1 -0
- package/dist/puzzles/accessible.js +317 -0
- package/dist/puzzles/accessible.js.map +1 -0
- package/dist/puzzles/audio.d.ts +42 -0
- package/dist/puzzles/audio.d.ts.map +1 -0
- package/dist/puzzles/audio.js +109 -0
- package/dist/puzzles/audio.js.map +1 -0
- package/dist/puzzles/biggest.d.ts +5 -0
- package/dist/puzzles/biggest.d.ts.map +1 -0
- package/dist/puzzles/biggest.js +40 -0
- package/dist/puzzles/biggest.js.map +1 -0
- package/dist/puzzles/clock.d.ts +8 -0
- package/dist/puzzles/clock.d.ts.map +1 -0
- package/dist/puzzles/clock.js +68 -0
- package/dist/puzzles/clock.js.map +1 -0
- package/dist/puzzles/color-name.d.ts +5 -0
- package/dist/puzzles/color-name.d.ts.map +1 -0
- package/dist/puzzles/color-name.js +73 -0
- package/dist/puzzles/color-name.js.map +1 -0
- package/dist/puzzles/common.d.ts +75 -0
- package/dist/puzzles/common.d.ts.map +1 -0
- package/dist/puzzles/common.js +268 -0
- package/dist/puzzles/common.js.map +1 -0
- package/dist/puzzles/count.d.ts +8 -0
- package/dist/puzzles/count.d.ts.map +1 -0
- package/dist/puzzles/count.js +38 -0
- package/dist/puzzles/count.js.map +1 -0
- package/dist/puzzles/dice.d.ts +8 -0
- package/dist/puzzles/dice.d.ts.map +1 -0
- package/dist/puzzles/dice.js +61 -0
- package/dist/puzzles/dice.js.map +1 -0
- package/dist/puzzles/find-shape.d.ts +8 -0
- package/dist/puzzles/find-shape.d.ts.map +1 -0
- package/dist/puzzles/find-shape.js +45 -0
- package/dist/puzzles/find-shape.js.map +1 -0
- package/dist/puzzles/grid.d.ts +44 -0
- package/dist/puzzles/grid.d.ts.map +1 -0
- package/dist/puzzles/grid.js +33 -0
- package/dist/puzzles/grid.js.map +1 -0
- package/dist/puzzles/hold.d.ts +24 -0
- package/dist/puzzles/hold.d.ts.map +1 -0
- package/dist/puzzles/hold.js +68 -0
- package/dist/puzzles/hold.js.map +1 -0
- package/dist/puzzles/icons-objects.d.ts +3 -0
- package/dist/puzzles/icons-objects.d.ts.map +1 -0
- package/dist/puzzles/icons-objects.js +5 -0
- package/dist/puzzles/icons-objects.js.map +1 -0
- package/dist/puzzles/icons-weather.d.ts +3 -0
- package/dist/puzzles/icons-weather.d.ts.map +1 -0
- package/dist/puzzles/icons-weather.js +5 -0
- package/dist/puzzles/icons-weather.js.map +1 -0
- package/dist/puzzles/icons.d.ts +14 -0
- package/dist/puzzles/icons.d.ts.map +1 -0
- package/dist/puzzles/icons.js +49 -0
- package/dist/puzzles/icons.js.map +1 -0
- package/dist/puzzles/index.d.ts +63 -0
- package/dist/puzzles/index.d.ts.map +1 -0
- package/dist/puzzles/index.js +93 -0
- package/dist/puzzles/index.js.map +1 -0
- package/dist/puzzles/jigsaw.d.ts +22 -0
- package/dist/puzzles/jigsaw.d.ts.map +1 -0
- package/dist/puzzles/jigsaw.js +38 -0
- package/dist/puzzles/jigsaw.js.map +1 -0
- package/dist/puzzles/math-compare.d.ts +8 -0
- package/dist/puzzles/math-compare.d.ts.map +1 -0
- package/dist/puzzles/math-compare.js +47 -0
- package/dist/puzzles/math-compare.js.map +1 -0
- package/dist/puzzles/math.d.ts +16 -0
- package/dist/puzzles/math.d.ts.map +1 -0
- package/dist/puzzles/math.js +106 -0
- package/dist/puzzles/math.js.map +1 -0
- package/dist/puzzles/maze.d.ts +18 -0
- package/dist/puzzles/maze.d.ts.map +1 -0
- package/dist/puzzles/maze.js +138 -0
- package/dist/puzzles/maze.js.map +1 -0
- package/dist/puzzles/odd-one-out.d.ts +5 -0
- package/dist/puzzles/odd-one-out.d.ts.map +1 -0
- package/dist/puzzles/odd-one-out.js +36 -0
- package/dist/puzzles/odd-one-out.js.map +1 -0
- package/dist/puzzles/odd-rotation.d.ts +8 -0
- package/dist/puzzles/odd-rotation.d.ts.map +1 -0
- package/dist/puzzles/odd-rotation.js +48 -0
- package/dist/puzzles/odd-rotation.js.map +1 -0
- package/dist/puzzles/order-numbers.d.ts +5 -0
- package/dist/puzzles/order-numbers.d.ts.map +1 -0
- package/dist/puzzles/order-numbers.js +32 -0
- package/dist/puzzles/order-numbers.js.map +1 -0
- package/dist/puzzles/order-size.d.ts +5 -0
- package/dist/puzzles/order-size.d.ts.map +1 -0
- package/dist/puzzles/order-size.js +30 -0
- package/dist/puzzles/order-size.js.map +1 -0
- package/dist/puzzles/order-time.d.ts +5 -0
- package/dist/puzzles/order-time.d.ts.map +1 -0
- package/dist/puzzles/order-time.js +27 -0
- package/dist/puzzles/order-time.js.map +1 -0
- package/dist/puzzles/order.d.ts +30 -0
- package/dist/puzzles/order.d.ts.map +1 -0
- package/dist/puzzles/order.js +61 -0
- package/dist/puzzles/order.js.map +1 -0
- package/dist/puzzles/pairs.d.ts +15 -0
- package/dist/puzzles/pairs.d.ts.map +1 -0
- package/dist/puzzles/pairs.js +63 -0
- package/dist/puzzles/pairs.js.map +1 -0
- package/dist/puzzles/pattern.d.ts +8 -0
- package/dist/puzzles/pattern.d.ts.map +1 -0
- package/dist/puzzles/pattern.js +68 -0
- package/dist/puzzles/pattern.js.map +1 -0
- package/dist/puzzles/pow.d.ts +23 -0
- package/dist/puzzles/pow.d.ts.map +1 -0
- package/dist/puzzles/pow.js +52 -0
- package/dist/puzzles/pow.js.map +1 -0
- package/dist/puzzles/rotate-match.d.ts +8 -0
- package/dist/puzzles/rotate-match.d.ts.map +1 -0
- package/dist/puzzles/rotate-match.js +34 -0
- package/dist/puzzles/rotate-match.js.map +1 -0
- package/dist/puzzles/rotate-object.d.ts +5 -0
- package/dist/puzzles/rotate-object.d.ts.map +1 -0
- package/dist/puzzles/rotate-object.js +33 -0
- package/dist/puzzles/rotate-object.js.map +1 -0
- package/dist/puzzles/rotate.d.ts +24 -0
- package/dist/puzzles/rotate.d.ts.map +1 -0
- package/dist/puzzles/rotate.js +40 -0
- package/dist/puzzles/rotate.js.map +1 -0
- package/dist/puzzles/shadow-drag.d.ts +20 -0
- package/dist/puzzles/shadow-drag.d.ts.map +1 -0
- package/dist/puzzles/shadow-drag.js +64 -0
- package/dist/puzzles/shadow-drag.js.map +1 -0
- package/dist/puzzles/shadow-pick.d.ts +5 -0
- package/dist/puzzles/shadow-pick.d.ts.map +1 -0
- package/dist/puzzles/shadow-pick.js +38 -0
- package/dist/puzzles/shadow-pick.js.map +1 -0
- package/dist/puzzles/slide-unlock.d.ts +11 -0
- package/dist/puzzles/slide-unlock.d.ts.map +1 -0
- package/dist/puzzles/slide-unlock.js +79 -0
- package/dist/puzzles/slide-unlock.js.map +1 -0
- package/dist/puzzles/slider.d.ts +23 -0
- package/dist/puzzles/slider.d.ts.map +1 -0
- package/dist/puzzles/slider.js +74 -0
- package/dist/puzzles/slider.js.map +1 -0
- package/dist/puzzles/spell.d.ts +8 -0
- package/dist/puzzles/spell.d.ts.map +1 -0
- package/dist/puzzles/spell.js +41 -0
- package/dist/puzzles/spell.js.map +1 -0
- package/dist/puzzles/story.d.ts +5 -0
- package/dist/puzzles/story.d.ts.map +1 -0
- package/dist/puzzles/story.js +101 -0
- package/dist/puzzles/story.js.map +1 -0
- package/dist/puzzles/symmetry.d.ts +8 -0
- package/dist/puzzles/symmetry.d.ts.map +1 -0
- package/dist/puzzles/symmetry.js +49 -0
- package/dist/puzzles/symmetry.js.map +1 -0
- package/dist/puzzles/tap-order.d.ts +20 -0
- package/dist/puzzles/tap-order.d.ts.map +1 -0
- package/dist/puzzles/tap-order.js +37 -0
- package/dist/puzzles/tap-order.js.map +1 -0
- package/dist/puzzles/trace-letters.d.ts +5 -0
- package/dist/puzzles/trace-letters.d.ts.map +1 -0
- package/dist/puzzles/trace-letters.js +19 -0
- package/dist/puzzles/trace-letters.js.map +1 -0
- package/dist/puzzles/trace.d.ts +32 -0
- package/dist/puzzles/trace.d.ts.map +1 -0
- package/dist/puzzles/trace.js +81 -0
- package/dist/puzzles/trace.js.map +1 -0
- package/dist/render/audio.d.ts +53 -0
- package/dist/render/audio.d.ts.map +1 -0
- package/dist/render/audio.js +236 -0
- package/dist/render/audio.js.map +1 -0
- package/dist/render/clock.d.ts +6 -0
- package/dist/render/clock.d.ts.map +1 -0
- package/dist/render/clock.js +23 -0
- package/dist/render/clock.js.map +1 -0
- package/dist/render/glyphs.d.ts +18 -0
- package/dist/render/glyphs.d.ts.map +1 -0
- package/dist/render/glyphs.js +70 -0
- package/dist/render/glyphs.js.map +1 -0
- package/dist/render/pictograms.d.ts +60 -0
- package/dist/render/pictograms.d.ts.map +1 -0
- package/dist/render/pictograms.js +167 -0
- package/dist/render/pictograms.js.map +1 -0
- package/dist/render/png.d.ts +11 -0
- package/dist/render/png.d.ts.map +1 -0
- package/dist/render/png.js +107 -0
- package/dist/render/png.js.map +1 -0
- package/dist/render/raster.d.ts +61 -0
- package/dist/render/raster.d.ts.map +1 -0
- package/dist/render/raster.js +389 -0
- package/dist/render/raster.js.map +1 -0
- package/dist/render/shapes.d.ts +25 -0
- package/dist/render/shapes.d.ts.map +1 -0
- package/dist/render/shapes.js +157 -0
- package/dist/render/shapes.js.map +1 -0
- package/dist/rng.d.ts +25 -0
- package/dist/rng.d.ts.map +1 -0
- package/dist/rng.js +93 -0
- package/dist/rng.js.map +1 -0
- package/dist/selection.d.ts +54 -0
- package/dist/selection.d.ts.map +1 -0
- package/dist/selection.js +85 -0
- package/dist/selection.js.map +1 -0
- package/dist/store.d.ts +66 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +100 -0
- package/dist/store.js.map +1 -0
- package/dist/tokens.d.ts +70 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +103 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +62 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +61 -0
- package/dist/types.js.map +1 -0
- package/package.json +68 -4
package/dist/i18n.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
const PROMPTS = {
|
|
2
|
+
slider: { en: 'Drag the piece into the matching gap.', ar: 'اسحب القطعة إلى الفراغ المطابق لها.' },
|
|
3
|
+
slideUnlock: { en: 'Slide the handle until its arrow points at the ring.', ar: 'اسحب المقبض حتى يشير سهمه إلى الحلقة.' },
|
|
4
|
+
shadowDrag: { en: 'Drag the picture onto its matching shadow.', ar: 'اسحب الصورة إلى الظل المطابق لها.' },
|
|
5
|
+
jigsaw: { en: 'Swap the pieces until the picture is complete.', ar: 'بدّل القطع حتى تكتمل الصورة.' },
|
|
6
|
+
rotate: { en: 'Rotate the picture until it is upright.', ar: 'دوّر الصورة حتى تصبح معتدلة.' },
|
|
7
|
+
rotateObject: { en: 'Rotate the {thing} until it stands upright.', ar: 'دوّر صورة {thing} حتى تصبح معتدلة.' },
|
|
8
|
+
rotateMatch: { en: 'Turn the inner circle until the picture lines up.', ar: 'دوّر الدائرة الداخلية حتى تتطابق الصورة.' },
|
|
9
|
+
hold: { en: 'Press and hold, and let go while the ring is in the green zone.', ar: 'اضغط مطولًا ثم أفلت عندما تكون الحلقة داخل المنطقة الخضراء.' },
|
|
10
|
+
icons: { en: 'Select every {icon}.', ar: 'اختر كل {icon}.' },
|
|
11
|
+
oddOneOut: { en: 'One picture is different from the others. Select it.', ar: 'إحدى الصور مختلفة عن البقية. اخترها.' },
|
|
12
|
+
oddRotation: { en: 'One letter is mirrored (backwards). Select it.', ar: 'أحد الحروف معكوس كالمرآة. اختره.' },
|
|
13
|
+
colorName: { en: 'Select every {color} shape (they have {pattern}).', ar: 'اختر كل شكل {color} (عليه {pattern}).' },
|
|
14
|
+
biggest: { en: 'Select the largest {icon}.', ar: 'اختر أكبر {icon}.' },
|
|
15
|
+
smallest: { en: 'Select the smallest {icon}.', ar: 'اختر أصغر {icon}.' },
|
|
16
|
+
findShape: { en: 'Select every cell that shows the shape in the box.', ar: 'اختر كل خانة فيها الشكل الموجود في المربع.' },
|
|
17
|
+
shadowPick: { en: 'Select the shadow that matches the picture in the box.', ar: 'اختر الظل الذي يطابق الصورة في المربع.' },
|
|
18
|
+
pattern: { en: 'Which picture comes next in the row? Select it.', ar: 'ما الصورة التالية في الصف؟ اخترها.' },
|
|
19
|
+
clock: { en: 'Select the clock that shows {time}.', ar: 'اختر الساعة التي تشير إلى {time}.' },
|
|
20
|
+
mathCompare: { en: 'Select every card whose answer is more than {n}.', ar: 'اختر كل بطاقة ناتجها أكبر من {n}.' },
|
|
21
|
+
symmetry: { en: 'Fill the right half so it mirrors the left half.', ar: 'لوّن النصف الأيمن ليصبح مرآة للنصف الأيسر.' },
|
|
22
|
+
pairs: { en: 'Match the pictures in pairs: select two that are the same.', ar: 'طابق الصور أزواجًا: اختر صورتين متماثلتين.' },
|
|
23
|
+
tapOrder: { en: 'Tap the numbers from smallest to largest.', ar: 'انقر الأرقام من الأصغر إلى الأكبر.' },
|
|
24
|
+
spell: { en: 'Tap the letters to spell the word at the top.', ar: 'انقر الحروف لتكتب الكلمة الظاهرة في الأعلى.' },
|
|
25
|
+
orderDots: { en: 'Order the tiles from fewest dots to most.', ar: 'رتّب البطاقات من الأقل نقاطًا إلى الأكثر.' },
|
|
26
|
+
orderBars: { en: 'Order the tiles from shortest bar to tallest.', ar: 'رتّب البطاقات من أقصر عمود إلى أطوله.' },
|
|
27
|
+
orderSize: { en: 'Order the shapes from smallest to largest.', ar: 'رتّب الأشكال من الأصغر إلى الأكبر.' },
|
|
28
|
+
orderNumbersUp: { en: 'Order the numbers from smallest to largest.', ar: 'رتّب الأعداد من الأصغر إلى الأكبر.' },
|
|
29
|
+
orderNumbersDown: { en: 'Order the numbers from largest to smallest.', ar: 'رتّب الأعداد من الأكبر إلى الأصغر.' },
|
|
30
|
+
orderTime: { en: 'Order the clocks from earliest time to latest.', ar: 'رتّب الساعات من الوقت الأبكر إلى الأحدث.' },
|
|
31
|
+
story: { en: 'Put the pictures in order: {story}.', ar: 'رتّب الصور: {story}.' },
|
|
32
|
+
trace: { en: 'Connect the dots in order, from 1 to {n}.', ar: 'صِل النقاط بالترتيب من 1 إلى {n}.' },
|
|
33
|
+
traceLetters: { en: 'Connect the dots in alphabetical order, from A to {last}.', ar: 'صِل النقاط بالترتيب الأبجدي الإنجليزي من A إلى {last}.' },
|
|
34
|
+
maze: { en: 'Draw a path through the maze from the green dot to the flag.', ar: 'ارسم طريقًا عبر المتاهة من النقطة الخضراء إلى العلم.' },
|
|
35
|
+
math: { en: 'Solve the sum shown in the picture.', ar: 'احسب ناتج العملية في الصورة.' },
|
|
36
|
+
count: { en: 'How many {icon} shapes are in the picture?', ar: 'كم {icon} في الصورة؟' },
|
|
37
|
+
dice: { en: 'Add up the dots on all the dice.', ar: 'اجمع النقاط الموجودة على كل أحجار النرد.' },
|
|
38
|
+
pow: { en: 'Checking your browser…', ar: 'جارٍ التحقق من المتصفح…' },
|
|
39
|
+
accessible: { en: 'Answer the question in words or digits.', ar: 'أجب عن السؤال بالكلمات أو الأرقام.' },
|
|
40
|
+
audioDigits: { en: 'Press Play and type the {n} digits you hear.', ar: 'اضغط تشغيل واكتب الأرقام الـ{n} التي تسمعها (بالإنجليزية).' },
|
|
41
|
+
audioBeeps: { en: 'Press Play and count the high-pitched beeps. Type how many you heard.', ar: 'اضغط تشغيل وعُدّ النغمات الحادّة (العالية)، ثم اكتب عددها.' },
|
|
42
|
+
};
|
|
43
|
+
export function prompt(key, lang, vars = {}) {
|
|
44
|
+
return PROMPTS[key][lang].replace(/\{(\w+)\}/g, (_, k) => String(vars[k] ?? ''));
|
|
45
|
+
}
|
|
46
|
+
const PICTO_NAMES = {
|
|
47
|
+
star: { en: 'star', ar: 'نجمة' },
|
|
48
|
+
heart: { en: 'heart', ar: 'قلب' },
|
|
49
|
+
triangle: { en: 'triangle', ar: 'مثلث' },
|
|
50
|
+
circle: { en: 'circle', ar: 'دائرة' },
|
|
51
|
+
square: { en: 'square', ar: 'مربع' },
|
|
52
|
+
diamond: { en: 'diamond', ar: 'معيّن' },
|
|
53
|
+
plus: { en: 'plus sign', ar: 'علامة زائد' },
|
|
54
|
+
moon: { en: 'crescent moon', ar: 'هلال' },
|
|
55
|
+
hexagon: { en: 'hexagon', ar: 'شكل سداسي' },
|
|
56
|
+
sun: { en: 'sun', ar: 'شمس' },
|
|
57
|
+
cloud: { en: 'cloud', ar: 'غيمة' },
|
|
58
|
+
drop: { en: 'raindrop', ar: 'قطرة مطر' },
|
|
59
|
+
bolt: { en: 'lightning bolt', ar: 'برق' },
|
|
60
|
+
snowflake: { en: 'snowflake', ar: 'ندفة ثلج' },
|
|
61
|
+
umbrella: { en: 'umbrella', ar: 'مظلة' },
|
|
62
|
+
key: { en: 'key', ar: 'مفتاح' },
|
|
63
|
+
cup: { en: 'cup', ar: 'كوب' },
|
|
64
|
+
bell: { en: 'bell', ar: 'جرس' },
|
|
65
|
+
leaf: { en: 'leaf', ar: 'ورقة شجر' },
|
|
66
|
+
fish: { en: 'fish', ar: 'سمكة' },
|
|
67
|
+
house: { en: 'house', ar: 'بيت' },
|
|
68
|
+
tree: { en: 'tree', ar: 'شجرة' },
|
|
69
|
+
car: { en: 'car', ar: 'سيارة' },
|
|
70
|
+
flag: { en: 'flag', ar: 'علم' },
|
|
71
|
+
apple: { en: 'apple', ar: 'تفاحة' },
|
|
72
|
+
};
|
|
73
|
+
export function pictoName(kind, lang) {
|
|
74
|
+
return PICTO_NAMES[kind][lang];
|
|
75
|
+
}
|
|
76
|
+
/** @deprecated kept for compatibility; use {@link pictoName}. */
|
|
77
|
+
export const iconName = pictoName;
|
|
78
|
+
export const COLOR_NAMES = {
|
|
79
|
+
red: { en: 'red', ar: 'أحمر', pattern: { en: 'dots', ar: 'نقاط' } },
|
|
80
|
+
blue: { en: 'blue', ar: 'أزرق', pattern: { en: 'stripes', ar: 'خطوط' } },
|
|
81
|
+
green: { en: 'green', ar: 'أخضر', pattern: { en: 'a cross', ar: 'علامة زائد' } },
|
|
82
|
+
yellow: { en: 'yellow', ar: 'أصفر', pattern: { en: 'a ring', ar: 'حلقة' } },
|
|
83
|
+
purple: { en: 'purple', ar: 'بنفسجي', pattern: { en: 'a zigzag', ar: 'خط متعرّج' } },
|
|
84
|
+
};
|
|
85
|
+
export const STORIES = {
|
|
86
|
+
plant: { en: 'a seed grows into a flower', ar: 'بذرة تنمو حتى تصبح زهرة' },
|
|
87
|
+
candle: { en: 'a candle burns down', ar: 'شمعة تحترق وتقصر' },
|
|
88
|
+
glass: { en: 'a glass is being filled with water', ar: 'كوب يُملأ بالماء' },
|
|
89
|
+
egg: { en: 'a chick hatches from an egg', ar: 'كتكوت يفقس من بيضة' },
|
|
90
|
+
battery: { en: 'a battery charges up', ar: 'بطارية تُشحن' },
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=i18n.js.map
|
package/dist/i18n.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { NawaCaptcha, createNawaCaptcha, verifyPassToken, type ActionPolicy, type AdaptiveOptions, type ChallengeError, type ChallengeRequest, type ChallengeResponse, type GuardEvent, type NawaCaptchaOptions, type PassTokenError, type PassTokenResult, type PublicVerifyError, type RateLimitHook, type RateLimitOptions, type SelectionMode, type VerifyFailure, type VerifyPassTokenOptions, type VerifyRequest, type VerifyResult, } from './engine.js';
|
|
2
|
+
export { MemoryStore, ioredisStore, nodeRedisStore, type IoRedisLike, type MemoryStoreOptions, type NawaCaptchaStore, type NodeRedisLike } from './store.js';
|
|
3
|
+
export { createKeyring, deriveKey, HKDF_SALT, type Keyring, type SecretEntry } from './crypto.js';
|
|
4
|
+
export { cryptoRng, seededRng, type Rng } from './rng.js';
|
|
5
|
+
export { DEFAULT_LADDER, DEFAULT_POOL, MAX_STEPS, parseClientTypes, type ResolvedPolicy } from './selection.js';
|
|
6
|
+
export { PLATFORM } from './primitives.js';
|
|
7
|
+
export { TYPE_INFO, type TypeFamily, type TypeInfo } from './catalog.js';
|
|
8
|
+
export { bindingHash, bindingMaterial, normalizeIp, type BindMode, type ClientInfo } from './binding.js';
|
|
9
|
+
export { openChallenge, parsePassToken, sealChallenge, signPassToken, type ChallengeClaims, type PassTokenClaims } from './tokens.js';
|
|
10
|
+
export { analyzeTrajectory, entropy, type TrajectoryVerdict } from './heuristics.js';
|
|
11
|
+
export { DEFAULT_TOKEN_FIELD, DEFAULT_TOKEN_HEADER, SECURITY_HEADERS, checkPassToken, handleChallenge, handleVerify, readPassToken, type GuardHttpRequest, type GuardHttpResponse, type PassTokenSource, type ProtectOptions, } from './http.js';
|
|
12
|
+
export * from './puzzles/index.js';
|
|
13
|
+
export * from './types.js';
|
|
14
|
+
export {
|
|
15
|
+
/** @deprecated Renamed to {@link NawaCaptcha}. */
|
|
16
|
+
NawaCaptcha as NawaGuard,
|
|
17
|
+
/** @deprecated Renamed to {@link createNawaCaptcha}. */
|
|
18
|
+
createNawaCaptcha as createNawaGuard,
|
|
19
|
+
/** @deprecated Renamed to NawaCaptchaOptions. */
|
|
20
|
+
type NawaCaptchaOptions as NawaGuardOptions, } from './engine.js';
|
|
21
|
+
/** @deprecated Renamed to NawaCaptchaStore. */
|
|
22
|
+
export type { NawaCaptchaStore as NawaGuardStore } from './store.js';
|
|
23
|
+
export { LEGACY_TOKEN_FIELD, LEGACY_TOKEN_HEADER } from './http.js';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7J,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACtI,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AACnB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAI3B,OAAO;AACL,kDAAkD;AAClD,WAAW,IAAI,SAAS;AACxB,wDAAwD;AACxD,iBAAiB,IAAI,eAAe;AACpC,iDAAiD;AACjD,KAAK,kBAAkB,IAAI,gBAAgB,GAC5C,MAAM,aAAa,CAAC;AACrB,+CAA+C;AAC/C,YAAY,EAAE,gBAAgB,IAAI,cAAc,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { NawaCaptcha, createNawaCaptcha, verifyPassToken, } from './engine.js';
|
|
2
|
+
export { MemoryStore, ioredisStore, nodeRedisStore } from './store.js';
|
|
3
|
+
export { createKeyring, deriveKey, HKDF_SALT } from './crypto.js';
|
|
4
|
+
export { cryptoRng, seededRng } from './rng.js';
|
|
5
|
+
export { DEFAULT_LADDER, DEFAULT_POOL, MAX_STEPS, parseClientTypes } from './selection.js';
|
|
6
|
+
export { PLATFORM } from './primitives.js';
|
|
7
|
+
export { TYPE_INFO } from './catalog.js';
|
|
8
|
+
export { bindingHash, bindingMaterial, normalizeIp } from './binding.js';
|
|
9
|
+
export { openChallenge, parsePassToken, sealChallenge, signPassToken } from './tokens.js';
|
|
10
|
+
export { analyzeTrajectory, entropy } from './heuristics.js';
|
|
11
|
+
export { DEFAULT_TOKEN_FIELD, DEFAULT_TOKEN_HEADER, SECURITY_HEADERS, checkPassToken, handleChallenge, handleVerify, readPassToken, } from './http.js';
|
|
12
|
+
export * from './puzzles/index.js';
|
|
13
|
+
export * from './types.js';
|
|
14
|
+
// ------------------------------------------------------------------ deprecated aliases
|
|
15
|
+
// Nawa Guard was renamed to Nawa Captcha. The old names keep working for this release.
|
|
16
|
+
export {
|
|
17
|
+
/** @deprecated Renamed to {@link NawaCaptcha}. */
|
|
18
|
+
NawaCaptcha as NawaGuard,
|
|
19
|
+
/** @deprecated Renamed to {@link createNawaCaptcha}. */
|
|
20
|
+
createNawaCaptcha as createNawaGuard, } from './engine.js';
|
|
21
|
+
export { LEGACY_TOKEN_FIELD, LEGACY_TOKEN_HEADER } from './http.js';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,eAAe,GAkBhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAwF,MAAM,YAAY,CAAC;AAC7J,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAkC,MAAM,aAAa,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAuB,MAAM,gBAAgB,CAAC;AAChH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAkC,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAkC,MAAM,cAAc,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAA8C,MAAM,aAAa,CAAC;AACtI,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAA0B,MAAM,iBAAiB,CAAC;AACrF,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,GAKd,MAAM,WAAW,CAAC;AACnB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAE3B,wFAAwF;AACxF,uFAAuF;AACvF,OAAO;AACL,kDAAkD;AAClD,WAAW,IAAI,SAAS;AACxB,wDAAwD;AACxD,iBAAiB,IAAI,eAAe,GAGrC,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const PLATFORM: "browser";
|
|
2
|
+
export declare function randomBytes(n: number): Uint8Array;
|
|
3
|
+
/** Uniform integer in [min, maxExclusive) by rejection sampling (no modulo bias). */
|
|
4
|
+
export declare function randomInt(min: number, maxExclusive: number): number;
|
|
5
|
+
export declare function sha256(data: Uint8Array): Uint8Array;
|
|
6
|
+
export declare function hmacSha256(key: Uint8Array, data: Uint8Array): Uint8Array;
|
|
7
|
+
/** RFC 5869. */
|
|
8
|
+
export declare function hkdfSha256(ikm: Uint8Array, salt: Uint8Array, info: Uint8Array, length: number): Uint8Array;
|
|
9
|
+
export declare function aesGcmEncrypt(key: Uint8Array, iv: Uint8Array, plaintext: Uint8Array, aad: Uint8Array): Uint8Array;
|
|
10
|
+
export declare function aesGcmDecrypt(key: Uint8Array, iv: Uint8Array, data: Uint8Array, aad: Uint8Array): Uint8Array | undefined;
|
|
11
|
+
export declare function timingSafeEqual(a: Uint8Array, b: Uint8Array): boolean;
|
|
12
|
+
export declare function deflate(raw: Uint8Array): Uint8Array;
|
|
13
|
+
export declare function base64(bytes: Uint8Array): string;
|
|
14
|
+
export declare function fromBase64(text: string): Uint8Array;
|
|
15
|
+
//# sourceMappingURL=primitives.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.browser.d.ts","sourceRoot":"","sources":["../src/primitives.browser.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,QAAQ,EAAG,SAAkB,CAAC;AAI3C,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAKjD;AAED,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAUnE;AAeD,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CA0CnD;AAYD,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAQxE;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAU1G;AAmID,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAOjH;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CASxH;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAKrE;AAID,wBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAyBnD;AAID,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIhD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAKnD"}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Platform primitives without Node built-ins (browser / workers / edge runtimes). Same exports as
|
|
3
|
+
* `primitives.ts`. Everything is synchronous so the engine's API does not change:
|
|
4
|
+
* - randomness: crypto.getRandomValues (a CSPRNG in every modern runtime)
|
|
5
|
+
* - SHA-256, HMAC-SHA256, HKDF-SHA256, AES-256-GCM: small, dependency-free implementations,
|
|
6
|
+
* tested byte-for-byte against node:crypto (packages/server/test/primitives.test.ts)
|
|
7
|
+
* - deflate: stored (uncompressed) zlib blocks. Valid PNGs, just larger; fine in-page.
|
|
8
|
+
*
|
|
9
|
+
* This file exists for the in-browser demo mode. A real deployment keeps the secret on a server;
|
|
10
|
+
* a page that holds the secret can of course mint its own tokens.
|
|
11
|
+
*/
|
|
12
|
+
export const PLATFORM = 'browser';
|
|
13
|
+
const webcrypto = globalThis.crypto;
|
|
14
|
+
export function randomBytes(n) {
|
|
15
|
+
if (!webcrypto)
|
|
16
|
+
throw new Error('nawa-captcha: crypto.getRandomValues is not available');
|
|
17
|
+
const out = new Uint8Array(n);
|
|
18
|
+
for (let i = 0; i < n; i += 65536)
|
|
19
|
+
webcrypto.getRandomValues(out.subarray(i, Math.min(n, i + 65536)));
|
|
20
|
+
return out;
|
|
21
|
+
}
|
|
22
|
+
/** Uniform integer in [min, maxExclusive) by rejection sampling (no modulo bias). */
|
|
23
|
+
export function randomInt(min, maxExclusive) {
|
|
24
|
+
const range = maxExclusive - min;
|
|
25
|
+
if (!(range > 0) || range > 2 ** 32)
|
|
26
|
+
throw new RangeError('nawa-captcha: bad randomInt range');
|
|
27
|
+
const limit = Math.floor(2 ** 32 / range) * range;
|
|
28
|
+
const buf = new Uint32Array(1);
|
|
29
|
+
for (;;) {
|
|
30
|
+
webcrypto.getRandomValues(buf);
|
|
31
|
+
const v = buf[0];
|
|
32
|
+
if (v < limit)
|
|
33
|
+
return min + (v % range);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// ------------------------------------------------------------------------------ SHA-256
|
|
37
|
+
const K = new Uint32Array([
|
|
38
|
+
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
|
39
|
+
0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
|
40
|
+
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
|
|
41
|
+
0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
|
42
|
+
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
|
|
43
|
+
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
|
|
44
|
+
]);
|
|
45
|
+
const W = new Uint32Array(64);
|
|
46
|
+
const rotr = (x, n) => (x >>> n) | (x << (32 - n));
|
|
47
|
+
export function sha256(data) {
|
|
48
|
+
const len = data.length;
|
|
49
|
+
const padded = new Uint8Array(((len + 9 + 63) >> 6) << 6);
|
|
50
|
+
padded.set(data);
|
|
51
|
+
padded[len] = 0x80;
|
|
52
|
+
const dv = new DataView(padded.buffer);
|
|
53
|
+
dv.setUint32(padded.length - 4, (len * 8) >>> 0);
|
|
54
|
+
dv.setUint32(padded.length - 8, Math.floor((len * 8) / 2 ** 32));
|
|
55
|
+
const h = new Uint32Array([0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19]);
|
|
56
|
+
for (let off = 0; off < padded.length; off += 64) {
|
|
57
|
+
for (let i = 0; i < 16; i += 1)
|
|
58
|
+
W[i] = dv.getUint32(off + i * 4);
|
|
59
|
+
for (let i = 16; i < 64; i += 1) {
|
|
60
|
+
const a = W[i - 15];
|
|
61
|
+
const b = W[i - 2];
|
|
62
|
+
W[i] = (W[i - 16] + (rotr(a, 7) ^ rotr(a, 18) ^ (a >>> 3)) + W[i - 7] + (rotr(b, 17) ^ rotr(b, 19) ^ (b >>> 10))) | 0;
|
|
63
|
+
}
|
|
64
|
+
let a = h[0], b = h[1], c = h[2], d = h[3], e = h[4], f = h[5], g = h[6], hh = h[7];
|
|
65
|
+
for (let i = 0; i < 64; i += 1) {
|
|
66
|
+
const t1 = (hh + (rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)) + ((e & f) ^ (~e & g)) + K[i] + W[i]) | 0;
|
|
67
|
+
const t2 = ((rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)) + ((a & b) ^ (a & c) ^ (b & c))) | 0;
|
|
68
|
+
hh = g;
|
|
69
|
+
g = f;
|
|
70
|
+
f = e;
|
|
71
|
+
e = (d + t1) | 0;
|
|
72
|
+
d = c;
|
|
73
|
+
c = b;
|
|
74
|
+
b = a;
|
|
75
|
+
a = (t1 + t2) | 0;
|
|
76
|
+
}
|
|
77
|
+
h[0] = (h[0] + a) | 0;
|
|
78
|
+
h[1] = (h[1] + b) | 0;
|
|
79
|
+
h[2] = (h[2] + c) | 0;
|
|
80
|
+
h[3] = (h[3] + d) | 0;
|
|
81
|
+
h[4] = (h[4] + e) | 0;
|
|
82
|
+
h[5] = (h[5] + f) | 0;
|
|
83
|
+
h[6] = (h[6] + g) | 0;
|
|
84
|
+
h[7] = (h[7] + hh) | 0;
|
|
85
|
+
}
|
|
86
|
+
const out = new Uint8Array(32);
|
|
87
|
+
const odv = new DataView(out.buffer);
|
|
88
|
+
for (let i = 0; i < 8; i += 1)
|
|
89
|
+
odv.setUint32(i * 4, h[i]);
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
92
|
+
function concat(...parts) {
|
|
93
|
+
const out = new Uint8Array(parts.reduce((n, p) => n + p.length, 0));
|
|
94
|
+
let o = 0;
|
|
95
|
+
for (const p of parts) {
|
|
96
|
+
out.set(p, o);
|
|
97
|
+
o += p.length;
|
|
98
|
+
}
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
export function hmacSha256(key, data) {
|
|
102
|
+
let k = key.length > 64 ? sha256(key) : key;
|
|
103
|
+
const block = new Uint8Array(64);
|
|
104
|
+
block.set(k);
|
|
105
|
+
k = block;
|
|
106
|
+
const ipad = k.map((b) => b ^ 0x36);
|
|
107
|
+
const opad = k.map((b) => b ^ 0x5c);
|
|
108
|
+
return sha256(concat(opad, sha256(concat(ipad, data))));
|
|
109
|
+
}
|
|
110
|
+
/** RFC 5869. */
|
|
111
|
+
export function hkdfSha256(ikm, salt, info, length) {
|
|
112
|
+
const prk = hmacSha256(salt.length ? salt : new Uint8Array(32), ikm);
|
|
113
|
+
const out = new Uint8Array(length);
|
|
114
|
+
let prev = new Uint8Array(0);
|
|
115
|
+
for (let i = 1, o = 0; o < length; i += 1) {
|
|
116
|
+
prev = hmacSha256(prk, concat(prev, info, new Uint8Array([i])));
|
|
117
|
+
out.set(prev.subarray(0, Math.min(prev.length, length - o)), o);
|
|
118
|
+
o += prev.length;
|
|
119
|
+
}
|
|
120
|
+
return out;
|
|
121
|
+
}
|
|
122
|
+
// ------------------------------------------------------------------------------ AES-256-GCM
|
|
123
|
+
const SBOX = new Uint8Array(256);
|
|
124
|
+
(() => {
|
|
125
|
+
// Build the S-box from the GF(2^8) inverse + affine transform (no 256-byte literal to mistype).
|
|
126
|
+
let p = 1;
|
|
127
|
+
let q = 1;
|
|
128
|
+
do {
|
|
129
|
+
p = p ^ ((p << 1) & 0xff) ^ (p & 0x80 ? 0x1b : 0);
|
|
130
|
+
q ^= q << 1;
|
|
131
|
+
q ^= q << 2;
|
|
132
|
+
q ^= q << 4;
|
|
133
|
+
q &= 0xff;
|
|
134
|
+
if (q & 0x80)
|
|
135
|
+
q ^= 0x09;
|
|
136
|
+
const x = q ^ ((q << 1) | (q >> 7)) ^ ((q << 2) | (q >> 6)) ^ ((q << 3) | (q >> 5)) ^ ((q << 4) | (q >> 4));
|
|
137
|
+
SBOX[p] = (x ^ 0x63) & 0xff;
|
|
138
|
+
} while (p !== 1);
|
|
139
|
+
SBOX[0] = 0x63;
|
|
140
|
+
})();
|
|
141
|
+
const xtime = (b) => ((b << 1) ^ (b & 0x80 ? 0x1b : 0)) & 0xff;
|
|
142
|
+
function expandKey(key) {
|
|
143
|
+
if (key.length !== 32)
|
|
144
|
+
throw new Error('nawa-captcha: AES-256 needs a 32-byte key');
|
|
145
|
+
const w = new Uint8Array(240);
|
|
146
|
+
w.set(key);
|
|
147
|
+
let rcon = 1;
|
|
148
|
+
for (let i = 32; i < 240; i += 4) {
|
|
149
|
+
let t0 = w[i - 4], t1 = w[i - 3], t2 = w[i - 2], t3 = w[i - 1];
|
|
150
|
+
if (i % 32 === 0) {
|
|
151
|
+
const tmp = t0;
|
|
152
|
+
t0 = SBOX[t1] ^ rcon;
|
|
153
|
+
t1 = SBOX[t2];
|
|
154
|
+
t2 = SBOX[t3];
|
|
155
|
+
t3 = SBOX[tmp];
|
|
156
|
+
rcon = xtime(rcon);
|
|
157
|
+
}
|
|
158
|
+
else if (i % 32 === 16) {
|
|
159
|
+
t0 = SBOX[t0];
|
|
160
|
+
t1 = SBOX[t1];
|
|
161
|
+
t2 = SBOX[t2];
|
|
162
|
+
t3 = SBOX[t3];
|
|
163
|
+
}
|
|
164
|
+
w[i] = w[i - 32] ^ t0;
|
|
165
|
+
w[i + 1] = w[i - 31] ^ t1;
|
|
166
|
+
w[i + 2] = w[i - 30] ^ t2;
|
|
167
|
+
w[i + 3] = w[i - 29] ^ t3;
|
|
168
|
+
}
|
|
169
|
+
return w;
|
|
170
|
+
}
|
|
171
|
+
function encryptBlock(w, input) {
|
|
172
|
+
const s = new Uint8Array(16);
|
|
173
|
+
for (let i = 0; i < 16; i += 1)
|
|
174
|
+
s[i] = input[i] ^ w[i];
|
|
175
|
+
const t = new Uint8Array(16);
|
|
176
|
+
for (let round = 1; round <= 14; round += 1) {
|
|
177
|
+
// SubBytes + ShiftRows (column-major state)
|
|
178
|
+
for (let c = 0; c < 4; c += 1)
|
|
179
|
+
for (let r = 0; r < 4; r += 1)
|
|
180
|
+
t[c * 4 + r] = SBOX[s[((c + r) % 4) * 4 + r]];
|
|
181
|
+
if (round < 14) {
|
|
182
|
+
for (let c = 0; c < 4; c += 1) {
|
|
183
|
+
const a0 = t[c * 4], a1 = t[c * 4 + 1], a2 = t[c * 4 + 2], a3 = t[c * 4 + 3];
|
|
184
|
+
const all = a0 ^ a1 ^ a2 ^ a3;
|
|
185
|
+
s[c * 4] = a0 ^ all ^ xtime(a0 ^ a1);
|
|
186
|
+
s[c * 4 + 1] = a1 ^ all ^ xtime(a1 ^ a2);
|
|
187
|
+
s[c * 4 + 2] = a2 ^ all ^ xtime(a2 ^ a3);
|
|
188
|
+
s[c * 4 + 3] = a3 ^ all ^ xtime(a3 ^ a0);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else
|
|
192
|
+
s.set(t);
|
|
193
|
+
for (let i = 0; i < 16; i += 1)
|
|
194
|
+
s[i] ^= w[round * 16 + i];
|
|
195
|
+
}
|
|
196
|
+
return s;
|
|
197
|
+
}
|
|
198
|
+
function gfMul(x, y) {
|
|
199
|
+
const z = new Uint8Array(16);
|
|
200
|
+
const v = Uint8Array.from(y);
|
|
201
|
+
for (let i = 0; i < 128; i += 1) {
|
|
202
|
+
if ((x[i >> 3] >> (7 - (i & 7))) & 1)
|
|
203
|
+
for (let k = 0; k < 16; k += 1)
|
|
204
|
+
z[k] ^= v[k];
|
|
205
|
+
const lsb = v[15] & 1;
|
|
206
|
+
for (let k = 15; k > 0; k -= 1)
|
|
207
|
+
v[k] = (v[k] >> 1) | ((v[k - 1] & 1) << 7);
|
|
208
|
+
v[0] = v[0] >> 1;
|
|
209
|
+
if (lsb)
|
|
210
|
+
v[0] ^= 0xe1;
|
|
211
|
+
}
|
|
212
|
+
return z;
|
|
213
|
+
}
|
|
214
|
+
function ghash(h, aad, ct) {
|
|
215
|
+
let y = new Uint8Array(16);
|
|
216
|
+
const absorb = (data) => {
|
|
217
|
+
for (let off = 0; off < data.length; off += 16) {
|
|
218
|
+
const block = new Uint8Array(16);
|
|
219
|
+
block.set(data.subarray(off, off + 16));
|
|
220
|
+
for (let k = 0; k < 16; k += 1)
|
|
221
|
+
block[k] ^= y[k];
|
|
222
|
+
y = gfMul(block, h);
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
absorb(aad);
|
|
226
|
+
absorb(ct);
|
|
227
|
+
const lens = new Uint8Array(16);
|
|
228
|
+
const dv = new DataView(lens.buffer);
|
|
229
|
+
dv.setUint32(4, (aad.length * 8) >>> 0);
|
|
230
|
+
dv.setUint32(0, Math.floor((aad.length * 8) / 2 ** 32));
|
|
231
|
+
dv.setUint32(12, (ct.length * 8) >>> 0);
|
|
232
|
+
dv.setUint32(8, Math.floor((ct.length * 8) / 2 ** 32));
|
|
233
|
+
for (let k = 0; k < 16; k += 1)
|
|
234
|
+
lens[k] ^= y[k];
|
|
235
|
+
return gfMul(lens, h);
|
|
236
|
+
}
|
|
237
|
+
function ctr(w, j0, data) {
|
|
238
|
+
const out = new Uint8Array(data.length);
|
|
239
|
+
const counter = Uint8Array.from(j0);
|
|
240
|
+
const dv = new DataView(counter.buffer);
|
|
241
|
+
for (let off = 0; off < data.length; off += 16) {
|
|
242
|
+
dv.setUint32(12, (dv.getUint32(12) + 1) >>> 0);
|
|
243
|
+
const ks = encryptBlock(w, counter);
|
|
244
|
+
for (let k = 0; k < 16 && off + k < data.length; k += 1)
|
|
245
|
+
out[off + k] = data[off + k] ^ ks[k];
|
|
246
|
+
}
|
|
247
|
+
return out;
|
|
248
|
+
}
|
|
249
|
+
function gcmSetup(key, iv) {
|
|
250
|
+
if (iv.length !== 12)
|
|
251
|
+
throw new Error('nawa-captcha: GCM needs a 12-byte IV');
|
|
252
|
+
const w = expandKey(key);
|
|
253
|
+
const h = encryptBlock(w, new Uint8Array(16));
|
|
254
|
+
const j0 = new Uint8Array(16);
|
|
255
|
+
j0.set(iv);
|
|
256
|
+
j0[15] = 1;
|
|
257
|
+
return { w, h, j0 };
|
|
258
|
+
}
|
|
259
|
+
export function aesGcmEncrypt(key, iv, plaintext, aad) {
|
|
260
|
+
const { w, h, j0 } = gcmSetup(key, iv);
|
|
261
|
+
const ct = ctr(w, j0, plaintext);
|
|
262
|
+
const s = ghash(h, aad, ct);
|
|
263
|
+
const ek = encryptBlock(w, j0);
|
|
264
|
+
const tag = s.map((b, i) => b ^ ek[i]);
|
|
265
|
+
return concat(ct, tag);
|
|
266
|
+
}
|
|
267
|
+
export function aesGcmDecrypt(key, iv, data, aad) {
|
|
268
|
+
if (data.length < 16)
|
|
269
|
+
return undefined;
|
|
270
|
+
const { w, h, j0 } = gcmSetup(key, iv);
|
|
271
|
+
const ct = data.subarray(0, data.length - 16);
|
|
272
|
+
const s = ghash(h, aad, ct);
|
|
273
|
+
const ek = encryptBlock(w, j0);
|
|
274
|
+
const tag = s.map((b, i) => b ^ ek[i]);
|
|
275
|
+
if (!timingSafeEqual(tag, data.subarray(data.length - 16)))
|
|
276
|
+
return undefined;
|
|
277
|
+
return ctr(w, j0, ct);
|
|
278
|
+
}
|
|
279
|
+
export function timingSafeEqual(a, b) {
|
|
280
|
+
if (a.length !== b.length)
|
|
281
|
+
return false;
|
|
282
|
+
let diff = 0;
|
|
283
|
+
for (let i = 0; i < a.length; i += 1)
|
|
284
|
+
diff |= a[i] ^ b[i];
|
|
285
|
+
return diff === 0;
|
|
286
|
+
}
|
|
287
|
+
// ------------------------------------------------------------------------------ deflate (stored)
|
|
288
|
+
export function deflate(raw) {
|
|
289
|
+
const blocks = Math.max(1, Math.ceil(raw.length / 65535));
|
|
290
|
+
const out = new Uint8Array(2 + raw.length + blocks * 5 + 4);
|
|
291
|
+
out[0] = 0x78;
|
|
292
|
+
out[1] = 0x01;
|
|
293
|
+
let o = 2;
|
|
294
|
+
for (let b = 0; b < blocks; b += 1) {
|
|
295
|
+
const start = b * 65535;
|
|
296
|
+
const len = Math.min(65535, raw.length - start);
|
|
297
|
+
out[o++] = b === blocks - 1 ? 1 : 0;
|
|
298
|
+
out[o++] = len & 0xff;
|
|
299
|
+
out[o++] = len >> 8;
|
|
300
|
+
out[o++] = ~len & 0xff;
|
|
301
|
+
out[o++] = (~len >> 8) & 0xff;
|
|
302
|
+
out.set(raw.subarray(start, start + len), o);
|
|
303
|
+
o += len;
|
|
304
|
+
}
|
|
305
|
+
let a = 1;
|
|
306
|
+
let c = 0;
|
|
307
|
+
for (let i = 0; i < raw.length; i += 1) {
|
|
308
|
+
a = (a + raw[i]) % 65521;
|
|
309
|
+
c = (c + a) % 65521;
|
|
310
|
+
}
|
|
311
|
+
new DataView(out.buffer).setUint32(o, ((c << 16) | a) >>> 0);
|
|
312
|
+
return out;
|
|
313
|
+
}
|
|
314
|
+
// ------------------------------------------------------------------------------ base64
|
|
315
|
+
export function base64(bytes) {
|
|
316
|
+
let bin = '';
|
|
317
|
+
for (let i = 0; i < bytes.length; i += 0x8000)
|
|
318
|
+
bin += String.fromCharCode(...bytes.subarray(i, i + 0x8000));
|
|
319
|
+
return btoa(bin);
|
|
320
|
+
}
|
|
321
|
+
export function fromBase64(text) {
|
|
322
|
+
const bin = atob(text);
|
|
323
|
+
const out = new Uint8Array(bin.length);
|
|
324
|
+
for (let i = 0; i < bin.length; i += 1)
|
|
325
|
+
out[i] = bin.charCodeAt(i);
|
|
326
|
+
return out;
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=primitives.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.browser.js","sourceRoot":"","sources":["../src/primitives.browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const PLATFORM: "node";
|
|
2
|
+
export declare function randomBytes(n: number): Uint8Array;
|
|
3
|
+
/** Uniform integer in [min, maxExclusive). */
|
|
4
|
+
export declare function randomInt(min: number, maxExclusive: number): number;
|
|
5
|
+
export declare function sha256(data: Uint8Array): Uint8Array;
|
|
6
|
+
export declare function hmacSha256(key: Uint8Array, data: Uint8Array): Uint8Array;
|
|
7
|
+
export declare function hkdfSha256(ikm: Uint8Array, salt: Uint8Array, info: Uint8Array, length: number): Uint8Array;
|
|
8
|
+
/** AES-256-GCM: returns ciphertext || tag(16). */
|
|
9
|
+
export declare function aesGcmEncrypt(key: Uint8Array, iv: Uint8Array, plaintext: Uint8Array, aad: Uint8Array): Uint8Array;
|
|
10
|
+
/** Opens ciphertext || tag(16); undefined when the tag does not verify. */
|
|
11
|
+
export declare function aesGcmDecrypt(key: Uint8Array, iv: Uint8Array, data: Uint8Array, aad: Uint8Array): Uint8Array | undefined;
|
|
12
|
+
export declare function timingSafeEqual(a: Uint8Array, b: Uint8Array): boolean;
|
|
13
|
+
/** zlib-wrapped deflate (what PNG IDAT expects). */
|
|
14
|
+
export declare function deflate(raw: Uint8Array): Uint8Array;
|
|
15
|
+
export declare function base64(bytes: Uint8Array): string;
|
|
16
|
+
export declare function fromBase64(text: string): Uint8Array;
|
|
17
|
+
//# sourceMappingURL=primitives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,QAAQ,EAAG,MAAe,CAAC;AAExC,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAEjD;AAED,8CAA8C;AAC9C,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAEnD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAExE;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAE1G;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAKjH;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CASxH;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAErE;AAED,oDAAoD;AACpD,wBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAEnD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEhD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEnD"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Platform primitives (Node build). Everything else in the server is platform-agnostic and only
|
|
3
|
+
* reaches the platform through this module. `primitives.browser.ts` implements the same exports
|
|
4
|
+
* without Node built-ins; bundlers pick it through the package.json "browser" map (the site's
|
|
5
|
+
* demo mode uses it to run the real engine in a web page).
|
|
6
|
+
*/
|
|
7
|
+
import { createCipheriv, createDecipheriv, createHash, createHmac, hkdfSync, randomBytes as nodeRandomBytes, randomInt as nodeRandomInt, timingSafeEqual as nodeTimingSafeEqual } from 'node:crypto';
|
|
8
|
+
import { deflateSync } from 'node:zlib';
|
|
9
|
+
export const PLATFORM = 'node';
|
|
10
|
+
export function randomBytes(n) {
|
|
11
|
+
return new Uint8Array(nodeRandomBytes(n));
|
|
12
|
+
}
|
|
13
|
+
/** Uniform integer in [min, maxExclusive). */
|
|
14
|
+
export function randomInt(min, maxExclusive) {
|
|
15
|
+
return nodeRandomInt(min, maxExclusive);
|
|
16
|
+
}
|
|
17
|
+
export function sha256(data) {
|
|
18
|
+
return new Uint8Array(createHash('sha256').update(data).digest());
|
|
19
|
+
}
|
|
20
|
+
export function hmacSha256(key, data) {
|
|
21
|
+
return new Uint8Array(createHmac('sha256', key).update(data).digest());
|
|
22
|
+
}
|
|
23
|
+
export function hkdfSha256(ikm, salt, info, length) {
|
|
24
|
+
return new Uint8Array(hkdfSync('sha256', ikm, salt, info, length));
|
|
25
|
+
}
|
|
26
|
+
/** AES-256-GCM: returns ciphertext || tag(16). */
|
|
27
|
+
export function aesGcmEncrypt(key, iv, plaintext, aad) {
|
|
28
|
+
const cipher = createCipheriv('aes-256-gcm', key, iv);
|
|
29
|
+
cipher.setAAD(aad);
|
|
30
|
+
const ct = Buffer.concat([cipher.update(plaintext), cipher.final()]);
|
|
31
|
+
return new Uint8Array(Buffer.concat([ct, cipher.getAuthTag()]));
|
|
32
|
+
}
|
|
33
|
+
/** Opens ciphertext || tag(16); undefined when the tag does not verify. */
|
|
34
|
+
export function aesGcmDecrypt(key, iv, data, aad) {
|
|
35
|
+
try {
|
|
36
|
+
const decipher = createDecipheriv('aes-256-gcm', key, iv);
|
|
37
|
+
decipher.setAAD(aad);
|
|
38
|
+
decipher.setAuthTag(data.subarray(data.length - 16));
|
|
39
|
+
return new Uint8Array(Buffer.concat([decipher.update(data.subarray(0, data.length - 16)), decipher.final()]));
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function timingSafeEqual(a, b) {
|
|
46
|
+
return a.length === b.length && nodeTimingSafeEqual(a, b);
|
|
47
|
+
}
|
|
48
|
+
/** zlib-wrapped deflate (what PNG IDAT expects). */
|
|
49
|
+
export function deflate(raw) {
|
|
50
|
+
return new Uint8Array(deflateSync(raw, { level: 9 }));
|
|
51
|
+
}
|
|
52
|
+
export function base64(bytes) {
|
|
53
|
+
return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64');
|
|
54
|
+
}
|
|
55
|
+
export function fromBase64(text) {
|
|
56
|
+
return new Uint8Array(Buffer.from(text, 'base64'));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=primitives.js.map
|