@kya-os/consent 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 (161) hide show
  1. package/dist/constants/auth-modes.d.ts +54 -0
  2. package/dist/constants/auth-modes.d.ts.map +1 -0
  3. package/dist/constants/auth-modes.js +128 -0
  4. package/dist/constants/auth-modes.js.map +1 -0
  5. package/dist/constants/colors.d.ts +38 -0
  6. package/dist/constants/colors.d.ts.map +1 -0
  7. package/dist/constants/colors.js +40 -0
  8. package/dist/constants/colors.js.map +1 -0
  9. package/dist/constants/defaults.d.ts +112 -0
  10. package/dist/constants/defaults.d.ts.map +1 -0
  11. package/dist/constants/defaults.js +146 -0
  12. package/dist/constants/defaults.js.map +1 -0
  13. package/dist/constants/index.d.ts +11 -0
  14. package/dist/constants/index.d.ts.map +1 -0
  15. package/dist/constants/index.js +37 -0
  16. package/dist/constants/index.js.map +1 -0
  17. package/dist/index.d.ts +16 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +39 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/resolution/index.d.ts +12 -0
  22. package/dist/resolution/index.d.ts.map +1 -0
  23. package/dist/resolution/index.js +28 -0
  24. package/dist/resolution/index.js.map +1 -0
  25. package/dist/resolution/resolve-branding.d.ts +70 -0
  26. package/dist/resolution/resolve-branding.d.ts.map +1 -0
  27. package/dist/resolution/resolve-branding.js +159 -0
  28. package/dist/resolution/resolve-branding.js.map +1 -0
  29. package/dist/resolution/resolve-config.d.ts +81 -0
  30. package/dist/resolution/resolve-config.d.ts.map +1 -0
  31. package/dist/resolution/resolve-config.js +254 -0
  32. package/dist/resolution/resolve-config.js.map +1 -0
  33. package/dist/resolution/resolve-copy.d.ts +53 -0
  34. package/dist/resolution/resolve-copy.d.ts.map +1 -0
  35. package/dist/resolution/resolve-copy.js +136 -0
  36. package/dist/resolution/resolve-copy.js.map +1 -0
  37. package/dist/schemas/api.schemas.d.ts +984 -0
  38. package/dist/schemas/api.schemas.d.ts.map +1 -0
  39. package/dist/schemas/api.schemas.js +153 -0
  40. package/dist/schemas/api.schemas.js.map +1 -0
  41. package/dist/schemas/branding.schemas.d.ts +100 -0
  42. package/dist/schemas/branding.schemas.d.ts.map +1 -0
  43. package/dist/schemas/branding.schemas.js +57 -0
  44. package/dist/schemas/branding.schemas.js.map +1 -0
  45. package/dist/schemas/config.schemas.d.ts +1182 -0
  46. package/dist/schemas/config.schemas.d.ts.map +1 -0
  47. package/dist/schemas/config.schemas.js +147 -0
  48. package/dist/schemas/config.schemas.js.map +1 -0
  49. package/dist/schemas/index.d.ts +13 -0
  50. package/dist/schemas/index.d.ts.map +1 -0
  51. package/dist/schemas/index.js +29 -0
  52. package/dist/schemas/index.js.map +1 -0
  53. package/dist/schemas/modes.schemas.d.ts +406 -0
  54. package/dist/schemas/modes.schemas.d.ts.map +1 -0
  55. package/dist/schemas/modes.schemas.js +107 -0
  56. package/dist/schemas/modes.schemas.js.map +1 -0
  57. package/dist/security/escape.d.ts +114 -0
  58. package/dist/security/escape.d.ts.map +1 -0
  59. package/dist/security/escape.js +202 -0
  60. package/dist/security/escape.js.map +1 -0
  61. package/dist/security/index.d.ts +10 -0
  62. package/dist/security/index.d.ts.map +1 -0
  63. package/dist/security/index.js +26 -0
  64. package/dist/security/index.js.map +1 -0
  65. package/dist/security/validators.d.ts +98 -0
  66. package/dist/security/validators.d.ts.map +1 -0
  67. package/dist/security/validators.js +210 -0
  68. package/dist/security/validators.js.map +1 -0
  69. package/dist/styles/css-variables.d.ts +78 -0
  70. package/dist/styles/css-variables.d.ts.map +1 -0
  71. package/dist/styles/css-variables.js +129 -0
  72. package/dist/styles/css-variables.js.map +1 -0
  73. package/dist/styles/index.d.ts +12 -0
  74. package/dist/styles/index.d.ts.map +1 -0
  75. package/dist/styles/index.js +28 -0
  76. package/dist/styles/index.js.map +1 -0
  77. package/dist/styles/stylesheet.d.ts +57 -0
  78. package/dist/styles/stylesheet.d.ts.map +1 -0
  79. package/dist/styles/stylesheet.js +204 -0
  80. package/dist/styles/stylesheet.js.map +1 -0
  81. package/dist/styles/tokens.d.ts +141 -0
  82. package/dist/styles/tokens.d.ts.map +1 -0
  83. package/dist/styles/tokens.js +183 -0
  84. package/dist/styles/tokens.js.map +1 -0
  85. package/dist/templates/base/base-template.d.ts +81 -0
  86. package/dist/templates/base/base-template.d.ts.map +1 -0
  87. package/dist/templates/base/base-template.js +282 -0
  88. package/dist/templates/base/base-template.js.map +1 -0
  89. package/dist/templates/base/components.d.ts +120 -0
  90. package/dist/templates/base/components.d.ts.map +1 -0
  91. package/dist/templates/base/components.js +295 -0
  92. package/dist/templates/base/components.js.map +1 -0
  93. package/dist/templates/base/index.d.ts +8 -0
  94. package/dist/templates/base/index.d.ts.map +1 -0
  95. package/dist/templates/base/index.js +26 -0
  96. package/dist/templates/base/index.js.map +1 -0
  97. package/dist/templates/index.d.ts +18 -0
  98. package/dist/templates/index.d.ts.map +1 -0
  99. package/dist/templates/index.js +34 -0
  100. package/dist/templates/index.js.map +1 -0
  101. package/dist/templates/modes/consent-only.template.d.ts +36 -0
  102. package/dist/templates/modes/consent-only.template.d.ts.map +1 -0
  103. package/dist/templates/modes/consent-only.template.js +74 -0
  104. package/dist/templates/modes/consent-only.template.js.map +1 -0
  105. package/dist/templates/modes/credentials.template.d.ts +65 -0
  106. package/dist/templates/modes/credentials.template.d.ts.map +1 -0
  107. package/dist/templates/modes/credentials.template.js +414 -0
  108. package/dist/templates/modes/credentials.template.js.map +1 -0
  109. package/dist/templates/modes/index.d.ts +14 -0
  110. package/dist/templates/modes/index.d.ts.map +1 -0
  111. package/dist/templates/modes/index.js +24 -0
  112. package/dist/templates/modes/index.js.map +1 -0
  113. package/dist/templates/modes/magic-link.template.d.ts +33 -0
  114. package/dist/templates/modes/magic-link.template.d.ts.map +1 -0
  115. package/dist/templates/modes/magic-link.template.js +196 -0
  116. package/dist/templates/modes/magic-link.template.js.map +1 -0
  117. package/dist/templates/modes/oauth.template.d.ts +40 -0
  118. package/dist/templates/modes/oauth.template.d.ts.map +1 -0
  119. package/dist/templates/modes/oauth.template.js +153 -0
  120. package/dist/templates/modes/oauth.template.js.map +1 -0
  121. package/dist/templates/modes/otp.template.d.ts +35 -0
  122. package/dist/templates/modes/otp.template.d.ts.map +1 -0
  123. package/dist/templates/modes/otp.template.js +316 -0
  124. package/dist/templates/modes/otp.template.js.map +1 -0
  125. package/dist/templates/modes/success.template.d.ts +41 -0
  126. package/dist/templates/modes/success.template.d.ts.map +1 -0
  127. package/dist/templates/modes/success.template.js +140 -0
  128. package/dist/templates/modes/success.template.js.map +1 -0
  129. package/dist/templates/registry.d.ts +62 -0
  130. package/dist/templates/registry.d.ts.map +1 -0
  131. package/dist/templates/registry.js +135 -0
  132. package/dist/templates/registry.js.map +1 -0
  133. package/dist/types/api.types.d.ts +134 -0
  134. package/dist/types/api.types.d.ts.map +1 -0
  135. package/dist/types/api.types.js +10 -0
  136. package/dist/types/api.types.js.map +1 -0
  137. package/dist/types/branding.types.d.ts +53 -0
  138. package/dist/types/branding.types.d.ts.map +1 -0
  139. package/dist/types/branding.types.js +10 -0
  140. package/dist/types/branding.types.js.map +1 -0
  141. package/dist/types/config.types.d.ts +201 -0
  142. package/dist/types/config.types.d.ts.map +1 -0
  143. package/dist/types/config.types.js +10 -0
  144. package/dist/types/config.types.js.map +1 -0
  145. package/dist/types/copy.types.d.ts +109 -0
  146. package/dist/types/copy.types.d.ts.map +1 -0
  147. package/dist/types/copy.types.js +10 -0
  148. package/dist/types/copy.types.js.map +1 -0
  149. package/dist/types/index.d.ts +15 -0
  150. package/dist/types/index.d.ts.map +1 -0
  151. package/dist/types/index.js +31 -0
  152. package/dist/types/index.js.map +1 -0
  153. package/dist/types/modes.types.d.ts +197 -0
  154. package/dist/types/modes.types.d.ts.map +1 -0
  155. package/dist/types/modes.types.js +35 -0
  156. package/dist/types/modes.types.js.map +1 -0
  157. package/dist/types/page.types.d.ts +120 -0
  158. package/dist/types/page.types.d.ts.map +1 -0
  159. package/dist/types/page.types.js +10 -0
  160. package/dist/types/page.types.js.map +1 -0
  161. package/package.json +83 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;AAEH,sBAAsB;AACtB,0CAAwB;AAExB,wBAAwB;AACxB,4CAA0B;AAE1B,0BAA0B;AAC1B,8CAA4B;AAE5B,uBAAuB;AACvB,2CAAyB;AAEzB,qCAAqC;AACrC,+CAA6B;AAE7B,mCAAmC;AACnC,6CAA2B;AAE3B,0BAA0B;AAC1B,8CAA4B"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Consent Resolution Utilities
