@cloudware-de/gatekeeper-widget 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/LICENSE +17 -0
  2. package/dist/client/instance.d.ts +35 -0
  3. package/dist/client/instance.d.ts.map +1 -0
  4. package/dist/client/instance.js +93 -0
  5. package/dist/client/instance.js.map +1 -0
  6. package/dist/client/transport.d.ts +19 -0
  7. package/dist/client/transport.d.ts.map +1 -0
  8. package/dist/client/transport.js +41 -0
  9. package/dist/client/transport.js.map +1 -0
  10. package/dist/client/urls.d.ts +12 -0
  11. package/dist/client/urls.d.ts.map +1 -0
  12. package/dist/client/urls.js +27 -0
  13. package/dist/client/urls.js.map +1 -0
  14. package/dist/copy/load-notice.d.ts +8 -0
  15. package/dist/copy/load-notice.d.ts.map +1 -0
  16. package/dist/copy/load-notice.js +8 -0
  17. package/dist/copy/load-notice.js.map +1 -0
  18. package/dist/element/honeypot.d.ts +5 -0
  19. package/dist/element/honeypot.d.ts.map +1 -0
  20. package/dist/element/honeypot.js +5 -0
  21. package/dist/element/honeypot.js.map +1 -0
  22. package/dist/element/session.d.ts +32 -0
  23. package/dist/element/session.d.ts.map +1 -0
  24. package/dist/element/session.js +90 -0
  25. package/dist/element/session.js.map +1 -0
  26. package/dist/element/start.d.ts +25 -0
  27. package/dist/element/start.d.ts.map +1 -0
  28. package/dist/element/start.js +85 -0
  29. package/dist/element/start.js.map +1 -0
  30. package/dist/element/states.d.ts +26 -0
  31. package/dist/element/states.d.ts.map +1 -0
  32. package/dist/element/states.js +58 -0
  33. package/dist/element/states.js.map +1 -0
  34. package/dist/element/templates/host.d.ts +7 -0
  35. package/dist/element/templates/host.d.ts.map +1 -0
  36. package/dist/element/templates/host.js +11 -0
  37. package/dist/element/templates/host.js.map +1 -0
  38. package/dist/element/templates/names.d.ts +11 -0
  39. package/dist/element/templates/names.d.ts.map +1 -0
  40. package/dist/element/templates/names.js +20 -0
  41. package/dist/element/templates/names.js.map +1 -0
  42. package/dist/element/templates/sheets.d.ts +10 -0
  43. package/dist/element/templates/sheets.d.ts.map +1 -0
  44. package/dist/element/templates/sheets.js +26 -0
  45. package/dist/element/templates/sheets.js.map +1 -0
  46. package/dist/element/widget.d.ts +75 -0
  47. package/dist/element/widget.d.ts.map +1 -0
  48. package/dist/element/widget.js +852 -0
  49. package/dist/element/widget.js.map +1 -0
  50. package/dist/envelope/run.d.ts +20 -0
  51. package/dist/envelope/run.d.ts.map +1 -0
  52. package/dist/envelope/run.js +104 -0
  53. package/dist/envelope/run.js.map +1 -0
  54. package/dist/index.d.ts +12 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +18 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/pow/messages.d.ts +24 -0
  59. package/dist/pow/messages.d.ts.map +1 -0
  60. package/dist/pow/messages.js +2 -0
  61. package/dist/pow/messages.js.map +1 -0
  62. package/dist/pow/oom.d.ts +7 -0
  63. package/dist/pow/oom.d.ts.map +1 -0
  64. package/dist/pow/oom.js +19 -0
  65. package/dist/pow/oom.js.map +1 -0
  66. package/dist/pow/run.d.ts +13 -0
  67. package/dist/pow/run.d.ts.map +1 -0
  68. package/dist/pow/run.js +73 -0
  69. package/dist/pow/run.js.map +1 -0
  70. package/dist/pow/solve.d.ts +32 -0
  71. package/dist/pow/solve.d.ts.map +1 -0
  72. package/dist/pow/solve.js +114 -0
  73. package/dist/pow/solve.js.map +1 -0
  74. package/dist/pow/wasm-url.d.ts +13 -0
  75. package/dist/pow/wasm-url.d.ts.map +1 -0
  76. package/dist/pow/wasm-url.js +16 -0
  77. package/dist/pow/wasm-url.js.map +1 -0
  78. package/dist/pow/worker.d.ts +2 -0
  79. package/dist/pow/worker.d.ts.map +1 -0
  80. package/dist/pow/worker.js +43 -0
  81. package/dist/pow/worker.js.map +1 -0
  82. package/dist/runtime/workers.d.ts +11 -0
  83. package/dist/runtime/workers.d.ts.map +1 -0
  84. package/dist/runtime/workers.js +36 -0
  85. package/dist/runtime/workers.js.map +1 -0
  86. package/package.json +33 -3
  87. package/src/client/instance.ts +140 -0
  88. package/src/client/transport.ts +55 -0
  89. package/src/client/urls.ts +38 -0
  90. package/src/copy/load-notice.ts +8 -0
  91. package/src/element/honeypot.ts +4 -0
  92. package/src/element/session.ts +131 -0
  93. package/src/element/start.ts +99 -0
  94. package/src/element/states.ts +73 -0
  95. package/src/element/templates/compact.css +4 -0
  96. package/src/element/templates/contrast.css +5 -0
  97. package/src/element/templates/host.ts +11 -0
  98. package/src/element/templates/names.ts +23 -0
  99. package/src/element/templates/sheets.ts +28 -0
  100. package/src/element/templates/standard.css +5 -0
  101. package/src/element/widget.ts +982 -0
  102. package/src/envelope/run.ts +126 -0
  103. package/src/index.ts +77 -0
  104. package/src/pow/messages.ts +21 -0
  105. package/src/pow/oom.ts +20 -0
  106. package/src/pow/run.ts +78 -0
  107. package/src/pow/solve.ts +136 -0
  108. package/src/pow/wasm-url.ts +27 -0
  109. package/src/pow/worker.ts +46 -0
  110. package/src/runtime/workers.ts +40 -0
  111. package/README.md +0 -3
