@kya-os/consent 0.1.13 → 0.1.15

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 (131) hide show
  1. package/dist/bundle/inline.d.ts.map +1 -1
  2. package/dist/bundle/inline.js +2 -2
  3. package/dist/bundle/inline.js.map +1 -1
  4. package/dist/bundle/shell.d.ts +5 -0
  5. package/dist/bundle/shell.d.ts.map +1 -1
  6. package/dist/bundle/shell.js +3 -1
  7. package/dist/bundle/shell.js.map +1 -1
  8. package/dist/cjs/bundle/index.js +57 -0
  9. package/dist/cjs/bundle/index.js.map +1 -0
  10. package/dist/cjs/bundle/inline.js +22 -0
  11. package/dist/cjs/bundle/inline.js.map +1 -0
  12. package/dist/cjs/bundle/shell.js +291 -0
  13. package/dist/cjs/bundle/shell.js.map +1 -0
  14. package/dist/cjs/components/consent-button.js +180 -0
  15. package/dist/cjs/components/consent-button.js.map +1 -0
  16. package/dist/cjs/components/consent-checkbox.js +223 -0
  17. package/dist/cjs/components/consent-checkbox.js.map +1 -0
  18. package/dist/cjs/components/consent-input.js +335 -0
  19. package/dist/cjs/components/consent-input.js.map +1 -0
  20. package/dist/cjs/components/consent-oauth-button.js +392 -0
  21. package/dist/cjs/components/consent-oauth-button.js.map +1 -0
  22. package/dist/cjs/components/consent-otp-input.js +388 -0
  23. package/dist/cjs/components/consent-otp-input.js.map +1 -0
  24. package/dist/cjs/components/consent-permissions.js +433 -0
  25. package/dist/cjs/components/consent-permissions.js.map +1 -0
  26. package/dist/cjs/components/consent-shell.js +234 -0
  27. package/dist/cjs/components/consent-shell.js.map +1 -0
  28. package/dist/cjs/components/consent-terms.js +287 -0
  29. package/dist/cjs/components/consent-terms.js.map +1 -0
  30. package/dist/cjs/components/index.js +37 -0
  31. package/dist/cjs/components/index.js.map +1 -0
  32. package/dist/cjs/components/mcp-consent.js +1034 -0
  33. package/dist/cjs/components/mcp-consent.js.map +1 -0
  34. package/dist/cjs/constants/auth-modes.js +128 -0
  35. package/dist/cjs/constants/auth-modes.js.map +1 -0
  36. package/dist/cjs/constants/colors.js +40 -0
  37. package/dist/cjs/constants/colors.js.map +1 -0
  38. package/dist/cjs/constants/defaults.js +146 -0
  39. package/dist/cjs/constants/defaults.js.map +1 -0
  40. package/dist/cjs/constants/index.js +40 -0
  41. package/dist/cjs/constants/index.js.map +1 -0
  42. package/dist/cjs/index.js +49 -0
  43. package/dist/cjs/index.js.map +1 -0
  44. package/dist/cjs/package.json +1 -0
  45. package/dist/cjs/react/index.js +190 -0
  46. package/dist/cjs/react/index.js.map +1 -0
  47. package/dist/cjs/resolution/index.js +28 -0
  48. package/dist/cjs/resolution/index.js.map +1 -0
  49. package/dist/cjs/resolution/resolve-branding.js +159 -0
  50. package/dist/cjs/resolution/resolve-branding.js.map +1 -0
  51. package/dist/cjs/resolution/resolve-config.js +270 -0
  52. package/dist/cjs/resolution/resolve-config.js.map +1 -0
  53. package/dist/cjs/resolution/resolve-copy.js +136 -0
  54. package/dist/cjs/resolution/resolve-copy.js.map +1 -0
  55. package/dist/cjs/schemas/api.schemas.js +162 -0
  56. package/dist/cjs/schemas/api.schemas.js.map +1 -0
  57. package/dist/cjs/schemas/branding.schemas.js +57 -0
  58. package/dist/cjs/schemas/branding.schemas.js.map +1 -0
  59. package/dist/cjs/schemas/config.schemas.js +147 -0
  60. package/dist/cjs/schemas/config.schemas.js.map +1 -0
  61. package/dist/cjs/schemas/index.js +29 -0
  62. package/dist/cjs/schemas/index.js.map +1 -0
  63. package/dist/cjs/schemas/modes.schemas.js +107 -0
  64. package/dist/cjs/schemas/modes.schemas.js.map +1 -0
  65. package/dist/cjs/security/escape.js +206 -0
  66. package/dist/cjs/security/escape.js.map +1 -0
  67. package/dist/cjs/security/index.js +26 -0
  68. package/dist/cjs/security/index.js.map +1 -0
  69. package/dist/cjs/security/validators.js +210 -0
  70. package/dist/cjs/security/validators.js.map +1 -0
  71. package/dist/cjs/styles/css-variables.js +129 -0
  72. package/dist/cjs/styles/css-variables.js.map +1 -0
  73. package/dist/cjs/styles/index.js +28 -0
  74. package/dist/cjs/styles/index.js.map +1 -0
  75. package/dist/cjs/styles/stylesheet.js +204 -0
  76. package/dist/cjs/styles/stylesheet.js.map +1 -0
  77. package/dist/cjs/styles/tokens.js +183 -0
  78. package/dist/cjs/styles/tokens.js.map +1 -0
  79. package/dist/cjs/templates/base/base-template.js +282 -0
  80. package/dist/cjs/templates/base/base-template.js.map +1 -0
  81. package/dist/cjs/templates/base/components.js +295 -0
  82. package/dist/cjs/templates/base/components.js.map +1 -0
  83. package/dist/cjs/templates/base/index.js +26 -0
  84. package/dist/cjs/templates/base/index.js.map +1 -0
  85. package/dist/cjs/templates/index.js +34 -0
  86. package/dist/cjs/templates/index.js.map +1 -0
  87. package/dist/cjs/templates/modes/consent-only.template.js +74 -0
  88. package/dist/cjs/templates/modes/consent-only.template.js.map +1 -0
  89. package/dist/cjs/templates/modes/credentials.template.js +414 -0
  90. package/dist/cjs/templates/modes/credentials.template.js.map +1 -0
  91. package/dist/cjs/templates/modes/index.js +24 -0
  92. package/dist/cjs/templates/modes/index.js.map +1 -0
  93. package/dist/cjs/templates/modes/magic-link.template.js +196 -0
  94. package/dist/cjs/templates/modes/magic-link.template.js.map +1 -0
  95. package/dist/cjs/templates/modes/oauth.template.js +153 -0
  96. package/dist/cjs/templates/modes/oauth.template.js.map +1 -0
  97. package/dist/cjs/templates/modes/otp.template.js +316 -0
  98. package/dist/cjs/templates/modes/otp.template.js.map +1 -0
  99. package/dist/cjs/templates/modes/success.template.js +140 -0
  100. package/dist/cjs/templates/modes/success.template.js.map +1 -0
  101. package/dist/cjs/templates/registry.js +133 -0
  102. package/dist/cjs/templates/registry.js.map +1 -0
  103. package/dist/cjs/types/api.types.js +10 -0
  104. package/dist/cjs/types/api.types.js.map +1 -0
  105. package/dist/cjs/types/branding.types.js +10 -0
  106. package/dist/cjs/types/branding.types.js.map +1 -0
  107. package/dist/cjs/types/config.types.js +10 -0
  108. package/dist/cjs/types/config.types.js.map +1 -0
  109. package/dist/cjs/types/copy.types.js +10 -0
  110. package/dist/cjs/types/copy.types.js.map +1 -0
  111. package/dist/cjs/types/index.js +31 -0
  112. package/dist/cjs/types/index.js.map +1 -0
  113. package/dist/cjs/types/modes.types.js +140 -0
  114. package/dist/cjs/types/modes.types.js.map +1 -0
  115. package/dist/cjs/types/page.types.js +10 -0
  116. package/dist/cjs/types/page.types.js.map +1 -0
  117. package/dist/components/mcp-consent.d.ts +6 -0
  118. package/dist/components/mcp-consent.d.ts.map +1 -1
  119. package/dist/components/mcp-consent.js +14 -0
  120. package/dist/components/mcp-consent.js.map +1 -1
  121. package/dist/consent.js +7 -0
  122. package/dist/consent.min.js +2 -2
  123. package/dist/schemas/api.schemas.d.ts +177 -169
  124. package/dist/schemas/api.schemas.d.ts.map +1 -1
  125. package/dist/schemas/api.schemas.js +6 -0
  126. package/dist/schemas/api.schemas.js.map +1 -1
  127. package/dist/schemas/config.schemas.d.ts +116 -116
  128. package/dist/schemas/modes.schemas.d.ts +28 -28
  129. package/dist/types/api.types.d.ts +6 -0
  130. package/dist/types/api.types.d.ts.map +1 -1
  131. package/package.json +29 -15
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ /**
3
+ * HTML/JS Escape Utilities
4
+ *
5
+ * XSS prevention utilities for rendering user content safely.
6
+ *
7
+ * @module @kya-os/consent/security/escape
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.escapeHtml = escapeHtml;
11
+ exports.escapeAttr = escapeAttr;
12
+ exports.escapeJs = escapeJs;
13
+ exports.escapeJsValue = escapeJsValue;
14
+ exports.escapeUrl = escapeUrl;
15
+ exports.safeHtml = safeHtml;
16
+ exports.safeAttr = safeAttr;
17
+ /**
18
+ * HTML entities to escape
19
+ */
20
+ const HTML_ESCAPE_MAP = {
21
+ "&": "&",
22
+ "<": "&lt;",
23
+ ">": "&gt;",
24
+ '"': "&quot;",
25
+ "'": "&#x27;",
26
+ };
27
+ /**
28
+ * Additional characters to escape in attributes
29
+ */
30
+ const ATTR_ESCAPE_MAP = {
31
+ ...HTML_ESCAPE_MAP,
32
+ "`": "&#x60;",
33
+ "=": "&#x3D;",
34
+ };
35
+ /**
36
+ * Escape HTML special characters to prevent XSS
37
+ *
38
+ * Converts characters that have special meaning in HTML to their
39
+ * entity equivalents, making them safe to insert into HTML content.
40
+ *
41
+ * @param text - The text to escape
42
+ * @returns HTML-safe string
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * escapeHtml('<script>alert("xss")</script>')
47
+ * // Returns: '&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;'
48
+ * ```
49
+ */
50
+ function escapeHtml(text) {
51
+ if (!text)
52
+ return "";
53
+ return text.replace(/[&<>"']/g, (char) => HTML_ESCAPE_MAP[char] ?? char);
54
+ }
55
+ /**
56
+ * Escape text for use in HTML attributes
57
+ *
58
+ * More comprehensive escaping than escapeHtml, including backticks
59
+ * and equals signs which can be dangerous in attribute contexts.
60
+ *
61
+ * @param value - The value to escape
62
+ * @returns Attribute-safe string
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * escapeAttr('value" onclick="alert(1)')
67
+ * // Returns: 'value&quot; onclick&#x3D;&quot;alert(1)'
68
+ * ```
69
+ */
70
+ function escapeAttr(value) {
71
+ if (!value)
72
+ return "";
73
+ return value.replace(/[&<>"'`=]/g, (char) => ATTR_ESCAPE_MAP[char] ?? char);
74
+ }
75
+ /**
76
+ * Escape text for use in JavaScript strings
77
+ *
78
+ * Uses JSON.stringify to properly escape all special characters
79
+ * that could break out of a JavaScript string context.
80
+ *
81
+ * @param text - The text to escape
82
+ * @returns JS-safe string (without surrounding quotes)
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * escapeJs('hello\nworld')
87
+ * // Returns: '"hello\\nworld"' (with quotes from JSON.stringify)
88
+ * ```
89
+ */
90
+ function escapeJs(text) {
91
+ if (!text)
92
+ return '""';
93
+ return JSON.stringify(text);
94
+ }
95
+ /**
96
+ * Escape text for use in JavaScript, returning value without quotes
97
+ *
98
+ * @param text - The text to escape
99
+ * @returns JS-safe string content (without surrounding quotes)
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * escapeJsValue('hello\nworld')
104
+ * // Returns: 'hello\\nworld'
105
+ * ```
106
+ */
107
+ function escapeJsValue(text) {
108
+ if (!text)
109
+ return "";
110
+ // JSON.stringify adds quotes, remove them
111
+ const escaped = JSON.stringify(text);
112
+ return escaped.slice(1, -1);
113
+ }
114
+ /**
115
+ * Escape URL for use in href or src attributes
116
+ *
117
+ * Only allows http, https, and mailto protocols. Returns empty
118
+ * string for dangerous protocols like javascript:.
119
+ *
120
+ * @param url - The URL to escape
121
+ * @returns Safe URL or empty string
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * escapeUrl('javascript:alert(1)')
126
+ * // Returns: ''
127
+ *
128
+ * escapeUrl('https://example.com/?q=test')
129
+ * // Returns: 'https://example.com/?q=test'
130
+ * ```
131
+ */
132
+ function escapeUrl(url) {
133
+ if (!url)
134
+ return "";
135
+ // Check for dangerous protocols
136
+ const lowerUrl = url.toLowerCase().trim();
137
+ if (lowerUrl.startsWith("javascript:") ||
138
+ lowerUrl.startsWith("data:") ||
139
+ lowerUrl.startsWith("vbscript:") ||
140
+ lowerUrl.startsWith("file:")) {
141
+ return "";
142
+ }
143
+ // Try to parse as URL to validate
144
+ try {
145
+ const parsed = new URL(url);
146
+ if (!["http:", "https:", "mailto:"].includes(parsed.protocol)) {
147
+ return "";
148
+ }
149
+ }
150
+ catch {
151
+ // Block protocol-relative URLs (//evil.com) which bypass protocol checks
152
+ if (url.startsWith("//")) {
153
+ return "";
154
+ }
155
+ // If it's a relative URL (single slash, hash, or query), that's okay
156
+ if (!url.startsWith("/") && !url.startsWith("#") && !url.startsWith("?")) {
157
+ // Absolute URL that failed to parse - unsafe
158
+ return "";
159
+ }
160
+ }
161
+ // Escape any HTML characters in the URL (but not = or ` which are safe in URLs)
162
+ return escapeHtml(url);
163
+ }
164
+ /**
165
+ * Create a safe HTML string from template literals
166
+ *
167
+ * Automatically escapes interpolated values while preserving
168
+ * the template structure.
169
+ *
170
+ * @param strings - Template literal strings
171
+ * @param values - Interpolated values to escape
172
+ * @returns Safe HTML string
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * const userInput = '<script>alert("xss")</script>';
177
+ * const html = safeHtml`<div>${userInput}</div>`;
178
+ * // Returns: '<div>&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;</div>'
179
+ * ```
180
+ */
181
+ function safeHtml(strings, ...values) {
182
+ let result = strings[0] ?? "";
183
+ for (let i = 0; i < values.length; i++) {
184
+ const value = values[i];
185
+ const escaped = value === null || value === undefined ? "" : escapeHtml(String(value));
186
+ result += escaped + (strings[i + 1] ?? "");
187
+ }
188
+ return result;
189
+ }
190
+ /**
191
+ * Create a safe attribute value from template literals
192
+ *
193
+ * @param strings - Template literal strings
194
+ * @param values - Interpolated values to escape
195
+ * @returns Safe attribute string
196
+ */
197
+ function safeAttr(strings, ...values) {
198
+ let result = strings[0] ?? "";
199
+ for (let i = 0; i < values.length; i++) {
200
+ const value = values[i];
201
+ const escaped = value === null || value === undefined ? "" : escapeAttr(String(value));
202
+ result += escaped + (strings[i + 1] ?? "");
203
+ }
204
+ return result;
205
+ }
206
+ //# sourceMappingURL=escape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape.js","sourceRoot":"","sources":["../../../src/security/escape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * Consent Security Utilities
4
+ *
5
+ * XSS prevention and input validation utilities.
6
+ *
7
+ * @module @kya-os/consent/security
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ __exportStar(require("./escape.js"), exports);
25
+ __exportStar(require("./validators.js"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/security/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;AAEH,8CAA4B;AAC5B,kDAAgC"}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ /**
3
+ * Security Validators
4
+ *
5
+ * Input validation utilities for secure rendering.
6
+ *
7
+ * @module @kya-os/consent/security/validators
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.validateColor = validateColor;
11
+ exports.validateUrl = validateUrl;
12
+ exports.validateEmail = validateEmail;
13
+ exports.validateDid = validateDid;
14
+ exports.validateNoControlChars = validateNoControlChars;
15
+ exports.sanitizeDisplayText = sanitizeDisplayText;
16
+ exports.validateIdentifier = validateIdentifier;
17
+ exports.isValidInteger = isValidInteger;
18
+ exports.validateCSRFToken = validateCSRFToken;
19
+ /**
20
+ * Validate that a string is a valid hex color
21
+ *
22
+ * Only accepts 6-digit hex colors with # prefix.
23
+ *
24
+ * @param color - Color string to validate
25
+ * @returns The color if valid, undefined otherwise
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * validateColor('#2563EB') // Returns '#2563EB'
30
+ * validateColor('2563EB') // Returns undefined
31
+ * validateColor('#fff') // Returns undefined (3-digit not allowed)
32
+ * ```
33
+ */
34
+ function validateColor(color) {
35
+ if (!color)
36
+ return undefined;
37
+ const hex6Pattern = /^#[0-9A-Fa-f]{6}$/;
38
+ if (hex6Pattern.test(color)) {
39
+ return color;
40
+ }
41
+ return undefined;
42
+ }
43
+ /**
44
+ * Validate that a string is a valid URL
45
+ *
46
+ * Only accepts http and https protocols.
47
+ *
48
+ * @param url - URL string to validate
49
+ * @returns The URL if valid, undefined otherwise
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * validateUrl('https://example.com') // Returns 'https://example.com'
54
+ * validateUrl('javascript:alert(1)') // Returns undefined
55
+ * validateUrl('ftp://files.example.com') // Returns undefined
56
+ * ```
57
+ */
58
+ function validateUrl(url) {
59
+ if (!url)
60
+ return undefined;
61
+ try {
62
+ const parsed = new URL(url);
63
+ if (parsed.protocol === "http:" || parsed.protocol === "https:") {
64
+ return url;
65
+ }
66
+ }
67
+ catch {
68
+ // Invalid URL
69
+ }
70
+ return undefined;
71
+ }
72
+ /**
73
+ * Validate that a string is a valid email address
74
+ *
75
+ * Uses a simple but effective email pattern.
76
+ *
77
+ * @param email - Email string to validate
78
+ * @returns The email if valid, undefined otherwise
79
+ */
80
+ function validateEmail(email) {
81
+ if (!email)
82
+ return undefined;
83
+ // Simple email pattern - not exhaustive but catches most issues
84
+ const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
85
+ if (emailPattern.test(email) && email.length <= 255) {
86
+ return email;
87
+ }
88
+ return undefined;
89
+ }
90
+ /**
91
+ * Validate that a string is a valid DID
92
+ *
93
+ * @param did - DID string to validate
94
+ * @returns The DID if valid, undefined otherwise
95
+ */
96
+ function validateDid(did) {
97
+ if (!did)
98
+ return undefined;
99
+ // DID must start with did:
100
+ if (!did.startsWith("did:")) {
101
+ return undefined;
102
+ }
103
+ // Must have at least method and identifier (did:method:identifier)
104
+ const parts = did.split(":");
105
+ if (parts.length < 3) {
106
+ return undefined;
107
+ }
108
+ // Method must be alphanumeric
109
+ const method = parts[1];
110
+ if (!method || !/^[a-z0-9]+$/.test(method)) {
111
+ return undefined;
112
+ }
113
+ // Reasonable length limit
114
+ if (did.length > 500) {
115
+ return undefined;
116
+ }
117
+ return did;
118
+ }
119
+ /**
120
+ * Validate that a string contains no control characters
121
+ *
122
+ * @param text - Text to validate
123
+ * @returns The text if valid, undefined otherwise
124
+ */
125
+ function validateNoControlChars(text) {
126
+ if (!text)
127
+ return undefined;
128
+ // Allow only printable ASCII and common whitespace
129
+ // eslint-disable-next-line no-control-regex
130
+ const controlPattern = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/;
131
+ if (controlPattern.test(text)) {
132
+ return undefined;
133
+ }
134
+ return text;
135
+ }
136
+ /**
137
+ * Validate and sanitize a string for display
138
+ *
139
+ * Removes control characters and trims whitespace.
140
+ *
141
+ * @param text - Text to sanitize
142
+ * @param maxLength - Maximum allowed length
143
+ * @returns Sanitized text or undefined if invalid
144
+ */
145
+ function sanitizeDisplayText(text, maxLength = 500) {
146
+ if (!text)
147
+ return undefined;
148
+ // Remove control characters
149
+ // eslint-disable-next-line no-control-regex
150
+ const cleaned = text.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, "");
151
+ // Trim and check length
152
+ const trimmed = cleaned.trim();
153
+ if (trimmed.length === 0 || trimmed.length > maxLength) {
154
+ return undefined;
155
+ }
156
+ return trimmed;
157
+ }
158
+ /**
159
+ * Validate that a string is alphanumeric with underscores only
160
+ *
161
+ * Useful for field names and identifiers.
162
+ *
163
+ * @param text - Text to validate
164
+ * @returns The text if valid, undefined otherwise
165
+ */
166
+ function validateIdentifier(text) {
167
+ if (!text)
168
+ return undefined;
169
+ if (/^[a-zA-Z0-9_]+$/.test(text)) {
170
+ return text;
171
+ }
172
+ return undefined;
173
+ }
174
+ /**
175
+ * Check if a value is a safe integer within range
176
+ *
177
+ * @param value - Value to check
178
+ * @param min - Minimum value (inclusive)
179
+ * @param max - Maximum value (inclusive)
180
+ * @returns True if valid
181
+ */
182
+ function isValidInteger(value, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {
183
+ if (typeof value !== "number")
184
+ return false;
185
+ if (!Number.isFinite(value))
186
+ return false;
187
+ if (!Number.isInteger(value))
188
+ return false;
189
+ return value >= min && value <= max;
190
+ }
191
+ /**
192
+ * Validate a CSRF token format
193
+ *
194
+ * @param token - Token to validate
195
+ * @returns The token if valid, undefined otherwise
196
+ */
197
+ function validateCSRFToken(token) {
198
+ if (!token)
199
+ return undefined;
200
+ // CSRF tokens should be reasonably long random strings
201
+ if (token.length < 16 || token.length > 256) {
202
+ return undefined;
203
+ }
204
+ // Should only contain safe characters
205
+ if (!/^[a-zA-Z0-9_-]+$/.test(token)) {
206
+ return undefined;
207
+ }
208
+ return token;
209
+ }
210
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/security/validators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ /**
3
+ * CSS Variable Generation
4
+ *
5
+ * Generates CSS custom properties for theming consent pages.
6
+ *
7
+ * @module @kya-os/consent/styles/css-variables
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CSS_VAR_NAMES = void 0;
11
+ exports.hexToRgb = hexToRgb;
12
+ exports.generateCSSVariables = generateCSSVariables;
13
+ exports.generateCSSVariableString = generateCSSVariableString;
14
+ exports.generateFullCSSVariables = generateFullCSSVariables;
15
+ exports.generateStyleAttribute = generateStyleAttribute;
16
+ exports.generateRootCSSBlock = generateRootCSSBlock;
17
+ const colors_js_1 = require("../constants/colors.js");
18
+ /**
19
+ * CSS variable names used in consent pages
20
+ */
21
+ exports.CSS_VAR_NAMES = {
22
+ PRIMARY: "--consent-primary",
23
+ SECONDARY: "--consent-secondary",
24
+ PRIMARY_RGB: "--consent-primary-rgb",
25
+ SECONDARY_RGB: "--consent-secondary-rgb",
26
+ BACKGROUND: "--consent-background",
27
+ TEXT_PRIMARY: "--consent-text-primary",
28
+ TEXT_SECONDARY: "--consent-text-secondary",
29
+ BORDER: "--consent-border",
30
+ };
31
+ /**
32
+ * Convert hex color to RGB string
33
+ *
34
+ * @param hex - Hex color string (e.g., '#2563EB')
35
+ * @returns RGB string (e.g., '37, 99, 235')
36
+ */
37
+ function hexToRgb(hex) {
38
+ // Remove # if present
39
+ const cleanHex = hex.replace(/^#/, '');
40
+ // Parse hex to RGB
41
+ const r = parseInt(cleanHex.slice(0, 2), 16);
42
+ const g = parseInt(cleanHex.slice(2, 4), 16);
43
+ const b = parseInt(cleanHex.slice(4, 6), 16);
44
+ return `${r}, ${g}, ${b}`;
45
+ }
46
+ /**
47
+ * Generate CSS variables from branding configuration
48
+ *
49
+ * @param branding - Branding config (optional fields)
50
+ * @returns CSS variable object with resolved values
51
+ */
52
+ function generateCSSVariables(branding) {
53
+ const primary = branding?.primaryColor ?? colors_js_1.DEFAULT_COLORS.PRIMARY;
54
+ const secondary = branding?.secondaryColor ?? colors_js_1.DEFAULT_COLORS.SECONDARY;
55
+ return {
56
+ "--consent-primary": primary,
57
+ "--consent-secondary": secondary,
58
+ "--consent-primary-rgb": hexToRgb(primary),
59
+ "--consent-secondary-rgb": hexToRgb(secondary),
60
+ };
61
+ }
62
+ /**
63
+ * Generate CSS variable declarations as a style string
64
+ *
65
+ * @param branding - Branding config
66
+ * @returns CSS style string (e.g., "--consent-primary: #2563EB;")
67
+ */
68
+ function generateCSSVariableString(branding) {
69
+ const vars = generateCSSVariables(branding);
70
+ return Object.entries(vars)
71
+ .map(([name, value]) => `${name}: ${value};`)
72
+ .join(" ");
73
+ }
74
+ /**
75
+ * Generate CSS variable declarations with all theme colors
76
+ *
77
+ * @param branding - Branding config
78
+ * @returns Complete CSS variable declarations including derived colors
79
+ */
80
+ function generateFullCSSVariables(branding) {
81
+ const primary = branding?.primaryColor ?? colors_js_1.DEFAULT_COLORS.PRIMARY;
82
+ const secondary = branding?.secondaryColor ?? colors_js_1.DEFAULT_COLORS.SECONDARY;
83
+ return {
84
+ // Core branding colors
85
+ [exports.CSS_VAR_NAMES.PRIMARY]: primary,
86
+ [exports.CSS_VAR_NAMES.SECONDARY]: secondary,
87
+ // Additional theme colors
88
+ [exports.CSS_VAR_NAMES.BACKGROUND]: colors_js_1.DEFAULT_COLORS.BACKGROUND,
89
+ [exports.CSS_VAR_NAMES.TEXT_PRIMARY]: colors_js_1.DEFAULT_COLORS.TEXT_PRIMARY,
90
+ [exports.CSS_VAR_NAMES.TEXT_SECONDARY]: colors_js_1.DEFAULT_COLORS.TEXT_SECONDARY,
91
+ [exports.CSS_VAR_NAMES.BORDER]: colors_js_1.DEFAULT_COLORS.BORDER,
92
+ };
93
+ }
94
+ /**
95
+ * Generate a style attribute value with CSS variables
96
+ *
97
+ * @param branding - Branding config
98
+ * @returns Style attribute value for inline styling
99
+ *
100
+ * @example
101
+ * ```html
102
+ * <div style="${generateStyleAttribute(branding)}">...</div>
103
+ * ```
104
+ */
105
+ function generateStyleAttribute(branding) {
106
+ return generateCSSVariableString(branding);
107
+ }
108
+ /**
109
+ * Generate a :root CSS block with all variables
110
+ *
111
+ * @param branding - Branding config
112
+ * @returns CSS :root block
113
+ *
114
+ * @example
115
+ * ```css
116
+ * :root {
117
+ * --consent-primary: #2563EB;
118
+ * --consent-secondary: #DBEAFE;
119
+ * }
120
+ * ```
121
+ */
122
+ function generateRootCSSBlock(branding) {
123
+ const vars = generateFullCSSVariables(branding);
124
+ const declarations = Object.entries(vars)
125
+ .map(([name, value]) => ` ${name}: ${value};`)
126
+ .join("\n");
127
+ return `:root {\n${declarations}\n}`;
128
+ }
129
+ //# sourceMappingURL=css-variables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-variables.js","sourceRoot":"","sources":["../../../src/styles/css-variables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * Consent Styles
4
+ *
5
+ * CSS tokens and generators for consent page styling.
6
+ * Matches AgentShield preview components exactly for pixel-perfect parity.
7
+ *
8
+ * @module @kya-os/consent/styles
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ __exportStar(require("./tokens.js"), exports);
26
+ __exportStar(require("./css-variables.js"), exports);
27
+ __exportStar(require("./stylesheet.js"), exports);
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/styles/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;AAEH,8CAA4B;AAC5B,qDAAmC;AACnC,kDAAgC"}