@kyro-cms/core 0.1.5 → 0.1.7
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.
- package/dist/WebhookService-BCgL1bLF.d.cts +112 -0
- package/dist/WebhookService-BPVJUgTl.d.ts +112 -0
- package/dist/{base-DlhVlwnN.d.cts → base-B0Y6isUJ.d.cts} +1 -1
- package/dist/{base-CQkFzqQl.d.ts → base-DaP-5PPG.d.ts} +1 -1
- package/dist/bootstrap-BMWVB2T6.cjs +31 -0
- package/dist/{bootstrap-X6TP3NKX.cjs.map → bootstrap-BMWVB2T6.cjs.map} +1 -1
- package/dist/bootstrap-LL6O7PWO.js +6 -0
- package/dist/{bootstrap-BDTTUGY2.js.map → bootstrap-LL6O7PWO.js.map} +1 -1
- package/dist/{chunk-3VZCX4DF.cjs → chunk-42JPONZU.cjs} +77 -14
- package/dist/chunk-42JPONZU.cjs.map +1 -0
- package/dist/{chunk-MHS6CPO5.cjs → chunk-4M5PHMUE.cjs} +66 -346
- package/dist/chunk-4M5PHMUE.cjs.map +1 -0
- package/dist/chunk-4PWRCMTQ.cjs +15 -0
- package/dist/chunk-4PWRCMTQ.cjs.map +1 -0
- package/dist/chunk-6COM32WF.js +47 -0
- package/dist/chunk-6COM32WF.js.map +1 -0
- package/dist/chunk-6MSSF46R.js +941 -0
- package/dist/chunk-6MSSF46R.js.map +1 -0
- package/dist/{chunk-TZFJMPCH.cjs → chunk-7YITG2US.cjs} +9 -18
- package/dist/chunk-7YITG2US.cjs.map +1 -0
- package/dist/{chunk-A3RQWHKD.cjs → chunk-BLMFBDBG.cjs} +56 -6
- package/dist/chunk-BLMFBDBG.cjs.map +1 -0
- package/dist/{chunk-EINVJPFM.js → chunk-BTOE3VUK.js} +65 -3
- package/dist/chunk-BTOE3VUK.js.map +1 -0
- package/dist/chunk-E5X75WNB.js +497 -0
- package/dist/chunk-E5X75WNB.js.map +1 -0
- package/dist/chunk-E63IF3MD.cjs +951 -0
- package/dist/chunk-E63IF3MD.cjs.map +1 -0
- package/dist/{chunk-K7QF2QCM.cjs → chunk-FTSSDDZQ.cjs} +7 -3
- package/dist/chunk-FTSSDDZQ.cjs.map +1 -0
- package/dist/chunk-G7VZBCD6.cjs +35 -0
- package/dist/{chunk-5BLDMQED.cjs.map → chunk-G7VZBCD6.cjs.map} +1 -1
- package/dist/{chunk-VMSRTAH7.js → chunk-GLCPGZPM.js} +56 -6
- package/dist/chunk-GLCPGZPM.js.map +1 -0
- package/dist/{chunk-V3B25QOK.cjs → chunk-GVFB5C6O.cjs} +74 -2
- package/dist/chunk-GVFB5C6O.cjs.map +1 -0
- package/dist/chunk-HVSQDZZJ.cjs +765 -0
- package/dist/chunk-HVSQDZZJ.cjs.map +1 -0
- package/dist/chunk-HYC4GNHX.js +758 -0
- package/dist/chunk-HYC4GNHX.js.map +1 -0
- package/dist/chunk-KDVDIZ4Y.cjs +3479 -0
- package/dist/chunk-KDVDIZ4Y.cjs.map +1 -0
- package/dist/{chunk-OG3KX56O.js → chunk-KWGNR4HM.js} +7 -3
- package/dist/chunk-KWGNR4HM.js.map +1 -0
- package/dist/chunk-LIJVWQKU.cjs +256 -0
- package/dist/chunk-LIJVWQKU.cjs.map +1 -0
- package/dist/{chunk-XTZSUDSI.js → chunk-LTRCYJAG.js} +3 -18
- package/dist/chunk-LTRCYJAG.js.map +1 -0
- package/dist/{chunk-UEYC46RL.js → chunk-OUGKLCYF.js} +71 -8
- package/dist/chunk-OUGKLCYF.js.map +1 -0
- package/dist/chunk-RONAX6UU.js +3456 -0
- package/dist/chunk-RONAX6UU.js.map +1 -0
- package/dist/{chunk-C74MQIRL.js → chunk-RRYXQMZG.js} +66 -344
- package/dist/chunk-RRYXQMZG.js.map +1 -0
- package/dist/{chunk-QUJ4OLSC.js → chunk-U74F3YZU.js} +87 -7
- package/dist/chunk-U74F3YZU.js.map +1 -0
- package/dist/chunk-VIONYQ2K.cjs +517 -0
- package/dist/chunk-VIONYQ2K.cjs.map +1 -0
- package/dist/chunk-VSTRLXMQ.cjs +50 -0
- package/dist/chunk-VSTRLXMQ.cjs.map +1 -0
- package/dist/chunk-YT7HXXVN.js +13 -0
- package/dist/chunk-YT7HXXVN.js.map +1 -0
- package/dist/chunk-Z6ZWNWWR.js +30 -0
- package/dist/{chunk-NSBPE2FW.js.map → chunk-Z6ZWNWWR.js.map} +1 -1
- package/dist/cli/index.cjs +11 -7
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +11 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/drizzle/index.cjs +20 -17
- package/dist/drizzle/index.d.cts +4 -4
- package/dist/drizzle/index.d.ts +4 -4
- package/dist/drizzle/index.js +4 -5
- package/dist/graphql/index.cjs +4 -4
- package/dist/graphql/index.d.cts +3 -2
- package/dist/graphql/index.d.ts +3 -2
- package/dist/graphql/index.js +2 -2
- package/dist/{index-DI0DRPNv.d.cts → index-BwE4NueJ.d.cts} +1 -1
- package/dist/{index-CMUNCIWQ.d.ts → index-DUKmDSeC.d.cts} +96 -24
- package/dist/{index-BMySjW6o.d.cts → index-DtBi3zP0.d.ts} +96 -24
- package/dist/{index-4fJKLFK2.d.ts → index-DupWTmW6.d.ts} +1 -1
- package/dist/index.cjs +3317 -352
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +379 -105
- package/dist/index.d.ts +379 -105
- package/dist/index.js +3211 -310
- package/dist/index.js.map +1 -1
- package/dist/media-HOT3O7RW.js +4 -0
- package/dist/media-HOT3O7RW.js.map +1 -0
- package/dist/media-WKP5AOX2.cjs +17 -0
- package/dist/media-WKP5AOX2.cjs.map +1 -0
- package/dist/mongodb/index.cjs +1 -1
- package/dist/mongodb/index.d.cts +2 -2
- package/dist/mongodb/index.d.ts +2 -2
- package/dist/mongodb/index.js +1 -1
- package/dist/mysql-media-AI6YK767.cjs +48 -0
- package/dist/mysql-media-AI6YK767.cjs.map +1 -0
- package/dist/mysql-media-CDZUS7YX.js +45 -0
- package/dist/mysql-media-CDZUS7YX.js.map +1 -0
- package/dist/postgres-auth-adapter-EVRPO7BQ.cjs +14 -0
- package/dist/{postgres-auth-adapter-VK6GY7LX.cjs.map → postgres-auth-adapter-EVRPO7BQ.cjs.map} +1 -1
- package/dist/postgres-auth-adapter-OTRWSTT5.js +5 -0
- package/dist/{postgres-auth-adapter-REJFUMP7.js.map → postgres-auth-adapter-OTRWSTT5.js.map} +1 -1
- package/dist/redis-adapter-2N6VA7BI.cjs +13 -0
- package/dist/{redis-adapter-LBLNKGNS.cjs.map → redis-adapter-2N6VA7BI.cjs.map} +1 -1
- package/dist/redis-adapter-RA24FNCX.js +4 -0
- package/dist/{redis-adapter-4YDY4LWE.js.map → redis-adapter-RA24FNCX.js.map} +1 -1
- package/dist/rest/index.cjs +7 -5
- package/dist/rest/index.d.cts +29 -3
- package/dist/rest/index.d.ts +29 -3
- package/dist/rest/index.js +5 -3
- package/dist/schema-CNB2DDTX.js +6 -0
- package/dist/schema-CNB2DDTX.js.map +1 -0
- package/dist/schema-Y777CQQS.cjs +67 -0
- package/dist/schema-Y777CQQS.cjs.map +1 -0
- package/dist/templates/index.cjs +24 -28
- package/dist/templates/index.d.cts +2 -4
- package/dist/templates/index.d.ts +2 -4
- package/dist/templates/index.js +2 -2
- package/dist/trpc/index.cjs +12 -12
- package/dist/trpc/index.d.cts +19 -14
- package/dist/trpc/index.d.ts +19 -14
- package/dist/trpc/index.js +3 -3
- package/dist/{types-BGM5MV_K.d.cts → types-BM0s_YOy.d.cts} +67 -35
- package/dist/{types-BGM5MV_K.d.ts → types-BM0s_YOy.d.ts} +67 -35
- package/dist/ws/index.cjs +1 -1
- package/dist/ws/index.js +1 -1
- package/package.json +11 -1
- package/dist/bootstrap-BDTTUGY2.js +0 -4
- package/dist/bootstrap-X6TP3NKX.cjs +0 -29
- package/dist/chunk-3QX6KG2S.js +0 -2125
- package/dist/chunk-3QX6KG2S.js.map +0 -1
- package/dist/chunk-3VZCX4DF.cjs.map +0 -1
- package/dist/chunk-5BLDMQED.cjs +0 -18
- package/dist/chunk-7G6EVYCU.cjs +0 -94
- package/dist/chunk-7G6EVYCU.cjs.map +0 -1
- package/dist/chunk-A3RQWHKD.cjs.map +0 -1
- package/dist/chunk-C74MQIRL.js.map +0 -1
- package/dist/chunk-EINVJPFM.js.map +0 -1
- package/dist/chunk-F5B64H5S.cjs +0 -2149
- package/dist/chunk-F5B64H5S.cjs.map +0 -1
- package/dist/chunk-K7QF2QCM.cjs.map +0 -1
- package/dist/chunk-LRTZJJPD.js +0 -86
- package/dist/chunk-LRTZJJPD.js.map +0 -1
- package/dist/chunk-MHS6CPO5.cjs.map +0 -1
- package/dist/chunk-NSBPE2FW.js +0 -15
- package/dist/chunk-OG3KX56O.js.map +0 -1
- package/dist/chunk-QUJ4OLSC.js.map +0 -1
- package/dist/chunk-R3XIBBAW.cjs +0 -34
- package/dist/chunk-R3XIBBAW.cjs.map +0 -1
- package/dist/chunk-SDMNUYVU.js +0 -30
- package/dist/chunk-SDMNUYVU.js.map +0 -1
- package/dist/chunk-TZFJMPCH.cjs.map +0 -1
- package/dist/chunk-UEG7KMKC.cjs +0 -228
- package/dist/chunk-UEG7KMKC.cjs.map +0 -1
- package/dist/chunk-UEYC46RL.js.map +0 -1
- package/dist/chunk-V3B25QOK.cjs.map +0 -1
- package/dist/chunk-VMSRTAH7.js.map +0 -1
- package/dist/chunk-XTZSUDSI.js.map +0 -1
- package/dist/chunk-YD7Y25W7.cjs +0 -176
- package/dist/chunk-YD7Y25W7.cjs.map +0 -1
- package/dist/chunk-YPAFJ7EV.js +0 -225
- package/dist/chunk-YPAFJ7EV.js.map +0 -1
- package/dist/database-7CJOXEZR.js +0 -5
- package/dist/database-7CJOXEZR.js.map +0 -1
- package/dist/database-QOIV44GT.cjs +0 -22
- package/dist/database-QOIV44GT.cjs.map +0 -1
- package/dist/postgres-auth-adapter-REJFUMP7.js +0 -5
- package/dist/postgres-auth-adapter-VK6GY7LX.cjs +0 -14
- package/dist/redis-adapter-4YDY4LWE.js +0 -4
- package/dist/redis-adapter-LBLNKGNS.cjs +0 -13
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/templates/minimal.ts","../src/templates/blog.ts","../src/templates/ecommerce.ts","../src/templates/kitchen-sink.ts","../src/templates/media.ts","../src/templates/settings/site.ts","../src/templates/settings/seo.ts","../src/templates/settings/social.ts","../src/templates/settings/email.ts","../src/templates/settings/storage.ts","../src/templates/settings/access.ts","../src/templates/settings/store.ts","../src/templates/settings/payments.ts","../src/templates/settings/index.ts","../src/templates/index.ts"],"names":[],"mappings":"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","file":"chunk-3QX6KG2S.js","sourcesContent":["import type { CollectionConfig } from '../registry/types.js';\n\nexport const minimalCollections: Record<string, CollectionConfig> = {\n posts: {\n slug: 'posts',\n label: 'Posts',\n labelPlural: 'Posts',\n singularLabel: 'Post',\n admin: {\n useAsTitle: 'title',\n defaultColumns: ['title', 'status', 'createdAt'],\n description: 'Blog posts and articles'\n },\n fields: [\n {\n name: 'title',\n type: 'text',\n required: true,\n label: 'Title',\n admin: { description: 'The post title' }\n },\n {\n name: 'slug',\n type: 'text',\n required: true,\n label: 'Slug',\n admin: { description: 'URL-friendly identifier' }\n },\n {\n name: 'content',\n type: 'richtext',\n label: 'Content'\n },\n {\n name: 'status',\n type: 'select',\n label: 'Status',\n options: [\n { label: 'Draft', value: 'draft' },\n { label: 'Published', value: 'published' }\n ],\n defaultValue: 'draft',\n admin: {\n description: 'Publication status'\n }\n },\n {\n name: 'publishedAt',\n type: 'date',\n label: 'Published At',\n admin: { description: 'When to publish this post' }\n }\n ],\n timestamps: true\n }\n};\n","import type { CollectionConfig } from \"../registry/types.js\";\n\nexport const blogCollections: Record<string, CollectionConfig> = {\n posts: {\n slug: \"posts\",\n label: \"Posts\",\n labelPlural: \"Posts\",\n singularLabel: \"Post\",\n admin: {\n useAsTitle: \"title\",\n defaultColumns: [\"title\", \"category\", \"status\", \"createdAt\"],\n description: \"Blog posts and articles\",\n },\n fields: [\n {\n name: \"title\",\n type: \"text\",\n required: true,\n label: \"Title\",\n admin: {\n description: \"The main title of the post as it will appear publicly.\",\n },\n },\n {\n name: \"slug\",\n type: \"text\",\n required: true,\n label: \"Slug\",\n admin: { description: \"The URL-friendly identifier for the post.\" },\n },\n {\n name: \"excerpt\",\n type: \"textarea\",\n label: \"Excerpt\",\n admin: {\n description:\n \"A brief summary of the post used in listings and SEO meta tags.\",\n },\n },\n {\n name: \"content\",\n type: \"richtext\",\n label: \"Content\",\n admin: {\n description: \"The comprehensive body content of the blog post.\",\n },\n },\n {\n name: \"featuredImage\",\n type: \"upload\",\n label: \"Featured Image\",\n relationTo: \"media\",\n admin: {\n description: \"The primary visual used to represent this post.\",\n },\n },\n {\n name: \"category\",\n type: \"relationship\",\n label: \"Category\",\n relationTo: \"categories\",\n admin: {\n description: \"Select the primary category this post belongs to.\",\n },\n },\n {\n name: \"tags\",\n type: \"array\",\n label: \"Tags\",\n fields: [{ name: \"tag\", type: \"text\" }],\n },\n {\n name: \"status\",\n type: \"select\",\n label: \"Status\",\n options: [\n { label: \"Draft\", value: \"draft\" },\n { label: \"Published\", value: \"published\" },\n ],\n defaultValue: \"draft\",\n },\n {\n name: \"publishedAt\",\n type: \"date\",\n label: \"Published At\",\n },\n ],\n timestamps: true,\n },\n\n categories: {\n slug: \"categories\",\n label: \"Categories\",\n labelPlural: \"Categories\",\n singularLabel: \"Category\",\n admin: {\n useAsTitle: \"name\",\n defaultColumns: [\"name\", \"slug\"],\n description: \"Post categories\",\n },\n fields: [\n {\n name: \"name\",\n type: \"text\",\n required: true,\n label: \"Name\",\n },\n {\n name: \"slug\",\n type: \"text\",\n required: true,\n label: \"Slug\",\n },\n {\n name: \"description\",\n type: \"textarea\",\n label: \"Description\",\n },\n {\n name: \"parent\",\n type: \"relationship\",\n label: \"Parent Category\",\n relationTo: \"categories\",\n },\n ],\n timestamps: true,\n },\n};\n\nimport type { GlobalConfig } from \"../registry/types.js\";\n\nexport const blogGlobals: GlobalConfig[] = [];\n","import type { CollectionConfig } from \"../registry/types.js\";\nimport type { GlobalConfig } from \"../registry/types.js\";\n\nexport const ecommerceCollections: Record<string, CollectionConfig> = {\n products: {\n slug: \"products\",\n label: \"Products\",\n labelPlural: \"Products\",\n singularLabel: \"Product\",\n admin: {\n useAsTitle: \"title\",\n defaultColumns: [\"title\", \"price\", \"status\", \"inventory\"],\n description: \"Product catalog\",\n },\n fields: [\n {\n name: \"title\",\n type: \"text\",\n required: true,\n label: \"Title\",\n },\n {\n name: \"slug\",\n type: \"text\",\n required: true,\n label: \"Slug\",\n },\n {\n name: \"description\",\n type: \"richtext\",\n label: \"Description\",\n },\n {\n name: \"price\",\n type: \"number\",\n required: true,\n label: \"Price\",\n },\n {\n name: \"compareAtPrice\",\n type: \"number\",\n label: \"Compare at Price\",\n admin: { description: \"Original price for sale display\" },\n },\n {\n name: \"costPrice\",\n type: \"number\",\n label: \"Cost Price\",\n admin: { description: \"For profit calculation\" },\n },\n {\n name: \"sku\",\n type: \"text\",\n required: true,\n label: \"SKU\",\n },\n {\n name: \"barcode\",\n type: \"text\",\n label: \"Barcode\",\n },\n {\n name: \"status\",\n type: \"select\",\n label: \"Status\",\n options: [\n { label: \"Draft\", value: \"draft\" },\n { label: \"Active\", value: \"active\" },\n { label: \"Archived\", value: \"archived\" },\n ],\n defaultValue: \"draft\",\n },\n {\n name: \"images\",\n type: \"array\",\n label: \"Images\",\n fields: [\n { name: \"url\", type: \"text\", label: \"URL\" },\n { name: \"alt\", type: \"text\", label: \"Alt Text\" },\n ],\n },\n {\n name: \"category\",\n type: \"relationship\",\n label: \"Category\",\n relationTo: \"categories\",\n },\n {\n name: \"inventory\",\n type: \"number\",\n label: \"Inventory\",\n defaultValue: 0,\n },\n ],\n timestamps: true,\n },\n\n categories: {\n slug: \"categories\",\n label: \"Categories\",\n labelPlural: \"Categories\",\n singularLabel: \"Category\",\n admin: {\n useAsTitle: \"name\",\n defaultColumns: [\"name\", \"slug\", \"productCount\"],\n description: \"Product categories\",\n },\n fields: [\n { name: \"name\", type: \"text\", required: true, label: \"Name\" },\n { name: \"slug\", type: \"text\", required: true, label: \"Slug\" },\n { name: \"description\", type: \"textarea\", label: \"Description\" },\n { name: \"image\", type: \"text\", label: \"Image URL\" },\n {\n name: \"parent\",\n type: \"relationship\",\n label: \"Parent Category\",\n relationTo: \"categories\",\n },\n ],\n timestamps: true,\n },\n\n customers: {\n slug: \"customers\",\n label: \"Customers\",\n labelPlural: \"Customers\",\n singularLabel: \"Customer\",\n admin: {\n useAsTitle: \"email\",\n defaultColumns: [\n \"email\",\n \"firstName\",\n \"lastName\",\n \"orderCount\",\n \"createdAt\",\n ],\n description: \"Customer accounts\",\n },\n fields: [\n { name: \"email\", type: \"email\", required: true, label: \"Email\" },\n { name: \"firstName\", type: \"text\", label: \"First Name\" },\n { name: \"lastName\", type: \"text\", label: \"Last Name\" },\n { name: \"phone\", type: \"text\", label: \"Phone\" },\n {\n name: \"addresses\",\n type: \"array\",\n label: \"Addresses\",\n fields: [\n { name: \"type\", type: \"text\", label: \"Type\" },\n { name: \"line1\", type: \"text\", label: \"Address Line 1\" },\n { name: \"line2\", type: \"text\", label: \"Address Line 2\" },\n { name: \"city\", type: \"text\", label: \"City\" },\n { name: \"state\", type: \"text\", label: \"State\" },\n { name: \"postalCode\", type: \"text\", label: \"Postal Code\" },\n { name: \"country\", type: \"text\", label: \"Country\" },\n ],\n },\n {\n name: \"status\",\n type: \"select\",\n label: \"Status\",\n options: [\n { label: \"Active\", value: \"active\" },\n { label: \"Inactive\", value: \"inactive\" },\n { label: \"Banned\", value: \"banned\" },\n ],\n defaultValue: \"active\",\n },\n ],\n timestamps: true,\n },\n\n orders: {\n slug: \"orders\",\n label: \"Orders\",\n labelPlural: \"Orders\",\n singularLabel: \"Order\",\n admin: {\n useAsTitle: \"orderNumber\",\n defaultColumns: [\n \"orderNumber\",\n \"customer\",\n \"status\",\n \"total\",\n \"createdAt\",\n ],\n description: \"Customer orders\",\n },\n fields: [\n {\n name: \"orderNumber\",\n type: \"text\",\n required: true,\n label: \"Order Number\",\n },\n {\n name: \"customer\",\n type: \"relationship\",\n required: true,\n label: \"Customer\",\n relationTo: \"customers\",\n },\n {\n name: \"status\",\n type: \"select\",\n label: \"Status\",\n options: [\n { label: \"Pending\", value: \"pending\" },\n { label: \"Confirmed\", value: \"confirmed\" },\n { label: \"Processing\", value: \"processing\" },\n { label: \"Shipped\", value: \"shipped\" },\n { label: \"Delivered\", value: \"delivered\" },\n { label: \"Cancelled\", value: \"cancelled\" },\n { label: \"Refunded\", value: \"refunded\" },\n ],\n defaultValue: \"pending\",\n },\n {\n name: \"paymentStatus\",\n type: \"select\",\n label: \"Payment Status\",\n options: [\n { label: \"Pending\", value: \"pending\" },\n { label: \"Paid\", value: \"paid\" },\n { label: \"Failed\", value: \"failed\" },\n { label: \"Refunded\", value: \"refunded\" },\n ],\n defaultValue: \"pending\",\n },\n {\n name: \"items\",\n type: \"array\",\n label: \"Items\",\n fields: [\n { name: \"product\", type: \"text\", label: \"Product\" },\n { name: \"quantity\", type: \"number\", label: \"Quantity\" },\n { name: \"unitPrice\", type: \"number\", label: \"Unit Price\" },\n { name: \"total\", type: \"number\", label: \"Total\" },\n ],\n },\n { name: \"subtotal\", type: \"number\", required: true, label: \"Subtotal\" },\n { name: \"tax\", type: \"number\", label: \"Tax\" },\n { name: \"shipping\", type: \"number\", label: \"Shipping\" },\n { name: \"discount\", type: \"number\", label: \"Discount\" },\n { name: \"total\", type: \"number\", required: true, label: \"Total\" },\n { name: \"notes\", type: \"textarea\", label: \"Notes\" },\n ],\n timestamps: true,\n },\n\n coupons: {\n slug: \"coupons\",\n label: \"Coupons\",\n labelPlural: \"Coupons\",\n singularLabel: \"Coupon\",\n admin: {\n useAsTitle: \"code\",\n defaultColumns: [\"code\", \"type\", \"value\", \"active\", \"expiresAt\"],\n description: \"Discount codes and promotions\",\n },\n fields: [\n { name: \"code\", type: \"text\", required: true, label: \"Code\" },\n {\n name: \"type\",\n type: \"select\",\n required: true,\n label: \"Type\",\n options: [\n { label: \"Percentage\", value: \"percentage\" },\n { label: \"Fixed Amount\", value: \"fixed\" },\n { label: \"Free Shipping\", value: \"freeShipping\" },\n ],\n },\n { name: \"value\", type: \"number\", label: \"Value\" },\n { name: \"minPurchase\", type: \"number\", label: \"Minimum Purchase\" },\n { name: \"maxDiscount\", type: \"number\", label: \"Max Discount\" },\n { name: \"usageLimit\", type: \"number\", label: \"Usage Limit\" },\n {\n name: \"usedCount\",\n type: \"number\",\n defaultValue: 0,\n label: \"Used Count\",\n },\n { name: \"startsAt\", type: \"date\", label: \"Starts At\" },\n { name: \"expiresAt\", type: \"date\", label: \"Expires At\" },\n { name: \"active\", type: \"checkbox\", defaultValue: true, label: \"Active\" },\n ],\n timestamps: true,\n },\n};\n\nexport const ecommerceGlobals: GlobalConfig[] = [];\n","import type { CollectionConfig } from \"../registry/types.js\";\n\nexport const kitchenSinkCollections: Record<string, CollectionConfig> = {\n pages: {\n slug: \"pages\",\n label: \"Pages\",\n labelPlural: \"Pages\",\n singularLabel: \"Page\",\n admin: {\n useAsTitle: \"title\",\n defaultColumns: [\"title\", \"slug\", \"status\", \"updatedAt\"],\n description: \"Static pages with custom layouts\",\n },\n fields: [\n {\n name: \"title\",\n type: \"text\",\n required: true,\n label: \"Title\",\n },\n {\n name: \"slug\",\n type: \"text\",\n required: true,\n label: \"Slug\",\n admin: { description: \"URL-friendly identifier\" },\n },\n {\n name: \"content\",\n type: \"blocks\",\n label: \"Content\",\n blocks: [\n {\n slug: \"hero\",\n label: \"Hero Section\",\n fields: [\n { name: \"heading\", type: \"text\", label: \"Heading\" },\n { name: \"subheading\", type: \"textarea\", label: \"Subheading\" },\n { name: \"ctaText\", type: \"text\", label: \"CTA Button Text\" },\n { name: \"ctaUrl\", type: \"text\", label: \"CTA Button URL\" },\n ],\n },\n {\n slug: \"text\",\n label: \"Text Block\",\n fields: [{ name: \"content\", type: \"richtext\", label: \"Content\" }],\n },\n {\n slug: \"image\",\n label: \"Image\",\n fields: [\n {\n name: \"image\",\n type: \"upload\",\n label: \"Image\",\n relationTo: \"media\",\n },\n { name: \"caption\", type: \"text\", label: \"Caption\" },\n { name: \"alt\", type: \"text\", label: \"Alt Text\" },\n ],\n },\n {\n slug: \"cta\",\n label: \"Call to Action\",\n fields: [\n { name: \"heading\", type: \"text\", label: \"Heading\" },\n { name: \"description\", type: \"textarea\", label: \"Description\" },\n { name: \"buttonText\", type: \"text\", label: \"Button Text\" },\n { name: \"buttonUrl\", type: \"text\", label: \"Button URL\" },\n ],\n },\n ],\n },\n {\n name: \"status\",\n type: \"select\",\n label: \"Status\",\n options: [\n { label: \"Draft\", value: \"draft\" },\n { label: \"Published\", value: \"published\" },\n ],\n defaultValue: \"draft\",\n },\n {\n name: \"publishedAt\",\n type: \"date\",\n label: \"Published At\",\n },\n ],\n timestamps: true,\n },\n\n navigation: {\n slug: \"navigation\",\n label: \"Navigation\",\n labelPlural: \"Navigation\",\n singularLabel: \"Navigation Item\",\n admin: {\n useAsTitle: \"label\",\n defaultColumns: [\"label\", \"url\", \"location\"],\n description: \"Site navigation menus\",\n },\n fields: [\n { name: \"label\", type: \"text\", required: true, label: \"Label\" },\n { name: \"url\", type: \"text\", required: true, label: \"URL\" },\n {\n name: \"location\",\n type: \"select\",\n label: \"Location\",\n options: [\n { label: \"Header\", value: \"header\" },\n { label: \"Footer\", value: \"footer\" },\n { label: \"Mobile\", value: \"mobile\" },\n ],\n },\n { name: \"order\", type: \"number\", label: \"Sort Order\", defaultValue: 0 },\n {\n name: \"parent\",\n type: \"relationship\",\n label: \"Parent Item\",\n relationTo: \"navigation\",\n },\n {\n name: \"newTab\",\n type: \"checkbox\",\n label: \"Open in New Tab\",\n defaultValue: false,\n },\n ],\n timestamps: true,\n },\n};\n","// ============================================================================\n// Media Collection Template\n// ============================================================================\n\nimport type { CollectionConfig } from \"../registry/types.js\";\n\nexport const mediaCollection: CollectionConfig = {\n slug: \"media\",\n label: \"Media Library\",\n\n admin: {\n useAsTitle: \"title\",\n defaultColumns: [\"thumbnailUrl\", \"title\", \"type\", \"fileSize\", \"createdAt\"],\n group: \"content\",\n },\n\n access: {\n read: () => true,\n create: () => true,\n update: () => true,\n delete: () => true,\n },\n\n fields: [\n {\n name: \"title\",\n type: \"text\",\n label: \"Title\",\n required: true,\n admin: {\n description: \"Descriptive title for the file\",\n },\n },\n {\n name: \"filename\",\n type: \"text\",\n label: \"Filename\",\n required: true,\n admin: {\n readOnly: true,\n description: \"System filename (auto-generated)\",\n },\n },\n {\n name: \"originalName\",\n type: \"text\",\n label: \"Original Name\",\n admin: {\n readOnly: true,\n },\n },\n {\n name: \"alt\",\n type: \"text\",\n label: \"Alt Text\",\n admin: {\n description: \"Alternative text for images (accessibility)\",\n },\n },\n {\n name: \"caption\",\n type: \"textarea\",\n label: \"Caption\",\n admin: {\n description: \"Optional caption or description\",\n },\n },\n {\n name: \"type\",\n type: \"select\",\n label: \"File Type\",\n required: true,\n defaultValue: \"document\",\n options: [\n { label: \"Image\", value: \"image\" },\n { label: \"Video\", value: \"video\" },\n { label: \"Audio\", value: \"audio\" },\n { label: \"Document\", value: \"document\" },\n { label: \"Archive\", value: \"archive\" },\n { label: \"Other\", value: \"other\" },\n ],\n admin: {\n readOnly: true,\n },\n },\n {\n name: \"mimeType\",\n type: \"text\",\n label: \"MIME Type\",\n admin: {\n readOnly: true,\n },\n },\n {\n name: \"url\",\n type: \"text\",\n label: \"URL\",\n required: true,\n admin: {\n readOnly: true,\n description: \"Public URL of the file\",\n },\n },\n {\n name: \"thumbnailUrl\",\n type: \"text\",\n label: \"Thumbnail URL\",\n admin: {\n readOnly: true,\n },\n },\n {\n name: \"width\",\n type: \"number\",\n label: \"Width\",\n admin: {\n readOnly: true,\n description: \"Width in pixels (for images/videos)\",\n },\n },\n {\n name: \"height\",\n type: \"number\",\n label: \"Height\",\n admin: {\n readOnly: true,\n description: \"Height in pixels (for images/videos)\",\n },\n },\n {\n name: \"fileSize\",\n type: \"number\",\n label: \"File Size\",\n admin: {\n readOnly: true,\n description: \"Size in bytes\",\n },\n },\n {\n name: \"folder\",\n type: \"text\",\n label: \"Folder\",\n admin: {\n description: \"Folder path for organization (e.g., /products, /blog)\",\n },\n },\n {\n name: \"tags\",\n type: \"array\",\n label: \"Tags\",\n fields: [\n {\n name: \"tag\",\n type: \"text\",\n label: \"Tag\",\n },\n ],\n },\n {\n name: \"focalPoint\",\n type: \"group\",\n label: \"Focal Point\",\n admin: {\n description: \"Point of interest for cropping\",\n },\n fields: [\n {\n name: \"x\",\n type: \"number\",\n label: \"X\",\n defaultValue: 50,\n },\n {\n name: \"y\",\n type: \"number\",\n label: \"Y\",\n defaultValue: 50,\n },\n ],\n },\n {\n name: \"metadata\",\n type: \"json\",\n label: \"Metadata\",\n admin: {\n readOnly: true,\n description: \"Additional file metadata (EXIF, etc.)\",\n },\n },\n {\n name: \"provider\",\n type: \"select\",\n label: \"Storage Provider\",\n defaultValue: \"local\",\n options: [\n { label: \"Local\", value: \"local\" },\n { label: \"AWS S3\", value: \"s3\" },\n { label: \"Cloudinary\", value: \"cloudinary\" },\n { label: \"Imgix\", value: \"imgix\" },\n ],\n admin: {\n readOnly: true,\n },\n },\n {\n name: \"status\",\n type: \"select\",\n label: \"Status\",\n defaultValue: \"active\",\n options: [\n { label: \"Active\", value: \"active\" },\n { label: \"Archived\", value: \"archived\" },\n ],\n },\n {\n name: \"createdAt\",\n type: \"date\",\n label: \"Created\",\n admin: {\n readOnly: true,\n },\n },\n {\n name: \"updatedAt\",\n type: \"date\",\n label: \"Last Modified\",\n admin: {\n readOnly: true,\n },\n },\n ],\n};\n\n// Media Folders Collection\nexport const mediaFoldersCollection: CollectionConfig = {\n slug: \"media-folders\",\n label: \"Media Folders\",\n\n admin: {\n useAsTitle: \"name\",\n hidden: true, // Only accessible via API\n },\n\n access: {\n read: () => true,\n create: () => true,\n update: () => true,\n delete: () => true,\n },\n\n fields: [\n {\n name: \"name\",\n type: \"text\",\n label: \"Name\",\n required: true,\n },\n {\n name: \"slug\",\n type: \"text\",\n label: \"Slug\",\n required: true,\n admin: {\n description: \"URL-friendly identifier\",\n },\n },\n {\n name: \"parent\",\n type: \"relationship\",\n label: \"Parent Folder\",\n relationTo: \"media-folders\",\n },\n {\n name: \"path\",\n type: \"text\",\n label: \"Full Path\",\n admin: {\n readOnly: true,\n description: \"Complete folder path\",\n },\n },\n {\n name: \"fileCount\",\n type: \"number\",\n label: \"File Count\",\n admin: {\n readOnly: true,\n },\n },\n ],\n};\n\n// Export all media collections\nexport const mediaCollections = [mediaCollection, mediaFoldersCollection];\n","// ============================================================================\n// Site Settings Global\n// ============================================================================\n\nimport type { GlobalConfig } from \"../../registry/types.js\";\n\nexport const siteSettingsGlobal: GlobalConfig = {\n slug: \"site-settings\",\n label: \"Site Settings\",\n \n\n admin: {\n group: \"settings\",\n \n },\n\n access: {\n read: () => true,\n update: () => true,\n },\n\n fields: [\n {\n name: \"siteName\",\n type: \"text\",\n label: \"Site Name\",\n required: true,\n admin: {\n \n },\n },\n {\n name: \"siteDescription\",\n type: \"textarea\",\n label: \"Site Description\",\n admin: {\n \n },\n },\n {\n name: \"siteLogo\",\n type: \"relationship\",\n label: \"Site Logo\",\n relationTo: \"media\",\n admin: {\n \n },\n },\n {\n name: \"siteFavicon\",\n type: \"relationship\",\n label: \"Favicon\",\n relationTo: \"media\",\n admin: {\n \n },\n },\n {\n name: \"siteOgImage\",\n type: \"relationship\",\n label: \"Default OG Image\",\n relationTo: \"media\",\n admin: {\n \n },\n },\n {\n name: \"siteUrl\",\n type: \"text\",\n label: \"Site URL\",\n admin: {\n \n },\n },\n {\n name: \"language\",\n type: \"select\",\n label: \"Default Language\",\n defaultValue: \"en\",\n options: [\n { label: \"English\", value: \"en\" },\n { label: \"Spanish\", value: \"es\" },\n { label: \"French\", value: \"fr\" },\n { label: \"German\", value: \"de\" },\n { label: \"Portuguese\", value: \"pt\" },\n { label: \"Italian\", value: \"it\" },\n { label: \"Dutch\", value: \"nl\" },\n { label: \"Russian\", value: \"ru\" },\n { label: \"Japanese\", value: \"ja\" },\n { label: \"Chinese\", value: \"zh\" },\n { label: \"Korean\", value: \"ko\" },\n { label: \"Arabic\", value: \"ar\" },\n ],\n },\n {\n name: \"timezone\",\n type: \"text\",\n label: \"Timezone\",\n defaultValue: \"UTC\",\n admin: {\n \n },\n },\n {\n name: \"logo\",\n type: \"group\",\n label: \"Logo Settings\",\n fields: [\n {\n name: \"width\",\n type: \"number\",\n label: \"Max Width (px)\",\n },\n {\n name: \"height\",\n type: \"number\",\n label: \"Max Height (px)\",\n },\n {\n name: \"altText\",\n type: \"text\",\n label: \"Alt Text\",\n },\n ],\n },\n {\n name: \"analytics\",\n type: \"group\",\n label: \"Analytics\",\n fields: [\n {\n name: \"googleAnalyticsId\",\n type: \"text\",\n label: \"Google Analytics ID\",\n admin: {\n \n },\n },\n {\n name: \"googleTagManagerId\",\n type: \"text\",\n label: \"Google Tag Manager ID\",\n admin: {\n \n },\n },\n {\n name: \"plausibleDomain\",\n type: \"text\",\n label: \"Plausible Domain\",\n admin: {\n \n },\n },\n {\n name: \"mixpanelToken\",\n type: \"password\",\n label: \"Mixpanel Token\",\n },\n ],\n },\n ],\n};\n","// ============================================================================\n// SEO Settings Global\n// ============================================================================\n\nimport type { GlobalConfig } from \"../../registry/types.js\";\n\nexport const seoSettingsGlobal: GlobalConfig = {\n slug: \"seo-settings\",\n label: \"SEO Settings\",\n \n\n admin: {\n group: \"settings\",\n \n },\n\n access: {\n read: () => true,\n update: () => true,\n },\n\n fields: [\n {\n name: \"defaultTitle\",\n type: \"text\",\n label: \"Default Title\",\n admin: {\n \n },\n },\n {\n name: \"defaultDescription\",\n type: \"textarea\",\n label: \"Default Description\",\n admin: {\n \n },\n },\n {\n name: \"titleTemplate\",\n type: \"text\",\n label: \"Title Template\",\n defaultValue: \"{{title}} | {{siteName}}\",\n admin: {\n \n },\n },\n {\n name: \"siteNameInTitle\",\n type: \"checkbox\",\n label: \"Include Site Name in Title\",\n defaultValue: true,\n },\n {\n name: \"separator\",\n type: \"text\",\n label: \"Title Separator\",\n defaultValue: \" | \",\n admin: {\n \n },\n },\n {\n name: \"meta\",\n type: \"group\",\n label: \"Meta Settings\",\n fields: [\n {\n name: \"robots\",\n type: \"text\",\n label: \"Robots Meta\",\n defaultValue: \"index, follow\",\n admin: {\n \n },\n },\n {\n name: \"canonicalUrl\",\n type: \"text\",\n label: \"Canonical URL\",\n admin: {\n \n },\n },\n {\n name: \"ogType\",\n type: \"select\",\n label: \"Default OG Type\",\n defaultValue: \"website\",\n options: [\n { label: \"Website\", value: \"website\" },\n { label: \"Article\", value: \"article\" },\n { label: \"Product\", value: \"product\" },\n { label: \"Book\", value: \"book\" },\n { label: \"Music\", value: \"music\" },\n { label: \"Video\", value: \"video\" },\n ],\n },\n ],\n },\n {\n name: \"sitemap\",\n type: \"checkbox\",\n label: \"Enable XML Sitemap\",\n defaultValue: true,\n admin: {\n \n },\n },\n {\n name: \"sitemapUrls\",\n type: \"number\",\n label: \"Sitemap URL Limit\",\n defaultValue: 50000,\n admin: {\n \n },\n },\n {\n name: \"robotsTxt\",\n type: \"textarea\",\n label: \"Custom robots.txt\",\n admin: {\n \n },\n },\n {\n name: \"social\",\n type: \"group\",\n label: \"Social Media\",\n fields: [\n {\n name: \"twitterHandle\",\n type: \"text\",\n label: \"Twitter/X Handle\",\n admin: {\n \n },\n },\n {\n name: \"twitterCardType\",\n type: \"select\",\n label: \"Twitter Card Type\",\n defaultValue: \"summary_large_image\",\n options: [\n { label: \"Summary\", value: \"summary\" },\n { label: \"Summary with Large Image\", value: \"summary_large_image\" },\n { label: \"App\", value: \"app\" },\n { label: \"Player\", value: \"player\" },\n ],\n },\n {\n name: \"fbAppId\",\n type: \"text\",\n label: \"Facebook App ID\",\n },\n ],\n },\n {\n name: \"advanced\",\n type: \"group\",\n label: \"Advanced\",\n fields: [\n {\n name: \"jsonLdEnabled\",\n type: \"checkbox\",\n label: \"Enable JSON-LD\",\n defaultValue: true,\n admin: {\n \n },\n },\n {\n name: \"breadcrumbsEnabled\",\n type: \"checkbox\",\n label: \"Enable Breadcrumbs\",\n defaultValue: true,\n },\n {\n name: \"paginationSize\",\n type: \"number\",\n label: \"Default Pagination Size\",\n defaultValue: 10,\n },\n ],\n },\n ],\n};\n","// ============================================================================\n// Social Media Settings Global\n// ============================================================================\n\nimport type { GlobalConfig } from \"../../registry/types.js\";\n\nexport const socialSettingsGlobal: GlobalConfig = {\n slug: \"social-settings\",\n label: \"Social Media\",\n \n\n admin: {\n group: \"settings\",\n \n },\n\n access: {\n read: () => true,\n update: () => true,\n },\n\n fields: [\n {\n name: \"facebook\",\n type: \"text\",\n label: \"Facebook\",\n admin: {\n \n },\n },\n {\n name: \"twitter\",\n type: \"text\",\n label: \"Twitter/X\",\n },\n {\n name: \"instagram\",\n type: \"text\",\n label: \"Instagram\",\n },\n {\n name: \"linkedin\",\n type: \"text\",\n label: \"LinkedIn\",\n },\n {\n name: \"youtube\",\n type: \"text\",\n label: \"YouTube\",\n },\n {\n name: \"tiktok\",\n type: \"text\",\n label: \"TikTok\",\n },\n {\n name: \"pinterest\",\n type: \"text\",\n label: \"Pinterest\",\n },\n {\n name: \"discord\",\n type: \"text\",\n label: \"Discord\",\n },\n {\n name: \"twitch\",\n type: \"text\",\n label: \"Twitch\",\n },\n {\n name: \"github\",\n type: \"text\",\n label: \"GitHub\",\n },\n {\n name: \"mastodon\",\n type: \"text\",\n label: \"Mastodon\",\n },\n ],\n};\n","// ============================================================================\n// Email Settings Global\n// ============================================================================\n\nimport type { GlobalConfig } from \"../../registry/types.js\";\n\nexport const emailSettingsGlobal: GlobalConfig = {\n slug: \"email-settings\",\n label: \"Email Settings\",\n \n\n admin: {\n group: \"settings\",\n \n },\n\n access: {\n read: () => true,\n update: () => true,\n },\n\n fields: [\n {\n name: \"fromName\",\n type: \"text\",\n label: \"From Name\",\n admin: {\n \n },\n },\n {\n name: \"fromEmail\",\n type: \"email\",\n label: \"From Email\",\n required: true,\n admin: {\n \n },\n },\n {\n name: \"replyTo\",\n type: \"email\",\n label: \"Reply-To Email\",\n admin: {\n \n },\n },\n {\n name: \"provider\",\n type: \"select\",\n label: \"Email Provider\",\n defaultValue: \"smtp\",\n options: [\n { label: \"SMTP\", value: \"smtp\" },\n { label: \"SendGrid\", value: \"sendgrid\" },\n { label: \"Mailgun\", value: \"mailgun\" },\n { label: \"AWS SES\", value: \"ses\" },\n { label: \"Resend\", value: \"resend\" },\n ],\n },\n {\n name: \"smtp\",\n type: \"group\",\n label: \"SMTP Settings\",\n fields: [\n {\n name: \"host\",\n type: \"text\",\n label: \"Host\",\n admin: {\n placeholder: \"smtp.example.com\",\n },\n },\n {\n name: \"port\",\n type: \"number\",\n label: \"Port\",\n defaultValue: 587,\n },\n {\n name: \"secure\",\n type: \"checkbox\",\n label: \"Use TLS/SSL\",\n defaultValue: true,\n },\n {\n name: \"username\",\n type: \"text\",\n label: \"Username\",\n },\n {\n name: \"password\",\n type: \"password\",\n label: \"Password\",\n },\n ],\n },\n {\n name: \"api\",\n type: \"group\",\n label: \"API Settings\",\n admin: {\n \n },\n fields: [\n {\n name: \"apiKey\",\n type: \"password\",\n label: \"API Key\",\n },\n {\n name: \"domain\",\n type: \"text\",\n label: \"Domain\",\n admin: {\n \n },\n },\n {\n name: \"webhookSecret\",\n type: \"password\",\n label: \"Webhook Secret\",\n admin: {\n \n },\n },\n ],\n },\n {\n name: \"testEmail\",\n type: \"email\",\n label: \"Test Email\",\n admin: {\n \n },\n },\n ],\n};\n","// ============================================================================\n// Storage Settings Global\n// ============================================================================\n\nimport type { GlobalConfig } from \"../../registry/types.js\";\n\nexport const storageSettingsGlobal: GlobalConfig = {\n slug: \"storage-settings\",\n label: \"Storage Settings\",\n \n\n admin: {\n group: \"settings\",\n \n },\n\n access: {\n read: () => true,\n update: () => true,\n },\n\n fields: [\n {\n name: \"provider\",\n type: \"select\",\n label: \"Storage Provider\",\n defaultValue: \"local\",\n options: [\n { label: \"Local Server\", value: \"local\" },\n { label: \"AWS S3\", value: \"s3\" },\n { label: \"Cloudinary\", value: \"cloudinary\" },\n { label: \"Imgix (Transforms Only)\", value: \"imgix\" },\n ],\n },\n {\n name: \"local\",\n type: \"group\",\n label: \"Local Storage\",\n fields: [\n {\n name: \"uploadDir\",\n type: \"text\",\n label: \"Upload Directory\",\n defaultValue: \"./public/uploads\",\n admin: {\n \n },\n },\n {\n name: \"baseUrl\",\n type: \"text\",\n label: \"Base URL\",\n defaultValue: \"/uploads\",\n admin: {\n \n },\n },\n ],\n },\n {\n name: \"s3\",\n type: \"group\",\n label: \"AWS S3 Settings\",\n fields: [\n {\n name: \"bucket\",\n type: \"text\",\n label: \"Bucket Name\",\n },\n {\n name: \"region\",\n type: \"text\",\n label: \"Region\",\n admin: {\n placeholder: \"us-east-1\",\n },\n },\n {\n name: \"accessKeyId\",\n type: \"password\",\n label: \"Access Key ID\",\n },\n {\n name: \"secretAccessKey\",\n type: \"password\",\n label: \"Secret Access Key\",\n },\n {\n name: \"cdnUrl\",\n type: \"text\",\n label: \"CDN URL\",\n admin: {\n \n },\n },\n {\n name: \"prefix\",\n type: \"text\",\n label: \"Path Prefix\",\n admin: {\n \n },\n },\n ],\n },\n {\n name: \"cloudinary\",\n type: \"group\",\n label: \"Cloudinary Settings\",\n fields: [\n {\n name: \"cloudName\",\n type: \"text\",\n label: \"Cloud Name\",\n },\n {\n name: \"apiKey\",\n type: \"password\",\n label: \"API Key\",\n },\n {\n name: \"apiSecret\",\n type: \"password\",\n label: \"API Secret\",\n },\n {\n name: \"folder\",\n type: \"text\",\n label: \"Folder\",\n admin: {\n \n },\n },\n ],\n },\n {\n name: \"imgix\",\n type: \"group\",\n label: \"Imgix Settings\",\n fields: [\n {\n name: \"domain\",\n type: \"text\",\n label: \"Imgix Domain\",\n admin: {\n placeholder: \"your-source.imgix.net\",\n \n },\n },\n {\n name: \"signKey\",\n type: \"password\",\n label: \"Signing Key\",\n admin: {\n \n },\n },\n ],\n },\n {\n name: \"limits\",\n type: \"group\",\n label: \"Upload Limits\",\n fields: [\n {\n name: \"maxFileSize\",\n type: \"number\",\n label: \"Max File Size (bytes)\",\n defaultValue: 10485760,\n admin: {\n \n },\n },\n {\n name: \"allowedTypes\",\n type: \"json\",\n label: \"Allowed MIME Types\",\n defaultValue: [\"image/*\", \"video/*\", \"audio/*\", \"application/pdf\"],\n admin: {\n \n },\n },\n {\n name: \"maxFilesPerUpload\",\n type: \"number\",\n label: \"Max Files per Upload\",\n defaultValue: 10,\n },\n ],\n },\n ],\n};\n","// ============================================================================\n// Access Control Settings Global\n// ============================================================================\n\nimport type { GlobalConfig } from \"../../registry/types.js\";\n\nexport const accessSettingsGlobal: GlobalConfig = {\n slug: \"access-settings\",\n label: \"Access Control\",\n \n\n admin: {\n group: \"settings\",\n \n },\n\n access: {\n read: () => true,\n update: () => true,\n },\n\n fields: [\n {\n name: \"enablePublicAccess\",\n type: \"checkbox\",\n label: \"Enable Public Access\",\n defaultValue: true,\n admin: {\n \n },\n },\n {\n name: \"defaultCollectionAccess\",\n type: \"select\",\n label: \"Default Collection Access\",\n defaultValue: \"read\",\n options: [\n { label: \"Read Only\", value: \"read\" },\n { label: \"Read & Create\", value: \"create\" },\n { label: \"Read & Create & Update\", value: \"update\" },\n { label: \"Full Access\", value: \"admin\" },\n { label: \"No Access\", value: \"none\" },\n ],\n admin: {\n \n },\n },\n {\n name: \"apiAccess\",\n type: \"group\",\n label: \"API Access\",\n fields: [\n {\n name: \"restEnabled\",\n type: \"checkbox\",\n label: \"Enable REST API\",\n defaultValue: true,\n },\n {\n name: \"graphqlEnabled\",\n type: \"checkbox\",\n label: \"Enable GraphQL\",\n defaultValue: false,\n },\n {\n name: \"trpcEnabled\",\n type: \"checkbox\",\n label: \"Enable tRPC\",\n defaultValue: false,\n },\n {\n name: \"wsEnabled\",\n type: \"checkbox\",\n label: \"Enable WebSocket\",\n defaultValue: false,\n },\n {\n name: \"requireAuth\",\n type: \"checkbox\",\n label: \"Require Authentication\",\n defaultValue: false,\n admin: {\n \n },\n },\n {\n name: \"allowedOrigins\",\n type: \"json\",\n label: \"CORS Allowed Origins\",\n admin: {\n \n },\n },\n ],\n },\n {\n name: \"rateLimiting\",\n type: \"group\",\n label: \"Rate Limiting\",\n fields: [\n {\n name: \"enabled\",\n type: \"checkbox\",\n label: \"Enable Rate Limiting\",\n defaultValue: true,\n },\n {\n name: \"maxRequests\",\n type: \"number\",\n label: \"Max Requests\",\n defaultValue: 100,\n admin: {\n \n },\n },\n {\n name: \"windowMs\",\n type: \"number\",\n label: \"Window (ms)\",\n defaultValue: 60000,\n admin: {\n \n },\n },\n ],\n },\n ],\n};\n","// ============================================================================\n// E-commerce Store Settings Global\n// ============================================================================\n\nimport type { GlobalConfig } from \"../../registry/types.js\";\n\nconst countryOptions = [\n { label: \"United States\", value: \"US\" },\n { label: \"United Kingdom\", value: \"GB\" },\n { label: \"Canada\", value: \"CA\" },\n { label: \"Australia\", value: \"AU\" },\n { label: \"Germany\", value: \"DE\" },\n { label: \"France\", value: \"FR\" },\n { label: \"Netherlands\", value: \"NL\" },\n { label: \"Belgium\", value: \"BE\" },\n { label: \"Spain\", value: \"ES\" },\n { label: \"Italy\", value: \"IT\" },\n { label: \"Portugal\", value: \"PT\" },\n { label: \"Sweden\", value: \"SE\" },\n { label: \"Norway\", value: \"NO\" },\n { label: \"Denmark\", value: \"DK\" },\n { label: \"Finland\", value: \"FI\" },\n { label: \"Austria\", value: \"AT\" },\n { label: \"Switzerland\", value: \"CH\" },\n { label: \"Japan\", value: \"JP\" },\n { label: \"South Korea\", value: \"KR\" },\n { label: \"China\", value: \"CN\" },\n { label: \"India\", value: \"IN\" },\n { label: \"Brazil\", value: \"BR\" },\n { label: \"Mexico\", value: \"MX\" },\n];\n\nexport const storeSettingsGlobal: GlobalConfig = {\n slug: \"store-settings\",\n label: \"Store Settings\",\n \n\n admin: {\n group: \"settings\",\n \n },\n\n access: {\n read: () => true,\n update: () => true,\n },\n\n fields: [\n {\n name: \"storeName\",\n type: \"text\",\n label: \"Store Name\",\n required: true,\n },\n {\n name: \"storeEmail\",\n type: \"email\",\n label: \"Contact Email\",\n required: true,\n },\n {\n name: \"storePhone\",\n type: \"text\",\n label: \"Phone Number\",\n },\n {\n name: \"address\",\n type: \"group\",\n label: \"Store Address\",\n fields: [\n {\n name: \"street\",\n type: \"text\",\n label: \"Street Address\",\n },\n {\n name: \"city\",\n type: \"text\",\n label: \"City\",\n },\n {\n name: \"state\",\n type: \"text\",\n label: \"State/Province\",\n },\n {\n name: \"postalCode\",\n type: \"text\",\n label: \"Postal Code\",\n },\n {\n name: \"country\",\n type: \"select\",\n label: \"Country\",\n options: countryOptions,\n },\n ],\n },\n {\n name: \"currency\",\n type: \"group\",\n label: \"Currency\",\n fields: [\n {\n name: \"code\",\n type: \"select\",\n label: \"Currency Code\",\n defaultValue: \"USD\",\n options: [\n { label: \"USD - US Dollar\", value: \"USD\" },\n { label: \"EUR - Euro\", value: \"EUR\" },\n { label: \"GBP - British Pound\", value: \"GBP\" },\n { label: \"CAD - Canadian Dollar\", value: \"CAD\" },\n { label: \"AUD - Australian Dollar\", value: \"AUD\" },\n { label: \"JPY - Japanese Yen\", value: \"JPY\" },\n { label: \"CNY - Chinese Yuan\", value: \"CNY\" },\n { label: \"INR - Indian Rupee\", value: \"INR\" },\n { label: \"BRL - Brazilian Real\", value: \"BRL\" },\n { label: \"MXN - Mexican Peso\", value: \"MXN\" },\n ],\n },\n {\n name: \"symbol\",\n type: \"text\",\n label: \"Symbol\",\n defaultValue: \"$\",\n },\n {\n name: \"position\",\n type: \"select\",\n label: \"Symbol Position\",\n defaultValue: \"before\",\n options: [\n { label: \"Before amount\", value: \"before\" },\n { label: \"After amount\", value: \"after\" },\n ],\n },\n {\n name: \"decimals\",\n type: \"number\",\n label: \"Decimal Places\",\n defaultValue: 2,\n },\n ],\n },\n {\n name: \"tax\",\n type: \"group\",\n label: \"Tax Settings\",\n fields: [\n {\n name: \"enabled\",\n type: \"checkbox\",\n label: \"Enable Tax\",\n defaultValue: true,\n },\n {\n name: \"rate\",\n type: \"number\",\n label: \"Tax Rate (%)\",\n admin: {\n placeholder: \"10\",\n },\n },\n {\n name: \"includedInPrice\",\n type: \"checkbox\",\n label: \"Tax Included in Prices\",\n admin: {\n \n },\n },\n {\n name: \"taxId\",\n type: \"text\",\n label: \"Tax ID / VAT Number\",\n },\n ],\n },\n {\n name: \"shipping\",\n type: \"group\",\n label: \"Shipping\",\n fields: [\n {\n name: \"freeShippingThreshold\",\n type: \"number\",\n label: \"Free Shipping Minimum\",\n admin: {\n \n },\n },\n {\n name: \"flatRate\",\n type: \"number\",\n label: \"Flat Rate Shipping\",\n admin: {\n \n },\n },\n {\n name: \"enableLocalPickup\",\n type: \"checkbox\",\n label: \"Enable Local Pickup\",\n defaultValue: true,\n },\n ],\n },\n {\n name: \"orders\",\n type: \"group\",\n label: \"Orders\",\n fields: [\n {\n name: \"orderNumberPrefix\",\n type: \"text\",\n label: \"Order Number Prefix\",\n defaultValue: \"ORD\",\n admin: {\n \n },\n },\n {\n name: \"allowGuestCheckout\",\n type: \"checkbox\",\n label: \"Allow Guest Checkout\",\n defaultValue: true,\n },\n {\n name: \"requirePhone\",\n type: \"checkbox\",\n label: \"Require Phone Number\",\n defaultValue: true,\n },\n ],\n },\n ],\n};\n","// ============================================================================\n// Payment Settings Global\n// ============================================================================\n\nimport type { GlobalConfig } from \"../../registry/types.js\";\n\nexport const paymentSettingsGlobal: GlobalConfig = {\n slug: \"payment-settings\",\n label: \"Payment Settings\",\n \n\n admin: {\n group: \"settings\",\n \n },\n\n access: {\n read: () => true,\n update: () => true,\n },\n\n fields: [\n {\n name: \"testMode\",\n type: \"checkbox\",\n label: \"Test Mode\",\n defaultValue: true,\n admin: {\n \n },\n },\n {\n name: \"stripe\",\n type: \"group\",\n label: \"Stripe\",\n fields: [\n {\n name: \"enabled\",\n type: \"checkbox\",\n label: \"Enable Stripe\",\n defaultValue: false,\n },\n {\n name: \"publishableKey\",\n type: \"text\",\n label: \"Publishable Key\",\n admin: {\n placeholder: \"pk_live_...\",\n },\n },\n {\n name: \"secretKey\",\n type: \"password\",\n label: \"Secret Key\",\n },\n {\n name: \"webhookSecret\",\n type: \"password\",\n label: \"Webhook Secret\",\n admin: {\n \n },\n },\n ],\n },\n {\n name: \"paypal\",\n type: \"group\",\n label: \"PayPal\",\n fields: [\n {\n name: \"enabled\",\n type: \"checkbox\",\n label: \"Enable PayPal\",\n defaultValue: false,\n },\n {\n name: \"clientId\",\n type: \"text\",\n label: \"Client ID\",\n },\n {\n name: \"clientSecret\",\n type: \"password\",\n label: \"Client Secret\",\n },\n {\n name: \"mode\",\n type: \"select\",\n label: \"Mode\",\n defaultValue: \"sandbox\",\n options: [\n { label: \"Sandbox (Test)\", value: \"sandbox\" },\n { label: \"Live\", value: \"live\" },\n ],\n },\n ],\n },\n {\n name: \"square\",\n type: \"group\",\n label: \"Square\",\n fields: [\n {\n name: \"enabled\",\n type: \"checkbox\",\n label: \"Enable Square\",\n defaultValue: false,\n },\n {\n name: \"applicationId\",\n type: \"text\",\n label: \"Application ID\",\n },\n {\n name: \"accessToken\",\n type: \"password\",\n label: \"Access Token\",\n },\n {\n name: \"locationId\",\n type: \"text\",\n label: \"Location ID\",\n },\n ],\n },\n {\n name: \"methods\",\n type: \"group\",\n label: \"Manual Payment Methods\",\n fields: [\n {\n name: \"cod\",\n type: \"checkbox\",\n label: \"Cash on Delivery\",\n defaultValue: true,\n },\n {\n name: \"bankTransfer\",\n type: \"checkbox\",\n label: \"Bank Transfer\",\n defaultValue: true,\n },\n {\n name: \"cash\",\n type: \"checkbox\",\n label: \"Cash (Local Pickup)\",\n defaultValue: true,\n },\n {\n name: \"check\",\n type: \"checkbox\",\n label: \"Check\",\n defaultValue: false,\n },\n ],\n },\n {\n name: \"bankTransfer\",\n type: \"group\",\n label: \"Bank Transfer Details\",\n admin: {\n \n },\n fields: [\n {\n name: \"bankName\",\n type: \"text\",\n label: \"Bank Name\",\n },\n {\n name: \"accountName\",\n type: \"text\",\n label: \"Account Name\",\n },\n {\n name: \"accountNumber\",\n type: \"text\",\n label: \"Account Number\",\n },\n {\n name: \"routingNumber\",\n type: \"text\",\n label: \"Routing/Sort Code\",\n },\n {\n name: \"iban\",\n type: \"text\",\n label: \"IBAN\",\n },\n {\n name: \"swift\",\n type: \"text\",\n label: \"SWIFT/BIC\",\n },\n ],\n },\n ],\n};\n","// ============================================================================\n// Settings Globals Index\n// ============================================================================\n\nexport { siteSettingsGlobal } from \"./site.js\";\nexport { seoSettingsGlobal } from \"./seo.js\";\nexport { socialSettingsGlobal } from \"./social.js\";\nexport { emailSettingsGlobal } from \"./email.js\";\nexport { storageSettingsGlobal } from \"./storage.js\";\nexport { accessSettingsGlobal } from \"./access.js\";\nexport { storeSettingsGlobal } from \"./store.js\";\nexport { paymentSettingsGlobal } from \"./payments.js\";\n\nimport { siteSettingsGlobal } from \"./site.js\";\nimport { seoSettingsGlobal } from \"./seo.js\";\nimport { socialSettingsGlobal } from \"./social.js\";\nimport { emailSettingsGlobal } from \"./email.js\";\nimport { storageSettingsGlobal } from \"./storage.js\";\nimport { accessSettingsGlobal } from \"./access.js\";\nimport { storeSettingsGlobal } from \"./store.js\";\nimport { paymentSettingsGlobal } from \"./payments.js\";\nimport type { GlobalConfig } from \"../../registry/types.js\";\n\nexport const allSettingsGlobals: GlobalConfig[] = [\n siteSettingsGlobal,\n seoSettingsGlobal,\n socialSettingsGlobal,\n emailSettingsGlobal,\n storageSettingsGlobal,\n accessSettingsGlobal,\n storeSettingsGlobal,\n paymentSettingsGlobal,\n];\n\nexport const coreSettingsGlobals: GlobalConfig[] = [\n siteSettingsGlobal,\n seoSettingsGlobal,\n socialSettingsGlobal,\n emailSettingsGlobal,\n storageSettingsGlobal,\n accessSettingsGlobal,\n];\n\nexport const ecommerceSettingsGlobals: GlobalConfig[] = [\n storeSettingsGlobal,\n paymentSettingsGlobal,\n];\n\nexport const settingsBySlug: Record<string, GlobalConfig> = {\n [siteSettingsGlobal.slug]: siteSettingsGlobal,\n [seoSettingsGlobal.slug]: seoSettingsGlobal,\n [socialSettingsGlobal.slug]: socialSettingsGlobal,\n [emailSettingsGlobal.slug]: emailSettingsGlobal,\n [storageSettingsGlobal.slug]: storageSettingsGlobal,\n [accessSettingsGlobal.slug]: accessSettingsGlobal,\n [storeSettingsGlobal.slug]: storeSettingsGlobal,\n [paymentSettingsGlobal.slug]: paymentSettingsGlobal,\n};\n\nexport function getSettingsForTemplate(\n template: \"minimal\" | \"blog\" | \"ecommerce\" | \"kitchen-sink\",\n): GlobalConfig[] {\n switch (template) {\n case \"minimal\":\n case \"blog\":\n return coreSettingsGlobals;\n case \"ecommerce\":\n return [...coreSettingsGlobals, ...ecommerceSettingsGlobals];\n case \"kitchen-sink\":\n return allSettingsGlobals;\n default:\n return coreSettingsGlobals;\n }\n}\n","import type { CollectionConfig, GlobalConfig } from \"../registry/types.js\";\n\nexport { minimalCollections } from \"./minimal\";\nexport { blogCollections, blogGlobals } from \"./blog\";\nexport { ecommerceCollections, ecommerceGlobals } from \"./ecommerce\";\nexport { kitchenSinkCollections } from \"./kitchen-sink\";\n\nexport {\n mediaCollections,\n mediaCollection,\n mediaFoldersCollection,\n} from \"./media.js\";\nexport {\n allSettingsGlobals,\n coreSettingsGlobals,\n ecommerceSettingsGlobals,\n settingsBySlug,\n getSettingsForTemplate,\n siteSettingsGlobal,\n seoSettingsGlobal,\n socialSettingsGlobal,\n emailSettingsGlobal,\n storageSettingsGlobal,\n accessSettingsGlobal,\n storeSettingsGlobal,\n paymentSettingsGlobal,\n} from \"./settings/index.js\";\n\nimport { mediaCollections } from \"./media.js\";\nimport {\n allSettingsGlobals,\n coreSettingsGlobals,\n ecommerceSettingsGlobals,\n getSettingsForTemplate,\n settingsBySlug,\n siteSettingsGlobal,\n seoSettingsGlobal,\n socialSettingsGlobal,\n emailSettingsGlobal,\n storageSettingsGlobal,\n accessSettingsGlobal,\n storeSettingsGlobal,\n paymentSettingsGlobal,\n} from \"./settings/index.js\";\n\nexport interface TemplateConfig {\n collections?: CollectionConfig[];\n globals?: GlobalConfig[];\n}\n\nexport type TemplateType = \"minimal\" | \"blog\" | \"ecommerce\" | \"kitchen-sink\";\n\nexport interface CreateTemplateConfigOptions extends TemplateConfig {\n template?: TemplateType;\n collections?: CollectionConfig[];\n globals?: GlobalConfig[];\n includeMedia?: boolean;\n includeSettings?:\n | \"all\"\n | \"core\"\n | \"ecommerce\"\n | \"site\"\n | \"seo\"\n | \"social\"\n | \"email\"\n | \"storage\"\n | \"access\"\n | \"store\"\n | \"payments\"\n | string[];\n excludeSettings?: string[];\n}\n\nexport function createTemplateConfig(\n options: CreateTemplateConfigOptions,\n): TemplateConfig {\n const collections: CollectionConfig[] = options.collections\n ? [...options.collections]\n : [];\n const globals: GlobalConfig[] = options.globals ? [...options.globals] : [];\n\n if (options.includeMedia !== false) {\n collections.push(...mediaCollections);\n }\n\n const templateSettings = options.template\n ? getSettingsForTemplate(options.template)\n : coreSettingsGlobals;\n\n if (options.includeSettings) {\n if (options.includeSettings === \"all\") {\n globals.push(...allSettingsGlobals);\n } else if (options.includeSettings === \"core\") {\n globals.push(...coreSettingsGlobals);\n } else if (options.includeSettings === \"ecommerce\") {\n globals.push(...ecommerceSettingsGlobals);\n } else if (Array.isArray(options.includeSettings)) {\n for (const setting of options.includeSettings) {\n const global = settingsBySlug[setting];\n if (global) {\n globals.push(global);\n }\n }\n }\n } else if (!options.globals || options.globals.length === 0) {\n globals.push(...templateSettings);\n }\n\n if (options.excludeSettings && options.excludeSettings.length > 0) {\n const excludeSet = new Set(options.excludeSettings);\n const filtered = globals.filter(\n (g) =>\n !excludeSet.has(g.slug) &&\n !excludeSet.has(g.label?.toLowerCase().replace(/\\s+/g, \"-\") || \"\"),\n );\n globals.length = 0;\n globals.push(...filtered);\n }\n\n return {\n collections: collections.length > 0 ? collections : undefined,\n globals: globals.length > 0 ? globals : undefined,\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/trpc/context.ts","../src/api/trpc/procedures.ts","../src/api/trpc/router.ts"],"names":["evaluateAccess"],"mappings":"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","file":"chunk-3VZCX4DF.cjs","sourcesContent":["import type { BaseAdapter } from '../../registry/types.js';\nimport type { User, Request } from '../../hooks/types.js';\n\n// ============================================================================\n// Context Types\n// ============================================================================\n\nexport interface KyroContext {\n db: BaseAdapter;\n registry: any;\n user?: User;\n tenantID?: string;\n req: Request;\n [key: string]: any;\n}\n\n// ============================================================================\n// Context Factory\n// ============================================================================\n\nexport function createContext(options: {\n db: BaseAdapter;\n registry: any;\n req: Request;\n user?: User;\n tenantID?: string;\n}): KyroContext {\n return {\n db: options.db,\n registry: options.registry,\n req: options.req,\n user: options.user,\n tenantID: options.tenantID,\n };\n}\n","import type { BaseAdapter, CollectionConfig, FindArgs, CreateArgs, UpdateArgs, DeleteArgs } from '../../registry/types.js';\nimport type { User, Request } from '../../hooks/types.js';\nimport { runHooks } from '../../hooks/types.js';\nimport { evaluateAccess } from '../../access/types.js';\n\n// ============================================================================\n// Context Types\n// ============================================================================\n\nexport interface KyroContext {\n db: BaseAdapter;\n registry: any;\n user?: User;\n tenantID?: string;\n req: Request;\n [key: string]: any;\n}\n\n// ============================================================================\n// Context Factory\n// ============================================================================\n\nexport function createContext(options: {\n db: BaseAdapter;\n registry: any;\n req: Request;\n user?: User;\n tenantID?: string;\n}): KyroContext {\n return {\n db: options.db,\n registry: options.registry,\n req: options.req,\n user: options.user,\n tenantID: options.tenantID,\n };\n}\n\n// ============================================================================\n// CRUD Procedure Builders\n// ============================================================================\n\nexport function createFindProcedure(ctx: KyroContext) {\n return async (input: {\n collection: string;\n where?: Record<string, any>;\n sort?: string;\n limit?: number;\n page?: number;\n depth?: number;\n select?: string[];\n }) => {\n const { collection, where, sort, limit, page, depth, select } = input;\n const config = ctx.registry.getCollection(collection);\n \n // Check access\n if (config.access?.read) {\n const allowed = await evaluateAccess(config.access.read, {\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n });\n if (allowed === false) throw new Error('Access denied');\n }\n\n // Run beforeRead hooks\n if (config.hooks?.beforeRead) {\n for (const hook of config.hooks.beforeRead) {\n await hook({\n collection,\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n operation: 'read',\n where,\n });\n }\n }\n\n // Execute query\n const result = await ctx.db.find({\n collection,\n where: where || {},\n sort,\n limit: limit || 10,\n page: page || 1,\n depth: depth || 0,\n tenantID: ctx.tenantID,\n select,\n });\n\n // Run afterRead hooks\n if (config.hooks?.afterRead) {\n for (const doc of result.docs) {\n for (const hook of config.hooks.afterRead) {\n await hook({\n collection,\n doc,\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n operation: 'read',\n });\n }\n }\n }\n\n return result;\n };\n}\n\nexport function createFindByIDProcedure(ctx: KyroContext) {\n return async (input: {\n collection: string;\n id: string;\n depth?: number;\n select?: string[];\n }) => {\n const { collection, id, depth, select } = input;\n const config = ctx.registry.getCollection(collection);\n \n // Check access\n if (config.access?.read) {\n const allowed = await evaluateAccess(config.access.read, {\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n id,\n });\n if (allowed === false) throw new Error('Access denied');\n }\n\n const doc = await ctx.db.findByID({\n collection,\n id,\n depth: depth || 0,\n tenantID: ctx.tenantID,\n select,\n });\n\n if (!doc) throw new Error(`Document not found: ${collection}/${id}`);\n\n // Run afterRead hooks\n if (config.hooks?.afterRead) {\n for (const hook of config.hooks.afterRead) {\n await hook({\n collection,\n doc,\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n operation: 'read',\n id,\n });\n }\n }\n\n return doc;\n };\n}\n\nexport function createCreateProcedure(ctx: KyroContext) {\n return async (input: {\n collection: string;\n data: Record<string, any>;\n depth?: number;\n select?: string[];\n }) => {\n const { collection, data, depth, select } = input;\n const config = ctx.registry.getCollection(collection);\n \n // Check access\n if (config.access?.create) {\n const allowed = await evaluateAccess(config.access.create, {\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n data,\n });\n if (allowed === false) throw new Error('Access denied');\n }\n\n // Validate with Zod\n const schema = ctx.registry.getCreateZodSchema(collection);\n const validated = schema.parse(data);\n\n // Add tenantID if scoped\n if (config.tenantScoped && ctx.tenantID) {\n validated.tenantID = ctx.tenantID;\n }\n\n // Run beforeValidate hooks\n if (config.hooks?.beforeValidate) {\n for (const hook of config.hooks.beforeValidate) {\n const hookResult = await hook({\n collection,\n data: validated,\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n operation: 'create',\n });\n if (hookResult) Object.assign(validated, hookResult);\n }\n }\n\n // Run beforeChange hooks\n if (config.hooks?.beforeChange) {\n for (const hook of config.hooks.beforeChange) {\n const hookResult = await hook({\n collection,\n data: validated,\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n operation: 'create',\n });\n if (hookResult) Object.assign(validated, hookResult);\n }\n }\n\n // Execute create\n const doc = await ctx.db.create({\n collection,\n data: validated,\n depth: depth || 0,\n tenantID: ctx.tenantID,\n select,\n });\n\n // Run afterChange hooks\n if (config.hooks?.afterChange) {\n for (const hook of config.hooks.afterChange) {\n await hook({\n collection,\n doc,\n data: validated,\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n operation: 'create',\n });\n }\n }\n\n return { doc };\n };\n}\n\nexport function createUpdateProcedure(ctx: KyroContext) {\n return async (input: {\n collection: string;\n id: string;\n data: Record<string, any>;\n depth?: number;\n select?: string[];\n }) => {\n const { collection, id, data, depth, select } = input;\n const config = ctx.registry.getCollection(collection);\n \n // Get original doc for hooks\n const originalDoc = await ctx.db.findByID({\n collection,\n id,\n tenantID: ctx.tenantID,\n });\n\n if (!originalDoc) throw new Error(`Document not found: ${collection}/${id}`);\n\n // Check access\n if (config.access?.update) {\n const allowed = await evaluateAccess(config.access.update, {\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n id,\n doc: originalDoc,\n data,\n });\n if (allowed === false) throw new Error('Access denied');\n }\n\n // Validate with Zod\n const schema = ctx.registry.getUpdateZodSchema(collection);\n const validated = schema.parse(data);\n\n // Add tenantID if scoped\n if (config.tenantScoped && ctx.tenantID) {\n validated.tenantID = ctx.tenantID;\n }\n\n // Run beforeValidate hooks\n if (config.hooks?.beforeValidate) {\n for (const hook of config.hooks.beforeValidate) {\n const hookResult = await hook({\n collection,\n data: validated,\n originalDoc,\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n operation: 'update',\n id,\n });\n if (hookResult) Object.assign(validated, hookResult);\n }\n }\n\n // Run beforeChange hooks\n if (config.hooks?.beforeChange) {\n for (const hook of config.hooks.beforeChange) {\n const hookResult = await hook({\n collection,\n data: validated,\n originalDoc,\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n operation: 'update',\n id,\n });\n if (hookResult) Object.assign(validated, hookResult);\n }\n }\n\n // Execute update\n const doc = await ctx.db.update({\n collection,\n id,\n data: validated,\n depth: depth || 0,\n tenantID: ctx.tenantID,\n select,\n });\n\n // Run afterChange hooks\n if (config.hooks?.afterChange) {\n for (const hook of config.hooks.afterChange) {\n await hook({\n collection,\n doc,\n data: validated,\n originalDoc,\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n operation: 'update',\n id,\n });\n }\n }\n\n return { doc };\n };\n}\n\nexport function createDeleteProcedure(ctx: KyroContext) {\n return async (input: {\n collection: string;\n id: string;\n }) => {\n const { collection, id } = input;\n const config = ctx.registry.getCollection(collection);\n \n // Get original doc for hooks\n const originalDoc = await ctx.db.findByID({\n collection,\n id,\n tenantID: ctx.tenantID,\n });\n\n if (!originalDoc) throw new Error(`Document not found: ${collection}/${id}`);\n\n // Check access\n if (config.access?.delete) {\n const allowed = await evaluateAccess(config.access.delete, {\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n id,\n doc: originalDoc,\n });\n if (allowed === false) throw new Error('Access denied');\n }\n\n // Run beforeDelete hooks\n if (config.hooks?.beforeDelete) {\n for (const hook of config.hooks.beforeDelete) {\n await hook({\n collection,\n doc: originalDoc,\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n operation: 'delete',\n id,\n });\n }\n }\n\n // Execute delete\n const doc = await ctx.db.delete({\n collection,\n id,\n tenantID: ctx.tenantID,\n });\n\n // Run afterDelete hooks\n if (config.hooks?.afterDelete) {\n for (const hook of config.hooks.afterDelete) {\n await hook({\n collection,\n doc,\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n operation: 'delete',\n id,\n });\n }\n }\n\n return { doc, message: 'Deleted successfully' };\n };\n}\n\nexport function createCountProcedure(ctx: KyroContext) {\n return async (input: {\n collection: string;\n where?: Record<string, any>;\n }) => {\n const { collection, where } = input;\n const config = ctx.registry.getCollection(collection);\n \n // Check access\n if (config.access?.read) {\n const allowed = await evaluateAccess(config.access.read, {\n req: ctx.req,\n user: ctx.user,\n tenantID: ctx.tenantID,\n });\n if (allowed === false) throw new Error('Access denied');\n }\n\n const totalDocs = await ctx.db.count({\n collection,\n where: where || {},\n tenantID: ctx.tenantID,\n });\n\n return { totalDocs };\n };\n}\n","import type { KyroContext } from './context.js';\nimport {\n createFindProcedure,\n createFindByIDProcedure,\n createCreateProcedure,\n createUpdateProcedure,\n createDeleteProcedure,\n createCountProcedure,\n} from './procedures.js';\n\n// ============================================================================\n// Dynamic Router Generator\n// ============================================================================\n\nexport function createDynamicRouter(ctx: KyroContext) {\n const router: Record<string, any> = {};\n const collections = ctx.registry.getCollections();\n\n for (const collection of collections) {\n const slug = collection.slug;\n \n router[slug] = {\n find: createFindProcedure(ctx),\n findByID: createFindByIDProcedure(ctx),\n create: createCreateProcedure(ctx),\n update: createUpdateProcedure(ctx),\n delete: createDeleteProcedure(ctx),\n count: createCountProcedure(ctx),\n };\n }\n\n // Add globals\n const globals = ctx.registry.getGlobals();\n for (const global of globals) {\n const slug = global.slug;\n \n router[`_globals_${slug}`] = {\n get: async () => {\n const doc = await ctx.db.findOne({\n collection: `_globals_${slug}`,\n where: {},\n tenantID: ctx.tenantID,\n });\n return doc;\n },\n update: async (input: { data: Record<string, any> }) => {\n const schema = ctx.registry.getZodSchema(slug);\n const validated = schema.parse(input.data);\n \n const doc = await ctx.db.create({\n collection: `_globals_${slug}`,\n data: { ...validated, id: slug },\n tenantID: ctx.tenantID,\n });\n \n return doc;\n },\n };\n }\n\n return router;\n}\n\n// ============================================================================\n// Typed Router Interface\n// ============================================================================\n\nexport interface KyroRouter {\n [collectionSlug: string]: {\n find: (input: {\n where?: Record<string, any>;\n sort?: string;\n limit?: number;\n page?: number;\n depth?: number;\n select?: string[];\n }) => Promise<{\n docs: any[];\n totalDocs: number;\n limit: number;\n totalPages: number;\n page: number;\n pagingCounter: number;\n hasPrevPage: boolean;\n hasNextPage: boolean;\n prevPage: number | null;\n nextPage: number | null;\n }>;\n findByID: (input: {\n id: string;\n depth?: number;\n select?: string[];\n }) => Promise<any>;\n create: (input: {\n data: Record<string, any>;\n depth?: number;\n select?: string[];\n }) => Promise<{ doc: any }>;\n update: (input: {\n id: string;\n data: Record<string, any>;\n depth?: number;\n select?: string[];\n }) => Promise<{ doc: any }>;\n delete: (input: {\n id: string;\n }) => Promise<{ doc: any; message: string }>;\n count: (input: {\n where?: Record<string, any>;\n }) => Promise<{ totalDocs: number }>;\n };\n}\n\n// ============================================================================\n// Server Entry\n// ============================================================================\n\nexport function createKyroServer(ctx: KyroContext): KyroRouter {\n return createDynamicRouter(ctx) as KyroRouter;\n}\n"]}
|
package/dist/chunk-5BLDMQED.cjs
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
5
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
6
|
-
}) : x)(function(x) {
|
|
7
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
8
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
9
|
-
});
|
|
10
|
-
var __export = (target, all) => {
|
|
11
|
-
for (var name in all)
|
|
12
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
exports.__export = __export;
|
|
16
|
-
exports.__require = __require;
|
|
17
|
-
//# sourceMappingURL=chunk-5BLDMQED.cjs.map
|
|
18
|
-
//# sourceMappingURL=chunk-5BLDMQED.cjs.map
|
package/dist/chunk-7G6EVYCU.cjs
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkTZFJMPCH_cjs = require('./chunk-TZFJMPCH.cjs');
|
|
4
|
-
var postgresJs = require('drizzle-orm/postgres-js');
|
|
5
|
-
var postgres = require('postgres');
|
|
6
|
-
var migrator = require('drizzle-orm/postgres-js/migrator');
|
|
7
|
-
|
|
8
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
-
|
|
10
|
-
var postgres__default = /*#__PURE__*/_interopDefault(postgres);
|
|
11
|
-
|
|
12
|
-
function getEnv(key, fallback = "") {
|
|
13
|
-
return process.env[key] || fallback;
|
|
14
|
-
}
|
|
15
|
-
function getEnvNum(key, fallback = 0) {
|
|
16
|
-
const val = process.env[key];
|
|
17
|
-
if (!val) return fallback;
|
|
18
|
-
return parseInt(val, 10);
|
|
19
|
-
}
|
|
20
|
-
async function createDatabase(config) {
|
|
21
|
-
const databaseUrl = config?.url || getEnv(
|
|
22
|
-
"DATABASE_URL",
|
|
23
|
-
"postgresql://postgres:postgres@localhost:5432/kyro_cms"
|
|
24
|
-
);
|
|
25
|
-
const maxConnections = config?.maxConnections || getEnvNum("DATABASE_POOL_MAX", 10);
|
|
26
|
-
const ssl = config?.ssl || getEnv("DATABASE_SSL", "false") === "true";
|
|
27
|
-
const client = postgres__default.default(databaseUrl, {
|
|
28
|
-
max: maxConnections,
|
|
29
|
-
ssl: ssl ? "require" : false
|
|
30
|
-
});
|
|
31
|
-
const db = postgresJs.drizzle(client, { schema: chunkTZFJMPCH_cjs.auth_exports });
|
|
32
|
-
return { client, db };
|
|
33
|
-
}
|
|
34
|
-
async function runMigrations(db) {
|
|
35
|
-
console.log("Running migrations...");
|
|
36
|
-
await migrator.migrate(db, { migrationsFolder: "./drizzle" });
|
|
37
|
-
console.log("Migrations complete");
|
|
38
|
-
}
|
|
39
|
-
async function seedDefaultRoles(db) {
|
|
40
|
-
const { roles } = chunkTZFJMPCH_cjs.auth_exports;
|
|
41
|
-
const defaultRoles = [
|
|
42
|
-
{
|
|
43
|
-
name: "super_admin",
|
|
44
|
-
level: 100,
|
|
45
|
-
inherits: [],
|
|
46
|
-
description: "Full system access across all tenants",
|
|
47
|
-
isSystem: true
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: "admin",
|
|
51
|
-
level: 90,
|
|
52
|
-
inherits: ["editor"],
|
|
53
|
-
description: "Full tenant access with all content permissions",
|
|
54
|
-
isSystem: true
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
name: "editor",
|
|
58
|
-
level: 70,
|
|
59
|
-
inherits: ["author"],
|
|
60
|
-
description: "Edit and publish all content",
|
|
61
|
-
isSystem: true
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
name: "author",
|
|
65
|
-
level: 50,
|
|
66
|
-
inherits: ["customer"],
|
|
67
|
-
description: "Create and edit own content",
|
|
68
|
-
isSystem: true
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
name: "customer",
|
|
72
|
-
level: 30,
|
|
73
|
-
inherits: [],
|
|
74
|
-
description: "Access own data and make purchases",
|
|
75
|
-
isSystem: true
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
name: "guest",
|
|
79
|
-
level: 10,
|
|
80
|
-
inherits: [],
|
|
81
|
-
description: "Public read-only access",
|
|
82
|
-
isSystem: true
|
|
83
|
-
}
|
|
84
|
-
];
|
|
85
|
-
for (const role of defaultRoles) {
|
|
86
|
-
await db.insert(roles).values(role).onConflictDoNothing();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
exports.createDatabase = createDatabase;
|
|
91
|
-
exports.runMigrations = runMigrations;
|
|
92
|
-
exports.seedDefaultRoles = seedDefaultRoles;
|
|
93
|
-
//# sourceMappingURL=chunk-7G6EVYCU.cjs.map
|
|
94
|
-
//# sourceMappingURL=chunk-7G6EVYCU.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/database/drizzle/database.ts"],"names":["postgres","drizzle","auth_exports","migrate"],"mappings":"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","file":"chunk-7G6EVYCU.cjs","sourcesContent":["import { drizzle } from \"drizzle-orm/postgres-js\";\nimport postgres from \"postgres\";\nimport { migrate } from \"drizzle-orm/postgres-js/migrator\";\nimport * as schema from \"./schema/auth.js\";\n\nfunction getEnv(key: string, fallback: string = \"\"): string {\n return process.env[key] || fallback;\n}\n\nfunction getEnvNum(key: string, fallback: number = 0): number {\n const val = process.env[key];\n if (!val) return fallback;\n return parseInt(val, 10);\n}\n\nexport interface DatabaseConfig {\n url: string;\n maxConnections: number;\n ssl: boolean;\n}\n\nexport async function createDatabase(config?: Partial<DatabaseConfig>) {\n const databaseUrl =\n config?.url ||\n getEnv(\n \"DATABASE_URL\",\n \"postgresql://postgres:postgres@localhost:5432/kyro_cms\",\n );\n const maxConnections =\n config?.maxConnections || getEnvNum(\"DATABASE_POOL_MAX\", 10);\n const ssl = config?.ssl || getEnv(\"DATABASE_SSL\", \"false\") === \"true\";\n\n const client = postgres(databaseUrl, {\n max: maxConnections,\n ssl: ssl ? \"require\" : false,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const db = drizzle(client, { schema: schema as any });\n\n return { client, db };\n}\n\nexport async function runMigrations(db: ReturnType<typeof drizzle>) {\n console.log(\"Running migrations...\");\n await migrate(db, { migrationsFolder: \"./drizzle\" });\n console.log(\"Migrations complete\");\n}\n\nexport async function seedDefaultRoles(db: ReturnType<typeof drizzle>) {\n const { roles } = schema;\n\n const defaultRoles = [\n {\n name: \"super_admin\",\n level: 100,\n inherits: [],\n description: \"Full system access across all tenants\",\n isSystem: true,\n },\n {\n name: \"admin\",\n level: 90,\n inherits: [\"editor\"],\n description: \"Full tenant access with all content permissions\",\n isSystem: true,\n },\n {\n name: \"editor\",\n level: 70,\n inherits: [\"author\"],\n description: \"Edit and publish all content\",\n isSystem: true,\n },\n {\n name: \"author\",\n level: 50,\n inherits: [\"customer\"],\n description: \"Create and edit own content\",\n isSystem: true,\n },\n {\n name: \"customer\",\n level: 30,\n inherits: [],\n description: \"Access own data and make purchases\",\n isSystem: true,\n },\n {\n name: \"guest\",\n level: 10,\n inherits: [],\n description: \"Public read-only access\",\n isSystem: true,\n },\n ];\n\n for (const role of defaultRoles) {\n await db.insert(roles).values(role).onConflictDoNothing();\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/auth/redis-adapter.ts"],"names":["Redis","randomBytes","bcrypt"],"mappings":"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","file":"chunk-A3RQWHKD.cjs","sourcesContent":["import Redis from \"ioredis\";\nimport type { AuthAdapter, AuthUser, Session, UserRole } from \"./types.js\";\nimport bcrypt from \"bcryptjs\";\nimport { randomBytes } from \"crypto\";\n\nexport interface RedisAuthAdapterOptions {\n url?: string;\n host?: string;\n port?: number;\n password?: string;\n db?: number;\n keyPrefix?: string;\n tokenExpiration?: number;\n refreshTokenExpiration?: number;\n tls?: boolean;\n}\n\nconst DEFAULT_PREFIX = \"kyro:auth:\";\nconst DEFAULT_TOKEN_EXPIRATION = 86400;\nconst DEFAULT_REFRESH_EXPIRATION = 604800;\n\nexport class RedisAuthAdapter implements AuthAdapter {\n private redis: Redis;\n private prefix: string;\n private tokenExpiration: number;\n private refreshExpiration: number;\n\n constructor(options: RedisAuthAdapterOptions = {}) {\n const url =\n options.url ||\n `redis://${options.host || \"localhost\"}:${options.port || 6379}`;\n\n this.redis = new Redis(url, {\n password: options.password,\n db: options.db,\n lazyConnect: true,\n tls: options.tls ? {} : undefined,\n });\n\n this.prefix = options.keyPrefix || DEFAULT_PREFIX;\n this.tokenExpiration = options.tokenExpiration || DEFAULT_TOKEN_EXPIRATION;\n this.refreshExpiration =\n options.refreshTokenExpiration || DEFAULT_REFRESH_EXPIRATION;\n }\n\n async connect(): Promise<void> {\n await this.redis.connect();\n }\n\n async disconnect(): Promise<void> {\n await this.redis.quit();\n }\n\n private userKey(userId: string): string {\n return `${this.prefix}users:${userId}`;\n }\n\n private sessionKey(sessionId: string): string {\n return `${this.prefix}sessions:${sessionId}`;\n }\n\n private refreshKey(token: string): string {\n return `${this.prefix}refresh:${token}`;\n }\n\n private userByEmailKey(email: string): string {\n return `${this.prefix}users:email:${email.toLowerCase()}`;\n }\n\n private passwordHistoryKey(userId: string): string {\n return `${this.prefix}users:${userId}:password_history`;\n }\n\n async createUser(data: {\n email: string;\n passwordHash: string;\n role?: UserRole;\n tenantId?: string;\n }): Promise<AuthUser> {\n const userId = randomBytes(16).toString(\"hex\");\n const now = new Date().toISOString();\n\n const user: AuthUser = {\n id: userId,\n email: data.email.toLowerCase(),\n passwordHash: data.passwordHash,\n role: (data.role || \"customer\") as UserRole,\n tenantId: data.tenantId,\n createdAt: now,\n updatedAt: now,\n };\n\n const pipeline = this.redis.pipeline();\n\n pipeline.hset(this.userKey(userId), this.userToHash(user));\n pipeline.set(this.userByEmailKey(data.email), userId);\n\n await pipeline.exec();\n\n return user;\n }\n\n async findUserByEmail(email: string): Promise<AuthUser | null> {\n const userId = await this.redis.get(\n this.userByEmailKey(email.toLowerCase()),\n );\n if (!userId) return null;\n return this.findUserById(userId);\n }\n\n async findUserById(userId: string): Promise<AuthUser | null> {\n const data = await this.redis.hgetall(this.userKey(userId));\n if (!data || Object.keys(data).length === 0) return null;\n return this.hashToUser(data);\n }\n\n async updateUser(\n userId: string,\n data: Partial<AuthUser>,\n ): Promise<AuthUser | null> {\n const existing = await this.findUserById(userId);\n if (!existing) return null;\n\n const updated: AuthUser = {\n ...existing,\n ...data,\n id: userId,\n updatedAt: new Date().toISOString(),\n };\n\n if (data.email && data.email !== existing.email) {\n const pipeline = this.redis.pipeline();\n pipeline.del(this.userByEmailKey(existing.email));\n pipeline.set(this.userByEmailKey(data.email), userId);\n await pipeline.exec();\n }\n\n await this.redis.hset(this.userKey(userId), this.userToHash(updated));\n return updated;\n }\n\n async deleteUser(userId: string): Promise<boolean> {\n const user = await this.findUserById(userId);\n if (!user) return false;\n\n const pipeline = this.redis.pipeline();\n pipeline.del(this.userKey(userId));\n pipeline.del(this.userByEmailKey(user.email));\n pipeline.del(this.passwordHistoryKey(userId));\n await pipeline.exec();\n\n return true;\n }\n\n async hashPassword(password: string): Promise<string> {\n return bcrypt.hash(password, 12);\n }\n\n async verifyPassword(password: string, hash: string): Promise<boolean> {\n return bcrypt.compare(password, hash);\n }\n\n async createSession(\n userId: string,\n data: {\n ipAddress?: string;\n userAgent?: string;\n } = {},\n ): Promise<Session> {\n const sessionId = randomBytes(32).toString(\"hex\");\n const token = randomBytes(32).toString(\"base64url\");\n const refreshToken = randomBytes(32).toString(\"base64url\");\n const now = new Date();\n\n const session: Session = {\n id: sessionId,\n userId,\n token,\n refreshToken,\n expiresAt: new Date(\n now.getTime() + this.tokenExpiration * 1000,\n ).toISOString(),\n createdAt: now.toISOString(),\n ipAddress: data.ipAddress,\n userAgent: data.userAgent,\n };\n\n const pipeline = this.redis.pipeline();\n\n pipeline.hset(this.sessionKey(sessionId), this.sessionToHash(session));\n pipeline.setex(\n this.refreshKey(refreshToken),\n this.refreshExpiration,\n sessionId,\n );\n\n await pipeline.exec();\n\n return session;\n }\n\n async findSessionByToken(token: string): Promise<Session | null> {\n const data = await this.redis.hgetall(this.sessionKey(token));\n if (!data || Object.keys(data).length === 0) return null;\n return this.hashToSession(data);\n }\n\n async deleteSession(sessionId: string): Promise<boolean> {\n const session = await this.redis.hgetall(this.sessionKey(sessionId));\n if (!session || Object.keys(session).length === 0) return false;\n\n const pipeline = this.redis.pipeline();\n pipeline.del(this.sessionKey(sessionId));\n if (session.refreshToken) {\n pipeline.del(this.refreshKey(session.refreshToken));\n }\n await pipeline.exec();\n\n return true;\n }\n\n async deleteUserSessions(userId: string): Promise<number> {\n const pattern = `${this.prefix}sessions:*`;\n let cursor = \"0\";\n let deleted = 0;\n\n do {\n const [nextCursor, keys] = await this.redis.scan(\n cursor,\n \"MATCH\",\n pattern,\n \"COUNT\",\n 100,\n );\n cursor = nextCursor;\n\n for (const key of keys) {\n const sessionData = await this.redis.hgetall(key);\n if (sessionData.userId === userId) {\n const sessionId = key.replace(`${this.prefix}sessions:`, \"\");\n await this.deleteSession(sessionId);\n deleted++;\n }\n }\n } while (cursor !== \"0\");\n\n return deleted;\n }\n\n async addPasswordToHistory(\n userId: string,\n passwordHash: string,\n ): Promise<void> {\n await this.redis.lpush(this.passwordHistoryKey(userId), passwordHash);\n await this.redis.ltrim(this.passwordHistoryKey(userId), 0, 4);\n }\n\n async getPasswordHistory(\n userId: string,\n count: number = 5,\n ): Promise<string[]> {\n return this.redis.lrange(this.passwordHistoryKey(userId), 0, count - 1);\n }\n\n async isPasswordInHistory(\n password: string,\n userId: string,\n historyCount: number = 5,\n ): Promise<boolean> {\n const history = await this.getPasswordHistory(userId, historyCount);\n\n for (const hash of history) {\n if (await this.verifyPassword(password, hash)) {\n return true;\n }\n }\n\n return false;\n }\n\n private userToHash(user: AuthUser): Record<string, string> {\n const hash: Record<string, string> = {\n id: user.id,\n email: user.email,\n passwordHash: user.passwordHash || \"\",\n role: user.role,\n createdAt: user.createdAt,\n updatedAt: user.updatedAt,\n };\n\n if (user.tenantId) hash.tenantId = user.tenantId;\n if (user.emailVerified !== undefined)\n hash.emailVerified = String(user.emailVerified);\n if (user.locked !== undefined) hash.locked = String(user.locked);\n if (user.lastLogin) hash.lastLogin = user.lastLogin;\n if (user.failedLoginAttempts !== undefined)\n hash.failedLoginAttempts = String(user.failedLoginAttempts);\n\n return hash;\n }\n\n private hashToUser(hash: Record<string, string>): AuthUser {\n return {\n id: hash.id,\n email: hash.email,\n passwordHash: hash.passwordHash,\n role: hash.role as UserRole,\n tenantId: hash.tenantId,\n createdAt: hash.createdAt,\n updatedAt: hash.updatedAt,\n emailVerified: hash.emailVerified === \"true\",\n locked: hash.locked === \"true\",\n lastLogin: hash.lastLogin,\n failedLoginAttempts: hash.failedLoginAttempts\n ? parseInt(hash.failedLoginAttempts, 10)\n : 0,\n };\n }\n\n private sessionToHash(session: Session): Record<string, string> {\n const hash: Record<string, string> = {\n id: session.id,\n userId: session.userId,\n token: session.token,\n expiresAt: session.expiresAt,\n createdAt: session.createdAt,\n };\n\n if (session.refreshToken) hash.refreshToken = session.refreshToken;\n if (session.ipAddress) hash.ipAddress = session.ipAddress;\n if (session.userAgent) hash.userAgent = session.userAgent;\n\n return hash;\n }\n\n private hashToSession(hash: Record<string, string>): Session {\n return {\n id: hash.id,\n userId: hash.userId,\n token: hash.token,\n refreshToken: hash.refreshToken,\n expiresAt: hash.expiresAt,\n createdAt: hash.createdAt,\n ipAddress: hash.ipAddress,\n userAgent: hash.userAgent,\n };\n }\n}\n"]}
|