@trokky/trokky 2.0.3

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 (639) hide show
  1. package/dist/adapters/filesystem/filesystem-adapter.d.ts +80 -0
  2. package/dist/adapters/filesystem/filesystem-adapter.d.ts.map +1 -0
  3. package/dist/adapters/filesystem/filesystem-adapter.js +1370 -0
  4. package/dist/adapters/filesystem/filesystem-adapter.js.map +1 -0
  5. package/dist/adapters/filesystem/index.d.ts +29 -0
  6. package/dist/adapters/filesystem/index.d.ts.map +1 -0
  7. package/dist/adapters/filesystem/index.js +31 -0
  8. package/dist/adapters/filesystem/index.js.map +1 -0
  9. package/dist/adapters/filesystem/types.d.ts +111 -0
  10. package/dist/adapters/filesystem/types.d.ts.map +1 -0
  11. package/dist/adapters/filesystem/types.js +2 -0
  12. package/dist/adapters/filesystem/types.js.map +1 -0
  13. package/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts +111 -0
  14. package/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts.map +1 -0
  15. package/dist/adapters/filesystem-data/filesystem-data-adapter.js +1363 -0
  16. package/dist/adapters/filesystem-data/filesystem-data-adapter.js.map +1 -0
  17. package/dist/adapters/filesystem-data/index.d.ts +3 -0
  18. package/dist/adapters/filesystem-data/index.d.ts.map +1 -0
  19. package/dist/adapters/filesystem-data/index.js +13 -0
  20. package/dist/adapters/filesystem-data/index.js.map +1 -0
  21. package/dist/adapters/filesystem-data/types.d.ts +147 -0
  22. package/dist/adapters/filesystem-data/types.d.ts.map +1 -0
  23. package/dist/adapters/filesystem-data/types.js +2 -0
  24. package/dist/adapters/filesystem-data/types.js.map +1 -0
  25. package/dist/adapters/filesystem-media/filesystem-media-adapter.d.ts +32 -0
  26. package/dist/adapters/filesystem-media/filesystem-media-adapter.d.ts.map +1 -0
  27. package/dist/adapters/filesystem-media/filesystem-media-adapter.js +639 -0
  28. package/dist/adapters/filesystem-media/filesystem-media-adapter.js.map +1 -0
  29. package/dist/adapters/filesystem-media/index.d.ts +3 -0
  30. package/dist/adapters/filesystem-media/index.d.ts.map +1 -0
  31. package/dist/adapters/filesystem-media/index.js +13 -0
  32. package/dist/adapters/filesystem-media/index.js.map +1 -0
  33. package/dist/adapters/filesystem-media/types.d.ts +76 -0
  34. package/dist/adapters/filesystem-media/types.d.ts.map +1 -0
  35. package/dist/adapters/filesystem-media/types.js +2 -0
  36. package/dist/adapters/filesystem-media/types.js.map +1 -0
  37. package/dist/adapters/postgres-data/index.d.ts +3 -0
  38. package/dist/adapters/postgres-data/index.d.ts.map +1 -0
  39. package/dist/adapters/postgres-data/index.js +13 -0
  40. package/dist/adapters/postgres-data/index.js.map +1 -0
  41. package/dist/adapters/postgres-data/postgres-data-adapter.d.ts +154 -0
  42. package/dist/adapters/postgres-data/postgres-data-adapter.d.ts.map +1 -0
  43. package/dist/adapters/postgres-data/postgres-data-adapter.js +1432 -0
  44. package/dist/adapters/postgres-data/postgres-data-adapter.js.map +1 -0
  45. package/dist/adapters/postgres-data/types.d.ts +139 -0
  46. package/dist/adapters/postgres-data/types.d.ts.map +1 -0
  47. package/dist/adapters/postgres-data/types.js +2 -0
  48. package/dist/adapters/postgres-data/types.js.map +1 -0
  49. package/dist/core/adapters/registry.d.ts +79 -0
  50. package/dist/core/adapters/registry.d.ts.map +1 -0
  51. package/dist/core/adapters/registry.js +149 -0
  52. package/dist/core/adapters/registry.js.map +1 -0
  53. package/dist/core/core/engine.d.ts +551 -0
  54. package/dist/core/core/engine.d.ts.map +1 -0
  55. package/dist/core/core/engine.js +1074 -0
  56. package/dist/core/core/engine.js.map +1 -0
  57. package/dist/core/crypto/adapter.d.ts +63 -0
  58. package/dist/core/crypto/adapter.d.ts.map +1 -0
  59. package/dist/core/crypto/adapter.js +63 -0
  60. package/dist/core/crypto/adapter.js.map +1 -0
  61. package/dist/core/crypto/fallback-adapter.d.ts +23 -0
  62. package/dist/core/crypto/fallback-adapter.d.ts.map +1 -0
  63. package/dist/core/crypto/fallback-adapter.js +195 -0
  64. package/dist/core/crypto/fallback-adapter.js.map +1 -0
  65. package/dist/core/crypto/node-adapter.d.ts +20 -0
  66. package/dist/core/crypto/node-adapter.d.ts.map +1 -0
  67. package/dist/core/crypto/node-adapter.js +85 -0
  68. package/dist/core/crypto/node-adapter.js.map +1 -0
  69. package/dist/core/crypto/password-hash.d.ts +73 -0
  70. package/dist/core/crypto/password-hash.d.ts.map +1 -0
  71. package/dist/core/crypto/password-hash.js +244 -0
  72. package/dist/core/crypto/password-hash.js.map +1 -0
  73. package/dist/core/crypto/webcrypto-adapter.d.ts +24 -0
  74. package/dist/core/crypto/webcrypto-adapter.d.ts.map +1 -0
  75. package/dist/core/crypto/webcrypto-adapter.js +158 -0
  76. package/dist/core/crypto/webcrypto-adapter.js.map +1 -0
  77. package/dist/core/errors/index.d.ts +30 -0
  78. package/dist/core/errors/index.d.ts.map +1 -0
  79. package/dist/core/errors/index.js +61 -0
  80. package/dist/core/errors/index.js.map +1 -0
  81. package/dist/core/events/event-bus.d.ts +121 -0
  82. package/dist/core/events/event-bus.d.ts.map +1 -0
  83. package/dist/core/events/event-bus.js +631 -0
  84. package/dist/core/events/event-bus.js.map +1 -0
  85. package/dist/core/events/index.d.ts +17 -0
  86. package/dist/core/events/index.d.ts.map +1 -0
  87. package/dist/core/events/index.js +22 -0
  88. package/dist/core/events/index.js.map +1 -0
  89. package/dist/core/events/memory-storage.d.ts +57 -0
  90. package/dist/core/events/memory-storage.d.ts.map +1 -0
  91. package/dist/core/events/memory-storage.js +175 -0
  92. package/dist/core/events/memory-storage.js.map +1 -0
  93. package/dist/core/events/types.d.ts +434 -0
  94. package/dist/core/events/types.d.ts.map +1 -0
  95. package/dist/core/events/types.js +9 -0
  96. package/dist/core/events/types.js.map +1 -0
  97. package/dist/core/events/utils.d.ts +134 -0
  98. package/dist/core/events/utils.d.ts.map +1 -0
  99. package/dist/core/events/utils.js +333 -0
  100. package/dist/core/events/utils.js.map +1 -0
  101. package/dist/core/fields/conditional.d.ts +115 -0
  102. package/dist/core/fields/conditional.d.ts.map +1 -0
  103. package/dist/core/fields/conditional.js +296 -0
  104. package/dist/core/fields/conditional.js.map +1 -0
  105. package/dist/core/fields/field-type.d.ts +218 -0
  106. package/dist/core/fields/field-type.d.ts.map +1 -0
  107. package/dist/core/fields/field-type.js +17 -0
  108. package/dist/core/fields/field-type.js.map +1 -0
  109. package/dist/core/fields/helpers.d.ts +86 -0
  110. package/dist/core/fields/helpers.d.ts.map +1 -0
  111. package/dist/core/fields/helpers.js +260 -0
  112. package/dist/core/fields/helpers.js.map +1 -0
  113. package/dist/core/fields/index.d.ts +5 -0
  114. package/dist/core/fields/index.d.ts.map +1 -0
  115. package/dist/core/fields/index.js +6 -0
  116. package/dist/core/fields/index.js.map +1 -0
  117. package/dist/core/fields/registry.d.ts +78 -0
  118. package/dist/core/fields/registry.d.ts.map +1 -0
  119. package/dist/core/fields/registry.js +185 -0
  120. package/dist/core/fields/registry.js.map +1 -0
  121. package/dist/core/index.d.ts +39 -0
  122. package/dist/core/index.d.ts.map +1 -0
  123. package/dist/core/index.js +57 -0
  124. package/dist/core/index.js.map +1 -0
  125. package/dist/core/media/image-processor.d.ts +24 -0
  126. package/dist/core/media/image-processor.d.ts.map +1 -0
  127. package/dist/core/media/image-processor.js +69 -0
  128. package/dist/core/media/image-processor.js.map +1 -0
  129. package/dist/core/media/processors/cloudflare-images.d.ts +83 -0
  130. package/dist/core/media/processors/cloudflare-images.d.ts.map +1 -0
  131. package/dist/core/media/processors/cloudflare-images.js +241 -0
  132. package/dist/core/media/processors/cloudflare-images.js.map +1 -0
  133. package/dist/core/media/processors/cloudflare-transform-store.d.ts +127 -0
  134. package/dist/core/media/processors/cloudflare-transform-store.d.ts.map +1 -0
  135. package/dist/core/media/processors/cloudflare-transform-store.js +237 -0
  136. package/dist/core/media/processors/cloudflare-transform-store.js.map +1 -0
  137. package/dist/core/media/processors/cloudflare-transformations.d.ts +81 -0
  138. package/dist/core/media/processors/cloudflare-transformations.d.ts.map +1 -0
  139. package/dist/core/media/processors/cloudflare-transformations.js +144 -0
  140. package/dist/core/media/processors/cloudflare-transformations.js.map +1 -0
  141. package/dist/core/media/processors/index.d.ts +9 -0
  142. package/dist/core/media/processors/index.d.ts.map +1 -0
  143. package/dist/core/media/processors/index.js +13 -0
  144. package/dist/core/media/processors/index.js.map +1 -0
  145. package/dist/core/media/processors/noop.d.ts +22 -0
  146. package/dist/core/media/processors/noop.d.ts.map +1 -0
  147. package/dist/core/media/processors/noop.js +38 -0
  148. package/dist/core/media/processors/noop.js.map +1 -0
  149. package/dist/core/media/processors/sharp.d.ts +30 -0
  150. package/dist/core/media/processors/sharp.d.ts.map +1 -0
  151. package/dist/core/media/processors/sharp.js +126 -0
  152. package/dist/core/media/processors/sharp.js.map +1 -0
  153. package/dist/core/media/processors/types.d.ts +67 -0
  154. package/dist/core/media/processors/types.d.ts.map +1 -0
  155. package/dist/core/media/processors/types.js +42 -0
  156. package/dist/core/media/processors/types.js.map +1 -0
  157. package/dist/core/media/processors/workers-images.d.ts +112 -0
  158. package/dist/core/media/processors/workers-images.d.ts.map +1 -0
  159. package/dist/core/media/processors/workers-images.js +257 -0
  160. package/dist/core/media/processors/workers-images.js.map +1 -0
  161. package/dist/core/schema/registry.d.ts +41 -0
  162. package/dist/core/schema/registry.d.ts.map +1 -0
  163. package/dist/core/schema/registry.js +248 -0
  164. package/dist/core/schema/registry.js.map +1 -0
  165. package/dist/core/schema/singleton.d.ts +107 -0
  166. package/dist/core/schema/singleton.d.ts.map +1 -0
  167. package/dist/core/schema/singleton.js +180 -0
  168. package/dist/core/schema/singleton.js.map +1 -0
  169. package/dist/core/security/auth.d.ts +120 -0
  170. package/dist/core/security/auth.d.ts.map +1 -0
  171. package/dist/core/security/auth.js +274 -0
  172. package/dist/core/security/auth.js.map +1 -0
  173. package/dist/core/security/captcha/index.d.ts +21 -0
  174. package/dist/core/security/captcha/index.d.ts.map +1 -0
  175. package/dist/core/security/captcha/index.js +34 -0
  176. package/dist/core/security/captcha/index.js.map +1 -0
  177. package/dist/core/security/captcha/recaptcha.d.ts +41 -0
  178. package/dist/core/security/captcha/recaptcha.d.ts.map +1 -0
  179. package/dist/core/security/captcha/recaptcha.js +89 -0
  180. package/dist/core/security/captcha/recaptcha.js.map +1 -0
  181. package/dist/core/security/captcha/turnstile.d.ts +41 -0
  182. package/dist/core/security/captcha/turnstile.d.ts.map +1 -0
  183. package/dist/core/security/captcha/turnstile.js +90 -0
  184. package/dist/core/security/captcha/turnstile.js.map +1 -0
  185. package/dist/core/security/captcha/types.d.ts +66 -0
  186. package/dist/core/security/captcha/types.d.ts.map +1 -0
  187. package/dist/core/security/captcha/types.js +7 -0
  188. package/dist/core/security/captcha/types.js.map +1 -0
  189. package/dist/core/security/mfa/email-otp.d.ts +91 -0
  190. package/dist/core/security/mfa/email-otp.d.ts.map +1 -0
  191. package/dist/core/security/mfa/email-otp.js +264 -0
  192. package/dist/core/security/mfa/email-otp.js.map +1 -0
  193. package/dist/core/security/mfa/index.d.ts +8 -0
  194. package/dist/core/security/mfa/index.d.ts.map +1 -0
  195. package/dist/core/security/mfa/index.js +8 -0
  196. package/dist/core/security/mfa/index.js.map +1 -0
  197. package/dist/core/security/mfa/totp.d.ts +87 -0
  198. package/dist/core/security/mfa/totp.d.ts.map +1 -0
  199. package/dist/core/security/mfa/totp.js +293 -0
  200. package/dist/core/security/mfa/totp.js.map +1 -0
  201. package/dist/core/security/middleware.d.ts +102 -0
  202. package/dist/core/security/middleware.d.ts.map +1 -0
  203. package/dist/core/security/middleware.js +261 -0
  204. package/dist/core/security/middleware.js.map +1 -0
  205. package/dist/core/security/oauth/google.d.ts +76 -0
  206. package/dist/core/security/oauth/google.d.ts.map +1 -0
  207. package/dist/core/security/oauth/google.js +154 -0
  208. package/dist/core/security/oauth/google.js.map +1 -0
  209. package/dist/core/security/oauth/index.d.ts +8 -0
  210. package/dist/core/security/oauth/index.d.ts.map +1 -0
  211. package/dist/core/security/oauth/index.js +7 -0
  212. package/dist/core/security/oauth/index.js.map +1 -0
  213. package/dist/core/security/oauth2/authorization-server.d.ts +195 -0
  214. package/dist/core/security/oauth2/authorization-server.d.ts.map +1 -0
  215. package/dist/core/security/oauth2/authorization-server.js +569 -0
  216. package/dist/core/security/oauth2/authorization-server.js.map +1 -0
  217. package/dist/core/security/oauth2/index.d.ts +9 -0
  218. package/dist/core/security/oauth2/index.d.ts.map +1 -0
  219. package/dist/core/security/oauth2/index.js +9 -0
  220. package/dist/core/security/oauth2/index.js.map +1 -0
  221. package/dist/core/security/rate-limiter.d.ts +15 -0
  222. package/dist/core/security/rate-limiter.d.ts.map +1 -0
  223. package/dist/core/security/rate-limiter.js +48 -0
  224. package/dist/core/security/rate-limiter.js.map +1 -0
  225. package/dist/core/security/validation.d.ts +20 -0
  226. package/dist/core/security/validation.d.ts.map +1 -0
  227. package/dist/core/security/validation.js +273 -0
  228. package/dist/core/security/validation.js.map +1 -0
  229. package/dist/core/services/auth-service.d.ts +128 -0
  230. package/dist/core/services/auth-service.d.ts.map +1 -0
  231. package/dist/core/services/auth-service.js +530 -0
  232. package/dist/core/services/auth-service.js.map +1 -0
  233. package/dist/core/services/captcha-service.d.ts +44 -0
  234. package/dist/core/services/captcha-service.d.ts.map +1 -0
  235. package/dist/core/services/captcha-service.js +82 -0
  236. package/dist/core/services/captcha-service.js.map +1 -0
  237. package/dist/core/services/document-service.d.ts +59 -0
  238. package/dist/core/services/document-service.d.ts.map +1 -0
  239. package/dist/core/services/document-service.js +269 -0
  240. package/dist/core/services/document-service.js.map +1 -0
  241. package/dist/core/services/media-service.d.ts +40 -0
  242. package/dist/core/services/media-service.d.ts.map +1 -0
  243. package/dist/core/services/media-service.js +396 -0
  244. package/dist/core/services/media-service.js.map +1 -0
  245. package/dist/core/services/mfa-service.d.ts +123 -0
  246. package/dist/core/services/mfa-service.d.ts.map +1 -0
  247. package/dist/core/services/mfa-service.js +606 -0
  248. package/dist/core/services/mfa-service.js.map +1 -0
  249. package/dist/core/services/oauth-service.d.ts +58 -0
  250. package/dist/core/services/oauth-service.d.ts.map +1 -0
  251. package/dist/core/services/oauth-service.js +253 -0
  252. package/dist/core/services/oauth-service.js.map +1 -0
  253. package/dist/core/services/oauth2-server-service.d.ts +61 -0
  254. package/dist/core/services/oauth2-server-service.d.ts.map +1 -0
  255. package/dist/core/services/oauth2-server-service.js +259 -0
  256. package/dist/core/services/oauth2-server-service.js.map +1 -0
  257. package/dist/core/services/passkey-service.d.ts +59 -0
  258. package/dist/core/services/passkey-service.d.ts.map +1 -0
  259. package/dist/core/services/passkey-service.js +238 -0
  260. package/dist/core/services/passkey-service.js.map +1 -0
  261. package/dist/core/services/token-service.d.ts +31 -0
  262. package/dist/core/services/token-service.d.ts.map +1 -0
  263. package/dist/core/services/token-service.js +132 -0
  264. package/dist/core/services/token-service.js.map +1 -0
  265. package/dist/core/services/trusted-device-service.d.ts +39 -0
  266. package/dist/core/services/trusted-device-service.d.ts.map +1 -0
  267. package/dist/core/services/trusted-device-service.js +123 -0
  268. package/dist/core/services/trusted-device-service.js.map +1 -0
  269. package/dist/core/services/user-service.d.ts +38 -0
  270. package/dist/core/services/user-service.d.ts.map +1 -0
  271. package/dist/core/services/user-service.js +265 -0
  272. package/dist/core/services/user-service.js.map +1 -0
  273. package/dist/core/studio/integration.d.ts +54 -0
  274. package/dist/core/studio/integration.d.ts.map +1 -0
  275. package/dist/core/studio/integration.js +326 -0
  276. package/dist/core/studio/integration.js.map +1 -0
  277. package/dist/core/types/index.d.ts +282 -0
  278. package/dist/core/types/index.d.ts.map +1 -0
  279. package/dist/core/types/index.js +83 -0
  280. package/dist/core/types/index.js.map +1 -0
  281. package/dist/core/types/mail.d.ts +90 -0
  282. package/dist/core/types/mail.d.ts.map +1 -0
  283. package/dist/core/types/mail.js +7 -0
  284. package/dist/core/types/mail.js.map +1 -0
  285. package/dist/core/types/oauth2.d.ts +9 -0
  286. package/dist/core/types/oauth2.d.ts.map +1 -0
  287. package/dist/core/types/oauth2.js +7 -0
  288. package/dist/core/types/oauth2.js.map +1 -0
  289. package/dist/core/types/storage-adapters.d.ts +611 -0
  290. package/dist/core/types/storage-adapters.d.ts.map +1 -0
  291. package/dist/core/types/storage-adapters.js +14 -0
  292. package/dist/core/types/storage-adapters.js.map +1 -0
  293. package/dist/core/types/user.d.ts +10 -0
  294. package/dist/core/types/user.d.ts.map +1 -0
  295. package/dist/core/types/user.js +45 -0
  296. package/dist/core/types/user.js.map +1 -0
  297. package/dist/core/utils/id-generator.d.ts +16 -0
  298. package/dist/core/utils/id-generator.d.ts.map +1 -0
  299. package/dist/core/utils/id-generator.js +61 -0
  300. package/dist/core/utils/id-generator.js.map +1 -0
  301. package/dist/core/utils/logger.d.ts +100 -0
  302. package/dist/core/utils/logger.d.ts.map +1 -0
  303. package/dist/core/utils/logger.js +212 -0
  304. package/dist/core/utils/logger.js.map +1 -0
  305. package/dist/core/utils/reference-expander.d.ts +57 -0
  306. package/dist/core/utils/reference-expander.d.ts.map +1 -0
  307. package/dist/core/utils/reference-expander.js +192 -0
  308. package/dist/core/utils/reference-expander.js.map +1 -0
  309. package/dist/core/utils/universal-crypto.d.ts +46 -0
  310. package/dist/core/utils/universal-crypto.d.ts.map +1 -0
  311. package/dist/core/utils/universal-crypto.js +171 -0
  312. package/dist/core/utils/universal-crypto.js.map +1 -0
  313. package/dist/core/validation/validator.d.ts +11 -0
  314. package/dist/core/validation/validator.d.ts.map +1 -0
  315. package/dist/core/validation/validator.js +164 -0
  316. package/dist/core/validation/validator.js.map +1 -0
  317. package/dist/i18n/config.d.ts +4077 -0
  318. package/dist/i18n/config.d.ts.map +1 -0
  319. package/dist/i18n/config.js +116 -0
  320. package/dist/i18n/config.js.map +1 -0
  321. package/dist/i18n/hooks.d.ts +86 -0
  322. package/dist/i18n/hooks.d.ts.map +1 -0
  323. package/dist/i18n/hooks.js +122 -0
  324. package/dist/i18n/hooks.js.map +1 -0
  325. package/dist/i18n/index.d.ts +39 -0
  326. package/dist/i18n/index.d.ts.map +1 -0
  327. package/dist/i18n/index.js +40 -0
  328. package/dist/i18n/index.js.map +1 -0
  329. package/dist/i18n/locales/en/auth.json +108 -0
  330. package/dist/i18n/locales/en/common.json +100 -0
  331. package/dist/i18n/locales/en/errors.json +55 -0
  332. package/dist/i18n/locales/en/fields.json +456 -0
  333. package/dist/i18n/locales/en/studio.json +1329 -0
  334. package/dist/i18n/locales/fr/auth.json +108 -0
  335. package/dist/i18n/locales/fr/common.json +100 -0
  336. package/dist/i18n/locales/fr/errors.json +55 -0
  337. package/dist/i18n/locales/fr/fields.json +456 -0
  338. package/dist/i18n/locales/fr/studio.json +1274 -0
  339. package/dist/i18n/provider.d.ts +45 -0
  340. package/dist/i18n/provider.d.ts.map +1 -0
  341. package/dist/i18n/provider.js +49 -0
  342. package/dist/i18n/provider.js.map +1 -0
  343. package/dist/i18n/types.d.ts +8 -0
  344. package/dist/i18n/types.d.ts.map +1 -0
  345. package/dist/i18n/types.js +7 -0
  346. package/dist/i18n/types.js.map +1 -0
  347. package/dist/index.d.ts +15 -0
  348. package/dist/index.d.ts.map +1 -0
  349. package/dist/index.js +16 -0
  350. package/dist/index.js.map +1 -0
  351. package/dist/integrations/express/adapter.d.ts +33 -0
  352. package/dist/integrations/express/adapter.d.ts.map +1 -0
  353. package/dist/integrations/express/adapter.js +203 -0
  354. package/dist/integrations/express/adapter.js.map +1 -0
  355. package/dist/integrations/express/config.d.ts +599 -0
  356. package/dist/integrations/express/config.d.ts.map +1 -0
  357. package/dist/integrations/express/config.js +166 -0
  358. package/dist/integrations/express/config.js.map +1 -0
  359. package/dist/integrations/express/index.d.ts +10 -0
  360. package/dist/integrations/express/index.d.ts.map +1 -0
  361. package/dist/integrations/express/index.js +9 -0
  362. package/dist/integrations/express/index.js.map +1 -0
  363. package/dist/integrations/express/integration.d.ts +111 -0
  364. package/dist/integrations/express/integration.d.ts.map +1 -0
  365. package/dist/integrations/express/integration.js +730 -0
  366. package/dist/integrations/express/integration.js.map +1 -0
  367. package/dist/integrations/express/media-rewrite-middleware.d.ts +78 -0
  368. package/dist/integrations/express/media-rewrite-middleware.d.ts.map +1 -0
  369. package/dist/integrations/express/media-rewrite-middleware.js +211 -0
  370. package/dist/integrations/express/media-rewrite-middleware.js.map +1 -0
  371. package/dist/integrations/express/media-url-generator.d.ts +52 -0
  372. package/dist/integrations/express/media-url-generator.d.ts.map +1 -0
  373. package/dist/integrations/express/media-url-generator.js +107 -0
  374. package/dist/integrations/express/media-url-generator.js.map +1 -0
  375. package/dist/integrations/express/middleware.d.ts +25 -0
  376. package/dist/integrations/express/middleware.d.ts.map +1 -0
  377. package/dist/integrations/express/middleware.js +130 -0
  378. package/dist/integrations/express/middleware.js.map +1 -0
  379. package/dist/integrations/express/server.d.ts +99 -0
  380. package/dist/integrations/express/server.d.ts.map +1 -0
  381. package/dist/integrations/express/server.js +597 -0
  382. package/dist/integrations/express/server.js.map +1 -0
  383. package/dist/integrations/express/types.d.ts +106 -0
  384. package/dist/integrations/express/types.d.ts.map +1 -0
  385. package/dist/integrations/express/types.js +2 -0
  386. package/dist/integrations/express/types.js.map +1 -0
  387. package/dist/mail/adapters/console.d.ts +30 -0
  388. package/dist/mail/adapters/console.d.ts.map +1 -0
  389. package/dist/mail/adapters/console.js +169 -0
  390. package/dist/mail/adapters/console.js.map +1 -0
  391. package/dist/mail/adapters/resend.d.ts +18 -0
  392. package/dist/mail/adapters/resend.d.ts.map +1 -0
  393. package/dist/mail/adapters/resend.js +148 -0
  394. package/dist/mail/adapters/resend.js.map +1 -0
  395. package/dist/mail/adapters/smtp.d.ts +22 -0
  396. package/dist/mail/adapters/smtp.d.ts.map +1 -0
  397. package/dist/mail/adapters/smtp.js +180 -0
  398. package/dist/mail/adapters/smtp.js.map +1 -0
  399. package/dist/mail/index.d.ts +15 -0
  400. package/dist/mail/index.d.ts.map +1 -0
  401. package/dist/mail/index.js +13 -0
  402. package/dist/mail/index.js.map +1 -0
  403. package/dist/mail/mail-service.d.ts +180 -0
  404. package/dist/mail/mail-service.d.ts.map +1 -0
  405. package/dist/mail/mail-service.js +370 -0
  406. package/dist/mail/mail-service.js.map +1 -0
  407. package/dist/mail/notification-service.d.ts +82 -0
  408. package/dist/mail/notification-service.d.ts.map +1 -0
  409. package/dist/mail/notification-service.js +262 -0
  410. package/dist/mail/notification-service.js.map +1 -0
  411. package/dist/mail/templates/built-in-templates.d.ts +47 -0
  412. package/dist/mail/templates/built-in-templates.d.ts.map +1 -0
  413. package/dist/mail/templates/built-in-templates.js +416 -0
  414. package/dist/mail/templates/built-in-templates.js.map +1 -0
  415. package/dist/mail/templates/custom-template-renderer.d.ts +115 -0
  416. package/dist/mail/templates/custom-template-renderer.d.ts.map +1 -0
  417. package/dist/mail/templates/custom-template-renderer.js +225 -0
  418. package/dist/mail/templates/custom-template-renderer.js.map +1 -0
  419. package/dist/mail/types.d.ts +7 -0
  420. package/dist/mail/types.d.ts.map +1 -0
  421. package/dist/mail/types.js +7 -0
  422. package/dist/mail/types.js.map +1 -0
  423. package/dist/routes/auth/captcha.d.ts +33 -0
  424. package/dist/routes/auth/captcha.d.ts.map +1 -0
  425. package/dist/routes/auth/captcha.js +102 -0
  426. package/dist/routes/auth/captcha.js.map +1 -0
  427. package/dist/routes/auth/change-password.d.ts +17 -0
  428. package/dist/routes/auth/change-password.d.ts.map +1 -0
  429. package/dist/routes/auth/change-password.js +121 -0
  430. package/dist/routes/auth/change-password.js.map +1 -0
  431. package/dist/routes/auth/index.d.ts +13 -0
  432. package/dist/routes/auth/index.d.ts.map +1 -0
  433. package/dist/routes/auth/index.js +35 -0
  434. package/dist/routes/auth/index.js.map +1 -0
  435. package/dist/routes/auth/mfa.d.ts +121 -0
  436. package/dist/routes/auth/mfa.d.ts.map +1 -0
  437. package/dist/routes/auth/mfa.js +1143 -0
  438. package/dist/routes/auth/mfa.js.map +1 -0
  439. package/dist/routes/auth/oauth.d.ts +37 -0
  440. package/dist/routes/auth/oauth.d.ts.map +1 -0
  441. package/dist/routes/auth/oauth.js +420 -0
  442. package/dist/routes/auth/oauth.js.map +1 -0
  443. package/dist/routes/auth/oauth2-server.d.ts +70 -0
  444. package/dist/routes/auth/oauth2-server.d.ts.map +1 -0
  445. package/dist/routes/auth/oauth2-server.js +775 -0
  446. package/dist/routes/auth/oauth2-server.js.map +1 -0
  447. package/dist/routes/auth/passkey.d.ts +65 -0
  448. package/dist/routes/auth/passkey.d.ts.map +1 -0
  449. package/dist/routes/auth/passkey.js +910 -0
  450. package/dist/routes/auth/passkey.js.map +1 -0
  451. package/dist/routes/auth/password-reset.d.ts +23 -0
  452. package/dist/routes/auth/password-reset.d.ts.map +1 -0
  453. package/dist/routes/auth/password-reset.js +336 -0
  454. package/dist/routes/auth/password-reset.js.map +1 -0
  455. package/dist/routes/handlers/audit.d.ts +21 -0
  456. package/dist/routes/handlers/audit.d.ts.map +1 -0
  457. package/dist/routes/handlers/audit.js +124 -0
  458. package/dist/routes/handlers/audit.js.map +1 -0
  459. package/dist/routes/handlers/auth.d.ts +150 -0
  460. package/dist/routes/handlers/auth.d.ts.map +1 -0
  461. package/dist/routes/handlers/auth.js +512 -0
  462. package/dist/routes/handlers/auth.js.map +1 -0
  463. package/dist/routes/handlers/base.d.ts +34 -0
  464. package/dist/routes/handlers/base.d.ts.map +1 -0
  465. package/dist/routes/handlers/base.js +366 -0
  466. package/dist/routes/handlers/base.js.map +1 -0
  467. package/dist/routes/handlers/config.d.ts +31 -0
  468. package/dist/routes/handlers/config.d.ts.map +1 -0
  469. package/dist/routes/handlers/config.js +483 -0
  470. package/dist/routes/handlers/config.js.map +1 -0
  471. package/dist/routes/handlers/documents.d.ts +50 -0
  472. package/dist/routes/handlers/documents.d.ts.map +1 -0
  473. package/dist/routes/handlers/documents.js +708 -0
  474. package/dist/routes/handlers/documents.js.map +1 -0
  475. package/dist/routes/handlers/index.d.ts +12 -0
  476. package/dist/routes/handlers/index.d.ts.map +1 -0
  477. package/dist/routes/handlers/index.js +11 -0
  478. package/dist/routes/handlers/index.js.map +1 -0
  479. package/dist/routes/handlers/media.d.ts +24 -0
  480. package/dist/routes/handlers/media.d.ts.map +1 -0
  481. package/dist/routes/handlers/media.js +432 -0
  482. package/dist/routes/handlers/media.js.map +1 -0
  483. package/dist/routes/handlers/search.d.ts +10 -0
  484. package/dist/routes/handlers/search.d.ts.map +1 -0
  485. package/dist/routes/handlers/search.js +153 -0
  486. package/dist/routes/handlers/search.js.map +1 -0
  487. package/dist/routes/handlers/tokens.d.ts +14 -0
  488. package/dist/routes/handlers/tokens.d.ts.map +1 -0
  489. package/dist/routes/handlers/tokens.js +109 -0
  490. package/dist/routes/handlers/tokens.js.map +1 -0
  491. package/dist/routes/handlers/types.d.ts +13 -0
  492. package/dist/routes/handlers/types.d.ts.map +1 -0
  493. package/dist/routes/handlers/types.js +5 -0
  494. package/dist/routes/handlers/types.js.map +1 -0
  495. package/dist/routes/handlers/users.d.ts +16 -0
  496. package/dist/routes/handlers/users.d.ts.map +1 -0
  497. package/dist/routes/handlers/users.js +198 -0
  498. package/dist/routes/handlers/users.js.map +1 -0
  499. package/dist/routes/handlers/webhooks.d.ts +37 -0
  500. package/dist/routes/handlers/webhooks.d.ts.map +1 -0
  501. package/dist/routes/handlers/webhooks.js +343 -0
  502. package/dist/routes/handlers/webhooks.js.map +1 -0
  503. package/dist/routes/index.d.ts +5 -0
  504. package/dist/routes/index.d.ts.map +1 -0
  505. package/dist/routes/index.js +5 -0
  506. package/dist/routes/index.js.map +1 -0
  507. package/dist/routes/routes.d.ts +29 -0
  508. package/dist/routes/routes.d.ts.map +1 -0
  509. package/dist/routes/routes.js +531 -0
  510. package/dist/routes/routes.js.map +1 -0
  511. package/dist/routes/slug-processor.d.ts +32 -0
  512. package/dist/routes/slug-processor.d.ts.map +1 -0
  513. package/dist/routes/slug-processor.js +328 -0
  514. package/dist/routes/slug-processor.js.map +1 -0
  515. package/dist/routes/types.d.ts +31 -0
  516. package/dist/routes/types.d.ts.map +1 -0
  517. package/dist/routes/types.js +7 -0
  518. package/dist/routes/types.js.map +1 -0
  519. package/dist/routes/users/index.d.ts +7 -0
  520. package/dist/routes/users/index.d.ts.map +1 -0
  521. package/dist/routes/users/index.js +7 -0
  522. package/dist/routes/users/index.js.map +1 -0
  523. package/dist/structure/builder/StructureBuilder.d.ts +209 -0
  524. package/dist/structure/builder/StructureBuilder.d.ts.map +1 -0
  525. package/dist/structure/builder/StructureBuilder.js +425 -0
  526. package/dist/structure/builder/StructureBuilder.js.map +1 -0
  527. package/dist/structure/builder/index.d.ts +8 -0
  528. package/dist/structure/builder/index.d.ts.map +1 -0
  529. package/dist/structure/builder/index.js +6 -0
  530. package/dist/structure/builder/index.js.map +1 -0
  531. package/dist/structure/builder/navigation-tree-builder.d.ts +33 -0
  532. package/dist/structure/builder/navigation-tree-builder.d.ts.map +1 -0
  533. package/dist/structure/builder/navigation-tree-builder.js +284 -0
  534. package/dist/structure/builder/navigation-tree-builder.js.map +1 -0
  535. package/dist/structure/errors/index.d.ts +72 -0
  536. package/dist/structure/errors/index.d.ts.map +1 -0
  537. package/dist/structure/errors/index.js +136 -0
  538. package/dist/structure/errors/index.js.map +1 -0
  539. package/dist/structure/index.d.ts +14 -0
  540. package/dist/structure/index.d.ts.map +1 -0
  541. package/dist/structure/index.js +16 -0
  542. package/dist/structure/index.js.map +1 -0
  543. package/dist/structure/types/filters.d.ts +167 -0
  544. package/dist/structure/types/filters.d.ts.map +1 -0
  545. package/dist/structure/types/filters.js +38 -0
  546. package/dist/structure/types/filters.js.map +1 -0
  547. package/dist/structure/types/index.d.ts +11 -0
  548. package/dist/structure/types/index.d.ts.map +1 -0
  549. package/dist/structure/types/index.js +7 -0
  550. package/dist/structure/types/index.js.map +1 -0
  551. package/dist/structure/types/permissions.d.ts +159 -0
  552. package/dist/structure/types/permissions.d.ts.map +1 -0
  553. package/dist/structure/types/permissions.js +49 -0
  554. package/dist/structure/types/permissions.js.map +1 -0
  555. package/dist/structure/types/structure.d.ts +342 -0
  556. package/dist/structure/types/structure.d.ts.map +1 -0
  557. package/dist/structure/types/structure.js +6 -0
  558. package/dist/structure/types/structure.js.map +1 -0
  559. package/dist/structure/types/views.d.ts +278 -0
  560. package/dist/structure/types/views.d.ts.map +1 -0
  561. package/dist/structure/types/views.js +6 -0
  562. package/dist/structure/types/views.js.map +1 -0
  563. package/dist/structure/utils/hash.d.ts +61 -0
  564. package/dist/structure/utils/hash.d.ts.map +1 -0
  565. package/dist/structure/utils/hash.js +118 -0
  566. package/dist/structure/utils/hash.js.map +1 -0
  567. package/dist/structure/utils/index.d.ts +10 -0
  568. package/dist/structure/utils/index.d.ts.map +1 -0
  569. package/dist/structure/utils/index.js +7 -0
  570. package/dist/structure/utils/index.js.map +1 -0
  571. package/dist/structure/utils/permission-checker.d.ts +57 -0
  572. package/dist/structure/utils/permission-checker.d.ts.map +1 -0
  573. package/dist/structure/utils/permission-checker.js +286 -0
  574. package/dist/structure/utils/permission-checker.js.map +1 -0
  575. package/dist/structure/utils/query-builder.d.ts +82 -0
  576. package/dist/structure/utils/query-builder.d.ts.map +1 -0
  577. package/dist/structure/utils/query-builder.js +489 -0
  578. package/dist/structure/utils/query-builder.js.map +1 -0
  579. package/dist/structure/utils/structure-merger.d.ts +91 -0
  580. package/dist/structure/utils/structure-merger.d.ts.map +1 -0
  581. package/dist/structure/utils/structure-merger.js +445 -0
  582. package/dist/structure/utils/structure-merger.js.map +1 -0
  583. package/dist/structure/validation/schemas.d.ts +3107 -0
  584. package/dist/structure/validation/schemas.d.ts.map +1 -0
  585. package/dist/structure/validation/schemas.js +436 -0
  586. package/dist/structure/validation/schemas.js.map +1 -0
  587. package/dist/types/api-requests.d.ts +334 -0
  588. package/dist/types/api-requests.d.ts.map +1 -0
  589. package/dist/types/api-requests.js +8 -0
  590. package/dist/types/api-requests.js.map +1 -0
  591. package/dist/types/auth.d.ts +394 -0
  592. package/dist/types/auth.d.ts.map +1 -0
  593. package/dist/types/auth.js +8 -0
  594. package/dist/types/auth.js.map +1 -0
  595. package/dist/types/document.d.ts +49 -0
  596. package/dist/types/document.d.ts.map +1 -0
  597. package/dist/types/document.js +6 -0
  598. package/dist/types/document.js.map +1 -0
  599. package/dist/types/field-system.d.ts +197 -0
  600. package/dist/types/field-system.d.ts.map +1 -0
  601. package/dist/types/field-system.js +8 -0
  602. package/dist/types/field-system.js.map +1 -0
  603. package/dist/types/fields.d.ts +17 -0
  604. package/dist/types/fields.d.ts.map +1 -0
  605. package/dist/types/fields.js +21 -0
  606. package/dist/types/fields.js.map +1 -0
  607. package/dist/types/http.d.ts +162 -0
  608. package/dist/types/http.d.ts.map +1 -0
  609. package/dist/types/http.js +8 -0
  610. package/dist/types/http.js.map +1 -0
  611. package/dist/types/i18n.d.ts +56 -0
  612. package/dist/types/i18n.d.ts.map +1 -0
  613. package/dist/types/i18n.js +25 -0
  614. package/dist/types/i18n.js.map +1 -0
  615. package/dist/types/index.d.ts +22 -0
  616. package/dist/types/index.d.ts.map +1 -0
  617. package/dist/types/index.js +10 -0
  618. package/dist/types/index.js.map +1 -0
  619. package/dist/types/mail.d.ts +224 -0
  620. package/dist/types/mail.d.ts.map +1 -0
  621. package/dist/types/mail.js +8 -0
  622. package/dist/types/mail.js.map +1 -0
  623. package/dist/types/media.d.ts +56 -0
  624. package/dist/types/media.d.ts.map +1 -0
  625. package/dist/types/media.js +6 -0
  626. package/dist/types/media.js.map +1 -0
  627. package/dist/types/oauth2.d.ts +287 -0
  628. package/dist/types/oauth2.d.ts.map +1 -0
  629. package/dist/types/oauth2.js +43 -0
  630. package/dist/types/oauth2.js.map +1 -0
  631. package/dist/types/passkey.d.ts +217 -0
  632. package/dist/types/passkey.d.ts.map +1 -0
  633. package/dist/types/passkey.js +8 -0
  634. package/dist/types/passkey.js.map +1 -0
  635. package/dist/types/slug.d.ts +99 -0
  636. package/dist/types/slug.d.ts.map +1 -0
  637. package/dist/types/slug.js +8 -0
  638. package/dist/types/slug.js.map +1 -0
  639. package/package.json +183 -0
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Efficient Hashing Utilities
3
+ * Fast cache key generation without JSON.stringify
4
+ */
5
+ /**
6
+ * Fast hash function for cache keys
7
+ * Uses FNV-1a algorithm for good distribution and speed
8
+ */
9
+ export declare class FastHasher {
10
+ private static readonly FNV_OFFSET_BASIS;
11
+ private static readonly FNV_PRIME;
12
+ /**
13
+ * Generate a fast hash for any value
14
+ */
15
+ static hash(value: any): string;
16
+ /**
17
+ * Fast object stringification for hashing
18
+ * More efficient than JSON.stringify for cache keys
19
+ */
20
+ private static stringify;
21
+ /**
22
+ * Generate a structured cache key with namespace
23
+ */
24
+ static cacheKey(namespace: string, ...parts: any[]): string;
25
+ }
26
+ /**
27
+ * Stable hash for consistent ordering
28
+ * Ensures same input always produces same hash
29
+ */
30
+ export declare class StableHasher {
31
+ /**
32
+ * Create a stable hash that's consistent across runs
33
+ */
34
+ static hash(value: any): string;
35
+ /**
36
+ * Normalize value for consistent hashing
37
+ */
38
+ private static normalize;
39
+ }
40
+ /**
41
+ * Cache key utilities for specific use cases
42
+ */
43
+ export declare class CacheKeyUtils {
44
+ /**
45
+ * Generate query cache key
46
+ */
47
+ static queryKey(schemaType: string, filter: any, context?: any): string;
48
+ /**
49
+ * Generate navigation cache key
50
+ */
51
+ static navigationKey(structureTitle: string, userId?: string): string;
52
+ /**
53
+ * Generate permission cache key
54
+ */
55
+ static permissionKey(action: string, itemId: string, userId?: string): string;
56
+ /**
57
+ * Generate validation cache key
58
+ */
59
+ static validationKey(structureHash: string): string;
60
+ }
61
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../src/structure/utils/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAa;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAW;IAE5C;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;IAY/B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAsBxB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM;CAI5D;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;IAI/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;CAkBzB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,MAAM;IAIvE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAIrE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAI7E;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;CAGpD"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Efficient Hashing Utilities
3
+ * Fast cache key generation without JSON.stringify
4
+ */
5
+ /**
6
+ * Fast hash function for cache keys
7
+ * Uses FNV-1a algorithm for good distribution and speed
8
+ */
9
+ export class FastHasher {
10
+ static FNV_OFFSET_BASIS = 2166136261;
11
+ static FNV_PRIME = 16777619;
12
+ /**
13
+ * Generate a fast hash for any value
14
+ */
15
+ static hash(value) {
16
+ const str = this.stringify(value);
17
+ let hash = this.FNV_OFFSET_BASIS;
18
+ for (let i = 0; i < str.length; i++) {
19
+ hash ^= str.charCodeAt(i);
20
+ hash = Math.imul(hash, this.FNV_PRIME);
21
+ }
22
+ return (hash >>> 0).toString(36);
23
+ }
24
+ /**
25
+ * Fast object stringification for hashing
26
+ * More efficient than JSON.stringify for cache keys
27
+ */
28
+ static stringify(obj) {
29
+ if (obj === null)
30
+ return 'null';
31
+ if (obj === undefined)
32
+ return 'undefined';
33
+ const type = typeof obj;
34
+ if (type === 'string')
35
+ return `"${obj}"`;
36
+ if (type === 'number' || type === 'boolean')
37
+ return String(obj);
38
+ if (type === 'function')
39
+ return obj.toString();
40
+ if (Array.isArray(obj)) {
41
+ return `[${obj.map(item => this.stringify(item)).join(',')}]`;
42
+ }
43
+ if (type === 'object') {
44
+ const keys = Object.keys(obj).sort(); // Sort for consistency
45
+ const pairs = keys.map(key => `"${key}":${this.stringify(obj[key])}`);
46
+ return `{${pairs.join(',')}}`;
47
+ }
48
+ return String(obj);
49
+ }
50
+ /**
51
+ * Generate a structured cache key with namespace
52
+ */
53
+ static cacheKey(namespace, ...parts) {
54
+ const hashParts = parts.map(part => this.hash(part)).join('-');
55
+ return `${namespace}:${hashParts}`;
56
+ }
57
+ }
58
+ /**
59
+ * Stable hash for consistent ordering
60
+ * Ensures same input always produces same hash
61
+ */
62
+ export class StableHasher {
63
+ /**
64
+ * Create a stable hash that's consistent across runs
65
+ */
66
+ static hash(value) {
67
+ return FastHasher.hash(this.normalize(value));
68
+ }
69
+ /**
70
+ * Normalize value for consistent hashing
71
+ */
72
+ static normalize(obj) {
73
+ if (obj === null || obj === undefined)
74
+ return obj;
75
+ if (Array.isArray(obj)) {
76
+ return obj.map(item => this.normalize(item));
77
+ }
78
+ if (typeof obj === 'object' && obj.constructor === Object) {
79
+ const result = {};
80
+ const keys = Object.keys(obj).sort();
81
+ for (const key of keys) {
82
+ result[key] = this.normalize(obj[key]);
83
+ }
84
+ return result;
85
+ }
86
+ return obj;
87
+ }
88
+ }
89
+ /**
90
+ * Cache key utilities for specific use cases
91
+ */
92
+ export class CacheKeyUtils {
93
+ /**
94
+ * Generate query cache key
95
+ */
96
+ static queryKey(schemaType, filter, context) {
97
+ return FastHasher.cacheKey('query', schemaType, filter, context);
98
+ }
99
+ /**
100
+ * Generate navigation cache key
101
+ */
102
+ static navigationKey(structureTitle, userId) {
103
+ return FastHasher.cacheKey('nav', structureTitle, userId || 'anonymous');
104
+ }
105
+ /**
106
+ * Generate permission cache key
107
+ */
108
+ static permissionKey(action, itemId, userId) {
109
+ return FastHasher.cacheKey('perm', action, itemId, userId || 'anonymous');
110
+ }
111
+ /**
112
+ * Generate validation cache key
113
+ */
114
+ static validationKey(structureHash) {
115
+ return FastHasher.cacheKey('valid', structureHash);
116
+ }
117
+ }
118
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/structure/utils/hash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Utils Module Exports
3
+ */
4
+ export { PermissionChecker } from './permission-checker.js';
5
+ export { QueryBuilder } from './query-builder.js';
6
+ export { StructureMerger } from './structure-merger.js';
7
+ export type { PermissionCheckerOptions } from './permission-checker.js';
8
+ export type { QueryBuilderOptions } from './query-builder.js';
9
+ export type { MergeOptions, MergeResult, MergeConflict } from './structure-merger.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/structure/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,YAAY,EACV,wBAAwB,EACzB,MAAM,yBAAyB,CAAA;AAEhC,YAAY,EACV,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACd,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Utils Module Exports
3
+ */
4
+ export { PermissionChecker } from './permission-checker.js';
5
+ export { QueryBuilder } from './query-builder.js';
6
+ export { StructureMerger } from './structure-merger.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/structure/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Permission Checker
3
+ * Utility for checking permissions against structure items
4
+ */
5
+ import type { User } from '../../core/index.js';
6
+ import type { PermissionConfig, PermissionContext, PermissionResult } from '../types/index.js';
7
+ export interface PermissionCheckerOptions {
8
+ /** Enable permission inheritance */
9
+ enableInheritance?: boolean;
10
+ /** Default permissions for items without explicit permissions */
11
+ defaultPermissions?: PermissionConfig;
12
+ /** Available roles in the system */
13
+ availableRoles?: string[];
14
+ }
15
+ export declare class PermissionChecker {
16
+ private options;
17
+ private defaultPermissions;
18
+ private availableRoles;
19
+ constructor(options?: PermissionCheckerOptions);
20
+ /**
21
+ * Check if user has permission for action
22
+ */
23
+ check(permissions: PermissionConfig | undefined, action: string, user?: User, context?: PermissionContext): Promise<boolean>;
24
+ /**
25
+ * Check permissions with detailed result
26
+ */
27
+ checkDetailed(permissions: PermissionConfig | undefined, action: string, user?: User, context?: PermissionContext): Promise<PermissionResult>;
28
+ /**
29
+ * Evaluate a permission rule
30
+ */
31
+ private evaluateRule;
32
+ /**
33
+ * Evaluate conditional permission rule
34
+ */
35
+ private evaluateConditionalRule;
36
+ /**
37
+ * Evaluate string condition
38
+ */
39
+ private evaluateStringCondition;
40
+ /**
41
+ * Check if rule is conditional
42
+ */
43
+ private isConditionalRule;
44
+ /**
45
+ * Validate permission configuration
46
+ */
47
+ validatePermissionConfig(config: PermissionConfig): string[];
48
+ /**
49
+ * Validate permission rule
50
+ */
51
+ private validateRule;
52
+ /**
53
+ * Get effective permissions for user
54
+ */
55
+ getEffectivePermissions(permissions: PermissionConfig | undefined, user?: User, context?: PermissionContext): Promise<Record<string, boolean>>;
56
+ }
57
+ //# sourceMappingURL=permission-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-checker.d.ts","sourceRoot":"","sources":["../../../src/structure/utils/permission-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,EACV,gBAAgB,EAIhB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAG1B,MAAM,WAAW,wBAAwB;IACvC,oCAAoC;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,gBAAgB,CAAA;IAErC,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAC1B;AAED,qBAAa,iBAAiB;IAIhB,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,cAAc,CAAa;gBAEf,OAAO,GAAE,wBAA6B;IAa1D;;OAEG;IACG,KAAK,CACT,WAAW,EAAE,gBAAgB,GAAG,SAAS,EACzC,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,IAAI,EACX,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,OAAO,CAAC;IAiBnB;;OAEG;IACG,aAAa,CACjB,WAAW,EAAE,gBAAgB,GAAG,SAAS,EACzC,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,IAAI,EACX,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IAmB5B;;OAEG;YACW,YAAY;IA4E1B;;OAEG;YACW,uBAAuB;IAiErC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA6B/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE;IAW5D;;OAEG;IACH,OAAO,CAAC,YAAY;IAuDpB;;OAEG;IACG,uBAAuB,CAC3B,WAAW,EAAE,gBAAgB,GAAG,SAAS,EACzC,IAAI,CAAC,EAAE,IAAI,EACX,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAkBpC"}
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Permission Checker
3
+ * Utility for checking permissions against structure items
4
+ */
5
+ import { PermissionError, ErrorRecovery } from '../errors/index.js';
6
+ export class PermissionChecker {
7
+ options;
8
+ defaultPermissions;
9
+ availableRoles;
10
+ constructor(options = {}) {
11
+ this.options = options;
12
+ this.defaultPermissions = options.defaultPermissions || {
13
+ read: ['viewer', 'editor', 'admin'],
14
+ create: ['editor', 'admin'],
15
+ update: ['editor', 'admin'],
16
+ delete: ['admin']
17
+ };
18
+ this.availableRoles = new Set(options.availableRoles || [
19
+ 'viewer', 'editor', 'admin'
20
+ ]);
21
+ }
22
+ /**
23
+ * Check if user has permission for action
24
+ */
25
+ async check(permissions, action, user, context) {
26
+ return ErrorRecovery.safeExecute(async () => {
27
+ const result = await this.checkDetailed(permissions, action, user, context);
28
+ return result.allowed;
29
+ }, false, // Fallback to deny access on error
30
+ (error) => {
31
+ console.warn('Permission check failed:', {
32
+ action,
33
+ user: user?.id,
34
+ error: error.message
35
+ });
36
+ });
37
+ }
38
+ /**
39
+ * Check permissions with detailed result
40
+ */
41
+ async checkDetailed(permissions, action, user, context) {
42
+ // Use default permissions if none specified
43
+ const effectivePermissions = permissions || this.defaultPermissions;
44
+ // Get rule for action
45
+ const rule = effectivePermissions[action] ||
46
+ effectivePermissions.custom?.[action];
47
+ if (!rule) {
48
+ return {
49
+ allowed: false,
50
+ reason: `No permission rule defined for action: ${action}`,
51
+ rule
52
+ };
53
+ }
54
+ return await this.evaluateRule(rule, user, context);
55
+ }
56
+ /**
57
+ * Evaluate a permission rule
58
+ */
59
+ async evaluateRule(rule, user, context) {
60
+ // Boolean rule
61
+ if (typeof rule === 'boolean') {
62
+ return {
63
+ allowed: rule,
64
+ reason: rule ? 'Explicitly allowed' : 'Explicitly denied',
65
+ rule
66
+ };
67
+ }
68
+ // No user for role-based checks
69
+ if (!user && (typeof rule === 'string' || Array.isArray(rule))) {
70
+ return {
71
+ allowed: false,
72
+ reason: 'Authentication required',
73
+ rule
74
+ };
75
+ }
76
+ // Single role string
77
+ if (typeof rule === 'string') {
78
+ const allowed = user?.role === rule;
79
+ return {
80
+ allowed,
81
+ reason: allowed ? `User has required role: ${rule}` : `User lacks required role: ${rule}`,
82
+ rule
83
+ };
84
+ }
85
+ // Multiple roles array
86
+ if (Array.isArray(rule)) {
87
+ const allowed = user?.role ? rule.includes(user.role) : false;
88
+ return {
89
+ allowed,
90
+ reason: allowed
91
+ ? `User role ${user?.role} is in allowed roles: [${rule.join(', ')}]`
92
+ : `User role ${user?.role || 'none'} not in allowed roles: [${rule.join(', ')}]`,
93
+ rule
94
+ };
95
+ }
96
+ // Function rule
97
+ if (typeof rule === 'function') {
98
+ try {
99
+ const result = rule(user, context);
100
+ const allowed = result instanceof Promise ? await result : result;
101
+ return {
102
+ allowed,
103
+ reason: allowed ? 'Custom function allowed access' : 'Custom function denied access',
104
+ rule
105
+ };
106
+ }
107
+ catch (error) {
108
+ throw new PermissionError('Custom permission function failed', { rule, user: user?.id }, error);
109
+ }
110
+ }
111
+ // Conditional rule
112
+ if (this.isConditionalRule(rule)) {
113
+ return await this.evaluateConditionalRule(rule, user, context);
114
+ }
115
+ return {
116
+ allowed: false,
117
+ reason: 'Invalid permission rule',
118
+ rule
119
+ };
120
+ }
121
+ /**
122
+ * Evaluate conditional permission rule
123
+ */
124
+ async evaluateConditionalRule(rule, user, context) {
125
+ let conditionResult;
126
+ try {
127
+ if (typeof rule.condition === 'string') {
128
+ // String condition - could be evaluated as expression
129
+ conditionResult = this.evaluateStringCondition(rule.condition, user, context);
130
+ }
131
+ else if (typeof rule.condition === 'function') {
132
+ // Function condition
133
+ conditionResult = rule.condition(user, context);
134
+ }
135
+ else {
136
+ return {
137
+ allowed: false,
138
+ reason: 'Invalid condition type',
139
+ rule
140
+ };
141
+ }
142
+ }
143
+ catch (error) {
144
+ throw new PermissionError('Permission condition evaluation failed', { rule, user: user?.id }, error);
145
+ }
146
+ if (conditionResult) {
147
+ // Condition is true - check allow rules
148
+ if (rule.allow) {
149
+ return await this.evaluateRule(rule.allow, user, context);
150
+ }
151
+ // No allow rule but condition is true - default allow
152
+ return {
153
+ allowed: true,
154
+ reason: 'Condition met and no explicit allow rule',
155
+ rule
156
+ };
157
+ }
158
+ else {
159
+ // Condition is false - check deny rules or fallback
160
+ if (rule.deny) {
161
+ const denyResult = await this.evaluateRule(rule.deny, user, context);
162
+ return {
163
+ allowed: !denyResult.allowed,
164
+ reason: denyResult.allowed ? 'Explicitly denied by condition' : 'Not in deny list',
165
+ rule
166
+ };
167
+ }
168
+ // Check fallback rule
169
+ if (rule.fallback) {
170
+ return await this.evaluateRule(rule.fallback, user, context);
171
+ }
172
+ // No deny rule, no fallback - default deny
173
+ return {
174
+ allowed: false,
175
+ reason: 'Condition not met and no fallback rule',
176
+ rule
177
+ };
178
+ }
179
+ }
180
+ /**
181
+ * Evaluate string condition
182
+ */
183
+ evaluateStringCondition(condition, user, context) {
184
+ // Simple string conditions
185
+ switch (condition) {
186
+ case 'isAuthenticated':
187
+ return !!user;
188
+ case 'isAdmin':
189
+ return user?.role === 'admin';
190
+ case 'isEditor':
191
+ return user?.role === 'editor' || user?.role === 'admin';
192
+ case 'isOwner':
193
+ return context?.resource?.author === user?.id;
194
+ case 'isActive':
195
+ return user?.isActive !== false;
196
+ default:
197
+ // For more complex conditions, could implement expression parser
198
+ console.warn(`Unknown string condition: ${condition}`);
199
+ return false;
200
+ }
201
+ }
202
+ /**
203
+ * Check if rule is conditional
204
+ */
205
+ isConditionalRule(rule) {
206
+ return rule && typeof rule === 'object' && 'condition' in rule;
207
+ }
208
+ /**
209
+ * Validate permission configuration
210
+ */
211
+ validatePermissionConfig(config) {
212
+ const errors = [];
213
+ for (const [action, rule] of Object.entries(config)) {
214
+ const ruleErrors = this.validateRule(rule, `${action}`);
215
+ errors.push(...ruleErrors);
216
+ }
217
+ return errors;
218
+ }
219
+ /**
220
+ * Validate permission rule
221
+ */
222
+ validateRule(rule, path) {
223
+ const errors = [];
224
+ if (typeof rule === 'boolean') {
225
+ // Boolean rules are always valid
226
+ return errors;
227
+ }
228
+ if (typeof rule === 'string') {
229
+ if (!this.availableRoles.has(rule)) {
230
+ errors.push(`${path}: Unknown role "${rule}"`);
231
+ }
232
+ return errors;
233
+ }
234
+ if (Array.isArray(rule)) {
235
+ rule.forEach((role, index) => {
236
+ if (typeof role !== 'string') {
237
+ errors.push(`${path}[${index}]: Role must be string`);
238
+ }
239
+ else if (!this.availableRoles.has(role)) {
240
+ errors.push(`${path}[${index}]: Unknown role "${role}"`);
241
+ }
242
+ });
243
+ return errors;
244
+ }
245
+ if (typeof rule === 'function') {
246
+ // Functions are hard to validate statically
247
+ return errors;
248
+ }
249
+ if (this.isConditionalRule(rule)) {
250
+ if (!rule.condition) {
251
+ errors.push(`${path}: Conditional rule missing condition`);
252
+ }
253
+ if (rule.allow) {
254
+ errors.push(...this.validateRule(rule.allow, `${path}.allow`));
255
+ }
256
+ if (rule.deny) {
257
+ errors.push(...this.validateRule(rule.deny, `${path}.deny`));
258
+ }
259
+ if (rule.fallback) {
260
+ errors.push(...this.validateRule(rule.fallback, `${path}.fallback`));
261
+ }
262
+ return errors;
263
+ }
264
+ errors.push(`${path}: Invalid permission rule type`);
265
+ return errors;
266
+ }
267
+ /**
268
+ * Get effective permissions for user
269
+ */
270
+ async getEffectivePermissions(permissions, user, context) {
271
+ const effectivePermissions = permissions || this.defaultPermissions;
272
+ const result = {};
273
+ // Check standard actions
274
+ for (const action of ['read', 'create', 'update', 'delete']) {
275
+ result[action] = await this.check(effectivePermissions, action, user, context);
276
+ }
277
+ // Check custom actions
278
+ if (effectivePermissions.custom) {
279
+ for (const action of Object.keys(effectivePermissions.custom)) {
280
+ result[action] = await this.check(effectivePermissions, action, user, context);
281
+ }
282
+ }
283
+ return result;
284
+ }
285
+ }
286
+ //# sourceMappingURL=permission-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-checker.js","sourceRoot":"","sources":["../../../src/structure/utils/permission-checker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Query Builder
3
+ * Builds and optimizes MongoDB-style queries for structure filtering
4
+ */
5
+ import type { QueryFilter, ResolvedQuery, QueryContext, QueryComplexity, DocumentListItem } from '../types/index.js';
6
+ export interface QueryBuilderOptions {
7
+ /** Enable query optimization */
8
+ optimize?: boolean;
9
+ /** Enable query caching */
10
+ cache?: boolean;
11
+ /** Cache TTL in milliseconds */
12
+ cacheTTL?: number;
13
+ /** Maximum query complexity allowed */
14
+ maxComplexity?: number;
15
+ /** Enable query logging */
16
+ enableLogging?: boolean;
17
+ }
18
+ export declare class QueryBuilder {
19
+ private options;
20
+ private cache;
21
+ private complexityWeights;
22
+ constructor(options?: QueryBuilderOptions);
23
+ /**
24
+ * Build query from structure item
25
+ */
26
+ buildQuery(item: DocumentListItem, context?: QueryContext): Promise<ResolvedQuery>;
27
+ /**
28
+ * Calculate query complexity
29
+ */
30
+ calculateComplexity(filter: QueryFilter): QueryComplexity;
31
+ /**
32
+ * Optimize query for better performance
33
+ */
34
+ optimizeQuery(query: ResolvedQuery): ResolvedQuery;
35
+ /**
36
+ * Convert ordering array to sort object
37
+ */
38
+ private convertOrderingToSort;
39
+ /**
40
+ * Optimize filter object
41
+ */
42
+ optimizeFilter(filter: QueryFilter): QueryFilter;
43
+ /**
44
+ * Merge multiple filters
45
+ */
46
+ private mergeFilters;
47
+ /**
48
+ * Optimize $and conditions
49
+ */
50
+ private optimizeAndConditions;
51
+ /**
52
+ * Optimize $or conditions
53
+ */
54
+ private optimizeOrConditions;
55
+ /**
56
+ * Estimate query cost
57
+ */
58
+ private estimateQueryCost;
59
+ /**
60
+ * Generate cache key
61
+ */
62
+ private generateCacheKey;
63
+ /**
64
+ * Clear query cache
65
+ */
66
+ clearCache(): void;
67
+ /**
68
+ * Get cache statistics
69
+ */
70
+ getCacheStats(): {
71
+ size: number;
72
+ keys: string[];
73
+ };
74
+ /**
75
+ * Validate filter structure
76
+ */
77
+ validateFilter(filter: QueryFilter): {
78
+ valid: boolean;
79
+ errors: string[];
80
+ };
81
+ }
82
+ //# sourceMappingURL=query-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../../src/structure/utils/query-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,eAAe,EACf,gBAAgB,EAEjB,MAAM,mBAAmB,CAAA;AAI1B,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IAEf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,2BAA2B;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,qBAAa,YAAY;IAkCX,OAAO,CAAC,OAAO;IAjC3B,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,iBAAiB,CA8BxB;gBAEmB,OAAO,GAAE,mBAAwB;IAWrD;;OAEG;IACG,UAAU,CACd,IAAI,EAAE,gBAAgB,EACtB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC;IAyFzB;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe;IA6EzD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa;IAmBlD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IAgEhD;;OAEG;IACH,OAAO,CAAC,YAAY;IA2CpB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8C7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;IAOjD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAyD1E"}