@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,107 @@
1
+ "use strict";
2
+ /**
3
+ * Consent Mode Schemas
4
+ *
5
+ * Zod validation schemas for auth mode configurations.
6
+ *
7
+ * @module @kya-os/consent/schemas/modes
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ModeConfigsSchema = exports.IDVConfigSchema = exports.PasskeyConfigSchema = exports.QRCodeConfigSchema = exports.OTPConfigSchema = exports.MagicLinkConfigSchema = exports.OAuthConfigSchema = exports.CredentialsConfigSchema = exports.AuthModeSchema = void 0;
11
+ const zod_1 = require("zod");
12
+ const modes_types_1 = require("../types/modes.types");
13
+ /**
14
+ * Auth Mode Schema
15
+ */
16
+ exports.AuthModeSchema = zod_1.z.enum([
17
+ modes_types_1.AUTH_MODES.CONSENT_ONLY,
18
+ modes_types_1.AUTH_MODES.CREDENTIALS,
19
+ modes_types_1.AUTH_MODES.OAUTH,
20
+ modes_types_1.AUTH_MODES.MAGIC_LINK,
21
+ modes_types_1.AUTH_MODES.OTP,
22
+ modes_types_1.AUTH_MODES.QR_CODE,
23
+ modes_types_1.AUTH_MODES.PASSKEY,
24
+ modes_types_1.AUTH_MODES.IDV,
25
+ ]);
26
+ /**
27
+ * Credentials Config Schema
28
+ */
29
+ exports.CredentialsConfigSchema = zod_1.z.object({
30
+ usernameLabel: zod_1.z.string().max(100).optional(),
31
+ usernamePlaceholder: zod_1.z.string().max(200).optional(),
32
+ passwordLabel: zod_1.z.string().max(100).optional(),
33
+ passwordPlaceholder: zod_1.z.string().max(200).optional(),
34
+ showRememberMe: zod_1.z.boolean().optional(),
35
+ showForgotPassword: zod_1.z.boolean().optional(),
36
+ forgotPasswordUrl: zod_1.z.string().url().optional(),
37
+ });
38
+ /**
39
+ * OAuth Config Schema
40
+ */
41
+ exports.OAuthConfigSchema = zod_1.z.object({
42
+ providerId: zod_1.z.string().max(100).optional(),
43
+ providerName: zod_1.z.string().max(100).optional(),
44
+ buttonText: zod_1.z.string().max(100).optional(),
45
+ });
46
+ /**
47
+ * Magic Link Config Schema
48
+ */
49
+ exports.MagicLinkConfigSchema = zod_1.z.object({
50
+ enabled: zod_1.z.boolean().optional(),
51
+ emailLabel: zod_1.z.string().max(100).optional(),
52
+ emailPlaceholder: zod_1.z.string().max(200).optional(),
53
+ buttonText: zod_1.z.string().max(100).optional(),
54
+ resendCooldown: zod_1.z.number().int().min(30).max(600).optional(),
55
+ });
56
+ /**
57
+ * OTP Config Schema
58
+ */
59
+ exports.OTPConfigSchema = zod_1.z.object({
60
+ enabled: zod_1.z.boolean().optional(),
61
+ phoneLabel: zod_1.z.string().max(100).optional(),
62
+ phonePlaceholder: zod_1.z.string().max(200).optional(),
63
+ instructions: zod_1.z.string().max(500).optional(),
64
+ digits: zod_1.z.union([zod_1.z.literal(4), zod_1.z.literal(6), zod_1.z.literal(8)]).optional(),
65
+ resendCooldown: zod_1.z.number().int().min(30).max(600).optional(),
66
+ });
67
+ /**
68
+ * QR Code Config Schema
69
+ */
70
+ exports.QRCodeConfigSchema = zod_1.z.object({
71
+ enabled: zod_1.z.boolean().optional(),
72
+ instructions: zod_1.z.string().max(500).optional(),
73
+ size: zod_1.z.number().int().min(100).max(500).optional(),
74
+ showManualEntry: zod_1.z.boolean().optional(),
75
+ });
76
+ /**
77
+ * Passkey Config Schema
78
+ */
79
+ exports.PasskeyConfigSchema = zod_1.z.object({
80
+ enabled: zod_1.z.boolean().optional(),
81
+ instructions: zod_1.z.string().max(500).optional(),
82
+ buttonText: zod_1.z.string().max(100).optional(),
83
+ showCompatibilityInfo: zod_1.z.boolean().optional(),
84
+ });
85
+ /**
86
+ * IDV Config Schema
87
+ */
88
+ exports.IDVConfigSchema = zod_1.z.object({
89
+ enabled: zod_1.z.boolean().optional(),
90
+ providerName: zod_1.z.string().max(100).optional(),
91
+ verificationType: zod_1.z.enum(["document", "selfie", "both"]).optional(),
92
+ instructions: zod_1.z.string().max(500).optional(),
93
+ estimatedTime: zod_1.z.string().max(50).optional(),
94
+ });
95
+ /**
96
+ * Mode Configs Schema
97
+ */
98
+ exports.ModeConfigsSchema = zod_1.z.object({
99
+ credentials: exports.CredentialsConfigSchema.optional(),
100
+ oauth: exports.OAuthConfigSchema.optional(),
101
+ magicLink: exports.MagicLinkConfigSchema.optional(),
102
+ otp: exports.OTPConfigSchema.optional(),
103
+ qrCode: exports.QRCodeConfigSchema.optional(),
104
+ passkey: exports.PasskeyConfigSchema.optional(),
105
+ idv: exports.IDVConfigSchema.optional(),
106
+ });
107
+ //# sourceMappingURL=modes.schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modes.schemas.js","sourceRoot":"","sources":["../../src/schemas/modes.schemas.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,6BAAwB;AACxB,sDAAkD;AAElD;;GAEG;AACU,QAAA,cAAc,GAAG,OAAC,CAAC,IAAI,CAAC;IACnC,wBAAU,CAAC,YAAY;IACvB,wBAAU,CAAC,WAAW;IACtB,wBAAU,CAAC,KAAK;IAChB,wBAAU,CAAC,UAAU;IACrB,wBAAU,CAAC,GAAG;IACd,wBAAU,CAAC,OAAO;IAClB,wBAAU,CAAC,OAAO;IAClB,wBAAU,CAAC,GAAG;CACf,CAAC,CAAC;AAIH;;GAEG;AACU,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC7C,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACnD,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC7C,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACnD,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,kBAAkB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC1C,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC;AAMH;;GAEG;AACU,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC1C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAIH;;GAEG;AACU,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC1C,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAChD,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC1C,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAC;AAIH;;GAEG;AACU,QAAA,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC1C,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAChD,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtE,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAC;AAIH;;GAEG;AACU,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACnD,eAAe,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAIH;;GAEG;AACU,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC1C,qBAAqB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAIH;;GAEG;AACU,QAAA,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,gBAAgB,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnE,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC;AAIH;;GAEG;AACU,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,WAAW,EAAE,+BAAuB,CAAC,QAAQ,EAAE;IAC/C,KAAK,EAAE,yBAAiB,CAAC,QAAQ,EAAE;IACnC,SAAS,EAAE,6BAAqB,CAAC,QAAQ,EAAE;IAC3C,GAAG,EAAE,uBAAe,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,0BAAkB,CAAC,QAAQ,EAAE;IACrC,OAAO,EAAE,2BAAmB,CAAC,QAAQ,EAAE;IACvC,GAAG,EAAE,uBAAe,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * HTML/JS Escape Utilities
3
+ *
4
+ * XSS prevention utilities for rendering user content safely.
5
+ *
6
+ * @module @kya-os/consent/security/escape
7
+ */
8
+ /**
9
+ * Escape HTML special characters to prevent XSS
10
+ *
11
+ * Converts characters that have special meaning in HTML to their
12
+ * entity equivalents, making them safe to insert into HTML content.
13
+ *
14
+ * @param text - The text to escape
15
+ * @returns HTML-safe string
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * escapeHtml('<script>alert("xss")</script>')
20
+ * // Returns: '&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;'
21
+ * ```
22
+ */
23
+ export declare function escapeHtml(text: string): string;
24
+ /**
25
+ * Escape text for use in HTML attributes
26
+ *
27
+ * More comprehensive escaping than escapeHtml, including backticks
28
+ * and equals signs which can be dangerous in attribute contexts.
29
+ *
30
+ * @param value - The value to escape
31
+ * @returns Attribute-safe string
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * escapeAttr('value" onclick="alert(1)')
36
+ * // Returns: 'value&quot; onclick&#x3D;&quot;alert(1)'
37
+ * ```
38
+ */
39
+ export declare function escapeAttr(value: string): string;
40
+ /**
41
+ * Escape text for use in JavaScript strings
42
+ *
43
+ * Uses JSON.stringify to properly escape all special characters
44
+ * that could break out of a JavaScript string context.
45
+ *
46
+ * @param text - The text to escape
47
+ * @returns JS-safe string (without surrounding quotes)
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * escapeJs('hello\nworld')
52
+ * // Returns: '"hello\\nworld"' (with quotes from JSON.stringify)
53
+ * ```
54
+ */
55
+ export declare function escapeJs(text: string): string;
56
+ /**
57
+ * Escape text for use in JavaScript, returning value without quotes
58
+ *
59
+ * @param text - The text to escape
60
+ * @returns JS-safe string content (without surrounding quotes)
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * escapeJsValue('hello\nworld')
65
+ * // Returns: 'hello\\nworld'
66
+ * ```
67
+ */
68
+ export declare function escapeJsValue(text: string): string;
69
+ /**
70
+ * Escape URL for use in href or src attributes
71
+ *
72
+ * Only allows http, https, and mailto protocols. Returns empty
73
+ * string for dangerous protocols like javascript:.
74
+ *
75
+ * @param url - The URL to escape
76
+ * @returns Safe URL or empty string
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * escapeUrl('javascript:alert(1)')
81
+ * // Returns: ''
82
+ *
83
+ * escapeUrl('https://example.com/?q=test')
84
+ * // Returns: 'https://example.com/?q=test'
85
+ * ```
86
+ */
87
+ export declare function escapeUrl(url: string | undefined): string;
88
+ /**
89
+ * Create a safe HTML string from template literals
90
+ *
91
+ * Automatically escapes interpolated values while preserving
92
+ * the template structure.
93
+ *
94
+ * @param strings - Template literal strings
95
+ * @param values - Interpolated values to escape
96
+ * @returns Safe HTML string
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * const userInput = '<script>alert("xss")</script>';
101
+ * const html = safeHtml`<div>${userInput}</div>`;
102
+ * // Returns: '<div>&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;</div>'
103
+ * ```
104
+ */
105
+ export declare function safeHtml(strings: TemplateStringsArray, ...values: unknown[]): string;
106
+ /**
107
+ * Create a safe attribute value from template literals
108
+ *
109
+ * @param strings - Template literal strings
110
+ * @param values - Interpolated values to escape
111
+ * @returns Safe attribute string
112
+ */
113
+ export declare function safeAttr(strings: TemplateStringsArray, ...values: unknown[]): string;
114
+ //# sourceMappingURL=escape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../../src/security/escape.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsBH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CA8BzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE,OAAO,EAAE,GACnB,MAAM,CASR;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE,OAAO,EAAE,GACnB,MAAM,CASR"}
@@ -0,0 +1,202 @@
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
+ "&": "&amp;",
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
+ // If it's a relative URL, that's okay
152
+ if (!url.startsWith("/") && !url.startsWith("#") && !url.startsWith("?")) {
153
+ // Absolute URL that failed to parse - unsafe
154
+ return "";
155
+ }
156
+ }
157
+ // Escape any HTML characters in the URL (but not = or ` which are safe in URLs)
158
+ return escapeHtml(url);
159
+ }
160
+ /**
161
+ * Create a safe HTML string from template literals
162
+ *
163
+ * Automatically escapes interpolated values while preserving
164
+ * the template structure.
165
+ *
166
+ * @param strings - Template literal strings
167
+ * @param values - Interpolated values to escape
168
+ * @returns Safe HTML string
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * const userInput = '<script>alert("xss")</script>';
173
+ * const html = safeHtml`<div>${userInput}</div>`;
174
+ * // Returns: '<div>&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;</div>'
175
+ * ```
176
+ */
177
+ function safeHtml(strings, ...values) {
178
+ let result = strings[0] ?? "";
179
+ for (let i = 0; i < values.length; i++) {
180
+ const value = values[i];
181
+ const escaped = value === null || value === undefined ? "" : escapeHtml(String(value));
182
+ result += escaped + (strings[i + 1] ?? "");
183
+ }
184
+ return result;
185
+ }
186
+ /**
187
+ * Create a safe attribute value from template literals
188
+ *
189
+ * @param strings - Template literal strings
190
+ * @param values - Interpolated values to escape
191
+ * @returns Safe attribute string
192
+ */
193
+ function safeAttr(strings, ...values) {
194
+ let result = strings[0] ?? "";
195
+ for (let i = 0; i < values.length; i++) {
196
+ const value = values[i];
197
+ const escaped = value === null || value === undefined ? "" : escapeAttr(String(value));
198
+ result += escaped + (strings[i + 1] ?? "");
199
+ }
200
+ return result;
201
+ }
202
+ //# 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,10 @@
1
+ /**
2
+ * Consent Security Utilities
3
+ *
4
+ * XSS prevention and input validation utilities.
5
+ *
6
+ * @module @kya-os/consent/security
7
+ */
8
+ export * from "./escape";
9
+ export * from "./validators";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC"}
@@ -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"), exports);
25
+ __exportStar(require("./validators"), 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,2CAAyB;AACzB,+CAA6B"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Security Validators
3
+ *
4
+ * Input validation utilities for secure rendering.
5
+ *
6
+ * @module @kya-os/consent/security/validators
7
+ */
8
+ /**
9
+ * Validate that a string is a valid hex color
10
+ *
11
+ * Only accepts 6-digit hex colors with # prefix.
12
+ *
13
+ * @param color - Color string to validate
14
+ * @returns The color if valid, undefined otherwise
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * validateColor('#2563EB') // Returns '#2563EB'
19
+ * validateColor('2563EB') // Returns undefined
20
+ * validateColor('#fff') // Returns undefined (3-digit not allowed)
21
+ * ```
22
+ */
23
+ export declare function validateColor(color: string | undefined): string | undefined;
24
+ /**
25
+ * Validate that a string is a valid URL
26
+ *
27
+ * Only accepts http and https protocols.
28
+ *
29
+ * @param url - URL string to validate
30
+ * @returns The URL if valid, undefined otherwise
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * validateUrl('https://example.com') // Returns 'https://example.com'
35
+ * validateUrl('javascript:alert(1)') // Returns undefined
36
+ * validateUrl('ftp://files.example.com') // Returns undefined
37
+ * ```
38
+ */
39
+ export declare function validateUrl(url: string | undefined): string | undefined;
40
+ /**
41
+ * Validate that a string is a valid email address
42
+ *
43
+ * Uses a simple but effective email pattern.
44
+ *
45
+ * @param email - Email string to validate
46
+ * @returns The email if valid, undefined otherwise
47
+ */
48
+ export declare function validateEmail(email: string | undefined): string | undefined;
49
+ /**
50
+ * Validate that a string is a valid DID
51
+ *
52
+ * @param did - DID string to validate
53
+ * @returns The DID if valid, undefined otherwise
54
+ */
55
+ export declare function validateDid(did: string | undefined): string | undefined;
56
+ /**
57
+ * Validate that a string contains no control characters
58
+ *
59
+ * @param text - Text to validate
60
+ * @returns The text if valid, undefined otherwise
61
+ */
62
+ export declare function validateNoControlChars(text: string | undefined): string | undefined;
63
+ /**
64
+ * Validate and sanitize a string for display
65
+ *
66
+ * Removes control characters and trims whitespace.
67
+ *
68
+ * @param text - Text to sanitize
69
+ * @param maxLength - Maximum allowed length
70
+ * @returns Sanitized text or undefined if invalid
71
+ */
72
+ export declare function sanitizeDisplayText(text: string | undefined, maxLength?: number): string | undefined;
73
+ /**
74
+ * Validate that a string is alphanumeric with underscores only
75
+ *
76
+ * Useful for field names and identifiers.
77
+ *
78
+ * @param text - Text to validate
79
+ * @returns The text if valid, undefined otherwise
80
+ */
81
+ export declare function validateIdentifier(text: string | undefined): string | undefined;
82
+ /**
83
+ * Check if a value is a safe integer within range
84
+ *
85
+ * @param value - Value to check
86
+ * @param min - Minimum value (inclusive)
87
+ * @param max - Maximum value (inclusive)
88
+ * @returns True if valid
89
+ */
90
+ export declare function isValidInteger(value: unknown, min?: number, max?: number): value is number;
91
+ /**
92
+ * Validate a CSRF token format
93
+ *
94
+ * @param token - Token to validate
95
+ * @returns The token if valid, undefined otherwise
96
+ */
97
+ export declare function validateCSRFToken(token: string | undefined): string | undefined;
98
+ //# sourceMappingURL=validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/security/validators.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAS3E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAavE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAU3E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CA0BvE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAWnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,SAAS,SAAM,GACd,MAAM,GAAG,SAAS,CAcpB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAQ/E;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,GAAG,SAA0B,EAC7B,GAAG,SAA0B,GAC5B,KAAK,IAAI,MAAM,CAKjB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAc/E"}