@@ -0,0 +1,58 @@
1
+ /**
2
+ * T-204 UI-Zustände und getrennte ARIA-Labels (Artikel 10).
3
+ * Spec: specs/002-widget/tasks.md T-204
4
+ * Spec: specs/002-widget/spec.md §Öffentliches Custom-Element-API
5
+ */
6
+ export const WIDGET_UI_STATES = [
7
+ "idle",
8
+ "working",
9
+ "success",
10
+ "error",
11
+ "timeout",
12
+ ];
13
+ export const ARIA_LABELS = {
14
+ idle: "Cloudware Gatekeeper: nicht bestätigt",
15
+ working: "Cloudware Gatekeeper: Prüfung läuft",
16
+ success: "Cloudware Gatekeeper: bestätigt",
17
+ error: "Cloudware Gatekeeper: Prüfung fehlgeschlagen",
18
+ timeout: "Cloudware Gatekeeper: Zeitüberschreitung",
19
+ };
20
+ export function isWidgetUiState(value) {
21
+ return WIDGET_UI_STATES.includes(value);
22
+ }
23
+ export function labelForState(state) {
24
+ return ARIA_LABELS[state];
25
+ }
26
+ /** T-204-Default. Attribut `missing-token` überschreibt (leer = Default). */
27
+ export const TOKEN_MISSING_MESSAGE = "Cloudware Gatekeeper: Bitte zuerst die Prüfung abschließen.";
28
+ /**
29
+ * Idle/success dürfen per Attribut überschrieben werden.
30
+ * working / error / timeout bleiben T-204.
31
+ * Spec: specs/002-widget/spec.md §Öffentliches Custom-Element-API
32
+ */
33
+ export function labelForHost(host, state) {
34
+ if (state === "idle") {
35
+ const override = host.getAttribute("label-unchecked")?.trim() ?? "";
36
+ if (override.length > 0) {
37
+ return override;
38
+ }
39
+ }
40
+ if (state === "success") {
41
+ const override = host.getAttribute("label-checked")?.trim() ?? "";
42
+ if (override.length > 0) {
43
+ return override;
44
+ }
45
+ }
46
+ return ARIA_LABELS[state];
47
+ }
48
+ export function missingTokenMessage(host) {
49
+ const override = host.getAttribute("missing-token")?.trim() ?? "";
50
+ return override.length > 0 ? override : TOKEN_MISSING_MESSAGE;
51
+ }
52
+ /** Challenge-TTL (300 s), nicht T-210 Hard-Timeout. Attribut `expired-challenge`. */
53
+ export const CHALLENGE_EXPIRED_MESSAGE = "Cloudware Gatekeeper: Challenge abgelaufen — bitte erneut versuchen";
54
+ export function challengeExpiredMessage(host) {
55
+ const override = host.getAttribute("expired-challenge")?.trim() ?? "";
56
+ return override.length > 0 ? override : CHALLENGE_EXPIRED_MESSAGE;
57
+ }
58
+ //# sourceMappingURL=states.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"states.js","sourceRoot":"","sources":["../../src/element/states.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM;IACN,SAAS;IACT,SAAS;IACT,OAAO;IACP,SAAS;CACD,CAAC;AAIX,MAAM,CAAC,MAAM,WAAW,GAA4C;IAClE,IAAI,EAAE,uCAAuC;IAC7C,OAAO,EAAE,qCAAqC;IAC9C,OAAO,EAAE,iCAAiC;IAC1C,KAAK,EAAE,8CAA8C;IACrD,OAAO,EAAE,0CAA0C;CACpD,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAQ,gBAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAoB;IAChD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAChC,6DAA6D,CAAC;AAMhE;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc,EAAE,KAAoB;IAC/D,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAClE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAc;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAClE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAChE,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,yBAAyB,GACpC,qEAAqE,CAAC;AAExE,MAAM,UAAU,uBAAuB,CAAC,IAAc;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACtE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC;AACpE,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * data-template am Shadow-Host. Nur Darstellung.
3
+ * Spec: specs/002-widget/spec.md §Öffentliches Custom-Element-API
4
+ */
5
+ import { type WidgetTemplate } from "./names.js";
6
+ export declare function applyTemplateToHost(host: HTMLElement): WidgetTemplate;
7
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/element/templates/host.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEhE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,cAAc,CAIrE"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * data-template am Shadow-Host. Nur Darstellung.
3
+ * Spec: specs/002-widget/spec.md §Öffentliches Custom-Element-API
4
+ */
5
+ import { parseTemplate } from "./names.js";
6
+ export function applyTemplateToHost(host) {
7
+ const name = parseTemplate(host.getAttribute("template"));
8
+ host.setAttribute("data-template", name);
9
+ return name;
10
+ }
11
+ //# sourceMappingURL=host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/element/templates/host.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAuB,MAAM,YAAY,CAAC;AAEhE,MAAM,UAAU,mBAAmB,CAAC,IAAiB;IACnD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1D,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Drei Looks. Unbekannt → standard.
3
+ * Spec: specs/002-widget/spec.md §Öffentliches Custom-Element-API
4
+ */
5
+ export declare const TEMPLATE_STANDARD: "standard";
6
+ export declare const TEMPLATE_COMPACT: "compact";
7
+ export declare const TEMPLATE_CONTRAST: "contrast";
8
+ export declare const WIDGET_TEMPLATES: readonly ["standard", "compact", "contrast"];
9
+ export type WidgetTemplate = (typeof WIDGET_TEMPLATES)[number];
10
+ export declare function parseTemplate(raw: string | null | undefined): WidgetTemplate;
11
+ //# sourceMappingURL=names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../../src/element/templates/names.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAG,UAAmB,CAAC;AACrD,eAAO,MAAM,gBAAgB,EAAG,SAAkB,CAAC;AACnD,eAAO,MAAM,iBAAiB,EAAG,UAAmB,CAAC;AAErD,eAAO,MAAM,gBAAgB,8CAInB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,CAM5E"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Drei Looks. Unbekannt → standard.
3
+ * Spec: specs/002-widget/spec.md §Öffentliches Custom-Element-API
4
+ */
5
+ export const TEMPLATE_STANDARD = "standard";
6
+ export const TEMPLATE_COMPACT = "compact";
7
+ export const TEMPLATE_CONTRAST = "contrast";
8
+ export const WIDGET_TEMPLATES = [
9
+ TEMPLATE_STANDARD,
10
+ TEMPLATE_COMPACT,
11
+ TEMPLATE_CONTRAST,
12
+ ];
13
+ export function parseTemplate(raw) {
14
+ const value = raw?.trim();
15
+ if (value === TEMPLATE_COMPACT || value === TEMPLATE_CONTRAST) {
16
+ return value;
17
+ }
18
+ return TEMPLATE_STANDARD;
19
+ }
20
+ //# sourceMappingURL=names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../../../src/element/templates/names.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAmB,CAAC;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;CACT,CAAC;AAIX,MAAM,UAAU,aAAa,CAAC,GAA8B;IAC1D,MAAM,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAI,KAAK,KAAK,gBAAgB,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shadow-CSS der drei Looks. tsc kann keine .css-Imports.
3
+ * Inhalt muss mit standard.css / compact.css / contrast.css übereinstimmen.
4
+ * Spec: specs/002-widget/spec.md §Öffentliches Custom-Element-API
5
+ */
6
+ export declare const STANDARD_CSS = ":host { display: inline-block; font-family: system-ui, sans-serif; font-size: 1rem; line-height: 1.4; color: #111; max-width: 22rem; }\n.gk { display: flex; align-items: center; gap: 0.5rem; margin: 0; padding: 0.5rem 0.75rem; border: 1px solid #444; border-radius: 4px; background: #fff; }\n.gk-box { width: 1.25rem; height: 1.25rem; margin: 0; accent-color: #111; }\n.gk-label { user-select: none; }\n.gk-load { margin: 0.4rem 0 0; padding: 0 0.15rem; font-size: 0.8rem; line-height: 1.35; color: #333; }\n";
7
+ export declare const COMPACT_CSS = ":host([data-template=\"compact\"]) { font-size: 0.875rem; max-width: 16rem; }\n:host([data-template=\"compact\"]) .gk { flex-direction: column; align-items: flex-start; gap: 0.35rem; padding: 0.35rem 0.5rem; }\n:host([data-template=\"compact\"]) .gk-box { width: 1.25rem; height: 1.25rem; min-width: 20px; min-height: 20px; }\n:host([data-template=\"compact\"]) .gk-load { margin: 0.2rem 0 0; font-size: 0.75rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n";
8
+ export declare const CONTRAST_CSS = ":host([data-template=\"contrast\"]) { color: #f4f4f4; }\n:host([data-template=\"contrast\"]) .gk { background: #0a0a0a; border: 2px solid #f4f4f4; }\n:host([data-template=\"contrast\"]) .gk:focus-within { outline: 3px solid #ff0; outline-offset: 2px; }\n:host([data-template=\"contrast\"]) .gk-box { width: 1.35rem; height: 1.35rem; accent-color: #f4f4f4; }\n:host([data-template=\"contrast\"]) .gk-load { color: #e8e8e8; }\n";
9
+ export declare function combinedLookCss(): string;
10
+ //# sourceMappingURL=sheets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheets.d.ts","sourceRoot":"","sources":["../../../src/element/templates/sheets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,YAAY,igBAKxB,CAAC;AAEF,eAAO,MAAM,WAAW,qeAIvB,CAAC;AAEF,eAAO,MAAM,YAAY,8aAKxB,CAAC;AAEF,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Shadow-CSS der drei Looks. tsc kann keine .css-Imports.
3
+ * Inhalt muss mit standard.css / compact.css / contrast.css übereinstimmen.
4
+ * Spec: specs/002-widget/spec.md §Öffentliches Custom-Element-API
5
+ */
6
+ export const STANDARD_CSS = `:host { display: inline-block; font-family: system-ui, sans-serif; font-size: 1rem; line-height: 1.4; color: #111; max-width: 22rem; }
7
+ .gk { display: flex; align-items: center; gap: 0.5rem; margin: 0; padding: 0.5rem 0.75rem; border: 1px solid #444; border-radius: 4px; background: #fff; }
8
+ .gk-box { width: 1.25rem; height: 1.25rem; margin: 0; accent-color: #111; }
9
+ .gk-label { user-select: none; }
10
+ .gk-load { margin: 0.4rem 0 0; padding: 0 0.15rem; font-size: 0.8rem; line-height: 1.35; color: #333; }
11
+ `;
12
+ export const COMPACT_CSS = `:host([data-template="compact"]) { font-size: 0.875rem; max-width: 16rem; }
13
+ :host([data-template="compact"]) .gk { flex-direction: column; align-items: flex-start; gap: 0.35rem; padding: 0.35rem 0.5rem; }
14
+ :host([data-template="compact"]) .gk-box { width: 1.25rem; height: 1.25rem; min-width: 20px; min-height: 20px; }
15
+ :host([data-template="compact"]) .gk-load { margin: 0.2rem 0 0; font-size: 0.75rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
16
+ `;
17
+ export const CONTRAST_CSS = `:host([data-template="contrast"]) { color: #f4f4f4; }
18
+ :host([data-template="contrast"]) .gk { background: #0a0a0a; border: 2px solid #f4f4f4; }
19
+ :host([data-template="contrast"]) .gk:focus-within { outline: 3px solid #ff0; outline-offset: 2px; }
20
+ :host([data-template="contrast"]) .gk-box { width: 1.35rem; height: 1.35rem; accent-color: #f4f4f4; }
21
+ :host([data-template="contrast"]) .gk-load { color: #e8e8e8; }
22
+ `;
23
+ export function combinedLookCss() {
24
+ return `${STANDARD_CSS}${COMPACT_CSS}${CONTRAST_CSS}`;
25
+ }
26
+ //# sourceMappingURL=sheets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheets.js","sourceRoot":"","sources":["../../../src/element/templates/sheets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;CAK3B,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;;;;CAI1B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;CAK3B,CAAC;AAEF,MAAM,UAAU,eAAe;IAC7B,OAAO,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,EAAE,CAAC;AACxD,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Custom Element: Checkbox, Token, Startzeitpunkt, Hard-Timeout.
3
+ * Spec: specs/002-widget/tasks.md T-204 T-205 T-209 T-210
4
+ * Spec: specs/002-widget/spec.md §Öffentliches Custom-Element-API
5
+ * Spec: specs/002-widget/spec.md Pflichtumfang Start / Timeout / Token
6
+ * Spec: specs/002-widget/spec.md §Formular-Kanten
7
+ * Spec: specs/002-widget/spec.md §Öffentliches Custom-Element-API (template)
8
+ * Verfassung: Artikel 5, 6, 10. ADR-008.
9
+ */
10
+ import { type RedeemSuccess } from "../client/instance.js";
11
+ import type { Transport } from "../client/transport.js";
12
+ import { type WidgetUiState } from "./states.js";
13
+ export { HONEYPOT_FIELD } from "./honeypot.js";
14
+ export interface WidgetRedeemClient {
15
+ redeem(body: unknown): Promise<RedeemSuccess>;
16
+ }
17
+ export interface WidgetProgressDetail {
18
+ readonly progress: number;
19
+ readonly completed: number;
20
+ readonly total: number;
21
+ }
22
+ export interface WidgetPrepareHooks {
23
+ requestChallenge(request: {
24
+ hostname: string;
25
+ action: string;
26
+ cdata: string;
27
+ }): Promise<unknown>;
28
+ solve(challenge: unknown, ctx: {
29
+ onProgress: (detail: WidgetProgressDetail) => void;
30
+ signal: AbortSignal;
31
+ wasmUrl: string;
32
+ }): Promise<unknown>;
33
+ downgrade?(challenge: unknown, nowMs: number): Promise<unknown>;
34
+ }
35
+ export type DelayHandle = {
36
+ cancel(): void;
37
+ };
38
+ export type DelayFn = (callback: () => void, ms: number) => DelayHandle;
39
+ export declare class WidgetRedeemError extends Error {
40
+ readonly errorCodes: readonly string[];
41
+ constructor(message: string, errorCodes: readonly string[]);
42
+ }
43
+ export declare class GatekeepWidget extends HTMLElement {
44
+ #private;
45
+ static readonly formAssociated = true;
46
+ static get observedAttributes(): readonly string[];
47
+ constructor();
48
+ connectedCallback(): void;
49
+ disconnectedCallback(): void;
50
+ get uiState(): WidgetUiState;
51
+ /**
52
+ * T-204: UI-Zustand setzen, damit ARIA-Labels prüfbar sind.
53
+ */
54
+ applyUiState(state: WidgetUiState): void;
55
+ get siteKey(): string;
56
+ get baseUrl(): string;
57
+ get wasmUrl(): string;
58
+ setRedeemClient(client: WidgetRedeemClient | null): void;
59
+ setPrepareHooks(hooks: WidgetPrepareHooks | null): void;
60
+ setTransport(transport: Transport | undefined): void;
61
+ setPendingSolution(solution: unknown): void;
62
+ setNowMs(nowMs: () => number): void;
63
+ setDelay(delay: DelayFn): void;
64
+ getResponse(): string | null;
65
+ isExpired(): boolean;
66
+ /**
67
+ * T-210: fehlt die Lösung, zuerst Challenge/PoW.
68
+ * Checkbox-Klick löst ein, wenn die Lösung schon da ist.
69
+ */
70
+ solve(): Promise<string>;
71
+ reset(): void;
72
+ attributeChangedCallback(name: string): void;
73
+ }
74
+ export declare function defineGatekeepWidget(): void;
75
+ //# sourceMappingURL=widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../src/element/widget.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AA4BxD,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAY/C,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,OAAO,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrB,KAAK,CACH,SAAS,EAAE,OAAO,EAClB,GAAG,EAAE;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;QACnD,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,SAAS,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjE;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,IAAI,IAAI,CAAA;CAAE,CAAC;AAC7C,MAAM,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,WAAW,CAAC;AAExE,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;gBAE3B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE;CAK3D;AA0CD,qBAAa,cAAe,SAAQ,WAAW;;IAC7C,MAAM,CAAC,QAAQ,CAAC,cAAc,QAAQ;IAEtC,MAAM,KAAK,kBAAkB,IAAI,SAAS,MAAM,EAAE,CASjD;;IAiGD,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IAU5B,IAAI,OAAO,IAAI,aAAa,CAE3B;IAED;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAQxC,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI;IAIxD,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI;IAIvD,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI;IAIpD,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAI3C,QAAQ,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,IAAI;IAInC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9B,WAAW,IAAI,MAAM,GAAG,IAAI;IAU5B,SAAS,IAAI,OAAO;IAOpB;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAK9B,KAAK,IAAI,IAAI;IAyBb,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CA+lB7C;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C"}