3
+ *
4
+ * Functions to resolve partial config into complete render-ready config.
5
+ * Applies defaults and placeholder substitution.
6
+ *
7
+ * @module @kya-os/consent/resolution
8
+ */
9
+ export * from "./resolve-copy";
10
+ export * from "./resolve-branding";
11
+ export * from "./resolve-config";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * Consent Resolution Utilities
4
+ *
5
+ * Functions to resolve partial config into complete render-ready config.
6
+ * Applies defaults and placeholder substitution.
7
+ *
8
+ * @module @kya-os/consent/resolution
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("./resolve-copy"), exports);
26
+ __exportStar(require("./resolve-branding"), exports);
27
+ __exportStar(require("./resolve-config"), exports);
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;AAEH,iDAA+B;AAC/B,qDAAmC;AACnC,mDAAiC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Branding Resolution
3
+ *
4
+ * Resolves branding config with defaults and generates CSS variables.
5
+ *
6
+ * @module @kya-os/consent/resolution/resolve-branding
7
+ */
8
+ import type { ConsentBranding, ResolvedConsentBranding, ConsentCSSVars } from "../types/branding.types";
9
+ /**
10
+ * Validate hex color format
11
+ *
12
+ * @param color - Color string to validate
13
+ * @returns True if valid hex color
14
+ */
15
+ export declare function isValidHexColor(color: string | undefined): color is string;
16
+ /**
17
+ * Sanitize a color value, returning default if invalid
18
+ *
19
+ * @param color - Color to sanitize
20
+ * @param defaultColor - Default if invalid
21
+ * @returns Valid hex color
22
+ */
23
+ export declare function sanitizeColor(color: string | undefined, defaultColor: string): string;
24
+ /**
25
+ * Validate URL format
26
+ *
27
+ * @param url - URL string to validate
28
+ * @returns True if valid http/https URL
29
+ */
30
+ export declare function isValidUrl(url: string | undefined): url is string;
31
+ /**
32
+ * Sanitize a URL value, returning undefined if invalid
33
+ *
34
+ * @param url - URL to sanitize
35
+ * @returns Valid URL or undefined
36
+ */
37
+ export declare function sanitizeUrl(url: string | undefined): string | undefined;
38
+ /**
39
+ * Generate CSS variables from branding
40
+ *
41
+ * @param branding - Resolved branding config
42
+ * @returns CSS variable object
43
+ */
44
+ export declare function generateBrandingCSSVars(branding: {
45
+ primaryColor: string;
46
+ secondaryColor: string;
47
+ }): ConsentCSSVars;
48
+ /**
49
+ * Resolve branding config with defaults and validation
50
+ *
51
+ * @param branding - Partial branding config
52
+ * @returns Fully resolved branding with CSS variables
53
+ */
54
+ export declare function resolveConsentBranding(branding?: ConsentBranding): ResolvedConsentBranding;
55
+ /**
56
+ * Check if branding has custom values (non-default)
57
+ *
58
+ * @param branding - Branding config
59
+ * @returns True if any custom values are set
60
+ */
61
+ export declare function hasCustomBranding(branding?: ConsentBranding): boolean;
62
+ /**
63
+ * Merge branding configs (later values override earlier)
64
+ *
65
+ * @param base - Base branding config
66
+ * @param override - Override values
67
+ * @returns Merged branding
68
+ */
69
+ export declare function mergeBranding(base: ConsentBranding, override?: ConsentBranding): ConsentBranding;
70
+ //# sourceMappingURL=resolve-branding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-branding.d.ts","sourceRoot":"","sources":["../../src/resolution/resolve-branding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIxG;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAG1E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,IAAI,MAAM,CAQjE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKvE;AAoBD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,cAAc,CAOjB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,CAAC,EAAE,eAAe,GACzB,uBAAuB,CA2BzB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAWrE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,eAAe,EACrB,QAAQ,CAAC,EAAE,eAAe,GACzB,eAAe,CASjB"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ /**
3
+ * Branding Resolution
4
+ *
5
+ * Resolves branding config with defaults and generates CSS variables.
6
+ *
7
+ * @module @kya-os/consent/resolution/resolve-branding
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.isValidHexColor = isValidHexColor;
11
+ exports.sanitizeColor = sanitizeColor;
12
+ exports.isValidUrl = isValidUrl;
13
+ exports.sanitizeUrl = sanitizeUrl;
14
+ exports.generateBrandingCSSVars = generateBrandingCSSVars;
15
+ exports.resolveConsentBranding = resolveConsentBranding;
16
+ exports.hasCustomBranding = hasCustomBranding;
17
+ exports.mergeBranding = mergeBranding;
18
+ const defaults_1 = require("../constants/defaults");
19
+ const colors_1 = require("../constants/colors");
20
+ /**
21
+ * Validate hex color format
22
+ *
23
+ * @param color - Color string to validate
24
+ * @returns True if valid hex color
25
+ */
26
+ function isValidHexColor(color) {
27
+ if (!color)
28
+ return false;
29
+ return /^#[0-9A-Fa-f]{6}$/.test(color);
30
+ }
31
+ /**
32
+ * Sanitize a color value, returning default if invalid
33
+ *
34
+ * @param color - Color to sanitize
35
+ * @param defaultColor - Default if invalid
36
+ * @returns Valid hex color
37
+ */
38
+ function sanitizeColor(color, defaultColor) {
39
+ if (isValidHexColor(color)) {
40
+ return color;
41
+ }
42
+ return defaultColor;
43
+ }
44
+ /**
45
+ * Validate URL format
46
+ *
47
+ * @param url - URL string to validate
48
+ * @returns True if valid http/https URL
49
+ */
50
+ function isValidUrl(url) {
51
+ if (!url)
52
+ return false;
53
+ try {
54
+ const parsed = new URL(url);
55
+ return parsed.protocol === "http:" || parsed.protocol === "https:";
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ }
61
+ /**
62
+ * Sanitize a URL value, returning undefined if invalid
63
+ *
64
+ * @param url - URL to sanitize
65
+ * @returns Valid URL or undefined
66
+ */
67
+ function sanitizeUrl(url) {
68
+ if (isValidUrl(url)) {
69
+ return url;
70
+ }
71
+ return undefined;
72
+ }
73
+ /**
74
+ * Convert hex color to RGB string
75
+ *
76
+ * @param hex - Hex color string (e.g., '#2563EB')
77
+ * @returns RGB string (e.g., '37, 99, 235')
78
+ */
79
+ function hexToRgb(hex) {
80
+ // Remove # if present
81
+ const cleanHex = hex.replace(/^#/, '');
82
+ // Parse hex to RGB
83
+ const r = parseInt(cleanHex.slice(0, 2), 16);
84
+ const g = parseInt(cleanHex.slice(2, 4), 16);
85
+ const b = parseInt(cleanHex.slice(4, 6), 16);
86
+ return `${r}, ${g}, ${b}`;
87
+ }
88
+ /**
89
+ * Generate CSS variables from branding
90
+ *
91
+ * @param branding - Resolved branding config
92
+ * @returns CSS variable object
93
+ */
94
+ function generateBrandingCSSVars(branding) {
95
+ return {
96
+ "--consent-primary": branding.primaryColor,
97
+ "--consent-secondary": branding.secondaryColor,
98
+ "--consent-primary-rgb": hexToRgb(branding.primaryColor),
99
+ "--consent-secondary-rgb": hexToRgb(branding.secondaryColor),
100
+ };
101
+ }
102
+ /**
103
+ * Resolve branding config with defaults and validation
104
+ *
105
+ * @param branding - Partial branding config
106
+ * @returns Fully resolved branding with CSS variables
107
+ */
108
+ function resolveConsentBranding(branding) {
109
+ // Sanitize and resolve colors
110
+ const primaryColor = sanitizeColor(branding?.primaryColor, colors_1.DEFAULT_COLORS.PRIMARY);
111
+ const secondaryColor = sanitizeColor(branding?.secondaryColor, colors_1.DEFAULT_COLORS.SECONDARY);
112
+ // Sanitize URL (only allow valid http/https)
113
+ const logoUrl = sanitizeUrl(branding?.logoUrl);
114
+ // Company name - basic sanitization (just trim, escaping happens at render)
115
+ const companyName = branding?.companyName?.trim() || undefined;
116
+ // Generate CSS variables
117
+ const cssVars = generateBrandingCSSVars({ primaryColor, secondaryColor });
118
+ return {
119
+ primaryColor,
120
+ secondaryColor,
121
+ logoUrl,
122
+ companyName,
123
+ cssVars,
124
+ };
125
+ }
126
+ /**
127
+ * Check if branding has custom values (non-default)
128
+ *
129
+ * @param branding - Branding config
130
+ * @returns True if any custom values are set
131
+ */
132
+ function hasCustomBranding(branding) {
133
+ if (!branding)
134
+ return false;
135
+ return ((branding.primaryColor !== undefined &&
136
+ branding.primaryColor !== defaults_1.DEFAULT_BRANDING.primaryColor) ||
137
+ (branding.secondaryColor !== undefined &&
138
+ branding.secondaryColor !== defaults_1.DEFAULT_BRANDING.secondaryColor) ||
139
+ branding.logoUrl !== undefined ||
140
+ branding.companyName !== undefined);
141
+ }
142
+ /**
143
+ * Merge branding configs (later values override earlier)
144
+ *
145
+ * @param base - Base branding config
146
+ * @param override - Override values
147
+ * @returns Merged branding
148
+ */
149
+ function mergeBranding(base, override) {
150
+ if (!override)
151
+ return base;
152
+ return {
153
+ primaryColor: override.primaryColor ?? base.primaryColor,
154
+ secondaryColor: override.secondaryColor ?? base.secondaryColor,
155
+ logoUrl: override.logoUrl ?? base.logoUrl,
156
+ companyName: override.companyName ?? base.companyName,
157
+ };
158
+ }
159
+ //# sourceMappingURL=resolve-branding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-branding.js","sourceRoot":"","sources":["../../src/resolution/resolve-branding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Config Resolution
3
+ *
4
+ * Resolves complete consent config with all defaults applied.
5
+ *
6
+ * @module @kya-os/consent/resolution/resolve-config
7
+ */
8
+ import type { ConsentConfig, ConsentConfigWithMeta, ResolvedConsentConfig, ConsentCustomField, ResolvedUI, ResolvedTerms, ResolvedSuccess } from "../types/config.types";
9
+ import type { AuthMode } from "../types/modes.types";
10
+ /**
11
+ * Resolve custom fields with validation
12
+ *
13
+ * @param fields - Custom fields array
14
+ * @returns Validated custom fields (max 10)
15
+ */
16
+ export declare function resolveCustomFields(fields?: ConsentCustomField[]): ConsentCustomField[];
17
+ /**
18
+ * Resolve expiration days with bounds checking
19
+ *
20
+ * @param days - Expiration days from config
21
+ * @returns Valid expiration days (1-365)
22
+ */
23
+ export declare function resolveExpirationDays(days?: number): number;
24
+ /**
25
+ * Determine the effective auth mode from config
26
+ *
27
+ * @param config - Consent config
28
+ * @returns Effective auth mode
29
+ */
30
+ export declare function determineAuthMode(config?: ConsentConfig): AuthMode;
31
+ /**
32
+ * Get default consent config
33
+ *
34
+ * @returns Default consent config with all fields undefined
35
+ */
36
+ export declare function getDefaultConsentConfig(): ConsentConfigWithMeta;
37
+ /**
38
+ * Resolve UI settings with all defaults
39
+ *
40
+ * @param ui - Partial UI config
41
+ * @returns Fully resolved UI settings
42
+ */
43
+ export declare function resolveUISettings(ui?: ConsentConfig["ui"]): ResolvedUI;
44
+ /**
45
+ * Resolve terms settings with all defaults
46
+ *
47
+ * @param terms - Partial terms config
48
+ * @returns Fully resolved terms settings
49
+ */
50
+ export declare function resolveTermsSettings(terms?: ConsentConfig["terms"]): ResolvedTerms;
51
+ /**
52
+ * Resolve success settings with all defaults
53
+ *
54
+ * @param success - Partial success config
55
+ * @returns Fully resolved success settings
56
+ */
57
+ export declare function resolveSuccessSettings(success?: ConsentConfig["success"]): ResolvedSuccess;
58
+ /**
59
+ * Resolve complete consent config with all defaults
60
+ *
61
+ * @param config - Partial consent config
62
+ * @param agentName - Optional agent name for placeholder substitution
63
+ * @returns Fully resolved config ready for rendering
64
+ */
65
+ export declare function resolveConsentConfig(config?: ConsentConfig, agentName?: string): ResolvedConsentConfig;
66
+ /**
67
+ * Merge two config objects, with override taking precedence
68
+ *
69
+ * @param base - Base config
70
+ * @param override - Override config
71
+ * @returns Merged config
72
+ */
73
+ export declare function mergeConsentConfigs(base: ConsentConfig, override?: ConsentConfig): ConsentConfig;
74
+ /**
75
+ * Check if config has any customization
76
+ *
77
+ * @param config - Config to check
78
+ * @returns True if any non-default values are set
79
+ */
80
+ export declare function hasCustomConfig(config?: ConsentConfig): boolean;
81
+ //# sourceMappingURL=resolve-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-config.d.ts","sourceRoot":"","sources":["../../src/resolution/resolve-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGzK,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAMrD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAC5B,kBAAkB,EAAE,CAuBtB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAU3D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,QAAQ,CAoBlE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,qBAAqB,CAiB/D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,UAAU,CAYtE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAOlF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,eAAe,CAS1F;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,CAAC,EAAE,aAAa,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,qBAAqB,CAuCvB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,aAAa,EACnB,QAAQ,CAAC,EAAE,aAAa,GACvB,aAAa,CAmBf;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAkB/D"}
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ /**
3
+ * Config Resolution
4
+ *
5
+ * Resolves complete consent config with all defaults applied.
6
+ *
7
+ * @module @kya-os/consent/resolution/resolve-config
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.resolveCustomFields = resolveCustomFields;
11
+ exports.resolveExpirationDays = resolveExpirationDays;
12
+ exports.determineAuthMode = determineAuthMode;
13
+ exports.getDefaultConsentConfig = getDefaultConsentConfig;
14
+ exports.resolveUISettings = resolveUISettings;
15
+ exports.resolveTermsSettings = resolveTermsSettings;
16
+ exports.resolveSuccessSettings = resolveSuccessSettings;
17
+ exports.resolveConsentConfig = resolveConsentConfig;
18
+ exports.mergeConsentConfigs = mergeConsentConfigs;
19
+ exports.hasCustomConfig = hasCustomConfig;
20
+ const modes_types_1 = require("../types/modes.types");
21
+ const defaults_1 = require("../constants/defaults");
22
+ const resolve_branding_1 = require("./resolve-branding");
23
+ const resolve_copy_1 = require("./resolve-copy");
24
+ /**
25
+ * Resolve custom fields with validation
26
+ *
27
+ * @param fields - Custom fields array
28
+ * @returns Validated custom fields (max 10)
29
+ */
30
+ function resolveCustomFields(fields) {
31
+ if (!fields || fields.length === 0) {
32
+ return [];
33
+ }
34
+ // Limit to 10 fields
35
+ const limitedFields = fields.slice(0, 10);
36
+ // Filter valid fields
37
+ return limitedFields.filter((field) => {
38
+ // Must have name and label
39
+ if (!field.name || !field.label)
40
+ return false;
41
+ // Name must be alphanumeric with underscores
42
+ if (!/^[a-zA-Z0-9_]+$/.test(field.name))
43
+ return false;
44
+ // Select fields must have options
45
+ if (field.type === "select" && (!field.options || field.options.length === 0)) {
46
+ return false;
47
+ }
48
+ return true;
49
+ });
50
+ }
51
+ /**
52
+ * Resolve expiration days with bounds checking
53
+ *
54
+ * @param days - Expiration days from config
55
+ * @returns Valid expiration days (1-365)
56
+ */
57
+ function resolveExpirationDays(days) {
58
+ if (days === undefined || days === null) {
59
+ return defaults_1.DEFAULT_EXPIRATION_DAYS;
60
+ }
61
+ // Clamp to valid range
62
+ if (days < 1)
63
+ return 1;
64
+ if (days > 365)
65
+ return 365;
66
+ return Math.floor(days);
67
+ }
68
+ /**
69
+ * Determine the effective auth mode from config
70
+ *
71
+ * @param config - Consent config
72
+ * @returns Effective auth mode
73
+ */
74
+ function determineAuthMode(config) {
75
+ // Check which auth mode is configured
76
+ if (config?.oauth?.providerId) {
77
+ return modes_types_1.AUTH_MODES.OAUTH;
78
+ }
79
+ if (config?.credentials?.usernameLabel || config?.credentials?.passwordLabel) {
80
+ return modes_types_1.AUTH_MODES.CREDENTIALS;
81
+ }
82
+ if (config?.magicLink?.enabled) {
83
+ return modes_types_1.AUTH_MODES.MAGIC_LINK;
84
+ }
85
+ if (config?.otp?.enabled) {
86
+ return modes_types_1.AUTH_MODES.OTP;
87
+ }
88
+ // Default to consent-only
89
+ return modes_types_1.AUTH_MODES.CONSENT_ONLY;
90
+ }
91
+ /**
92
+ * Get default consent config
93
+ *
94
+ * @returns Default consent config with all fields undefined
95
+ */
96
+ function getDefaultConsentConfig() {
97
+ return {
98
+ branding: undefined,
99
+ ui: undefined,
100
+ terms: undefined,
101
+ success: undefined,
102
+ customFields: undefined,
103
+ credentials: undefined,
104
+ oauth: undefined,
105
+ magicLink: undefined,
106
+ otp: undefined,
107
+ qrCode: undefined,
108
+ passkey: undefined,
109
+ idv: undefined,
110
+ expirationDays: defaults_1.DEFAULT_EXPIRATION_DAYS,
111
+ metadata: undefined,
112
+ };
113
+ }
114
+ /**
115
+ * Resolve UI settings with all defaults
116
+ *
117
+ * @param ui - Partial UI config
118
+ * @returns Fully resolved UI settings
119
+ */
120
+ function resolveUISettings(ui) {
121
+ return {
122
+ title: ui?.title ?? defaults_1.DEFAULT_UI.title,
123
+ description: ui?.description ?? defaults_1.DEFAULT_UI.description,
124
+ expirationText: ui?.expirationText ?? defaults_1.DEFAULT_UI.expirationText,
125
+ cancelButtonText: ui?.cancelButtonText ?? defaults_1.DEFAULT_UI.cancelButtonText,
126
+ submitButtonText: ui?.submitButtonText ?? defaults_1.DEFAULT_UI.submitButtonText,
127
+ permissionsHeader: ui?.permissionsHeader ?? defaults_1.DEFAULT_UI.permissionsHeader,
128
+ autoClose: ui?.autoClose ?? defaults_1.DEFAULT_UI.autoClose,
129
+ popupEnabled: ui?.popupEnabled ?? defaults_1.DEFAULT_UI.popupEnabled,
130
+ theme: ui?.theme ?? defaults_1.DEFAULT_UI.theme,
131
+ };
132
+ }
133
+ /**
134
+ * Resolve terms settings with all defaults
135
+ *
136
+ * @param terms - Partial terms config
137
+ * @returns Fully resolved terms settings
138
+ */
139
+ function resolveTermsSettings(terms) {
140
+ return {
141
+ text: terms?.text ?? defaults_1.DEFAULT_TERMS.text,
142
+ url: terms?.url,
143
+ version: terms?.version,
144
+ required: terms?.required ?? defaults_1.DEFAULT_TERMS.required,
145
+ };
146
+ }
147
+ /**
148
+ * Resolve success settings with all defaults
149
+ *
150
+ * @param success - Partial success config
151
+ * @returns Fully resolved success settings
152
+ */
153
+ function resolveSuccessSettings(success) {
154
+ return {
155
+ title: success?.title ?? defaults_1.DEFAULT_SUCCESS.title,
156
+ description: success?.description ?? defaults_1.DEFAULT_SUCCESS.description,
157
+ showCredential: success?.showCredential ?? defaults_1.DEFAULT_SUCCESS.showCredential,
158
+ redirectUrl: success?.redirectUrl,
159
+ redirectDelay: success?.redirectDelay,
160
+ continueButtonText: success?.continueButtonText ?? defaults_1.DEFAULT_SUCCESS.continueButtonText,
161
+ };
162
+ }
163
+ /**
164
+ * Resolve complete consent config with all defaults
165
+ *
166
+ * @param config - Partial consent config
167
+ * @param agentName - Optional agent name for placeholder substitution
168
+ * @returns Fully resolved config ready for rendering
169
+ */
170
+ function resolveConsentConfig(config, agentName) {
171
+ // Resolve branding
172
+ const branding = (0, resolve_branding_1.resolveConsentBranding)(config?.branding);
173
+ // Resolve copy/text
174
+ const copy = (0, resolve_copy_1.resolveConsentCopy)(config, agentName);
175
+ // Resolve UI, terms, success
176
+ const ui = resolveUISettings(config?.ui);
177
+ const terms = resolveTermsSettings(config?.terms);
178
+ const success = resolveSuccessSettings(config?.success);
179
+ // Resolve custom fields
180
+ const customFields = resolveCustomFields(config?.customFields);
181
+ // Resolve expiration
182
+ const expirationDays = resolveExpirationDays(config?.expirationDays);
183
+ // Determine auth mode
184
+ const authMode = determineAuthMode(config);
185
+ return {
186
+ branding,
187
+ copy,
188
+ ui,
189
+ terms,
190
+ success,
191
+ customFields,
192
+ expirationDays,
193
+ authMode,
194
+ // Passthrough mode configs
195
+ credentials: config?.credentials,
196
+ oauth: config?.oauth,
197
+ magicLink: config?.magicLink,
198
+ otp: config?.otp,
199
+ qrCode: config?.qrCode,
200
+ passkey: config?.passkey,
201
+ idv: config?.idv,
202
+ };
203
+ }
204
+ /**
205
+ * Merge two config objects, with override taking precedence
206
+ *
207
+ * @param base - Base config
208
+ * @param override - Override config
209
+ * @returns Merged config
210
+ */
211
+ function mergeConsentConfigs(base, override) {
212
+ if (!override)
213
+ return base;
214
+ return {
215
+ branding: override.branding ?? base.branding,
216
+ ui: { ...base.ui, ...override.ui },
217
+ terms: { ...base.terms, ...override.terms },
218
+ success: { ...base.success, ...override.success },
219
+ customFields: override.customFields ?? base.customFields,
220
+ credentials: override.credentials ?? base.credentials,
221
+ oauth: override.oauth ?? base.oauth,
222
+ magicLink: override.magicLink ?? base.magicLink,
223
+ otp: override.otp ?? base.otp,
224
+ qrCode: override.qrCode ?? base.qrCode,
225
+ passkey: override.passkey ?? base.passkey,
226
+ idv: override.idv ?? base.idv,
227
+ expirationDays: override.expirationDays ?? base.expirationDays,
228
+ metadata: override.metadata ?? base.metadata,
229
+ };
230
+ }
231
+ /**
232
+ * Check if config has any customization
233
+ *
234
+ * @param config - Config to check
235
+ * @returns True if any non-default values are set
236
+ */
237
+ function hasCustomConfig(config) {
238
+ if (!config)
239
+ return false;
240
+ return (config.branding !== undefined ||
241
+ config.ui !== undefined ||
242
+ config.terms !== undefined ||
243
+ config.success !== undefined ||
244
+ (config.customFields !== undefined && config.customFields.length > 0) ||
245
+ config.credentials !== undefined ||
246
+ config.oauth !== undefined ||
247
+ config.magicLink !== undefined ||
248
+ config.otp !== undefined ||
249
+ config.qrCode !== undefined ||
250
+ config.passkey !== undefined ||
251
+ config.idv !== undefined ||
252
+ config.expirationDays !== undefined);
253
+ }
254
+ //# sourceMappingURL=resolve-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-config.js","sourceRoot":"","sources":["../../src/resolution/resolve-config.ts"],"names":[],"mappings":"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"}