@africode/core 5.0.3 → 5.0.4
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/core/cli/commands/build.js +2 -1
- package/core/sdk-browser.js +140 -0
- package/dist/africode.js +184 -183
- package/dist/africode.js.map +16 -9
- package/dist/build-info.json +3 -3
- package/package.json +6 -5
- package/templates/starter/src/pages/index.html +2 -2
- package/templates/starter-3d/src/pages/index.html +2 -2
- package/templates/starter-react/src/pages/index.html +2 -2
- package/templates/starter-tailwind/src/pages/index.html +2 -2
- package/src/index.ts +0 -196
package/dist/africode.js.map
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["..\\core\\state.js", "..\\core\\store.js", "..\\core\\patterns.js", "..\\core\\html.js", "..\\
|
|
3
|
+
"sources": ["..\\core\\state.js", "..\\core\\store.js", "..\\core\\patterns.js", "..\\core\\html.js", "..\\node_modules\\zod\\v3\\helpers\\util.js", "..\\node_modules\\zod\\v3\\ZodError.js", "..\\node_modules\\zod\\v3\\locales\\en.js", "..\\node_modules\\zod\\v3\\errors.js", "..\\node_modules\\zod\\v3\\helpers\\parseUtil.js", "..\\node_modules\\zod\\v3\\helpers\\errorUtil.js", "..\\node_modules\\zod\\v3\\types.js", "..\\node_modules\\zod\\v3\\external.js", "..\\node_modules\\zod\\index.js", "..\\core\\logging.js", "..\\core\\config.js", "..\\core\\validation.js", "..\\components\\base.js", "..\\components\\button.js", "..\\components\\card.js", "..\\components\\navbar.js", "..\\components\\input.js", "..\\components\\alert.js", "..\\components\\grid.js", "..\\components\\section.js", "..\\components\\icon.js", "..\\components\\accordion.js", "..\\components\\hero.js", "..\\components\\table.js", "..\\components\\modal.js", "..\\components\\tabs.js", "..\\components\\sidebar.js", "..\\components\\dropdown.js", "..\\components\\select.js", "..\\components\\form.js", "..\\components\\tooltip.js", "..\\components\\toast.js", "..\\components\\badge.js", "..\\components\\avatar.js", "..\\components\\progress.js", "..\\components\\loader.js", "..\\components\\skeleton.js", "..\\components\\divider.js", "..\\components\\kanga-card.js", "..\\components\\cultural-card.js", "..\\components\\pattern-showcase.js", "..\\components\\language-switcher.js", "..\\components\\auth.js", "..\\components\\theme-toggle.js", "..\\core\\sdk-browser.js", "..\\core\\motion.js", "..\\core\\hydration.js", "..\\core\\request-identity.js", "..\\core\\session-store.js", "..\\core\\actions.js", "..\\core\\middleware.js", "..\\core\\errors.js", "..\\components\\index.js", "..\\components\\error-boundary.js", "..\\core\\a2ui.js"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\r\n * AfriCode Reactive State System\r\n * \r\n * A lightweight, Proxy-based reactive state management system\r\n * following the African Fractal philosophy - simple at the core,\r\n * powerful through composition.\r\n * \r\n * @module core/state\r\n */\r\n\r\n// Store for all subscribers per state\r\nconst stateSubscribers = new WeakMap();\r\n\r\n// Track nested proxies to avoid duplicates\r\nconst proxyCache = new WeakMap();\r\n\r\n/**\r\n * Creates a deeply reactive state object using Proxy\r\n * State changes automatically notify all subscribers\r\n * \r\n * @param {Object} initialState - The initial state object\r\n * @returns {Proxy} A reactive proxy of the state\r\n * \r\n * @example\r\n * const state = createReactiveState({ count: 0, user: { name: 'Amara' } });\r\n * subscribe(() => console.log('State changed!'));\r\n * state.count++; // Logs: \"State changed!\"\r\n */\r\nexport function createReactiveState(initialState) {\r\n // Return cached proxy if already created\r\n if (proxyCache.has(initialState)) {\r\n return proxyCache.get(initialState);\r\n }\r\n\r\n const handler = {\r\n get(target, property, receiver) {\r\n const value = Reflect.get(target, property, receiver);\r\n\r\n // Recursively wrap nested objects\r\n if (value !== null && typeof value === 'object') {\r\n return createReactiveState(value);\r\n }\r\n\r\n return value;\r\n },\r\n\r\n set(target, property, value, receiver) {\r\n const oldValue = Reflect.get(target, property, receiver);\r\n\r\n // Only notify if value actually changed\r\n if (oldValue !== value) {\r\n const result = Reflect.set(target, property, value, receiver);\r\n\r\n if (result) {\r\n notifySubscribers(receiver, value, oldValue, property);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n deleteProperty(target, property) {\r\n const oldValue = Reflect.get(target, property);\r\n const result = Reflect.deleteProperty(target, property);\r\n\r\n if (result) {\r\n const proxy = proxyCache.get(target);\r\n notifySubscribers(proxy, undefined, oldValue, property);\r\n }\r\n\r\n return result;\r\n }\r\n };\r\n\r\n const proxy = new Proxy(initialState, handler);\r\n proxyCache.set(initialState, proxy);\r\n\r\n return proxy;\r\n}\r\n\r\n/**\r\n * Subscribe to state changes\r\n * \r\n * @param {Proxy} state - The reactive state to subscribe to\r\n * @param {Function} callback - Function to call when state changes\r\n * @returns {Function} Unsubscribe function\r\n * \r\n * @example\r\n * const state = createReactiveState({ count: 0 });\r\n * const unsubscribe = subscribe(state, () => updateUI());\r\n * // Later: unsubscribe();\r\n */\r\nexport function subscribe(state, callback) {\r\n if (!stateSubscribers.has(state)) {\r\n stateSubscribers.set(state, new Set());\r\n }\r\n \r\n const subscribers = stateSubscribers.get(state);\r\n subscribers.add(callback);\r\n\r\n // Return unsubscribe function\r\n return () => {\r\n subscribers.delete(callback);\r\n };\r\n}\r\n\r\n/**\r\n * Notify all subscribers of state change\r\n * Uses microtask queue for batched updates\r\n */\r\nfunction notifySubscribers(state, newValue, oldValue, property) {\r\n // For testing, make synchronous. In production, use microtask\r\n const subscribers = stateSubscribers.get(state);\r\n if (!subscribers) {return;}\r\n \r\n subscribers.forEach(callback => {\r\n try {\r\n callback(newValue, oldValue, property);\r\n } catch (error) {\r\n console.error('[AfriCode State] Subscriber error:', error);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Simple server-side state store for Phase 3A\r\n */\r\nexport class GlobalState {\r\n constructor() {\r\n this.store = {};\r\n }\r\n\r\n get(path) {\r\n return path.split('/').reduce((obj, key) => obj?.[key], this.store);\r\n }\r\n\r\n set(path, value) {\r\n const keys = path.split('/');\r\n let obj = this.store;\r\n\r\n while (keys.length > 1) {\r\n const key = keys.shift();\r\n if (!obj[key] || typeof obj[key] !== 'object') {\r\n obj[key] = {};\r\n }\r\n obj = obj[key];\r\n }\r\n\r\n obj[keys[0]] = value;\r\n }\r\n\r\n getAll() {\r\n return this.store;\r\n }\r\n}\r\n\r\nexport const globalState = new GlobalState();\r\n\r\n/**\r\n * Create a computed value that updates when dependencies change\r\n * \r\n * @param {Function} computeFn - Function that computes the derived value\r\n * @returns {Function} Getter function for the computed value\r\n * \r\n * @example\r\n * const state = createReactiveState({ price: 100, quantity: 2 });\r\n * const total = computed(() => state.price * state.quantity);\r\n * console.log(total()); // 200\r\n */\r\nexport function computed(computeFn) {\r\n let cachedValue;\r\n let isDirty = true;\r\n\r\n subscribe(() => {\r\n isDirty = true;\r\n });\r\n\r\n return () => {\r\n if (isDirty) {\r\n cachedValue = computeFn();\r\n isDirty = false;\r\n }\r\n return cachedValue;\r\n };\r\n}\r\n\r\n/**\r\n * Batch multiple state changes into a single notification\r\n * \r\n * @param {Function} updateFn - Function containing multiple state updates\r\n * \r\n * @example\r\n * batch(() => {\r\n * state.name = 'Kwame';\r\n * state.age = 25;\r\n * state.country = 'Ghana';\r\n * }); // Only one notification\r\n */\r\nexport function batch(state, updateFn) {\r\n const subscribers = stateSubscribers.get(state) || new Set();\r\n const originalSubscribers = new Set(subscribers);\r\n subscribers.clear();\r\n\r\n try {\r\n updateFn();\r\n } finally {\r\n originalSubscribers.forEach(sub => subscribers.add(sub));\r\n notifySubscribers(state);\r\n }\r\n}\r\n\r\n/**\r\n * Create a simple signal (getter/setter pair)\r\n * \r\n * @param {*} initialValue - The initial value\r\n * @returns {[Function, Function]} [getter, setter]\r\n * \r\n * @example\r\n * const [count, setCount] = createSignal(0);\r\n * console.log(count()); // 0\r\n * setCount(5);\r\n * console.log(count()); // 5\r\n */\r\nexport function createSignal(initialValue) {\r\n let value = initialValue;\r\n const signalSubscribers = new Set();\r\n\r\n const getter = () => {\r\n return value;\r\n };\r\n\r\n const setter = (newValue) => {\r\n if (value !== newValue) {\r\n value = typeof newValue === 'function' ? newValue(value) : newValue;\r\n signalSubscribers.forEach(fn => fn());\r\n notifySubscribers();\r\n }\r\n };\r\n\r\n // Allow effects to subscribe to this signal\r\n getter.subscribe = (fn) => {\r\n signalSubscribers.add(fn);\r\n return () => signalSubscribers.delete(fn);\r\n };\r\n\r\n return [getter, setter];\r\n}\r\n\r\n/**\r\n * Create an effect that runs when reactive dependencies change\r\n * \r\n * @param {Function} effectFn - The effect function to run\r\n * @returns {Function} Cleanup function\r\n * \r\n * @example\r\n * const [count, setCount] = createSignal(0);\r\n * createEffect(() => console.log('Count is:', count()));\r\n */\r\nexport function createEffect(effectFn) {\r\n // Run immediately\r\n effectFn();\r\n // Subscribe to future changes\r\n return subscribe(effectFn);\r\n}\r\n\r\n// Default export for convenience\r\nexport default {\r\n createReactiveState,\r\n subscribe,\r\n computed,\r\n batch,\r\n createSignal,\r\n createEffect\r\n};\r\n",
|
|
6
6
|
"/**\r\n * AfriCode Global Store\r\n * \r\n * Centralized state container for the application UI.\r\n * Powered by the core reactive engine.\r\n * \r\n * @module core/store\r\n */\r\n\r\nimport { createReactiveState } from './state.js';\r\n\r\n// Initial default state\r\nconst initialState = {\r\n theme: 'light', // Top-level theme\r\n language: 'en', // Top-level language\r\n ui: {\r\n sidebarCollapsed: false,\r\n theme: 'dark', // 'dark', 'light', 'system'\r\n activePage: 'home'\r\n },\r\n user: {\r\n name: 'Guest',\r\n permissions: []\r\n },\r\n config: {\r\n animationsEnabled: true,\r\n soundEnabled: false\r\n }\r\n};\r\n\r\n// Create the global store\r\nexport const store = createReactiveState(initialState);\r\n\r\n// Actions (Helper functions to modify state)\r\nexport const actions = {\r\n setTheme(theme) {\r\n if (['dark', 'light', 'system'].includes(theme)) {\r\n store.theme = theme;\r\n // Also update ui.theme for consistency\r\n store.ui.theme = theme;\r\n }\r\n },\r\n\r\n setLanguage(language) {\r\n store.language = language;\r\n },\r\n\r\n toggleSidebar(collapsed) {\r\n if (typeof collapsed === 'boolean') {\r\n store.ui.sidebarCollapsed = collapsed;\r\n } else {\r\n store.ui.sidebarCollapsed = !store.ui.sidebarCollapsed;\r\n }\r\n },\r\n\r\n setActivePage(pageName) {\r\n store.ui.activePage = pageName;\r\n }\r\n};\r\n\r\nexport default { store, actions };\r\n",
|
|
7
7
|
"/**\r\n * AfriCode Procedural SVG Pattern Engine\r\n * \r\n * Generates lightweight, on-the-fly SVG patterns inspired by\r\n * African textiles from across the continent:\r\n * \r\n * EAST AFRICA: Maasai Shuka, Kanga, Kitenge, Hadzabe\r\n * WEST AFRICA: Ghana Kente, Adinkra, Nigeria Aso-Oke, Ankara\r\n * SOUTHERN AFRICA: Ndebele, Zulu, Swazi/Eswatini, Xhosa\r\n * \r\n * @module core/patterns\r\n */\r\n\r\n/**\r\n * Generate a polygon with n sides\r\n * Based on the mathematical formula:\r\n * x_i = cx + r * cos(2πi/n)\r\n * y_i = cy + r * sin(2πi/n)\r\n */\r\nexport function generatePolygon(n, r, cx = 50, cy = 50) {\r\n const points = [];\r\n for (let i = 0; i < n; i++) {\r\n const angle = (2 * Math.PI * i) / n - Math.PI / 2;\r\n const x = cx + r * Math.cos(angle);\r\n const y = cy + r * Math.sin(angle);\r\n points.push(`${x.toFixed(2)},${y.toFixed(2)}`);\r\n }\r\n return points.join(' ');\r\n}\r\n\r\n// ============================================\r\n// EAST AFRICAN PATTERNS\r\n// ============================================\r\n\r\n/**\r\n * Generate Maasai Shuka tartan pattern (Tanzania/Kenya)\r\n * Traditional red checkered blanket with overlapping stripes\r\n */\r\nexport function generateShuka({\r\n primaryColor = '#FF0000',\r\n secondaryColor = '#000000',\r\n backgroundColor = '#8B0000',\r\n stripeWidth = 4,\r\n size = 40\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${backgroundColor}\"/>\r\n <rect x=\"0\" y=\"0\" width=\"${size}\" height=\"${stripeWidth}\" fill=\"${primaryColor}\" opacity=\"0.8\"/>\r\n <rect x=\"0\" y=\"${size / 2 - stripeWidth / 2}\" width=\"${size}\" height=\"${stripeWidth}\" fill=\"${secondaryColor}\" opacity=\"0.6\"/>\r\n <rect x=\"0\" y=\"${size - stripeWidth}\" width=\"${size}\" height=\"${stripeWidth}\" fill=\"${primaryColor}\" opacity=\"0.8\"/>\r\n <rect x=\"0\" y=\"0\" width=\"${stripeWidth}\" height=\"${size}\" fill=\"${primaryColor}\" opacity=\"0.5\"/>\r\n <rect x=\"${size / 2 - stripeWidth / 2}\" y=\"0\" width=\"${stripeWidth}\" height=\"${size}\" fill=\"${secondaryColor}\" opacity=\"0.4\"/>\r\n <rect x=\"${size - stripeWidth}\" y=\"0\" width=\"${stripeWidth}\" height=\"${size}\" fill=\"${primaryColor}\" opacity=\"0.5\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Hadzabe pattern (Tanzania)\r\n * Inspired by cave paintings and natural earth tones\r\n * Hunter-gatherer tribe with ancient artistic traditions\r\n */\r\nexport function generateHadzabe({\r\n earthColor = '#8B4513',\r\n ochreColor = '#CD853F',\r\n charcoalColor = '#2F2F2F',\r\n size = 50\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${earthColor}\"/>\r\n <!-- Cave art inspired figures -->\r\n <circle cx=\"${size * 0.3}\" cy=\"${size * 0.3}\" r=\"${size * 0.08}\" fill=\"${ochreColor}\"/>\r\n <line x1=\"${size * 0.3}\" y1=\"${size * 0.38}\" x2=\"${size * 0.3}\" y2=\"${size * 0.6}\" stroke=\"${charcoalColor}\" stroke-width=\"2\"/>\r\n <line x1=\"${size * 0.2}\" y1=\"${size * 0.45}\" x2=\"${size * 0.4}\" y2=\"${size * 0.45}\" stroke=\"${charcoalColor}\" stroke-width=\"2\"/>\r\n <!-- Animal figure -->\r\n <ellipse cx=\"${size * 0.7}\" cy=\"${size * 0.5}\" rx=\"${size * 0.15}\" ry=\"${size * 0.08}\" fill=\"${ochreColor}\"/>\r\n <line x1=\"${size * 0.6}\" y1=\"${size * 0.58}\" x2=\"${size * 0.6}\" y2=\"${size * 0.7}\" stroke=\"${charcoalColor}\" stroke-width=\"2\"/>\r\n <line x1=\"${size * 0.8}\" y1=\"${size * 0.58}\" x2=\"${size * 0.8}\" y2=\"${size * 0.7}\" stroke=\"${charcoalColor}\" stroke-width=\"2\"/>\r\n <!-- Dots like ancient markings -->\r\n <circle cx=\"${size * 0.15}\" cy=\"${size * 0.8}\" r=\"3\" fill=\"${ochreColor}\"/>\r\n <circle cx=\"${size * 0.85}\" cy=\"${size * 0.2}\" r=\"3\" fill=\"${ochreColor}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Kanga border pattern (Tanzania/Kenya)\r\n */\r\nexport function generateKangaBorder({\r\n primaryColor = '#1EB53A', // Simple Green (Tanzania)\r\n accentColor = '#FCD116', // Gold\r\n size = 30\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${primaryColor}\"/>\r\n <!-- Pindo (Border) Motifs: Cashew/Triangle -->\r\n <path d=\"M0,0 L${size / 2},${size / 2} L0,${size} Z\" fill=\"${accentColor}\"/>\r\n <path d=\"M${size},0 L${size / 2},${size / 2} L${size},${size} Z\" fill=\"${accentColor}\"/>\r\n <circle cx=\"${size / 2}\" cy=\"${size / 2}\" r=\"${size * 0.15}\" fill=\"none\" stroke=\"${accentColor}\" stroke-width=\"2\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Kanga traditional Swahili cloth pattern (East Africa)\r\n */\r\nexport function generateKanga({\r\n primaryColor = '#FF6B00',\r\n secondaryColor = '#002B5C',\r\n backgroundColor = '#FFFFFF',\r\n size = 40\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${backgroundColor}\"/>\r\n <!-- Border pattern -->\r\n <rect x=\"0\" y=\"0\" width=\"${size}\" height=\"${size * 0.1}\" fill=\"${primaryColor}\"/>\r\n <rect x=\"0\" y=\"${size * 0.9}\" width=\"${size}\" height=\"${size * 0.1}\" fill=\"${primaryColor}\"/>\r\n <rect x=\"0\" y=\"0\" width=\"${size * 0.1}\" height=\"${size}\" fill=\"${primaryColor}\"/>\r\n <rect x=\"${size * 0.9}\" y=\"0\" width=\"${size * 0.1}\" height=\"${size}\" fill=\"${primaryColor}\"/>\r\n <!-- Center motif -->\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.5}\" r=\"${size * 0.15}\" fill=\"${secondaryColor}\"/>\r\n <text x=\"${size * 0.5}\" y=\"${size * 0.55}\" text-anchor=\"middle\" fill=\"${primaryColor}\" font-size=\"${size * 0.08}\">KANGA</text>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Kuba Border pattern (Congo)\r\n */\r\nexport function generateKubaBorder({\r\n primaryColor = '#8B4513',\r\n secondaryColor = '#DAA520',\r\n backgroundColor = '#F5F5DC',\r\n size = 30\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${backgroundColor}\"/>\r\n <!-- Kuba geometric border -->\r\n <polygon points=\"0,0 ${size * 0.3},0 0,${size * 0.3}\" fill=\"${primaryColor}\"/>\r\n <polygon points=\"${size},0 ${size * 0.7},0 ${size},${size * 0.3}\" fill=\"${primaryColor}\"/>\r\n <polygon points=\"0,${size} ${size * 0.3},${size} 0,${size * 0.7}\" fill=\"${primaryColor}\"/>\r\n <polygon points=\"${size},${size} ${size * 0.7},${size} ${size},${size * 0.7}\" fill=\"${primaryColor}\"/>\r\n <!-- Center diamond -->\r\n <polygon points=\"${size * 0.5},${size * 0.3} ${size * 0.7},${size * 0.5} ${size * 0.5},${size * 0.7} ${size * 0.3},${size * 0.5}\" fill=\"${secondaryColor}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Zulu Beads pattern (South Africa)\r\n */\r\nexport function generateZuluBeads({\r\n primaryColor = '#FF0000',\r\n secondaryColor = '#000000',\r\n accentColor = '#FFFFFF',\r\n size = 40\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${accentColor}\"/>\r\n <!-- Bead pattern -->\r\n <circle cx=\"${size * 0.2}\" cy=\"${size * 0.2}\" r=\"${size * 0.08}\" fill=\"${primaryColor}\"/>\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.2}\" r=\"${size * 0.08}\" fill=\"${secondaryColor}\"/>\r\n <circle cx=\"${size * 0.8}\" cy=\"${size * 0.2}\" r=\"${size * 0.08}\" fill=\"${primaryColor}\"/>\r\n <circle cx=\"${size * 0.2}\" cy=\"${size * 0.5}\" r=\"${size * 0.08}\" fill=\"${secondaryColor}\"/>\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.5}\" r=\"${size * 0.08}\" fill=\"${primaryColor}\"/>\r\n <circle cx=\"${size * 0.8}\" cy=\"${size * 0.5}\" r=\"${size * 0.08}\" fill=\"${secondaryColor}\"/>\r\n <circle cx=\"${size * 0.2}\" cy=\"${size * 0.8}\" r=\"${size * 0.08}\" fill=\"${primaryColor}\"/>\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.8}\" r=\"${size * 0.08}\" fill=\"${secondaryColor}\"/>\r\n <circle cx=\"${size * 0.8}\" cy=\"${size * 0.8}\" r=\"${size * 0.08}\" fill=\"${primaryColor}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Maasai Shield pattern (Kenya/Tanzania)\r\n */\r\nexport function generateMasaiShield({\r\n primaryColor = '#8B0000',\r\n secondaryColor = '#FFD700',\r\n backgroundColor = '#654321',\r\n size = 50\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <ellipse cx=\"${size * 0.5}\" cy=\"${size * 0.5}\" rx=\"${size * 0.4}\" ry=\"${size * 0.45}\" fill=\"${backgroundColor}\"/>\r\n <!-- Shield patterns -->\r\n <ellipse cx=\"${size * 0.5}\" cy=\"${size * 0.3}\" rx=\"${size * 0.2}\" ry=\"${size * 0.15}\" fill=\"${primaryColor}\"/>\r\n <rect x=\"${size * 0.4}\" y=\"${size * 0.5}\" width=\"${size * 0.2}\" height=\"${size * 0.3}\" fill=\"${secondaryColor}\"/>\r\n <!-- Decorative lines -->\r\n <line x1=\"${size * 0.3}\" y1=\"${size * 0.2}\" x2=\"${size * 0.7}\" y2=\"${size * 0.2}\" stroke=\"${primaryColor}\" stroke-width=\"3\"/>\r\n <line x1=\"${size * 0.3}\" y1=\"${size * 0.8}\" x2=\"${size * 0.7}\" y2=\"${size * 0.8}\" stroke=\"${primaryColor}\" stroke-width=\"3\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Ndebele Paint house pattern (South Africa)\r\n */\r\nexport function generateNdebelePaint({\r\n primaryColor = '#FF1493',\r\n secondaryColor = '#00FF00',\r\n accentColor = '#FFFF00',\r\n backgroundColor = '#FFFFFF',\r\n size = 50\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${backgroundColor}\"/>\r\n <!-- Ndebele geometric patterns -->\r\n <polygon points=\"${size * 0.2},${size * 0.2} ${size * 0.4},${size * 0.2} ${size * 0.3},${size * 0.4}\" fill=\"${primaryColor}\"/>\r\n <polygon points=\"${size * 0.6},${size * 0.2} ${size * 0.8},${size * 0.2} ${size * 0.7},${size * 0.4}\" fill=\"${secondaryColor}\"/>\r\n <polygon points=\"${size * 0.2},${size * 0.6} ${size * 0.4},${size * 0.6} ${size * 0.3},${size * 0.8}\" fill=\"${accentColor}\"/>\r\n <polygon points=\"${size * 0.6},${size * 0.6} ${size * 0.8},${size * 0.6} ${size * 0.7},${size * 0.8}\" fill=\"${primaryColor}\"/>\r\n <!-- Center design -->\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.5}\" r=\"${size * 0.15}\" fill=\"${secondaryColor}\"/>\r\n <rect x=\"${size * 0.45}\" y=\"${size * 0.45}\" width=\"${size * 0.1}\" height=\"${size * 0.1}\" fill=\"${accentColor}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Kitenge floral pattern (East Africa)\r\n */\r\nexport function generateKitenge({\r\n primaryColor = '#00A3DD',\r\n secondaryColor = '#FCD116',\r\n backgroundColor = '#1EB53A',\r\n size = 50\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${backgroundColor}\"/>\r\n <circle cx=\"${size * 0.25}\" cy=\"${size * 0.25}\" r=\"${size * 0.2}\" fill=\"${primaryColor}\" opacity=\"0.8\"/>\r\n <circle cx=\"${size * 0.75}\" cy=\"${size * 0.75}\" r=\"${size * 0.2}\" fill=\"${primaryColor}\" opacity=\"0.8\"/>\r\n <circle cx=\"${size * 0.25}\" cy=\"${size * 0.25}\" r=\"${size * 0.1}\" fill=\"${secondaryColor}\"/>\r\n <circle cx=\"${size * 0.75}\" cy=\"${size * 0.75}\" r=\"${size * 0.1}\" fill=\"${secondaryColor}\"/>\r\n <circle cx=\"${size * 0.75}\" cy=\"${size * 0.25}\" r=\"${size * 0.08}\" fill=\"${secondaryColor}\" opacity=\"0.6\"/>\r\n <circle cx=\"${size * 0.25}\" cy=\"${size * 0.75}\" r=\"${size * 0.08}\" fill=\"${secondaryColor}\" opacity=\"0.6\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n// ============================================\r\n// WEST AFRICAN PATTERNS\r\n// ============================================\r\n\r\n/**\r\n * Generate Ghana Kente cloth pattern\r\n * Royal cloth of the Ashanti people with geometric strips\r\n * Colors: Gold (royalty), Green (harvest), Red (blood/sacrifice)\r\n */\r\nexport function generateKente({\r\n colors = ['#FFD700', '#228B22', '#DC143C', '#000000'],\r\n size = 60\r\n} = {}) {\r\n const [gold, green, red, black] = colors;\r\n const stripe = size / 6;\r\n\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${black}\"/>\r\n <!-- Horizontal bands -->\r\n <rect x=\"0\" y=\"0\" width=\"${size}\" height=\"${stripe}\" fill=\"${gold}\"/>\r\n <rect x=\"0\" y=\"${stripe}\" width=\"${size}\" height=\"${stripe}\" fill=\"${green}\"/>\r\n <rect x=\"0\" y=\"${stripe * 2}\" width=\"${size}\" height=\"${stripe}\" fill=\"${red}\"/>\r\n <rect x=\"0\" y=\"${stripe * 3}\" width=\"${size}\" height=\"${stripe}\" fill=\"${gold}\"/>\r\n <rect x=\"0\" y=\"${stripe * 4}\" width=\"${size}\" height=\"${stripe}\" fill=\"${green}\"/>\r\n <rect x=\"0\" y=\"${stripe * 5}\" width=\"${size}\" height=\"${stripe}\" fill=\"${red}\"/>\r\n <!-- Vertical accents -->\r\n <rect x=\"${size * 0.2}\" y=\"0\" width=\"3\" height=\"${size}\" fill=\"${black}\" opacity=\"0.5\"/>\r\n <rect x=\"${size * 0.4}\" y=\"0\" width=\"3\" height=\"${size}\" fill=\"${black}\" opacity=\"0.5\"/>\r\n <rect x=\"${size * 0.6}\" y=\"0\" width=\"3\" height=\"${size}\" fill=\"${black}\" opacity=\"0.5\"/>\r\n <rect x=\"${size * 0.8}\" y=\"0\" width=\"3\" height=\"${size}\" fill=\"${black}\" opacity=\"0.5\"/>\r\n <!-- Kente squares -->\r\n <rect x=\"${size * 0.1}\" y=\"${size * 0.1}\" width=\"${size * 0.15}\" height=\"${size * 0.15}\" fill=\"${gold}\" stroke=\"${black}\" stroke-width=\"1\"/>\r\n <rect x=\"${size * 0.75}\" y=\"${size * 0.75}\" width=\"${size * 0.15}\" height=\"${size * 0.15}\" fill=\"${red}\" stroke=\"${black}\" stroke-width=\"1\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Ghana Adinkra symbols pattern\r\n * Philosophical symbols of the Akan people\r\n * Each symbol represents concepts like wisdom, strength, unity\r\n */\r\nexport function generateAdinkra({\r\n symbolColor = '#000000',\r\n backgroundColor = '#CD853F',\r\n size = 50\r\n} = {}) {\r\n // Gye Nyame symbol (Supremacy of God) simplified\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${backgroundColor}\"/>\r\n <!-- Sankofa-inspired heart shape (go back and get it) -->\r\n <path d=\"M${size * 0.5} ${size * 0.2} \r\n C${size * 0.3} ${size * 0.1} ${size * 0.15} ${size * 0.3} ${size * 0.25} ${size * 0.5}\r\n L${size * 0.5} ${size * 0.8}\r\n L${size * 0.75} ${size * 0.5}\r\n C${size * 0.85} ${size * 0.3} ${size * 0.7} ${size * 0.1} ${size * 0.5} ${size * 0.2}\" \r\n fill=\"none\" stroke=\"${symbolColor}\" stroke-width=\"3\"/>\r\n <!-- Spiral detail -->\r\n <circle cx=\"${size * 0.35}\" cy=\"${size * 0.45}\" r=\"${size * 0.08}\" fill=\"none\" stroke=\"${symbolColor}\" stroke-width=\"2\"/>\r\n <circle cx=\"${size * 0.65}\" cy=\"${size * 0.45}\" r=\"${size * 0.08}\" fill=\"none\" stroke=\"${symbolColor}\" stroke-width=\"2\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Nigeria Aso-Oke pattern (Yoruba)\r\n * Hand-woven cloth with intricate strip patterns\r\n * Traditional for special occasions\r\n */\r\nexport function generateAsoOke({\r\n colors = ['#4B0082', '#FFD700', '#FFFFFF'],\r\n size = 50\r\n} = {}) {\r\n const [indigo, gold, white] = colors;\r\n const stripe = size / 10;\r\n\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${indigo}\"/>\r\n <!-- Horizontal stripes -->\r\n <rect x=\"0\" y=\"${stripe}\" width=\"${size}\" height=\"${stripe * 0.5}\" fill=\"${gold}\"/>\r\n <rect x=\"0\" y=\"${stripe * 3}\" width=\"${size}\" height=\"${stripe * 0.5}\" fill=\"${white}\"/>\r\n <rect x=\"0\" y=\"${stripe * 5}\" width=\"${size}\" height=\"${stripe * 0.5}\" fill=\"${gold}\"/>\r\n <rect x=\"0\" y=\"${stripe * 7}\" width=\"${size}\" height=\"${stripe * 0.5}\" fill=\"${white}\"/>\r\n <rect x=\"0\" y=\"${stripe * 9}\" width=\"${size}\" height=\"${stripe * 0.5}\" fill=\"${gold}\"/>\r\n <!-- Vertical accent lines -->\r\n <rect x=\"${size * 0.48}\" y=\"0\" width=\"${stripe * 0.4}\" height=\"${size}\" fill=\"${gold}\" opacity=\"0.7\"/>\r\n <!-- Diamond motifs -->\r\n <polygon points=\"${size * 0.25},${size * 0.3} ${size * 0.35},${size * 0.5} ${size * 0.25},${size * 0.7} ${size * 0.15},${size * 0.5}\" \r\n fill=\"${gold}\" stroke=\"${white}\" stroke-width=\"1\"/>\r\n <polygon points=\"${size * 0.75},${size * 0.3} ${size * 0.85},${size * 0.5} ${size * 0.75},${size * 0.7} ${size * 0.65},${size * 0.5}\" \r\n fill=\"${gold}\" stroke=\"${white}\" stroke-width=\"1\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Nigeria Ankara/African wax print pattern\r\n * Bold, colorful designs popular across Africa\r\n */\r\nexport function generateAnkara({\r\n primaryColor = '#FF6B00',\r\n secondaryColor = '#00A86B',\r\n accentColor = '#FFD700',\r\n backgroundColor = '#FFFFFF',\r\n size = 60\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${backgroundColor}\"/>\r\n <!-- Bold circular motifs -->\r\n <circle cx=\"${size * 0.3}\" cy=\"${size * 0.3}\" r=\"${size * 0.25}\" fill=\"${primaryColor}\"/>\r\n <circle cx=\"${size * 0.3}\" cy=\"${size * 0.3}\" r=\"${size * 0.15}\" fill=\"${secondaryColor}\"/>\r\n <circle cx=\"${size * 0.3}\" cy=\"${size * 0.3}\" r=\"${size * 0.08}\" fill=\"${accentColor}\"/>\r\n \r\n <circle cx=\"${size * 0.8}\" cy=\"${size * 0.8}\" r=\"${size * 0.2}\" fill=\"${secondaryColor}\"/>\r\n <circle cx=\"${size * 0.8}\" cy=\"${size * 0.8}\" r=\"${size * 0.1}\" fill=\"${primaryColor}\"/>\r\n \r\n <!-- Connecting lines -->\r\n <line x1=\"${size * 0.45}\" y1=\"${size * 0.45}\" x2=\"${size * 0.65}\" y2=\"${size * 0.65}\" \r\n stroke=\"${primaryColor}\" stroke-width=\"4\"/>\r\n \r\n <!-- Small dots -->\r\n <circle cx=\"${size * 0.1}\" cy=\"${size * 0.8}\" r=\"${size * 0.05}\" fill=\"${accentColor}\"/>\r\n <circle cx=\"${size * 0.9}\" cy=\"${size * 0.2}\" r=\"${size * 0.05}\" fill=\"${accentColor}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n// ============================================\r\n// CENTRAL & NORTH AFRICAN PATTERNS\r\n// ============================================\r\n\r\n/**\r\n * Generate Bogolanfini (Mud Cloth) pattern (Mali)\r\n * Geometric abstract designs in earth tones\r\n */\r\nexport function generateBogolan({\r\n primaryColor = '#000000',\r\n secondaryColor = '#FFFFFF',\r\n accentColor = '#8B4513',\r\n size = 60\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${primaryColor}\"/>\r\n <!-- Zigzags -->\r\n <polyline points=\"0,${size * 0.2} ${size * 0.25},0 ${size * 0.5},${size * 0.2} ${size * 0.75},0 ${size},${size * 0.2}\" \r\n fill=\"none\" stroke=\"${secondaryColor}\" stroke-width=\"3\"/>\r\n <polyline points=\"0,${size * 0.8} ${size * 0.25},${size} ${size * 0.5},${size * 0.8} ${size * 0.75},${size} ${size},${size * 0.8}\" \r\n fill=\"none\" stroke=\"${secondaryColor}\" stroke-width=\"3\"/>\r\n <!-- Crosses -->\r\n <line x1=\"${size * 0.25}\" y1=\"${size * 0.4}\" x2=\"${size * 0.25}\" y2=\"${size * 0.6}\" stroke=\"${secondaryColor}\" stroke-width=\"2\"/>\r\n <line x1=\"${size * 0.15}\" y1=\"${size * 0.5}\" x2=\"${size * 0.35}\" y2=\"${size * 0.5}\" stroke=\"${secondaryColor}\" stroke-width=\"2\"/>\r\n <line x1=\"${size * 0.75}\" y1=\"${size * 0.4}\" x2=\"${size * 0.75}\" y2=\"${size * 0.6}\" stroke=\"${secondaryColor}\" stroke-width=\"2\"/>\r\n <line x1=\"${size * 0.65}\" y1=\"${size * 0.5}\" x2=\"${size * 0.85}\" y2=\"${size * 0.5}\" stroke=\"${secondaryColor}\" stroke-width=\"2\"/>\r\n <!-- Dots -->\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.5}\" r=\"${size * 0.08}\" fill=\"${accentColor}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Kuba Shoowa pattern (DRC)\r\n * Complex interlocking geometric shapes\r\n */\r\nexport function generateKuba({\r\n primaryColor = '#D2B48C',\r\n secondaryColor = '#3E2723',\r\n size = 60\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${primaryColor}\"/>\r\n <!-- Interlocking diamonds/rectangles -->\r\n <rect x=\"${size * 0.1}\" y=\"${size * 0.1}\" width=\"${size * 0.3}\" height=\"${size * 0.3}\" fill=\"${secondaryColor}\"/>\r\n <rect x=\"${size * 0.6}\" y=\"${size * 0.6}\" width=\"${size * 0.3}\" height=\"${size * 0.3}\" fill=\"${secondaryColor}\"/>\r\n <rect x=\"${size * 0.6}\" y=\"${size * 0.1}\" width=\"${size * 0.3}\" height=\"${size * 0.3}\" \r\n fill=\"none\" stroke=\"${secondaryColor}\" stroke-width=\"4\"/>\r\n <rect x=\"${size * 0.1}\" y=\"${size * 0.6}\" width=\"${size * 0.3}\" height=\"${size * 0.3}\" \r\n fill=\"none\" stroke=\"${secondaryColor}\" stroke-width=\"4\"/>\r\n <!-- Center lines -->\r\n <line x1=\"${size * 0.4}\" y1=\"${size * 0.5}\" x2=\"${size * 0.6}\" y2=\"${size * 0.5}\" stroke=\"${secondaryColor}\" stroke-width=\"2\"/>\r\n <line x1=\"${size * 0.5}\" y1=\"${size * 0.4}\" x2=\"${size * 0.5}\" y2=\"${size * 0.6}\" stroke=\"${secondaryColor}\" stroke-width=\"2\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Imigongo pattern (Rwanda)\r\n * Spiral/Geometric ridges traditionally made from cow dung\r\n */\r\nexport function generateImigongo({\r\n primaryColor = '#000000',\r\n secondaryColor = '#FFFFFF',\r\n accentColor = '#B22222',\r\n size = 60\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${secondaryColor}\"/>\r\n <!-- Spiral/Diamond Motif -->\r\n <path d=\"M${size * 0.5} ${size * 0.1} \r\n L${size * 0.9} ${size * 0.5} \r\n L${size * 0.5} ${size * 0.9} \r\n L${size * 0.1} ${size * 0.5} Z\" \r\n fill=\"${primaryColor}\"/>\r\n <path d=\"M${size * 0.5} ${size * 0.3} \r\n L${size * 0.7} ${size * 0.5} \r\n L${size * 0.5} ${size * 0.7} \r\n L${size * 0.3} ${size * 0.5} Z\" \r\n fill=\"${secondaryColor}\"/>\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.5}\" r=\"${size * 0.1}\" fill=\"${accentColor}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Ethiopian Tibeb pattern\r\n * Vibrant woven geometric borders\r\n */\r\nexport function generateTibeb({\r\n colors = ['#009E60', '#FCDD09', '#EF3340'], // Ethiopian flag colors\r\n backgroundColor = '#FFFFFF',\r\n size = 40\r\n} = {}) {\r\n const [c1, c2, c3] = colors;\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${backgroundColor}\"/>\r\n <!-- Diamond Chain -->\r\n <polygon points=\"${size * 0.5},0 ${size},${size * 0.5} ${size * 0.5},${size} 0,${size * 0.5}\" \r\n fill=\"${c1}\" opacity=\"0.2\"/>\r\n <polygon points=\"${size * 0.5},${size * 0.2} ${size * 0.8},${size * 0.5} ${size * 0.5},${size * 0.8} ${size * 0.2},${size * 0.5}\" \r\n fill=\"${c2}\"/>\r\n <rect x=\"${size * 0.4}\" y=\"${size * 0.4}\" width=\"${size * 0.2}\" height=\"${size * 0.2}\" fill=\"${c3}\"/>\r\n <!-- Side accents -->\r\n <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"${size}\" stroke=\"${c1}\" stroke-width=\"4\"/>\r\n <line x1=\"${size}\" y1=\"0\" x2=\"${size}\" y2=\"${size}\" stroke=\"${c1}\" stroke-width=\"4\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n// ============================================\r\n// SOUTHERN AFRICAN PATTERNS\r\n// ============================================\r\n\r\n/**\r\n * Generate Ndebele geometric mural pattern (South Africa)\r\n */\r\nexport function generateNdebele({\r\n colors = ['#FFD700', '#4169E1', '#FF69B4', '#228B22'],\r\n size = 60,\r\n strokeWidth = 2\r\n} = {}) {\r\n const [c1, c2, c3, c4] = colors;\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"#FFFFFF\"/>\r\n <rect x=\"${strokeWidth}\" y=\"${strokeWidth}\" \r\n width=\"${size - strokeWidth * 2}\" height=\"${size - strokeWidth * 2}\" \r\n fill=\"none\" stroke=\"#000000\" stroke-width=\"${strokeWidth}\"/>\r\n <rect x=\"${size * 0.15}\" y=\"${size * 0.15}\" width=\"${size * 0.35}\" height=\"${size * 0.35}\" \r\n fill=\"${c1}\" stroke=\"#000000\" stroke-width=\"${strokeWidth / 2}\"/>\r\n <rect x=\"${size * 0.5}\" y=\"${size * 0.15}\" width=\"${size * 0.35}\" height=\"${size * 0.35}\" \r\n fill=\"${c2}\" stroke=\"#000000\" stroke-width=\"${strokeWidth / 2}\"/>\r\n <rect x=\"${size * 0.15}\" y=\"${size * 0.5}\" width=\"${size * 0.35}\" height=\"${size * 0.35}\" \r\n fill=\"${c3}\" stroke=\"#000000\" stroke-width=\"${strokeWidth / 2}\"/>\r\n <rect x=\"${size * 0.5}\" y=\"${size * 0.5}\" width=\"${size * 0.35}\" height=\"${size * 0.35}\" \r\n fill=\"${c4}\" stroke=\"#000000\" stroke-width=\"${strokeWidth / 2}\"/>\r\n <polygon points=\"${size / 2},${size * 0.3} ${size * 0.7},${size / 2} ${size / 2},${size * 0.7} ${size * 0.3},${size / 2}\"\r\n fill=\"#FFFFFF\" stroke=\"#000000\" stroke-width=\"${strokeWidth}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Zulu beadwork pattern (South Africa)\r\n * Traditional \"love letter\" beadwork with symbolic colors\r\n * Colors carry deep meaning in Zulu courtship\r\n */\r\nexport function generateZulu({\r\n colors = ['#FFFFFF', '#000000', '#FF0000', '#00A86B', '#FFD700'],\r\n size = 50\r\n} = {}) {\r\n const [white, black, red, green, gold] = colors;\r\n const bead = size / 10;\r\n\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${black}\"/>\r\n <!-- Triangle pattern (isivivane - sacred cairn) -->\r\n <polygon points=\"${size * 0.5},${size * 0.1} ${size * 0.9},${size * 0.9} ${size * 0.1},${size * 0.9}\" \r\n fill=\"none\" stroke=\"${white}\" stroke-width=\"2\"/>\r\n <polygon points=\"${size * 0.5},${size * 0.25} ${size * 0.75},${size * 0.75} ${size * 0.25},${size * 0.75}\" \r\n fill=\"${red}\"/>\r\n <!-- Beadwork dots -->\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.35}\" r=\"${bead}\" fill=\"${white}\"/>\r\n <circle cx=\"${size * 0.35}\" cy=\"${size * 0.6}\" r=\"${bead}\" fill=\"${green}\"/>\r\n <circle cx=\"${size * 0.65}\" cy=\"${size * 0.6}\" r=\"${bead}\" fill=\"${gold}\"/>\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.8}\" r=\"${bead}\" fill=\"${white}\"/>\r\n <!-- Border dots -->\r\n <circle cx=\"${size * 0.1}\" cy=\"${size * 0.1}\" r=\"${bead * 0.7}\" fill=\"${red}\"/>\r\n <circle cx=\"${size * 0.9}\" cy=\"${size * 0.1}\" r=\"${bead * 0.7}\" fill=\"${green}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Swazi/Eswatini pattern\r\n * Inspired by Ligwalagwala (purple-crested turaco) and royal patterns\r\n * Traditional shields and ceremonial designs\r\n */\r\nexport function generateSwazi({\r\n colors = ['#3E5EB9', '#FECD00', '#B10C0C', '#FFFFFF'],\r\n size = 50\r\n} = {}) {\r\n const [blue, gold, red, white] = colors;\r\n\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${blue}\"/>\r\n <!-- Shield shape (central to Eswatini culture) -->\r\n <ellipse cx=\"${size * 0.5}\" cy=\"${size * 0.45}\" rx=\"${size * 0.35}\" ry=\"${size * 0.4}\" \r\n fill=\"${gold}\" stroke=\"${red}\" stroke-width=\"3\"/>\r\n <!-- Inner pattern -->\r\n <ellipse cx=\"${size * 0.5}\" cy=\"${size * 0.45}\" rx=\"${size * 0.2}\" ry=\"${size * 0.25}\" \r\n fill=\"${red}\"/>\r\n <!-- Feather accents -->\r\n <line x1=\"${size * 0.5}\" y1=\"${size * 0.05}\" x2=\"${size * 0.5}\" y2=\"${size * 0.2}\" \r\n stroke=\"${white}\" stroke-width=\"3\"/>\r\n <line x1=\"${size * 0.4}\" y1=\"${size * 0.08}\" x2=\"${size * 0.45}\" y2=\"${size * 0.15}\" \r\n stroke=\"${white}\" stroke-width=\"2\"/>\r\n <line x1=\"${size * 0.6}\" y1=\"${size * 0.08}\" x2=\"${size * 0.55}\" y2=\"${size * 0.15}\" \r\n stroke=\"${white}\" stroke-width=\"2\"/>\r\n <!-- Spear points -->\r\n <polygon points=\"${size * 0.1},${size * 0.3} ${size * 0.05},${size * 0.5} ${size * 0.15},${size * 0.5}\" fill=\"${white}\"/>\r\n <polygon points=\"${size * 0.9},${size * 0.3} ${size * 0.85},${size * 0.5} ${size * 0.95},${size * 0.5}\" fill=\"${white}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Xhosa pattern (South Africa)\r\n * Inspired by traditional Xhosa beadwork and blanket designs\r\n * Known for bold geometric patterns\r\n */\r\nexport function generateXhosa({\r\n primaryColor = '#FFFFFF',\r\n accentColor = '#00A86B',\r\n backgroundColor = '#1a1a2e',\r\n size = 50\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${backgroundColor}\"/>\r\n <!-- Horizontal bands -->\r\n <rect x=\"0\" y=\"${size * 0.2}\" width=\"${size}\" height=\"${size * 0.1}\" fill=\"${primaryColor}\"/>\r\n <rect x=\"0\" y=\"${size * 0.7}\" width=\"${size}\" height=\"${size * 0.1}\" fill=\"${primaryColor}\"/>\r\n <!-- Vertical bands -->\r\n <rect x=\"${size * 0.2}\" y=\"0\" width=\"${size * 0.1}\" height=\"${size}\" fill=\"${accentColor}\"/>\r\n <rect x=\"${size * 0.7}\" y=\"0\" width=\"${size * 0.1}\" height=\"${size}\" fill=\"${accentColor}\"/>\r\n <!-- Central diamond -->\r\n <polygon points=\"${size * 0.5},${size * 0.35} ${size * 0.65},${size * 0.5} ${size * 0.5},${size * 0.65} ${size * 0.35},${size * 0.5}\" \r\n fill=\"${accentColor}\" stroke=\"${primaryColor}\" stroke-width=\"2\"/>\r\n <!-- Corner triangles -->\r\n <polygon points=\"0,0 ${size * 0.15},0 0,${size * 0.15}\" fill=\"${accentColor}\"/>\r\n <polygon points=\"${size},0 ${size * 0.85},0 ${size},${size * 0.15}\" fill=\"${accentColor}\"/>\r\n <polygon points=\"0,${size} ${size * 0.15},${size} 0,${size * 0.85}\" fill=\"${accentColor}\"/>\r\n <polygon points=\"${size},${size} ${size * 0.85},${size} ${size},${size * 0.85}\" fill=\"${accentColor}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Apply pattern as background to an element\r\n */\r\nexport function applyPattern(element, patternUrl) {\r\n element.style.backgroundImage = `url(\"${patternUrl}\")`;\r\n element.style.backgroundRepeat = 'repeat';\r\n}\r\n\r\n// ============================================\r\n// NORTH AFRICAN PATTERNS\r\n// ============================================\r\n\r\n/**\r\n * Generate Berber pattern (North Africa)\r\n * Geometric designs inspired by Amazigh rugs and tattoos\r\n * Symbols of protection, fertility, and nature\r\n */\r\nexport function generateBerber({\r\n primaryColor = '#8B0000', // Deep red\r\n secondaryColor = '#000000',\r\n accentColor = '#FFD700',\r\n backgroundColor = '#F5F5DC', // Beige/Wool\r\n size = 60\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${backgroundColor}\"/>\r\n <!-- Lozenge (Diamond) - universal protective symbol -->\r\n <polygon points=\"${size * 0.5},${size * 0.1} ${size * 0.9},${size * 0.5} ${size * 0.5},${size * 0.9} ${size * 0.1},${size * 0.5}\" \r\n fill=\"${primaryColor}\" stroke=\"${secondaryColor}\" stroke-width=\"2\"/>\r\n <!-- Inner geometric details -->\r\n <line x1=\"${size * 0.5}\" y1=\"${size * 0.1}\" x2=\"${size * 0.5}\" y2=\"${size * 0.9}\" stroke=\"${accentColor}\" stroke-width=\"2\"/>\r\n <line x1=\"${size * 0.1}\" y1=\"${size * 0.5}\" x2=\"${size * 0.9}\" y2=\"${size * 0.5}\" stroke=\"${accentColor}\" stroke-width=\"2\"/>\r\n <!-- X symbols (Fibula/Cross) -->\r\n <line x1=\"${size * 0.4}\" y1=\"${size * 0.4}\" x2=\"${size * 0.6}\" y2=\"${size * 0.6}\" stroke=\"${secondaryColor}\" stroke-width=\"2\"/>\r\n <line x1=\"${size * 0.6}\" y1=\"${size * 0.4}\" x2=\"${size * 0.4}\" y2=\"${size * 0.6}\" stroke=\"${secondaryColor}\" stroke-width=\"2\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Adire Oniko (Yoruba Indigo) pattern\r\n * Resist-dyed circles and ripples\r\n * \"Tie and dye\" technique simulation\r\n */\r\nexport function generateAdire({\r\n primaryColor = '#4B0082', // Indigo\r\n secondaryColor = '#8A2BE2', // Light Indigo\r\n accentColor = '#FFFFFF',\r\n size = 50\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${primaryColor}\"/>\r\n <!-- Resist circles (Oniko) -->\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.5}\" r=\"${size * 0.35}\" fill=\"none\" stroke=\"${secondaryColor}\" stroke-width=\"3\"/>\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.5}\" r=\"${size * 0.25}\" fill=\"none\" stroke=\"${accentColor}\" stroke-width=\"2\" stroke-dasharray=\"4 2\"/>\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.5}\" r=\"${size * 0.1}\" fill=\"${accentColor}\" opacity=\"0.8\"/>\r\n <!-- Corner ripples -->\r\n <path d=\"M0,0 Q${size * 0.2},0 ${size * 0.2},${size * 0.2} Q0,${size * 0.2} 0,0\" fill=\"${secondaryColor}\"/>\r\n <path d=\"M${size},${size} Q${size * 0.8},${size} ${size * 0.8},${size * 0.8} Q${size},${size * 0.8} ${size},${size}\" fill=\"${secondaryColor}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n// Export all generators\r\nexport default {\r\n // East Africa\r\n generatePolygon,\r\n generateShuka,\r\n generateHadzabe,\r\n generateKanga,\r\n generateKangaBorder,\r\n generateKitenge,\r\n generateMasaiShield,\r\n generateTibeb, // Ethiopia\r\n generateImigongo, // Rwanda\r\n // West Africa\r\n generateKente,\r\n generateAdinkra,\r\n generateAsoOke,\r\n generateAnkara,\r\n generateBogolan, // Mali/West\r\n generateAdire, // Nigeria (Indigo)\r\n // Central Africa\r\n generateKuba, // DRC\r\n generateKubaBorder,\r\n // North Africa\r\n generateBerber, // Amazigh\r\n // Southern Africa\r\n generateNdebele,\r\n generateNdebelePaint,\r\n generateZulu,\r\n generateZuluBeads,\r\n generateSwazi,\r\n generateXhosa,\r\n // Utilities\r\n applyPattern,\r\n // Tech Patterns\r\n generateTuareg,\r\n generateGeez,\r\n generateBoli,\r\n generateCircuit,\r\n circuit: generateCircuit\r\n};\r\n\r\n/**\r\n * Generate Tuareg Indigo pattern (Sahara/Berber)\r\n * Inspired by the \"Blue Men of the Sahara\" and their geometric silver jewelry/stars\r\n */\r\nexport function generateTuareg({\r\n primaryColor = '#2D3D6B', // Tuareg Indigo\r\n secondaryColor = '#6B8CC7', // Sky Blue\r\n accentColor = '#FFFFFF', // Silver/White\r\n size = 60\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${primaryColor}\"/>\r\n <!-- Southern Cross / Tuareg Star -->\r\n <path d=\"M${size * 0.5} 0 L${size * 0.6} ${size * 0.4} L${size} ${size * 0.5} L${size * 0.6} ${size * 0.6} L${size * 0.5} ${size} L${size * 0.4} ${size * 0.6} L0 ${size * 0.5} L${size * 0.4} ${size * 0.4} Z\" \r\n fill=\"none\" stroke=\"${accentColor}\" stroke-width=\"2\"/>\r\n <circle cx=\"${size * 0.5}\" cy=\"${size * 0.5}\" r=\"${size * 0.1}\" fill=\"${secondaryColor}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Ge'ez Script pattern (Ethiopia/Eritrea)\r\n * Abstract calligraphic strokes inspired by one of the world's oldest scripts\r\n */\r\nexport function generateGeez({\r\n inkColor = '#3A2E2C',\r\n parchmentColor = '#F4E4BC',\r\n size = 50\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${parchmentColor}\"/>\r\n <path d=\"M${size * 0.2} ${size * 0.2} L${size * 0.4} ${size * 0.2} M${size * 0.3} ${size * 0.2} L${size * 0.3} ${size * 0.5} Q${size * 0.4} ${size * 0.6} ${size * 0.2} ${size * 0.7}\" \r\n fill=\"none\" stroke=\"${inkColor}\" stroke-width=\"3\" stroke-linecap=\"round\"/>\r\n <path d=\"M${size * 0.6} ${size * 0.3} C${size * 0.8} ${size * 0.3} ${size * 0.8} ${size * 0.6} ${size * 0.6} ${size * 0.6} L${size * 0.8} ${size * 0.8}\" \r\n fill=\"none\" stroke=\"${inkColor}\" stroke-width=\"3\" stroke-linecap=\"round\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\n/**\r\n * Generate Boli pattern (Mali/Bambara)\r\n * Abstract organic shapes inspired by mud-based ritual objects\r\n */\r\nexport function generateBoli({\r\n clayColor = '#4E342E',\r\n earthColor = '#3E2723',\r\n accentColor = '#BCAAA4',\r\n size = 60\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${size} ${size}\">\r\n <rect width=\"${size}\" height=\"${size}\" fill=\"${earthColor}\"/>\r\n <path d=\"M${size * 0.2} ${size * 0.5} Q${size * 0.3} ${size * 0.2} ${size * 0.5} ${size * 0.3} T${size * 0.8} ${size * 0.5} Q${size * 0.7} ${size * 0.8} ${size * 0.5} ${size * 0.7} T${size * 0.2} ${size * 0.5}\" \r\n fill=\"${clayColor}\" stroke=\"${accentColor}\" stroke-width=\"2\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n\r\nexport function generateCircuit({\r\n primaryColor = '#334155',\r\n secondaryColor = '#1e293b',\r\n size = 100\r\n} = {}) {\r\n const svg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 100 100\">\r\n <rect width=\"100\" height=\"100\" fill=\"${secondaryColor}\"/>\r\n <path d=\"M10 10 H90 V90 H10 Z\" fill=\"none\" stroke=\"${primaryColor}\" stroke-width=\"0.5\" opacity=\"0.3\"/>\r\n <path d=\"M20 20 V50 H50 V80 H80\" fill=\"none\" stroke=\"${primaryColor}\" stroke-width=\"1\"/>\r\n <circle cx=\"20\" cy=\"20\" r=\"2\" fill=\"${primaryColor}\"/>\r\n <circle cx=\"80\" cy=\"80\" r=\"2\" fill=\"${primaryColor}\"/>\r\n <circle cx=\"50\" cy=\"50\" r=\"1.5\" fill=\"${primaryColor}\"/>\r\n </svg>\r\n `;\r\n return `data:image/svg+xml,${encodeURIComponent(svg.trim())}`;\r\n}\r\n",
|
|
8
8
|
"/**\r\n * AfriCode HTML Template Engine\r\n * Phase 2: Defined Rendering System\r\n *\r\n * @module core/html\r\n */\r\n\r\nexport class RawHtml {\r\n constructor(value) {\r\n this.value = value;\r\n this.__type = 'RawHtml';\r\n Object.freeze(this);\r\n }\r\n\r\n toString() {\r\n return this.value;\r\n }\r\n\r\n valueOf() {\r\n return this.value;\r\n }\r\n}\r\n\r\n// 🔒 Escape unsafe values\r\nfunction escapeHtml(value) {\r\n return String(value)\r\n .replace(/&/g, \"&\")\r\n .replace(/</g, \"<\")\r\n .replace(/>/g, \">\")\r\n .replace(/\"/g, \""\")\r\n .replace(/'/g, \"'\");\r\n}\r\n\r\n// 🧠 Main rendering function\r\nexport const html = (strings, ...values) => {\r\n let result = \"\";\r\n\r\n for (let i = 0; i < strings.length; i++) {\r\n result += strings[i];\r\n\r\n if (i < values.length) {\r\n result += interpolateValue(values[i]);\r\n }\r\n }\r\n\r\n return new RawHtml(result);\r\n};\r\n\r\nexport function Layout({ title = 'AfriCode App', meta = '', stylesheet = '/styles/africanity.css', children } = {}) {\r\n return html`<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <title>${title}</title>\r\n ${meta}\r\n ${stylesheet ? html`<link rel=\"stylesheet\" href=\"${stylesheet}\">` : ''}\r\n <script type=\"module\" src=\"/core/sdk.js\"></script>\r\n</head>\r\n<body>\r\n ${children}\r\n</body>\r\n</html>`;\r\n}\r\n\r\nfunction interpolateValue(value) {\r\n if (value instanceof RawHtml) {\r\n return value.toString();\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.map(interpolateValue).join('');\r\n }\r\n\r\n if (value === null || value === undefined || value === false) {\r\n return '';\r\n }\r\n\r\n if (value === true) {\r\n return 'true';\r\n }\r\n\r\n return escapeHtml(value);\r\n}\r\n",
|
|
9
|
-
"/**\r\n * AfriCode Base Component\r\n * \r\n * Abstract base class for all AfriCode Web Components.\r\n * Provides common utilities and enforces the Shadow DOM pattern.\r\n * \r\n * @module components/base\r\n */\r\n\r\nimport { html } from '../core/html.js';\r\n\r\nconst BaseHTMLElement = globalThis.HTMLElement ?? class {};\r\nconst hasConstructableStylesheets = typeof CSSStyleSheet !== 'undefined';\r\n\r\n/**\r\n * Base class for AfriCode components\r\n * All components extend this to inherit common functionality\r\n */\r\nexport class AfriCodeComponent extends BaseHTMLElement {\r\n constructor() {\r\n super();\r\n this.attachShadow({ mode: 'open' });\r\n \r\n // Native Web Component Error Boundary: intercept child render calls\r\n const originalRender = this.render;\r\n if (originalRender && typeof originalRender === 'function') {\r\n this.render = () => {\r\n try {\r\n originalRender.call(this);\r\n this.removeAttribute('has-error');\r\n } catch (error) {\r\n console.error(`[AfriCode] Rendering error in <${this.localName}>:`, error);\r\n this.setAttribute('has-error', 'true');\r\n this.shadowRoot.innerHTML = `\r\n <style>\r\n .af-local-error {\r\n padding: 1rem;\r\n border: 1px dashed rgba(220, 20, 60, 0.4);\r\n border-radius: 4px;\r\n color: #DC143C;\r\n font-family: 'Inter', system-ui, sans-serif;\r\n font-size: 0.85rem;\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n background: rgba(220, 20, 60, 0.05);\r\n }\r\n </style>\r\n <div class=\"af-local-error\">\r\n <span aria-hidden=\"true\">⚠️</span>\r\n <span>Failed to render</span>\r\n </div>\r\n `;\r\n this.emit('af-component-error', { \r\n component: this.localName, \r\n message: error.message,\r\n stack: error.stack \r\n });\r\n }\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Component lifecycle - connected to DOM\r\n * Empty base implementation to support super calls in subclasses.\r\n */\r\n connectedCallback() { }\r\n\r\n /**\r\n * Load shared Africanity styles into Shadow DOM\r\n */\r\n // Static cache for Constructable Stylesheets to prevent fetch waterfall\r\n static styleCache = new Map();\r\n\r\n /**\r\n * Global stylesheets injected by adapters (e.g. Tailwind, custom design systems).\r\n * Each entry must be a CSSStyleSheet instance.\r\n * Usage: AfriCodeComponent.injectGlobalSheet(sheet)\r\n * @type {CSSStyleSheet[]}\r\n */\r\n static globalSheets = [];\r\n\r\n /**\r\n * Inject a global CSSStyleSheet into every AfriCode component's Shadow DOM.\r\n * This is the primary integration point for external CSS frameworks like Tailwind.\r\n * @param {CSSStyleSheet} sheet - A Constructable Stylesheet instance\r\n */\r\n static injectGlobalSheet(sheet) {\r\n if (!hasConstructableStylesheets) {\r\n return;\r\n }\r\n\r\n if (!(sheet instanceof CSSStyleSheet)) {\r\n return;\r\n }\r\n if (!AfriCodeComponent.globalSheets.includes(sheet)) {\r\n AfriCodeComponent.globalSheets.push(sheet);\r\n }\r\n }\r\n\r\n /**\r\n * Load shared Africanity styles into Shadow DOM.\r\n * Optimized to fetch only once per session.\r\n * Also adopts any globally injected sheets (e.g. Tailwind utilities).\r\n */\r\n async loadStyles(css = '') {\r\n const styleUrl = '/styles/africanity.css';\r\n if (!this.shadowRoot) {\r\n return;\r\n }\r\n\r\n const canAdoptStyleSheets = hasConstructableStylesheets && 'adoptedStyleSheets' in this.shadowRoot;\r\n const sourceKey = typeof css === 'string' && css.length > 0 ? css : styleUrl;\r\n const stylesheetText = typeof css === 'string' && css.length > 0 ? css : null;\r\n\r\n // 1. Check cache first\r\n if (AfriCodeComponent.styleCache.has(sourceKey)) {\r\n const cached = AfriCodeComponent.styleCache.get(sourceKey);\r\n if (canAdoptStyleSheets) {\r\n this.shadowRoot.adoptedStyleSheets = [\r\n cached,\r\n ...AfriCodeComponent.globalSheets\r\n ];\r\n } else {\r\n this._applyFallbackStyle(cached?.cssText || cached?.text || cached || '');\r\n }\r\n return;\r\n }\r\n\r\n // 2. Fetch if not cached (Single Request)\r\n try {\r\n let resolvedCss = stylesheetText;\r\n\r\n if (!resolvedCss) {\r\n const response = await fetch(styleUrl);\r\n if (!response.ok) {\r\n throw new Error(`Unable to load stylesheet: ${response.status}`);\r\n }\r\n resolvedCss = await response.text();\r\n }\r\n\r\n if (canAdoptStyleSheets) {\r\n const styleSheet = new CSSStyleSheet();\r\n styleSheet.replaceSync(resolvedCss);\r\n\r\n // Cache it\r\n AfriCodeComponent.styleCache.set(sourceKey, styleSheet);\r\n\r\n // Apply core + any global sheets\r\n this.shadowRoot.adoptedStyleSheets = [\r\n styleSheet,\r\n ...AfriCodeComponent.globalSheets\r\n ];\r\n return;\r\n }\r\n\r\n this._applyFallbackStyle(resolvedCss);\r\n AfriCodeComponent.styleCache.set(sourceKey, { text: resolvedCss });\r\n } catch (err) {\r\n this._applyFallbackStyle(stylesheetText || '');\r\n }\r\n }\r\n\r\n _applyFallbackStyle(css) {\r\n if (!this.shadowRoot) {\r\n return;\r\n }\r\n\r\n let style = this.shadowRoot.querySelector('style[data-africode-core-styles]');\r\n if (!style) {\r\n style = document.createElement('style');\r\n style.setAttribute('data-africode-core-styles', '');\r\n this.shadowRoot.prepend(style);\r\n }\r\n\r\n style.textContent = css;\r\n }\r\n\r\n /**\r\n * Get Fibonacci spacing value\r\n * @param {number} index - Fibonacci sequence index (1,2,3,5,8,13,21,34,55)\r\n * @returns {string} CSS variable reference\r\n */\r\n spacing(index) {\r\n return `var(--space-${index})`;\r\n }\r\n\r\n /**\r\n * Create element with classes and attributes\r\n * @param {string} tag - HTML tag name\r\n * @param {Object} options - Element options\r\n * @returns {HTMLElement}\r\n */\r\n createElement(tag, { classes = [], attributes = {}, text = '' } = {}) {\r\n const el = document.createElement(tag);\r\n if (classes.length) {el.classList.add(...classes);}\r\n Object.entries(attributes).forEach(([key, value]) => el.setAttribute(key, value));\r\n if (text) {el.textContent = text;}\r\n return el;\r\n }\r\n\r\n\r\n /**\r\n * Emit a custom event\r\n * @param {string} name - Event name\r\n * @param {*} detail - Event detail data\r\n */\r\n emit(name, detail) {\r\n this.dispatchEvent(new CustomEvent(name, {\r\n detail,\r\n bubbles: true,\r\n composed: true\r\n }));\r\n }\r\n}\r\n\r\n/**\r\n * Register a component with the Custom Elements registry\r\n * @param {string} name - Component tag name (must include hyphen)\r\n * @param {typeof HTMLElement} component - Component class\r\n */\r\nexport function registerComponent(name, component) {\r\n if (typeof customElements === 'undefined') {\r\n return;\r\n }\r\n\r\n if (!customElements.get(name)) {\r\n customElements.define(name, component);\r\n }\r\n}\r\n\r\nexport { html };\r\nexport default { AfriCodeComponent, registerComponent, html };\r\n",
|
|
10
|
-
"/**\r\n * AfriCode Button Component\r\n * \r\n * Versatile button with multiple variants, sizes, and cultural themes.\r\n * Suitable for: E-commerce, Healthcare, Education, Finance, Government\r\n * \r\n * @module components/button\r\n */\r\n\r\nimport { AfriCodeComponent, registerComponent } from './base.js';\r\n\r\nexport class AfriButton extends AfriCodeComponent {\r\n static get observedAttributes() {\r\n return ['variant', 'size', 'theme', 'disabled', 'loading', 'icon', 'aria-label'];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.render();\r\n }\r\n\r\n connectedCallback() {\r\n const button = this.shadowRoot.querySelector('button');\r\n button?.addEventListener('click', (e) => {\r\n if (this.hasAttribute('disabled') || this.hasAttribute('loading')) {\r\n e.preventDefault();\r\n return;\r\n }\r\n this.emit('af-click', { originalEvent: e });\r\n });\r\n }\r\n\r\n attributeChangedCallback() {\r\n this.render();\r\n }\r\n\r\n render() {\r\n const variant = this.getAttribute('variant') || 'primary';\r\n const size = this.getAttribute('size') || 'md';\r\n const theme = this.getAttribute('theme') || 'tanzania';\r\n const isDisabled = this.hasAttribute('disabled');\r\n const isLoading = this.hasAttribute('loading');\r\n const icon = this.getAttribute('icon');\r\n const ariaLabel = this.getAttribute('aria-label');\r\n\r\n const themes = {\r\n tanzania: { primary: '#1EB53A', accent: '#FCD116', text: '#FFFFFF' },\r\n maasai: { primary: '#FF0000', accent: '#8B0000', text: '#FFFFFF' },\r\n ndebele: { primary: '#4169E1', accent: '#FFD700', text: '#FFFFFF' },\r\n ocean: { primary: '#00A3DD', accent: '#0077BE', text: '#FFFFFF' }\r\n };\r\n\r\n const t = themes[theme] || themes.tanzania;\r\n\r\n this.shadowRoot.innerHTML = `\r\n <style>\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n button {\r\n font-family: 'Inter', system-ui, sans-serif;\r\n font-weight: 600;\r\n border: none;\r\n border-radius: 5px;\r\n cursor: pointer;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 8px;\r\n transition: all 200ms ease-out;\r\n position: relative;\r\n overflow: hidden;\r\n }\r\n\r\n /* Sizes */\r\n .size-sm { padding: 5px 13px; font-size: 13px; }\r\n .size-md { padding: 8px 21px; font-size: 15px; }\r\n .size-lg { padding: 13px 34px; font-size: 17px; }\r\n\r\n /* Variants */\r\n .variant-primary {\r\n background: ${t.primary};\r\n color: ${t.text};\r\n }\r\n .variant-primary:hover:not(:disabled) {\r\n filter: brightness(1.1);\r\n transform: translateY(-2px);\r\n box-shadow: 0 4px 12px rgba(0,0,0,0.2);\r\n }\r\n\r\n .variant-secondary {\r\n background: transparent;\r\n color: ${t.primary};\r\n border: 2px solid ${t.primary};\r\n }\r\n .variant-secondary:hover:not(:disabled) {\r\n background: ${t.primary};\r\n color: ${t.text};\r\n }\r\n\r\n .variant-ghost {\r\n background: transparent;\r\n color: ${t.primary};\r\n }\r\n .variant-ghost:hover:not(:disabled) {\r\n background: rgba(0,0,0,0.05);\r\n }\r\n\r\n .variant-gradient {\r\n background: linear-gradient(135deg, ${t.primary} 0%, ${t.accent} 100%);\r\n color: ${t.text};\r\n }\r\n .variant-gradient:hover:not(:disabled) {\r\n transform: translateY(-2px);\r\n box-shadow: 0 6px 20px rgba(0,0,0,0.25);\r\n }\r\n\r\n /* States */\r\n button:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n\r\n button:active:not(:disabled) {\r\n transform: translateY(0);\r\n }\r\n\r\n /* Loading spinner */\r\n .spinner {\r\n width: 16px;\r\n height: 16px;\r\n border: 2px solid transparent;\r\n border-top-color: currentColor;\r\n border-radius: 50%;\r\n animation: spin 0.8s linear infinite;\r\n }\r\n\r\n @keyframes spin {\r\n to { transform: rotate(360deg); }\r\n }\r\n\r\n /* Icon */\r\n .icon {\r\n font-size: 1.1em;\r\n }\r\n </style>\r\n\r\n <button \r\n class=\"variant-${variant} size-${size}\"\r\n ${isDisabled ? 'disabled' : ''}\r\n ${ariaLabel ? `aria-label=\"${ariaLabel}\"` : ''}\r\n ${isLoading ? 'aria-busy=\"true\"' : ''}\r\n >\r\n ${isLoading ? '<span class=\"spinner\"></span>' : ''}\r\n ${icon && !isLoading ? `<span class=\"icon\">${icon}</span>` : ''}\r\n <slot></slot>\r\n </button>\r\n `;\r\n }\r\n}\r\n\r\nregisterComponent('af-button', AfriButton);\r\nexport default AfriButton;\r\n",
|
|
11
|
-
"/**\r\n * AfriCode Simple Card Component\r\n * \r\n * Versatile content card for various use cases.\r\n * Suitable for: Product cards, Blog posts, Team members, Stats\r\n * \r\n * @module components/card\r\n */\r\n\r\nimport { AfriCodeComponent, registerComponent } from './base.js';\r\n\r\nexport class AfriCard extends AfriCodeComponent {\r\n static get observedAttributes() {\r\n return ['theme', 'variant', 'clickable', 'image'];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.render();\r\n }\r\n\r\n connectedCallback() {\r\n if (this.hasAttribute('clickable')) {\r\n this.shadowRoot.querySelector('.card').addEventListener('click', () => {\r\n this.emit('af-click');\r\n });\r\n }\r\n }\r\n\r\n attributeChangedCallback() {\r\n this.render();\r\n }\r\n\r\n render() {\r\n const theme = this.getAttribute('theme') || 'default';\r\n const variant = this.getAttribute('variant') || 'elevated';\r\n const clickable = this.hasAttribute('clickable');\r\n const image = this.getAttribute('image');\r\n\r\n const themes = {\r\n default: { accent: '#333', border: '#eee' },\r\n tanzania: { accent: '#1EB53A', border: '#1EB53A' },\r\n maasai: { accent: '#FF0000', border: '#8B0000' },\r\n ndebele: { accent: '#4169E1', border: '#4169E1' }\r\n };\r\n const t = themes[theme] || themes.default;\r\n\r\n const variants = {\r\n elevated: 'box-shadow: 0 2px 12px rgba(0,0,0,0.1);',\r\n outlined: `border: 2px solid ${t.border};`,\r\n flat: 'background: #f8f9fa;'\r\n };\r\n\r\n this.shadowRoot.innerHTML = html`\r\n <style>\r\n :host {\r\n display: block;\r\n font-family: var(--font-body, 'Inter', sans-serif);\r\n }\r\n\r\n .card {\r\n background: var(--glass-bg, rgba(15, 23, 42, 0.7));\r\n backdrop-filter: blur(var(--glass-blur, 12px));\r\n border: 1px solid var(--glass-border, rgba(255, 255, 255, 0.1));\r\n border-radius: var(--radius-lg, 16px);\r\n overflow: hidden;\r\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n position: relative;\r\n ${clickable ? 'cursor: pointer;' : ''}\r\n }\r\n\r\n .card::before {\r\n content: '';\r\n position: absolute;\r\n inset: 0;\r\n background: radial-gradient(circle at top left, rgba(255,255,255,0.05), transparent);\r\n pointer-events: none;\r\n }\r\n\r\n ${clickable ? `\r\n .card:hover {\r\n transform: translateY(-8px);\r\n border-color: rgba(252, 209, 22, 0.4);\r\n box-shadow: 0 20px 40px rgba(0,0,0,0.4);\r\n }\r\n ` : ''}\r\n\r\n .card-image {\r\n width: 100%;\r\n height: 200px;\r\n object-fit: cover;\r\n border-bottom: 1px solid var(--glass-border);\r\n }\r\n\r\n .card-body {\r\n padding: 32px;\r\n }\r\n\r\n ::slotted(h1), ::slotted(h2), ::slotted(h3), ::slotted(h4) {\r\n margin: 0 0 12px 0;\r\n font-family: 'Outfit', sans-serif;\r\n font-weight: 700;\r\n color: var(--text-primary, #fff);\r\n letter-spacing: -0.02em;\r\n }\r\n\r\n ::slotted(p) {\r\n margin: 0;\r\n color: var(--text-muted, #94a3b8);\r\n line-height: 1.6;\r\n font-size: 0.95rem;\r\n }\r\n\r\n .card-footer {\r\n padding: 20px 32px;\r\n background: rgba(0,0,0,0.2);\r\n border-top: 1px solid var(--glass-border);\r\n }\r\n </style>\r\n\r\n <article class=\"card\">\r\n ${image ? `<img class=\"card-image\" src=\"${image}\" alt=\"\" />` : ''}\r\n <div class=\"card-body\">\r\n <slot></slot>\r\n </div>\r\n ${this.querySelector('[slot=\"footer\"]') ? `\r\n <div class=\"card-footer\">\r\n <slot name=\"footer\"></slot>\r\n </div>\r\n ` : ''}\r\n </article>\r\n `;\r\n }\r\n}\r\n\r\nregisterComponent('af-card', AfriCard);\r\nexport default AfriCard;\r\n",
|
|
12
|
-
"/**\r\n * AfriCode Navigation Bar Component\r\n * \r\n * Responsive navigation with logo, links, and mobile menu.\r\n * Suitable for: All websites and web applications\r\n * \r\n * @module components/navbar\r\n */\r\n\r\nimport { AfriCodeComponent, registerComponent } from './base.js';\r\nimport { store } from '../core/store.js';\r\nimport { subscribe } from '../core/state.js';\r\n\r\nexport class AfriNavbar extends AfriCodeComponent {\r\n static get observedAttributes() {\r\n return ['theme', 'logo', 'sticky'];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this._isOpen = false;\r\n this._unsubscribe = null;\r\n this.render();\r\n }\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n\r\n // Mobile toggle\r\n this.shadowRoot.querySelector('.menu-toggle')?.addEventListener('click', () => {\r\n this._isOpen = !this._isOpen;\r\n const navLinks = this.shadowRoot.querySelector('.nav-links');\r\n const toggle = this.shadowRoot.querySelector('.menu-toggle');\r\n if (navLinks) {navLinks.classList.toggle('open', this._isOpen);}\r\n if (toggle) {\r\n toggle.classList.toggle('open', this._isOpen);\r\n toggle.setAttribute('aria-expanded', String(this._isOpen));\r\n }\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n if (this._unsubscribe) {this._unsubscribe();}\r\n }\r\n\r\n attributeChangedCallback() {\r\n this.render();\r\n }\r\n\r\n render() {\r\n const theme = this.getAttribute('theme') || 'dark';\r\n const logo = this.getAttribute('logo') || 'AfriCode';\r\n const sticky = this.hasAttribute('sticky');\r\n\r\n this.shadowRoot.innerHTML = `\r\n <style>\r\n :host {\r\n display: block;\r\n --nav-height: 80px;\r\n }\r\n\r\n nav {\r\n height: var(--nav-height);\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding-inline: 5%;\r\n background: var(--glass-bg);\r\n backdrop-filter: blur(12px);\r\n -webkit-backdrop-filter: blur(12px);\r\n border-bottom: 1px solid var(--glass-border);\r\n position: fixed;\r\n top: 0;\r\n inset-inline: 0;\r\n z-index: 1000;\r\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\r\n }\r\n\r\n .logo-container {\r\n display: flex;\r\n align-items: center;\r\n gap: 12px;\r\n text-decoration: none;\r\n z-index: 1002;\r\n }\r\n\r\n .logo-mark {\r\n width: 32px;\r\n height: 32px;\r\n background: linear-gradient(135deg, var(--afri-green, #1eb53a), var(--afri-gold, #fcd116));\r\n border-radius: 8px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-weight: 900;\r\n color: black;\r\n font-size: 1rem;\r\n }\r\n\r\n .logo-text {\r\n font-family: 'Outfit', 'Space Grotesk', sans-serif;\r\n font-size: 1.5rem;\r\n font-weight: 800;\r\n color: var(--text-primary);\r\n letter-spacing: -0.02em;\r\n }\r\n\r\n .nav-links {\r\n display: flex;\r\n gap: 32px;\r\n align-items: center;\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n .nav-links ::slotted(a) {\r\n color: var(--text-muted);\r\n text-decoration: none;\r\n font-size: 0.95rem;\r\n font-weight: 500;\r\n transition: all 0.2s ease;\r\n position: relative;\r\n padding: 8px 0;\r\n }\r\n\r\n .nav-links ::slotted(a:hover),\r\n .nav-links ::slotted(a.active) {\r\n color: var(--text-primary);\r\n }\r\n\r\n .nav-links ::slotted(a)::after {\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 50%;\r\n width: 0;\r\n height: 2px;\r\n background: var(--afri-gold, #fcd116);\r\n transition: all 0.3s ease;\r\n transform: translateX(-50%);\r\n }\r\n\r\n .nav-links ::slotted(a:hover)::after,\r\n .nav-links ::slotted(a.active)::after {\r\n width: 100%;\r\n }\r\n\r\n /* Mobile Toggle */\r\n .menu-toggle {\r\n display: none;\r\n flex-direction: column;\r\n gap: 6px;\r\n background: none;\r\n border: none;\r\n cursor: pointer;\r\n z-index: 1002;\r\n padding: 8px;\r\n }\r\n\r\n .menu-toggle span {\r\n width: 24px;\r\n height: 2px;\r\n background: var(--text-primary);\r\n border-radius: 2px;\r\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\r\n }\r\n\r\n /* Mobile State */\r\n .menu-toggle.open span:nth-child(1) { transform: translateY(8px) rotate(45deg); }\r\n .menu-toggle.open span:nth-child(2) { opacity: 0; transform: translateX(-10px); }\r\n .menu-toggle.open span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }\r\n\r\n @media (max-width: 768px) {\r\n .menu-toggle {\r\n display: flex;\r\n }\r\n\r\n .nav-links {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100vh;\r\n background: var(--bg-base, #020617);\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 24px;\r\n opacity: 0;\r\n visibility: hidden;\r\n transform: translateY(-20px);\r\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n z-index: 1001;\r\n }\r\n\r\n .nav-links.open {\r\n opacity: 1;\r\n visibility: visible;\r\n transform: translateY(0);\r\n }\r\n\r\n .nav-links ::slotted(a) {\r\n font-size: 1.5rem;\r\n font-weight: 700;\r\n }\r\n }\r\n </style>\r\n\r\n <nav>\r\n <a href=\"/\" class=\"logo-container\">\r\n <div class=\"logo-mark\">A</div>\r\n <span class=\"logo-text\">${logo}</span>\r\n </a>\r\n\r\n <button\r\n class=\"menu-toggle\"\r\n aria-label=\"Toggle menu\"\r\n aria-controls=\"nav-links\"\r\n aria-expanded=\"${this._isOpen}\"\r\n >\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </button>\r\n\r\n <div id=\"nav-links\" class=\"nav-links ${this._isOpen ? 'open' : ''}\">\r\n <slot></slot>\r\n </div>\r\n </nav>\r\n `;\r\n }\r\n}\r\n\r\nregisterComponent('af-navbar', AfriNavbar);\r\nexport default AfriNavbar;\r\n",
|
|
13
9
|
"export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n",
|
|
14
10
|
"import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n",
|
|
15
11
|
"import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n",
|
|
@@ -19,8 +15,13 @@
|
|
|
19
15
|
"import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n",
|
|
20
16
|
"export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n",
|
|
21
17
|
"import * as z from \"./v3/external.js\";\nexport * from \"./v3/external.js\";\nexport { z };\nexport default z;\n",
|
|
18
|
+
"const isTestEnvironment = () => Boolean(globalThis.__AFRICODE_TEST__ || globalThis.__AFRICODE_SILENT_LOGS__);\r\n\r\nexport function frameworkLog(level, ...args) {\r\n if (isTestEnvironment()) {\r\n return;\r\n }\r\n\r\n const logger = console[level] || console.log;\r\n logger.call(console, ...args);\r\n}\r\n\r\nexport function isFrameworkLoggingMuted() {\r\n return isTestEnvironment();\r\n}\r\n",
|
|
22
19
|
"/**\r\n * AfriCode Framework Configuration\r\n *\r\n * Centralized configuration for the entire framework.\r\n * Provides createFramework() as the entry point for apps.\r\n *\r\n * Design:\r\n * - Single config object controls all framework behavior\r\n * - Defaults are strict and secure\r\n * - Every opt-in behavior is explicit\r\n * - Observability hooks are first-class\r\n *\r\n * @module core/config\r\n */\r\n\r\nimport { frameworkLog } from './logging.js';\r\n\r\n/**\r\n * @typedef {Object} AfriCodeConfig\r\n *\r\n * @property {Object} [validation] - Validation configuration\r\n * @property {boolean} [validation.trimStrings=false] - Trim whitespace from string inputs\r\n * @property {boolean} [validation.emptyAsNullDefault=false] - Convert \"\" → null for nullable fields (NOT recommended)\r\n *\r\n * @property {Object} [security] - Security configuration\r\n * @property {Object} [security.csrf] - CSRF configuration\r\n * @property {boolean} [security.csrf.enabled=true] - Enable CSRF protection\r\n * @property {string[]} [security.csrf.excludePaths=[]] - Paths to exclude from CSRF\r\n * @property {string} [security.csrf.sameSite='Strict'] - SameSite cookie policy\r\n * @property {boolean} [security.csrf.secure=false] - Require HTTPS for cookies\r\n * @property {Object} [security.rateLimit] - Rate limit configuration\r\n * @property {boolean} [security.rateLimit.enabled=true] - Enable rate limiting\r\n * @property {number} [security.rateLimit.windowMs=60000] - Window in milliseconds\r\n * @property {number} [security.rateLimit.maxRequests=60] - Max requests per window\r\n * @property {string[]} [security.rateLimit.excludePaths=[]] - Paths to exclude\r\n *\r\n * @property {Object} [hooks] - Observability hooks\r\n * @property {Function} [hooks.onValidationError] - Called on validation failure\r\n * @property {Function} [hooks.onSecurityViolation] - Called on CSRF/security failure\r\n * @property {Function} [hooks.onRateLimit] - Called when rate limit is hit\r\n * @property {Function} [hooks.onDatabaseError] - Called on database error\r\n * @property {Function} [hooks.onRequest] - Called on every incoming request\r\n */\r\n\r\n/**\r\n * Default configuration values.\r\n * Strict by default. Secure by default.\r\n */\r\nconst DEFAULT_CONFIG = {\r\n validation: {\r\n trimStrings: false,\r\n emptyAsNullDefault: false\r\n },\r\n security: {\r\n csrf: {\r\n enabled: true,\r\n excludePaths: [],\r\n sameSite: 'Strict',\r\n secure: false\r\n },\r\n rateLimit: {\r\n enabled: true,\r\n windowMs: 60 * 1000,\r\n maxRequests: 60,\r\n excludePaths: []\r\n }\r\n },\r\n hooks: {\r\n onValidationError: null,\r\n onSecurityViolation: null,\r\n onRateLimit: null,\r\n onDatabaseError: null,\r\n onRequest: null\r\n }\r\n};\r\n\r\n/** @type {AfriCodeConfig} */\r\nlet _config = deepClone(DEFAULT_CONFIG);\r\n\r\n/** @type {boolean} */\r\nlet _initialized = false;\r\n\r\n/**\r\n * Deep clone a plain object.\r\n * @param {Object} obj\r\n * @returns {Object}\r\n */\r\nfunction deepClone(obj) {\r\n if (obj === null || typeof obj !== 'object') {return obj;}\r\n if (Array.isArray(obj)) {return obj.map(deepClone);}\r\n const cloned = {};\r\n for (const key of Object.keys(obj)) {\r\n cloned[key] = deepClone(obj[key]);\r\n }\r\n return cloned;\r\n}\r\n\r\n/**\r\n * Deep merge source into target.\r\n * @param {Object} target\r\n * @param {Object} source\r\n * @returns {Object}\r\n */\r\nfunction deepMerge(target, source) {\r\n const result = { ...target };\r\n for (const key of Object.keys(source)) {\r\n if (\r\n source[key] !== null &&\r\n typeof source[key] === 'object' &&\r\n !Array.isArray(source[key]) &&\r\n typeof target[key] === 'object' &&\r\n !Array.isArray(target[key])\r\n ) {\r\n result[key] = deepMerge(target[key] || {}, source[key]);\r\n } else {\r\n result[key] = source[key];\r\n }\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * Initialize the AfriCode framework with configuration.\r\n *\r\n * This is the single entry point for framework configuration.\r\n * Call once at app startup. All systems read from this config.\r\n *\r\n * @param {Partial<AfriCodeConfig>} [userConfig={}] - User overrides\r\n * @returns {AfriCodeConfig} The resolved configuration\r\n *\r\n * @example\r\n * import { createFramework } from 'africode/core/config';\r\n *\r\n * createFramework({\r\n * validation: {\r\n * trimStrings: true\r\n * },\r\n * security: {\r\n * csrf: { enabled: true, secure: true },\r\n * rateLimit: { maxRequests: 100 }\r\n * },\r\n * hooks: {\r\n * onValidationError: (error) => logger.warn('Validation:', error),\r\n * onSecurityViolation: (error) => logger.error('Security:', error),\r\n * onRateLimit: (key) => metrics.increment('rate_limit_hit')\r\n * }\r\n * });\r\n */\r\nexport function createFramework(userConfig = {}) {\r\n _config = deepMerge(DEFAULT_CONFIG, userConfig);\r\n _initialized = true;\r\n return getConfig();\r\n}\r\n\r\n/**\r\n * Get the current framework configuration.\r\n * Returns a frozen copy to prevent accidental mutation.\r\n *\r\n * @returns {AfriCodeConfig}\r\n */\r\nexport function getConfig() {\r\n return Object.freeze(deepClone(_config));\r\n}\r\n\r\n/**\r\n * Check if the framework has been initialized.\r\n * @returns {boolean}\r\n */\r\nexport function isInitialized() {\r\n return _initialized;\r\n}\r\n\r\n/**\r\n * Reset configuration to defaults.\r\n * Primarily for testing.\r\n */\r\nexport function resetConfig() {\r\n _config = deepClone(DEFAULT_CONFIG);\r\n _initialized = false;\r\n}\r\n\r\n// ─────────────────────────────────────────────────────────────\r\n// Observability Hooks — fire-and-forget event emitters\r\n//\r\n// These are framework-level hooks for monitoring and logging.\r\n// They never throw — errors in hooks are caught and logged.\r\n// ─────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Emit a validation error event.\r\n * @param {import('./errors.js').ValidationError} error\r\n */\r\nexport function emitValidationError(error) {\r\n const hook = _config.hooks?.onValidationError;\r\n if (typeof hook === 'function') {\r\n try { hook(error); } catch (e) {\r\n frameworkLog('error', '[AfriCode] Hook error in onValidationError:', e);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Emit a security violation event.\r\n * @param {import('./errors.js').SecurityError} error\r\n */\r\nexport function emitSecurityViolation(error) {\r\n const hook = _config.hooks?.onSecurityViolation;\r\n if (typeof hook === 'function') {\r\n try { hook(error); } catch (e) {\r\n frameworkLog('error', '[AfriCode] Hook error in onSecurityViolation:', e);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Emit a rate limit event.\r\n * @param {string} key - The client identifier that was rate limited\r\n * @param {Request} [request] - The request that triggered the limit\r\n */\r\nexport function emitRateLimit(key, request = null) {\r\n const hook = _config.hooks?.onRateLimit;\r\n if (typeof hook === 'function') {\r\n try { hook(key, request); } catch (e) {\r\n frameworkLog('error', '[AfriCode] Hook error in onRateLimit:', e);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Emit a database error event.\r\n * @param {import('./errors.js').DatabaseError} error\r\n */\r\nexport function emitDatabaseError(error) {\r\n const hook = _config.hooks?.onDatabaseError;\r\n if (typeof hook === 'function') {\r\n try { hook(error); } catch (e) {\r\n frameworkLog('error', '[AfriCode] Hook error in onDatabaseError:', e);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Emit a request event.\r\n * @param {Request} request\r\n */\r\nexport function emitRequest(request) {\r\n const hook = _config.hooks?.onRequest;\r\n if (typeof hook === 'function') {\r\n try { hook(request); } catch (e) {\r\n frameworkLog('error', '[AfriCode] Hook error in onRequest:', e);\r\n }\r\n }\r\n}\r\n\r\nexport default {\r\n createFramework,\r\n getConfig,\r\n isInitialized,\r\n resetConfig,\r\n emitValidationError,\r\n emitSecurityViolation,\r\n emitRateLimit,\r\n emitDatabaseError,\r\n emitRequest\r\n};\r\n",
|
|
23
20
|
"/**\r\n * AfriCode Validation System\r\n *\r\n * Philosophy: Strict by default. Convenient by composition. Secure early.\r\n *\r\n * Core validation is strict — URL fields accept only valid URLs.\r\n * Normalization (e.g. empty string → null) is explicit and opt-in.\r\n * Security basics (CSRF, rate limiting) are built into the foundation.\r\n *\r\n * Provides:\r\n * - Zod-based validation schemas for forms, auth, and API validation\r\n * - AfriFieldBuilder: chainable field builder with .nullable(), .emptyAsNull(), .optional()\r\n * - afri namespace: factory for building field schemas (afri.url(), afri.string(), etc.)\r\n * - normalizeInput(): preprocessing utility that runs before validation\r\n *\r\n * @module core/validation\r\n */\r\n\r\nimport { z } from 'zod';\r\nimport { getConfig } from './config.js';\r\n\r\n/**\r\n * Common validation schemas for AfriCode components\r\n */\r\nexport const schemas = {\r\n // User authentication schemas\r\n login: z.object({\r\n email: z.string()\r\n .min(1, 'Email is required')\r\n .email('Please enter a valid email address'),\r\n password: z.string()\r\n .min(8, 'Password must be at least 8 characters')\r\n .regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)/,\r\n 'Password must contain at least one uppercase letter, one lowercase letter, and one number')\r\n }),\r\n\r\n register: z.object({\r\n name: z.string()\r\n .min(2, 'Name must be at least 2 characters')\r\n .max(50, 'Name must be less than 50 characters')\r\n .regex(/^[a-zA-Z\\s'-]+$/, 'Name can only contain letters, spaces, hyphens, and apostrophes'),\r\n email: z.string()\r\n .min(1, 'Email is required')\r\n .email('Please enter a valid email address'),\r\n password: z.string()\r\n .min(8, 'Password must be at least 8 characters')\r\n .regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])/,\r\n 'Password must contain uppercase, lowercase, number, and special character'),\r\n confirmPassword: z.string()\r\n }).refine(data => data.password === data.confirmPassword, {\r\n message: \"Passwords don't match\",\r\n path: [\"confirmPassword\"]\r\n }),\r\n\r\n auth: {\r\n register: z.object({\r\n action: z.literal('register'),\r\n email: z.string()\r\n .min(1, 'Email is required')\r\n .email('Please enter a valid email address'),\r\n username: z.string()\r\n .min(3, 'Username must be at least 3 characters')\r\n .max(30, 'Username must be less than 30 characters'),\r\n password: z.string()\r\n .min(8, 'Password must be at least 8 characters'),\r\n full_name: z.string()\r\n .min(2, 'Full name is required')\r\n .max(100, 'Full name is too long')\r\n }),\r\n\r\n login: z.object({\r\n action: z.literal('login'),\r\n email: z.string()\r\n .min(1, 'Email is required')\r\n .email('Please enter a valid email address'),\r\n password: z.string()\r\n .min(8, 'Password must be at least 8 characters')\r\n }),\r\n\r\n logout: z.object({\r\n action: z.literal('logout')\r\n }),\r\n\r\n action: z.discriminatedUnion('action', [\r\n z.object({ action: z.literal('register') }).merge(z.object({\r\n email: z.string()\r\n .min(1, 'Email is required')\r\n .email('Please enter a valid email address'),\r\n username: z.string()\r\n .min(3, 'Username must be at least 3 characters')\r\n .max(30, 'Username must be less than 30 characters'),\r\n password: z.string()\r\n .min(8, 'Password must be at least 8 characters'),\r\n full_name: z.string()\r\n .min(2, 'Full name is required')\r\n .max(100, 'Full name is too long')\r\n })),\r\n z.object({ action: z.literal('login') }).merge(z.object({\r\n email: z.string()\r\n .min(1, 'Email is required')\r\n .email('Please enter a valid email address'),\r\n password: z.string()\r\n .min(8, 'Password must be at least 8 characters')\r\n })),\r\n z.object({ action: z.literal('logout') })\r\n ])\r\n },\r\n\r\n // Form input schemas\r\n contact: z.object({\r\n name: z.string()\r\n .min(2, 'Name must be at least 2 characters')\r\n .max(100, 'Name is too long'),\r\n email: z.string()\r\n .email('Please enter a valid email address'),\r\n message: z.string()\r\n .min(10, 'Message must be at least 10 characters')\r\n .max(1000, 'Message is too long')\r\n }),\r\n\r\n // Generic input validation\r\n email: z.string()\r\n .min(1, 'Email is required')\r\n .email('Please enter a valid email address'),\r\n\r\n password: z.string()\r\n .min(8, 'Password must be at least 8 characters')\r\n .regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)/,\r\n 'Password must contain uppercase, lowercase, and number'),\r\n\r\n phone: z.string()\r\n .regex(/^[\\+]?[1-9][\\d]{0,15}$/, 'Please enter a valid phone number'),\r\n\r\n // Strict URL: must be a valid URL. Use afri.url().nullable() for nullable URLs.\r\n url: z.string()\r\n .min(1, 'URL is required')\r\n .url('Please enter a valid URL'),\r\n\r\n required: z.string()\r\n .min(1, 'This field is required'),\r\n\r\n // Number validations\r\n positiveNumber: z.number()\r\n .positive('Must be a positive number'),\r\n\r\n integer: z.number()\r\n .int('Must be a whole number'),\r\n\r\n // Date validations\r\n futureDate: z.date()\r\n .min(new Date(), 'Date must be in the future'),\r\n\r\n // File validations\r\n imageFile: z.instanceof(File)\r\n .refine(file => file.size <= 5 * 1024 * 1024, 'File size must be less than 5MB')\r\n .refine(file => ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].includes(file.type),\r\n 'File must be a JPEG, PNG, GIF, or WebP image'),\r\n\r\n // --- DB Model Schemas ---\r\n\r\n /**\r\n * User profile update schema.\r\n * avatar_url: valid URL or null (with opt-in empty-string normalization)\r\n */\r\n userProfile: z.object({\r\n full_name: z.string().min(2, 'Full name must be at least 2 characters').max(100, 'Full name is too long').optional(),\r\n bio: z.string().max(500, 'Bio must be less than 500 characters').nullable().optional(),\r\n avatar_url: z.string().url('Please enter a valid URL').nullable().optional(),\r\n theme: z.enum(['africanity', 'dark', 'light', 'system']).optional(),\r\n language: z.string().min(2).max(10).optional()\r\n }),\r\n\r\n /**\r\n * Project creation/update schema.\r\n * repository_url, demo_url: valid URL or null\r\n */\r\n project: z.object({\r\n name: z.string().min(1, 'Project name is required').max(100, 'Project name is too long'),\r\n description: z.string().max(1000, 'Description is too long').nullable().optional(),\r\n repository_url: z.string().url('Please enter a valid repository URL').nullable().optional(),\r\n demo_url: z.string().url('Please enter a valid demo URL').nullable().optional(),\r\n tags: z.array(z.string()).optional(),\r\n is_public: z.boolean().optional()\r\n })\r\n};\r\n\r\n/**\r\n * Validation utilities\r\n */\r\nexport class Validation {\r\n /**\r\n * Validate data against a schema\r\n * @param {z.ZodSchema} schema - Zod schema to validate against\r\n * @param {any} data - Data to validate\r\n * @returns {Object} { success: boolean, data?: any, errors?: Object }\r\n */\r\n static validate(schema, data) {\r\n try {\r\n const result = schema.parse(data);\r\n return { success: true, data: result };\r\n } catch (error) {\r\n if (error instanceof z.ZodError) {\r\n const errors = {};\r\n error.errors.forEach(err => {\r\n const path = err.path.join('.');\r\n errors[path] = err.message;\r\n });\r\n return { success: false, errors };\r\n }\r\n return { success: false, errors: { general: 'Validation failed' } };\r\n }\r\n }\r\n\r\n /**\r\n * Validate a single field\r\n * @param {z.ZodSchema} schema - Field schema\r\n * @param {any} value - Field value\r\n * @returns {Object} { success: boolean, error?: string }\r\n */\r\n static validateField(schema, value) {\r\n try {\r\n schema.parse(value);\r\n return { success: true };\r\n } catch (error) {\r\n if (error instanceof z.ZodError) {\r\n return { success: false, error: error.errors[0]?.message || 'Invalid value' };\r\n }\r\n return { success: false, error: 'Validation failed' };\r\n }\r\n }\r\n\r\n /**\r\n * Get validation error message for a field\r\n * @param {Object} validationResult - Result from validate()\r\n * @param {string} fieldPath - Dot notation field path\r\n * @returns {string|null} Error message or null\r\n */\r\n static getFieldError(validationResult, fieldPath) {\r\n if (validationResult.success) {return null;}\r\n return validationResult.errors?.[fieldPath] || null;\r\n }\r\n\r\n /**\r\n * Check if a field has validation errors\r\n * @param {Object} validationResult - Result from validate()\r\n * @param {string} fieldPath - Dot notation field path\r\n * @returns {boolean} True if field has errors\r\n */\r\n static hasFieldError(validationResult, fieldPath) {\r\n return !!this.getFieldError(validationResult, fieldPath);\r\n }\r\n}\r\n\r\n/**\r\n * Predefined validation rules for common use cases\r\n */\r\nexport const rules = {\r\n required: (message = 'This field is required') =>\r\n z.string().min(1, message),\r\n\r\n email: (message = 'Please enter a valid email address') =>\r\n z.string().email(message),\r\n\r\n minLength: (min, message) =>\r\n z.string().min(min, message || `Must be at least ${min} characters`),\r\n\r\n maxLength: (max, message) =>\r\n z.string().max(max, message || `Must be less than ${max} characters`),\r\n\r\n pattern: (regex, message) =>\r\n z.string().regex(regex, message),\r\n\r\n numeric: (message = 'Must be a number') =>\r\n z.string().regex(/^\\d+$/, message),\r\n\r\n phone: (message = 'Please enter a valid phone number') =>\r\n z.string().regex(/^[\\+]?[1-9][\\d]{0,15}$/, message),\r\n\r\n url: (message = 'Please enter a valid URL') =>\r\n z.string().min(1, 'URL is required').url(message)\r\n};\r\n\r\n// ─────────────────────────────────────────────────────────────\r\n// AfriFieldBuilder — Chainable field schema builder\r\n//\r\n// Design: Strict by default. Convenient by composition.\r\n//\r\n// Usage:\r\n// afri.url() → valid URL, required\r\n// afri.url().nullable() → valid URL or null\r\n// afri.url().nullable().emptyAsNull() → \"\" → null, then validates\r\n// afri.url().optional() → valid URL or undefined\r\n// afri.string().trim() → trim whitespace in normalizeInput\r\n// ─────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Chainable field builder for AfriCode validation schemas.\r\n * Wraps Zod with framework-level semantics.\r\n *\r\n * IMPORTANT: .emptyAsNull() does NOT alter the Zod schema itself.\r\n * It marks the field for preprocessing via normalizeInput().\r\n * Validation remains strict — the preprocessing layer is separate.\r\n */\r\nexport class AfriFieldBuilder {\r\n /**\r\n * @param {z.ZodSchema} baseSchema - The base Zod schema for this field\r\n * @param {string} fieldType - The field type identifier (e.g. 'url', 'email')\r\n */\r\n constructor(baseSchema, fieldType = 'string') {\r\n this._baseSchema = baseSchema;\r\n this._fieldType = fieldType;\r\n this._isNullable = false;\r\n this._isOptional = false;\r\n this._emptyAsNull = false;\r\n this._trim = false;\r\n this._customMessage = null;\r\n }\r\n\r\n /**\r\n * Allow null as a valid value.\r\n * @returns {AfriFieldBuilder}\r\n */\r\n nullable() {\r\n this._isNullable = true;\r\n return this;\r\n }\r\n\r\n /**\r\n * Allow undefined (field can be omitted).\r\n * @returns {AfriFieldBuilder}\r\n */\r\n optional() {\r\n this._isOptional = true;\r\n return this;\r\n }\r\n\r\n /**\r\n * Mark this field for empty-string-to-null conversion.\r\n * REQUIRES .nullable() to have been called first.\r\n * The conversion happens in normalizeInput(), not in the Zod schema.\r\n *\r\n * @returns {AfriFieldBuilder}\r\n * @throws {Error} If .nullable() was not called first\r\n */\r\n emptyAsNull() {\r\n if (!this._isNullable) {\r\n throw new Error(\r\n `[AfriCode] .emptyAsNull() requires .nullable() to be called first. ` +\r\n `Use: afri.${this._fieldType}().nullable().emptyAsNull()`\r\n );\r\n }\r\n this._emptyAsNull = true;\r\n return this;\r\n }\r\n\r\n /**\r\n * Mark this field for whitespace trimming.\r\n * The trimming happens in normalizeInput(), not in the Zod schema.\r\n * \" hello \" → \"hello\"\r\n *\r\n * @returns {AfriFieldBuilder}\r\n */\r\n trim() {\r\n this._trim = true;\r\n return this;\r\n }\r\n\r\n /**\r\n * Set a custom error message for the base validation.\r\n * @param {string} message\r\n * @returns {AfriFieldBuilder}\r\n */\r\n message(message) {\r\n this._customMessage = message;\r\n return this;\r\n }\r\n\r\n /**\r\n * Build the final Zod schema.\r\n * @returns {z.ZodSchema}\r\n */\r\n build() {\r\n let schema = this._baseSchema;\r\n\r\n if (this._isNullable) {\r\n schema = schema.nullable();\r\n }\r\n\r\n if (this._isOptional) {\r\n schema = schema.optional();\r\n }\r\n\r\n return schema;\r\n }\r\n\r\n /**\r\n * Get the metadata for this field (used by normalizeInput).\r\n * @returns {Object}\r\n */\r\n getMeta() {\r\n return {\r\n fieldType: this._fieldType,\r\n isNullable: this._isNullable,\r\n isOptional: this._isOptional,\r\n emptyAsNull: this._emptyAsNull,\r\n trim: this._trim\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * AfriCode field factory namespace.\r\n * Creates AfriFieldBuilder instances for common field types.\r\n *\r\n * @example\r\n * // Strict URL — required, only valid URLs accepted\r\n * const urlField = afri.url().build();\r\n *\r\n * @example\r\n * // Nullable URL — valid URL or null\r\n * const avatarField = afri.url().nullable().build();\r\n *\r\n * @example\r\n * // Nullable URL with empty-string normalization\r\n * const avatarField = afri.url().nullable().emptyAsNull().build();\r\n */\r\nexport const afri = {\r\n /**\r\n * Create a strict URL field builder.\r\n * Empty strings are always rejected at the core.\r\n * @param {string} [message='Please enter a valid URL']\r\n * @returns {AfriFieldBuilder}\r\n */\r\n url(message = 'Please enter a valid URL') {\r\n return new AfriFieldBuilder(\r\n z.string().min(1, 'URL cannot be empty').url(message),\r\n 'url'\r\n );\r\n },\r\n\r\n /**\r\n * Create a strict email field builder.\r\n * @param {string} [message='Please enter a valid email address']\r\n * @returns {AfriFieldBuilder}\r\n */\r\n email(message = 'Please enter a valid email address') {\r\n return new AfriFieldBuilder(\r\n z.string().min(1, 'Email cannot be empty').email(message),\r\n 'email'\r\n );\r\n },\r\n\r\n /**\r\n * Create a string field builder.\r\n * @param {Object} [opts]\r\n * @param {number} [opts.min] - Minimum length\r\n * @param {number} [opts.max] - Maximum length\r\n * @param {string} [opts.message] - Custom error message\r\n * @returns {AfriFieldBuilder}\r\n */\r\n string(opts = {}) {\r\n let schema = z.string();\r\n if (opts.min !== undefined) {schema = schema.min(opts.min, opts.message || `Must be at least ${opts.min} characters`);}\r\n if (opts.max !== undefined) {schema = schema.max(opts.max, opts.message || `Must be less than ${opts.max} characters`);}\r\n return new AfriFieldBuilder(schema, 'string');\r\n },\r\n\r\n /**\r\n * Create a number field builder.\r\n * @param {Object} [opts]\r\n * @param {number} [opts.min] - Minimum value\r\n * @param {number} [opts.max] - Maximum value\r\n * @param {boolean} [opts.int] - Must be integer\r\n * @returns {AfriFieldBuilder}\r\n */\r\n number(opts = {}) {\r\n let schema = z.number();\r\n if (opts.min !== undefined) {schema = schema.min(opts.min);}\r\n if (opts.max !== undefined) {schema = schema.max(opts.max);}\r\n if (opts.int) {schema = schema.int('Must be a whole number');}\r\n return new AfriFieldBuilder(schema, 'number');\r\n },\r\n\r\n /**\r\n * Create a phone field builder.\r\n * @param {string} [message='Please enter a valid phone number']\r\n * @returns {AfriFieldBuilder}\r\n */\r\n phone(message = 'Please enter a valid phone number') {\r\n return new AfriFieldBuilder(\r\n z.string().regex(/^[\\+]?[1-9][\\d]{0,15}$/, message),\r\n 'phone'\r\n );\r\n }\r\n};\r\n\r\n/**\r\n * Normalize input data before validation.\r\n *\r\n * This is the preprocessing layer. It examines field metadata from\r\n * AfriFieldBuilder instances and applies transformations:\r\n *\r\n * 1. Trim whitespace (if .trim() or config.validation.trimStrings)\r\n * 2. Convert \"\" → null (if .emptyAsNull())\r\n *\r\n * Order matters: trim runs BEFORE emptyAsNull so that\r\n * \" \" → \"\" → null works correctly.\r\n *\r\n * Separation of concerns:\r\n * - normalizeInput() = input adapter (flexible)\r\n * - Validation.validate() = core validation (strict)\r\n *\r\n * @param {Object} fieldBuilders - Map of field names to AfriFieldBuilder instances\r\n * @param {Object} data - Raw input data (e.g. form submission)\r\n * @returns {Object} Normalized data ready for validation\r\n *\r\n * @example\r\n * const fields = {\r\n * avatar_url: afri.url().nullable().emptyAsNull(),\r\n * name: afri.string({ min: 2 }).trim(),\r\n * bio: afri.string({ max: 500 }).nullable()\r\n * };\r\n *\r\n * const raw = { avatar_url: '', name: ' AfriCode ', bio: 'Hello' };\r\n * const cleaned = normalizeInput(fields, raw);\r\n * // → { avatar_url: null, name: 'AfriCode', bio: 'Hello' }\r\n */\r\nexport function normalizeInput(fieldBuilders, data) {\r\n const result = { ...data };\r\n let globalTrim = false;\r\n\r\n // Check framework config for global trim setting\r\n try {\r\n const config = getConfig();\r\n globalTrim = config.validation?.trimStrings === true;\r\n } catch {\r\n // Config not initialized yet — use defaults (no global trim)\r\n }\r\n\r\n for (const [fieldName, builder] of Object.entries(fieldBuilders)) {\r\n if (!(builder instanceof AfriFieldBuilder)) {continue;}\r\n\r\n const meta = builder.getMeta();\r\n const value = result[fieldName];\r\n\r\n // Step 1: Trim whitespace (per-field .trim() or global config)\r\n if (typeof value === 'string' && (meta.trim || globalTrim)) {\r\n result[fieldName] = value.trim();\r\n }\r\n\r\n // Step 2: Convert empty string to null (per-field .emptyAsNull())\r\n if (meta.emptyAsNull && result[fieldName] === '') {\r\n result[fieldName] = null;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Build a Zod object schema from a map of AfriFieldBuilder instances.\r\n * Convenience method to go from builders → Zod schema in one step.\r\n *\r\n * @param {Object} fieldBuilders - Map of field names to AfriFieldBuilder instances\r\n * @returns {z.ZodObject}\r\n *\r\n * @example\r\n * const schema = buildSchema({\r\n * avatar_url: afri.url().nullable().emptyAsNull(),\r\n * name: afri.string({ min: 2, max: 50 })\r\n * });\r\n *\r\n * const result = Validation.validate(schema, data);\r\n */\r\nexport function buildSchema(fieldBuilders) {\r\n const shape = {};\r\n\r\n for (const [fieldName, builder] of Object.entries(fieldBuilders)) {\r\n if (builder instanceof AfriFieldBuilder) {\r\n shape[fieldName] = builder.build();\r\n } else {\r\n // Allow raw Zod schemas to be mixed in\r\n shape[fieldName] = builder;\r\n }\r\n }\r\n\r\n return z.object(shape);\r\n}\r\n\r\nexport default { schemas, Validation, rules, afri, AfriFieldBuilder, normalizeInput, buildSchema };",
|
|
21
|
+
"/**\r\n * AfriCode Base Component\r\n * \r\n * Abstract base class for all AfriCode Web Components.\r\n * Provides common utilities and enforces the Shadow DOM pattern.\r\n * \r\n * @module components/base\r\n */\r\n\r\nimport { html } from '../core/html.js';\r\n\r\nconst BaseHTMLElement = globalThis.HTMLElement ?? class {};\r\nconst hasConstructableStylesheets = typeof CSSStyleSheet !== 'undefined';\r\n\r\n/**\r\n * Base class for AfriCode components\r\n * All components extend this to inherit common functionality\r\n */\r\nexport class AfriCodeComponent extends BaseHTMLElement {\r\n constructor() {\r\n super();\r\n this.attachShadow({ mode: 'open' });\r\n \r\n // Native Web Component Error Boundary: intercept child render calls\r\n const originalRender = this.render;\r\n if (originalRender && typeof originalRender === 'function') {\r\n this.render = () => {\r\n try {\r\n originalRender.call(this);\r\n this.removeAttribute('has-error');\r\n } catch (error) {\r\n console.error(`[AfriCode] Rendering error in <${this.localName}>:`, error);\r\n this.setAttribute('has-error', 'true');\r\n this.shadowRoot.innerHTML = `\r\n <style>\r\n .af-local-error {\r\n padding: 1rem;\r\n border: 1px dashed rgba(220, 20, 60, 0.4);\r\n border-radius: 4px;\r\n color: #DC143C;\r\n font-family: 'Inter', system-ui, sans-serif;\r\n font-size: 0.85rem;\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n background: rgba(220, 20, 60, 0.05);\r\n }\r\n </style>\r\n <div class=\"af-local-error\">\r\n <span aria-hidden=\"true\">⚠️</span>\r\n <span>Failed to render</span>\r\n </div>\r\n `;\r\n this.emit('af-component-error', { \r\n component: this.localName, \r\n message: error.message,\r\n stack: error.stack \r\n });\r\n }\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Component lifecycle - connected to DOM\r\n * Empty base implementation to support super calls in subclasses.\r\n */\r\n connectedCallback() { }\r\n\r\n /**\r\n * Load shared Africanity styles into Shadow DOM\r\n */\r\n // Static cache for Constructable Stylesheets to prevent fetch waterfall\r\n static styleCache = new Map();\r\n\r\n /**\r\n * Global stylesheets injected by adapters (e.g. Tailwind, custom design systems).\r\n * Each entry must be a CSSStyleSheet instance.\r\n * Usage: AfriCodeComponent.injectGlobalSheet(sheet)\r\n * @type {CSSStyleSheet[]}\r\n */\r\n static globalSheets = [];\r\n\r\n /**\r\n * Inject a global CSSStyleSheet into every AfriCode component's Shadow DOM.\r\n * This is the primary integration point for external CSS frameworks like Tailwind.\r\n * @param {CSSStyleSheet} sheet - A Constructable Stylesheet instance\r\n */\r\n static injectGlobalSheet(sheet) {\r\n if (!hasConstructableStylesheets) {\r\n return;\r\n }\r\n\r\n if (!(sheet instanceof CSSStyleSheet)) {\r\n return;\r\n }\r\n if (!AfriCodeComponent.globalSheets.includes(sheet)) {\r\n AfriCodeComponent.globalSheets.push(sheet);\r\n }\r\n }\r\n\r\n /**\r\n * Load shared Africanity styles into Shadow DOM.\r\n * Optimized to fetch only once per session.\r\n * Also adopts any globally injected sheets (e.g. Tailwind utilities).\r\n */\r\n async loadStyles(css = '') {\r\n const styleUrl = '/styles/africanity.css';\r\n if (!this.shadowRoot) {\r\n return;\r\n }\r\n\r\n const canAdoptStyleSheets = hasConstructableStylesheets && 'adoptedStyleSheets' in this.shadowRoot;\r\n const sourceKey = typeof css === 'string' && css.length > 0 ? css : styleUrl;\r\n const stylesheetText = typeof css === 'string' && css.length > 0 ? css : null;\r\n\r\n // 1. Check cache first\r\n if (AfriCodeComponent.styleCache.has(sourceKey)) {\r\n const cached = AfriCodeComponent.styleCache.get(sourceKey);\r\n if (canAdoptStyleSheets) {\r\n this.shadowRoot.adoptedStyleSheets = [\r\n cached,\r\n ...AfriCodeComponent.globalSheets\r\n ];\r\n } else {\r\n this._applyFallbackStyle(cached?.cssText || cached?.text || cached || '');\r\n }\r\n return;\r\n }\r\n\r\n // 2. Fetch if not cached (Single Request)\r\n try {\r\n let resolvedCss = stylesheetText;\r\n\r\n if (!resolvedCss) {\r\n const response = await fetch(styleUrl);\r\n if (!response.ok) {\r\n throw new Error(`Unable to load stylesheet: ${response.status}`);\r\n }\r\n resolvedCss = await response.text();\r\n }\r\n\r\n if (canAdoptStyleSheets) {\r\n const styleSheet = new CSSStyleSheet();\r\n styleSheet.replaceSync(resolvedCss);\r\n\r\n // Cache it\r\n AfriCodeComponent.styleCache.set(sourceKey, styleSheet);\r\n\r\n // Apply core + any global sheets\r\n this.shadowRoot.adoptedStyleSheets = [\r\n styleSheet,\r\n ...AfriCodeComponent.globalSheets\r\n ];\r\n return;\r\n }\r\n\r\n this._applyFallbackStyle(resolvedCss);\r\n AfriCodeComponent.styleCache.set(sourceKey, { text: resolvedCss });\r\n } catch (err) {\r\n this._applyFallbackStyle(stylesheetText || '');\r\n }\r\n }\r\n\r\n _applyFallbackStyle(css) {\r\n if (!this.shadowRoot) {\r\n return;\r\n }\r\n\r\n let style = this.shadowRoot.querySelector('style[data-africode-core-styles]');\r\n if (!style) {\r\n style = document.createElement('style');\r\n style.setAttribute('data-africode-core-styles', '');\r\n this.shadowRoot.prepend(style);\r\n }\r\n\r\n style.textContent = css;\r\n }\r\n\r\n /**\r\n * Get Fibonacci spacing value\r\n * @param {number} index - Fibonacci sequence index (1,2,3,5,8,13,21,34,55)\r\n * @returns {string} CSS variable reference\r\n */\r\n spacing(index) {\r\n return `var(--space-${index})`;\r\n }\r\n\r\n /**\r\n * Create element with classes and attributes\r\n * @param {string} tag - HTML tag name\r\n * @param {Object} options - Element options\r\n * @returns {HTMLElement}\r\n */\r\n createElement(tag, { classes = [], attributes = {}, text = '' } = {}) {\r\n const el = document.createElement(tag);\r\n if (classes.length) {el.classList.add(...classes);}\r\n Object.entries(attributes).forEach(([key, value]) => el.setAttribute(key, value));\r\n if (text) {el.textContent = text;}\r\n return el;\r\n }\r\n\r\n\r\n /**\r\n * Emit a custom event\r\n * @param {string} name - Event name\r\n * @param {*} detail - Event detail data\r\n */\r\n emit(name, detail) {\r\n this.dispatchEvent(new CustomEvent(name, {\r\n detail,\r\n bubbles: true,\r\n composed: true\r\n }));\r\n }\r\n}\r\n\r\n/**\r\n * Register a component with the Custom Elements registry\r\n * @param {string} name - Component tag name (must include hyphen)\r\n * @param {typeof HTMLElement} component - Component class\r\n */\r\nexport function registerComponent(name, component) {\r\n if (typeof customElements === 'undefined') {\r\n return;\r\n }\r\n\r\n if (!customElements.get(name)) {\r\n customElements.define(name, component);\r\n }\r\n}\r\n\r\nexport { html };\r\nexport default { AfriCodeComponent, registerComponent, html };\r\n",
|
|
22
|
+
"/**\r\n * AfriCode Button Component\r\n * \r\n * Versatile button with multiple variants, sizes, and cultural themes.\r\n * Suitable for: E-commerce, Healthcare, Education, Finance, Government\r\n * \r\n * @module components/button\r\n */\r\n\r\nimport { AfriCodeComponent, registerComponent } from './base.js';\r\n\r\nexport class AfriButton extends AfriCodeComponent {\r\n static get observedAttributes() {\r\n return ['variant', 'size', 'theme', 'disabled', 'loading', 'icon', 'aria-label'];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.render();\r\n }\r\n\r\n connectedCallback() {\r\n const button = this.shadowRoot.querySelector('button');\r\n button?.addEventListener('click', (e) => {\r\n if (this.hasAttribute('disabled') || this.hasAttribute('loading')) {\r\n e.preventDefault();\r\n return;\r\n }\r\n this.emit('af-click', { originalEvent: e });\r\n });\r\n }\r\n\r\n attributeChangedCallback() {\r\n this.render();\r\n }\r\n\r\n render() {\r\n const variant = this.getAttribute('variant') || 'primary';\r\n const size = this.getAttribute('size') || 'md';\r\n const theme = this.getAttribute('theme') || 'tanzania';\r\n const isDisabled = this.hasAttribute('disabled');\r\n const isLoading = this.hasAttribute('loading');\r\n const icon = this.getAttribute('icon');\r\n const ariaLabel = this.getAttribute('aria-label');\r\n\r\n const themes = {\r\n tanzania: { primary: '#1EB53A', accent: '#FCD116', text: '#FFFFFF' },\r\n maasai: { primary: '#FF0000', accent: '#8B0000', text: '#FFFFFF' },\r\n ndebele: { primary: '#4169E1', accent: '#FFD700', text: '#FFFFFF' },\r\n ocean: { primary: '#00A3DD', accent: '#0077BE', text: '#FFFFFF' }\r\n };\r\n\r\n const t = themes[theme] || themes.tanzania;\r\n\r\n this.shadowRoot.innerHTML = `\r\n <style>\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n button {\r\n font-family: 'Inter', system-ui, sans-serif;\r\n font-weight: 600;\r\n border: none;\r\n border-radius: 5px;\r\n cursor: pointer;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 8px;\r\n transition: all 200ms ease-out;\r\n position: relative;\r\n overflow: hidden;\r\n }\r\n\r\n /* Sizes */\r\n .size-sm { padding: 5px 13px; font-size: 13px; }\r\n .size-md { padding: 8px 21px; font-size: 15px; }\r\n .size-lg { padding: 13px 34px; font-size: 17px; }\r\n\r\n /* Variants */\r\n .variant-primary {\r\n background: ${t.primary};\r\n color: ${t.text};\r\n }\r\n .variant-primary:hover:not(:disabled) {\r\n filter: brightness(1.1);\r\n transform: translateY(-2px);\r\n box-shadow: 0 4px 12px rgba(0,0,0,0.2);\r\n }\r\n\r\n .variant-secondary {\r\n background: transparent;\r\n color: ${t.primary};\r\n border: 2px solid ${t.primary};\r\n }\r\n .variant-secondary:hover:not(:disabled) {\r\n background: ${t.primary};\r\n color: ${t.text};\r\n }\r\n\r\n .variant-ghost {\r\n background: transparent;\r\n color: ${t.primary};\r\n }\r\n .variant-ghost:hover:not(:disabled) {\r\n background: rgba(0,0,0,0.05);\r\n }\r\n\r\n .variant-gradient {\r\n background: linear-gradient(135deg, ${t.primary} 0%, ${t.accent} 100%);\r\n color: ${t.text};\r\n }\r\n .variant-gradient:hover:not(:disabled) {\r\n transform: translateY(-2px);\r\n box-shadow: 0 6px 20px rgba(0,0,0,0.25);\r\n }\r\n\r\n /* States */\r\n button:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n\r\n button:active:not(:disabled) {\r\n transform: translateY(0);\r\n }\r\n\r\n /* Loading spinner */\r\n .spinner {\r\n width: 16px;\r\n height: 16px;\r\n border: 2px solid transparent;\r\n border-top-color: currentColor;\r\n border-radius: 50%;\r\n animation: spin 0.8s linear infinite;\r\n }\r\n\r\n @keyframes spin {\r\n to { transform: rotate(360deg); }\r\n }\r\n\r\n /* Icon */\r\n .icon {\r\n font-size: 1.1em;\r\n }\r\n </style>\r\n\r\n <button \r\n class=\"variant-${variant} size-${size}\"\r\n ${isDisabled ? 'disabled' : ''}\r\n ${ariaLabel ? `aria-label=\"${ariaLabel}\"` : ''}\r\n ${isLoading ? 'aria-busy=\"true\"' : ''}\r\n >\r\n ${isLoading ? '<span class=\"spinner\"></span>' : ''}\r\n ${icon && !isLoading ? `<span class=\"icon\">${icon}</span>` : ''}\r\n <slot></slot>\r\n </button>\r\n `;\r\n }\r\n}\r\n\r\nregisterComponent('af-button', AfriButton);\r\nexport default AfriButton;\r\n",
|
|
23
|
+
"/**\r\n * AfriCode Simple Card Component\r\n * \r\n * Versatile content card for various use cases.\r\n * Suitable for: Product cards, Blog posts, Team members, Stats\r\n * \r\n * @module components/card\r\n */\r\n\r\nimport { AfriCodeComponent, registerComponent } from './base.js';\r\n\r\nexport class AfriCard extends AfriCodeComponent {\r\n static get observedAttributes() {\r\n return ['theme', 'variant', 'clickable', 'image'];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.render();\r\n }\r\n\r\n connectedCallback() {\r\n if (this.hasAttribute('clickable')) {\r\n this.shadowRoot.querySelector('.card').addEventListener('click', () => {\r\n this.emit('af-click');\r\n });\r\n }\r\n }\r\n\r\n attributeChangedCallback() {\r\n this.render();\r\n }\r\n\r\n render() {\r\n const theme = this.getAttribute('theme') || 'default';\r\n const variant = this.getAttribute('variant') || 'elevated';\r\n const clickable = this.hasAttribute('clickable');\r\n const image = this.getAttribute('image');\r\n\r\n const themes = {\r\n default: { accent: '#333', border: '#eee' },\r\n tanzania: { accent: '#1EB53A', border: '#1EB53A' },\r\n maasai: { accent: '#FF0000', border: '#8B0000' },\r\n ndebele: { accent: '#4169E1', border: '#4169E1' }\r\n };\r\n const t = themes[theme] || themes.default;\r\n\r\n const variants = {\r\n elevated: 'box-shadow: 0 2px 12px rgba(0,0,0,0.1);',\r\n outlined: `border: 2px solid ${t.border};`,\r\n flat: 'background: #f8f9fa;'\r\n };\r\n\r\n this.shadowRoot.innerHTML = html`\r\n <style>\r\n :host {\r\n display: block;\r\n font-family: var(--font-body, 'Inter', sans-serif);\r\n }\r\n\r\n .card {\r\n background: var(--glass-bg, rgba(15, 23, 42, 0.7));\r\n backdrop-filter: blur(var(--glass-blur, 12px));\r\n border: 1px solid var(--glass-border, rgba(255, 255, 255, 0.1));\r\n border-radius: var(--radius-lg, 16px);\r\n overflow: hidden;\r\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n position: relative;\r\n ${clickable ? 'cursor: pointer;' : ''}\r\n }\r\n\r\n .card::before {\r\n content: '';\r\n position: absolute;\r\n inset: 0;\r\n background: radial-gradient(circle at top left, rgba(255,255,255,0.05), transparent);\r\n pointer-events: none;\r\n }\r\n\r\n ${clickable ? `\r\n .card:hover {\r\n transform: translateY(-8px);\r\n border-color: rgba(252, 209, 22, 0.4);\r\n box-shadow: 0 20px 40px rgba(0,0,0,0.4);\r\n }\r\n ` : ''}\r\n\r\n .card-image {\r\n width: 100%;\r\n height: 200px;\r\n object-fit: cover;\r\n border-bottom: 1px solid var(--glass-border);\r\n }\r\n\r\n .card-body {\r\n padding: 32px;\r\n }\r\n\r\n ::slotted(h1), ::slotted(h2), ::slotted(h3), ::slotted(h4) {\r\n margin: 0 0 12px 0;\r\n font-family: 'Outfit', sans-serif;\r\n font-weight: 700;\r\n color: var(--text-primary, #fff);\r\n letter-spacing: -0.02em;\r\n }\r\n\r\n ::slotted(p) {\r\n margin: 0;\r\n color: var(--text-muted, #94a3b8);\r\n line-height: 1.6;\r\n font-size: 0.95rem;\r\n }\r\n\r\n .card-footer {\r\n padding: 20px 32px;\r\n background: rgba(0,0,0,0.2);\r\n border-top: 1px solid var(--glass-border);\r\n }\r\n </style>\r\n\r\n <article class=\"card\">\r\n ${image ? `<img class=\"card-image\" src=\"${image}\" alt=\"\" />` : ''}\r\n <div class=\"card-body\">\r\n <slot></slot>\r\n </div>\r\n ${this.querySelector('[slot=\"footer\"]') ? `\r\n <div class=\"card-footer\">\r\n <slot name=\"footer\"></slot>\r\n </div>\r\n ` : ''}\r\n </article>\r\n `;\r\n }\r\n}\r\n\r\nregisterComponent('af-card', AfriCard);\r\nexport default AfriCard;\r\n",
|
|
24
|
+
"/**\r\n * AfriCode Navigation Bar Component\r\n * \r\n * Responsive navigation with logo, links, and mobile menu.\r\n * Suitable for: All websites and web applications\r\n * \r\n * @module components/navbar\r\n */\r\n\r\nimport { AfriCodeComponent, registerComponent } from './base.js';\r\nimport { store } from '../core/store.js';\r\nimport { subscribe } from '../core/state.js';\r\n\r\nexport class AfriNavbar extends AfriCodeComponent {\r\n static get observedAttributes() {\r\n return ['theme', 'logo', 'sticky'];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this._isOpen = false;\r\n this._unsubscribe = null;\r\n this.render();\r\n }\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n\r\n // Mobile toggle\r\n this.shadowRoot.querySelector('.menu-toggle')?.addEventListener('click', () => {\r\n this._isOpen = !this._isOpen;\r\n const navLinks = this.shadowRoot.querySelector('.nav-links');\r\n const toggle = this.shadowRoot.querySelector('.menu-toggle');\r\n if (navLinks) {navLinks.classList.toggle('open', this._isOpen);}\r\n if (toggle) {\r\n toggle.classList.toggle('open', this._isOpen);\r\n toggle.setAttribute('aria-expanded', String(this._isOpen));\r\n }\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n if (this._unsubscribe) {this._unsubscribe();}\r\n }\r\n\r\n attributeChangedCallback() {\r\n this.render();\r\n }\r\n\r\n render() {\r\n const theme = this.getAttribute('theme') || 'dark';\r\n const logo = this.getAttribute('logo') || 'AfriCode';\r\n const sticky = this.hasAttribute('sticky');\r\n\r\n this.shadowRoot.innerHTML = `\r\n <style>\r\n :host {\r\n display: block;\r\n --nav-height: 80px;\r\n }\r\n\r\n nav {\r\n height: var(--nav-height);\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding-inline: 5%;\r\n background: var(--glass-bg);\r\n backdrop-filter: blur(12px);\r\n -webkit-backdrop-filter: blur(12px);\r\n border-bottom: 1px solid var(--glass-border);\r\n position: fixed;\r\n top: 0;\r\n inset-inline: 0;\r\n z-index: 1000;\r\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\r\n }\r\n\r\n .logo-container {\r\n display: flex;\r\n align-items: center;\r\n gap: 12px;\r\n text-decoration: none;\r\n z-index: 1002;\r\n }\r\n\r\n .logo-mark {\r\n width: 32px;\r\n height: 32px;\r\n background: linear-gradient(135deg, var(--afri-green, #1eb53a), var(--afri-gold, #fcd116));\r\n border-radius: 8px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-weight: 900;\r\n color: black;\r\n font-size: 1rem;\r\n }\r\n\r\n .logo-text {\r\n font-family: 'Outfit', 'Space Grotesk', sans-serif;\r\n font-size: 1.5rem;\r\n font-weight: 800;\r\n color: var(--text-primary);\r\n letter-spacing: -0.02em;\r\n }\r\n\r\n .nav-links {\r\n display: flex;\r\n gap: 32px;\r\n align-items: center;\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n .nav-links ::slotted(a) {\r\n color: var(--text-muted);\r\n text-decoration: none;\r\n font-size: 0.95rem;\r\n font-weight: 500;\r\n transition: all 0.2s ease;\r\n position: relative;\r\n padding: 8px 0;\r\n }\r\n\r\n .nav-links ::slotted(a:hover),\r\n .nav-links ::slotted(a.active) {\r\n color: var(--text-primary);\r\n }\r\n\r\n .nav-links ::slotted(a)::after {\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 50%;\r\n width: 0;\r\n height: 2px;\r\n background: var(--afri-gold, #fcd116);\r\n transition: all 0.3s ease;\r\n transform: translateX(-50%);\r\n }\r\n\r\n .nav-links ::slotted(a:hover)::after,\r\n .nav-links ::slotted(a.active)::after {\r\n width: 100%;\r\n }\r\n\r\n /* Mobile Toggle */\r\n .menu-toggle {\r\n display: none;\r\n flex-direction: column;\r\n gap: 6px;\r\n background: none;\r\n border: none;\r\n cursor: pointer;\r\n z-index: 1002;\r\n padding: 8px;\r\n }\r\n\r\n .menu-toggle span {\r\n width: 24px;\r\n height: 2px;\r\n background: var(--text-primary);\r\n border-radius: 2px;\r\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\r\n }\r\n\r\n /* Mobile State */\r\n .menu-toggle.open span:nth-child(1) { transform: translateY(8px) rotate(45deg); }\r\n .menu-toggle.open span:nth-child(2) { opacity: 0; transform: translateX(-10px); }\r\n .menu-toggle.open span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }\r\n\r\n @media (max-width: 768px) {\r\n .menu-toggle {\r\n display: flex;\r\n }\r\n\r\n .nav-links {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100vh;\r\n background: var(--bg-base, #020617);\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 24px;\r\n opacity: 0;\r\n visibility: hidden;\r\n transform: translateY(-20px);\r\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n z-index: 1001;\r\n }\r\n\r\n .nav-links.open {\r\n opacity: 1;\r\n visibility: visible;\r\n transform: translateY(0);\r\n }\r\n\r\n .nav-links ::slotted(a) {\r\n font-size: 1.5rem;\r\n font-weight: 700;\r\n }\r\n }\r\n </style>\r\n\r\n <nav>\r\n <a href=\"/\" class=\"logo-container\">\r\n <div class=\"logo-mark\">A</div>\r\n <span class=\"logo-text\">${logo}</span>\r\n </a>\r\n\r\n <button\r\n class=\"menu-toggle\"\r\n aria-label=\"Toggle menu\"\r\n aria-controls=\"nav-links\"\r\n aria-expanded=\"${this._isOpen}\"\r\n >\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </button>\r\n\r\n <div id=\"nav-links\" class=\"nav-links ${this._isOpen ? 'open' : ''}\">\r\n <slot></slot>\r\n </div>\r\n </nav>\r\n `;\r\n }\r\n}\r\n\r\nregisterComponent('af-navbar', AfriNavbar);\r\nexport default AfriNavbar;\r\n",
|
|
24
25
|
"/**\r\n * AfriCode Input Component\r\n * \r\n * Form input with validation, icons, and cultural styling.\r\n * Suitable for: All sectors requiring data collection\r\n * \r\n * @module components/input\r\n */\r\n\r\nimport { AfriCodeComponent, registerComponent } from './base.js';\r\nimport { Validation, rules } from '../core/validation.js';\r\n\r\nexport class AfriInput extends AfriCodeComponent {\r\n static get observedAttributes() {\r\n return ['type', 'name', 'label', 'placeholder', 'error', 'helper', 'theme', 'icon', 'required', 'aria-label', 'aria-describedby', 'validation'];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this._uniqueId = Math.random().toString(36).substr(2, 9);\r\n this.render();\r\n }\r\n\r\n get value() {\r\n return this.shadowRoot.querySelector('input')?.value || '';\r\n }\r\n\r\n set value(val) {\r\n const input = this.shadowRoot.querySelector('input');\r\n if (input) {input.value = val;}\r\n }\r\n\r\n connectedCallback() {\r\n this._attachInputListeners();\r\n this.loadStyles();\r\n }\r\n\r\n attributeChangedCallback() {\r\n this.render();\r\n this._attachInputListeners();\r\n }\r\n\r\n _attachInputListeners() {\r\n const input = this.shadowRoot.querySelector('input');\r\n if (!input) {return;}\r\n\r\n input.addEventListener('input', (e) => {\r\n this.emit('af-input', { value: e.target.value });\r\n if (this.hasAttribute('error')) {\r\n this.removeAttribute('error');\r\n }\r\n });\r\n\r\n input.addEventListener('blur', () => {\r\n this.emit('af-blur', { value: this.value });\r\n this._validateInput();\r\n });\r\n }\r\n\r\n _setupValidation() {\r\n const validationRule = this.getAttribute('validation');\r\n if (!validationRule) {return;}\r\n\r\n const input = this.shadowRoot.querySelector('input');\r\n if (!input) {return;}\r\n\r\n input.addEventListener('input', () => {\r\n if (this.hasAttribute('error')) {\r\n this.removeAttribute('error');\r\n }\r\n });\r\n }\r\n\r\n _validateInput() {\r\n const input = this.shadowRoot.querySelector('input');\r\n if (!input) {return;}\r\n\r\n const validationRule = this.getAttribute('validation');\r\n const value = input.value;\r\n const required = this.hasAttribute('required');\r\n\r\n // Check required first\r\n if (required && !value.trim()) {\r\n this.setAttribute('error', 'This field is required');\r\n return;\r\n }\r\n\r\n // Apply validation rule\r\n if (validationRule && value.trim()) {\r\n const schema = this._getValidationSchema(validationRule);\r\n if (schema) {\r\n const result = Validation.validateField(schema, value);\r\n if (!result.success) {\r\n this.setAttribute('error', result.error);\r\n } else {\r\n this.removeAttribute('error');\r\n }\r\n }\r\n }\r\n }\r\n\r\n _getValidationSchema(ruleName) {\r\n const ruleMap = {\r\n 'email': rules.email(),\r\n 'password': rules.password(),\r\n 'phone': rules.phone(),\r\n 'url': rules.url(),\r\n 'required': rules.required()\r\n };\r\n\r\n // Handle parameterized rules like minLength:5\r\n if (ruleName.includes(':')) {\r\n const [rule, param] = ruleName.split(':');\r\n const numParam = parseInt(param);\r\n\r\n switch (rule) {\r\n case 'minLength':\r\n return rules.minLength(numParam);\r\n case 'maxLength':\r\n return rules.maxLength(numParam);\r\n case 'pattern':\r\n return rules.pattern(new RegExp(param), 'Invalid format');\r\n }\r\n }\r\n\r\n return ruleMap[ruleName] || null;\r\n }\r\n\r\n attributeChangedCallback() {\r\n this.render();\r\n }\r\n\r\n render() {\r\n const type = this.getAttribute('type') || 'text';\r\n const name = this.getAttribute('name') || '';\r\n const label = this.getAttribute('label') || '';\r\n const placeholder = this.getAttribute('placeholder') || '';\r\n const error = this.getAttribute('error') || '';\r\n const helper = this.getAttribute('helper') || '';\r\n const theme = this.getAttribute('theme') || 'tanzania';\r\n const icon = this.getAttribute('icon') || '';\r\n const required = this.hasAttribute('required');\r\n const ariaLabel = this.getAttribute('aria-label');\r\n const ariaDescribedBy = this.getAttribute('aria-describedby');\r\n\r\n const themes = {\r\n tanzania: { focus: '#1EB53A', error: '#DC3545' },\r\n maasai: { focus: '#FF0000', error: '#8B0000' },\r\n ndebele: { focus: '#4169E1', error: '#DC143C' }\r\n };\r\n const t = themes[theme] || themes.tanzania;\r\n\r\n const describedByList = [];\r\n if (error) {describedByList.push(`error-${this._uniqueId}`);}\r\n else if (helper) {describedByList.push(`helper-${this._uniqueId}`);}\r\n if (ariaDescribedBy) {describedByList.push(...ariaDescribedBy.split(' '));}\r\n const combinedDescribedBy = describedByList.length > 0 ? `aria-describedby=\"${describedByList.join(' ')}\"` : '';\r\n\r\n this.shadowRoot.innerHTML = `\r\n <style>\r\n :host {\r\n display: block;\r\n font-family: 'Inter', system-ui, sans-serif;\r\n }\r\n\r\n .input-wrapper {\r\n position: relative;\r\n }\r\n\r\n label {\r\n display: block;\r\n font-weight: 500;\r\n margin-bottom: 5px;\r\n color: #333;\r\n font-size: 14px;\r\n }\r\n\r\n .required-star {\r\n color: ${t.error};\r\n margin-left: 2px;\r\n }\r\n\r\n .input-container {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n input {\r\n width: 100%;\r\n padding: 10px 13px;\r\n ${icon ? 'padding-left: 40px;' : ''}\r\n font-size: 15px;\r\n border: 2px solid #ddd;\r\n border-radius: 5px;\r\n transition: all 200ms ease;\r\n font-family: inherit;\r\n box-sizing: border-box;\r\n }\r\n\r\n input:focus {\r\n outline: none;\r\n border-color: ${error ? t.error : t.focus};\r\n box-shadow: 0 0 0 3px ${error ? t.error + '20' : t.focus + '20'};\r\n }\r\n\r\n input.has-error {\r\n border-color: ${t.error};\r\n }\r\n\r\n .icon {\r\n position: absolute;\r\n left: 13px;\r\n color: #888;\r\n font-size: 16px;\r\n pointer-events: none;\r\n }\r\n\r\n .helper-text {\r\n font-size: 12px;\r\n margin-top: 4px;\r\n color: #666;\r\n }\r\n\r\n .error-text {\r\n font-size: 12px;\r\n margin-top: 4px;\r\n color: ${t.error};\r\n }\r\n </style>\r\n\r\n <div class=\"input-wrapper\">\r\n ${label ? `<label for=\"input-${this._uniqueId}\">${label}${required ? '<span class=\"required-star\">*</span>' : ''}</label>` : ''}\r\n <div class=\"input-container\">\r\n ${icon ? `<span class=\"icon\">${icon}</span>` : ''}\r\n <input \r\n id=\"input-${this._uniqueId}\"\r\n name=\"${name}\"\r\n type=\"${type}\"\r\n placeholder=\"${placeholder}\"\r\n class=\"${error ? 'has-error' : ''}\"\r\n ${required ? 'required' : ''}\r\n ${ariaLabel ? `aria-label=\"${ariaLabel}\"` : ''}\r\n ${error ? 'aria-invalid=\"true\"' : ''}\r\n ${combinedDescribedBy}\r\n />\r\n </div>\r\n ${error ? `<div id=\"error-${this._uniqueId}\" class=\"error-text\" role=\"alert\">${error}</div>` : ''}\r\n ${helper && !error ? `<div id=\"helper-${this._uniqueId}\" class=\"helper-text\">${helper}</div>` : ''}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\nregisterComponent('af-input', AfriInput);\r\nexport default AfriInput;\r\n",
|
|
25
26
|
"/**\r\n * AfriCode Alert/Notification Component\r\n * \r\n * Status messages, alerts, and notifications with cultural theming.\r\n * Suitable for: Healthcare alerts, Financial notifications, System messages\r\n * \r\n * @module components/alert\r\n */\r\n\r\nimport { AfriCodeComponent, registerComponent } from './base.js';\r\n\r\nexport class AfriAlert extends AfriCodeComponent {\r\n static get observedAttributes() {\r\n return ['type', 'title', 'dismissible'];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.render();\r\n }\r\n\r\n connectedCallback() {\r\n this.shadowRoot.querySelector('.close-btn')?.addEventListener('click', () => {\r\n this.remove();\r\n this.emit('af-dismiss');\r\n });\r\n }\r\n\r\n attributeChangedCallback() {\r\n this.render();\r\n }\r\n\r\n render() {\r\n const type = this.getAttribute('type') || 'info';\r\n const title = this.getAttribute('title') || '';\r\n const dismissible = this.hasAttribute('dismissible');\r\n\r\n const types = {\r\n success: { bg: '#d4edda', border: '#1EB53A', text: '#155724', icon: '✓' },\r\n warning: { bg: '#fff3cd', border: '#FCD116', text: '#856404', icon: '⚠' },\r\n error: { bg: '#f8d7da', border: '#DC3545', text: '#721c24', icon: '✕' },\r\n info: { bg: '#d1ecf1', border: '#00A3DD', text: '#0c5460', icon: 'ℹ' }\r\n };\r\n const t = types[type] || types.info;\r\n\r\n this.shadowRoot.innerHTML = `\r\n <style>\r\n :host {\r\n display: block;\r\n font-family: 'Inter', system-ui, sans-serif;\r\n }\r\n\r\n .alert {\r\n padding: 13px 21px;\r\n border-radius: 5px;\r\n border-left: 4px solid ${t.border};\r\n background: ${t.bg};\r\n color: ${t.text};\r\n display: flex;\r\n align-items: flex-start;\r\n gap: 13px;\r\n animation: slideIn 300ms ease-out;\r\n }\r\n\r\n @keyframes slideIn {\r\n from {\r\n opacity: 0;\r\n transform: translateY(-10px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n\r\n .icon {\r\n font-size: 18px;\r\n flex-shrink: 0;\r\n width: 24px;\r\n height: 24px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: ${t.border};\r\n color: white;\r\n border-radius: 50%;\r\n }\r\n\r\n .content {\r\n flex: 1;\r\n }\r\n\r\n .title {\r\n font-weight: 600;\r\n margin-bottom: 3px;\r\n }\r\n\r\n .close-btn {\r\n background: none;\r\n border: none;\r\n font-size: 18px;\r\n cursor: pointer;\r\n color: ${t.text};\r\n opacity: 0.7;\r\n padding: 0;\r\n line-height: 1;\r\n }\r\n\r\n .close-btn:hover {\r\n opacity: 1;\r\n }\r\n\r\n ::slotted(*) {\r\n margin: 0;\r\n }\r\n </style>\r\n\r\n <div class=\"alert\" role=\"alert\">\r\n <span class=\"icon\">${t.icon}</span>\r\n <div class=\"content\">\r\n ${title ? `<div class=\"title\">${title}</div>` : ''}\r\n <slot></slot>\r\n </div>\r\n ${dismissible ? '<button class=\"close-btn\" aria-label=\"Dismiss\">×</button>' : ''}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\nregisterComponent('af-alert', AfriAlert);\r\nexport default AfriAlert;\r\n",
|
|
26
27
|
"/**\n * AfriCode Grid Layout — <af-grid>\n *\n * A fully-featured, reactive responsive grid system.\n *\n * Attributes:\n * min-width — Minimum column width before wrapping (default: 280px)\n * gap — Grid gap spacing (default: 24px)\n * columns — Fixed column count (overrides auto-fit / min-width)\n * rows — Fixed row count for explicit grid\n * layout — Preset layouts: 'auto' | 'masonry' | 'sidebar' | 'holy-grail' | 'bento'\n * align — Align items: 'start' | 'center' | 'end' | 'stretch' (default: stretch)\n * justify — Justify items: 'start' | 'center' | 'end' | 'stretch' (default: stretch)\n * dense — Enable grid-auto-flow: dense (boolean attribute)\n * sidebar-side — 'left' | 'right' for sidebar layout (default: left)\n * sidebar-width — Width of the sidebar column (default: 280px)\n *\n * Events:\n * af-grid-resize — Fired when grid reflows due to container resize\n *\n * Examples:\n * <af-grid min-width=\"300px\" gap=\"32px\">...</af-grid>\n * <af-grid columns=\"3\" gap=\"16px\">...</af-grid>\n * <af-grid layout=\"sidebar\" sidebar-width=\"240px\">...</af-grid>\n * <af-grid layout=\"bento\" gap=\"16px\">...</af-grid>\n */\nimport { AfriCodeComponent, registerComponent, html } from './base.js';\n\n// Preset layout generators\nfunction getLayoutTemplate(layout, attrs) {\n const {\n sidebarSide = 'left',\n sidebarWidth = '280px',\n minWidth = '280px',\n gap = '24px',\n columns,\n rows,\n align = 'stretch',\n justify = 'stretch',\n dense = false,\n } = attrs;\n\n const denseVal = dense ? 'dense' : '';\n const base = `\n align-items: ${align};\n justify-items: ${justify};\n gap: ${gap};\n `;\n\n switch (layout) {\n case 'sidebar':\n return sidebarSide === 'right'\n ? `display: grid; grid-template-columns: 1fr ${sidebarWidth}; ${base}`\n : `display: grid; grid-template-columns: ${sidebarWidth} 1fr; ${base}`;\n\n case 'holy-grail':\n return `\n display: grid;\n grid-template-columns: ${sidebarWidth} 1fr ${sidebarWidth};\n grid-template-rows: auto 1fr auto;\n ${base}\n `;\n\n case 'bento':\n // Bento grid: 12-column base, children use grid-column/row spans\n return `\n display: grid;\n grid-template-columns: repeat(12, 1fr);\n grid-auto-rows: minmax(120px, auto);\n grid-auto-flow: row ${denseVal};\n ${base}\n `;\n\n case 'masonry':\n // CSS-native masonry (progressive enhancement)\n return `\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(${minWidth}, 1fr));\n grid-template-rows: masonry;\n grid-auto-flow: row ${denseVal};\n ${base}\n `;\n\n case 'auto':\n default: {\n const colValue = columns\n ? `repeat(${columns}, 1fr)`\n : `repeat(auto-fit, minmax(${minWidth}, 1fr))`;\n const rowValue = rows ? `repeat(${rows}, 1fr)` : 'auto';\n return `\n display: grid;\n grid-template-columns: ${colValue};\n ${rows ? `grid-template-rows: ${rowValue};` : ''}\n grid-auto-flow: row ${denseVal};\n ${base}\n `;\n }\n }\n}\n\nexport class AfriGrid extends AfriCodeComponent {\n static get observedAttributes() {\n return [\n 'min-width',\n 'gap',\n 'columns',\n 'rows',\n 'layout',\n 'align',\n 'justify',\n 'dense',\n 'sidebar-side',\n 'sidebar-width',\n ];\n }\n\n attributeChangedCallback() {\n if (this.isConnected) {\n this.render();\n }\n }\n\n _getAttrs() {\n return {\n minWidth: this.getAttribute('min-width') || '280px',\n gap: this.getAttribute('gap') || '24px',\n columns: this.getAttribute('columns') || null,\n rows: this.getAttribute('rows') || null,\n layout: this.getAttribute('layout') || 'auto',\n align: this.getAttribute('align') || 'stretch',\n justify: this.getAttribute('justify') || 'stretch',\n dense: this.hasAttribute('dense'),\n sidebarSide: this.getAttribute('sidebar-side') || 'left',\n sidebarWidth: this.getAttribute('sidebar-width') || '280px',\n };\n }\n\n _buildResponsiveBreakpoints(attrs) {\n // Only apply responsive fallback to auto/masonry layouts\n if (attrs.layout !== 'auto' && attrs.layout !== 'masonry') {\n return '';\n }\n\n return `\n @media (max-width: 768px) {\n .grid {\n grid-template-columns: repeat(auto-fit, minmax(min(${attrs.minWidth}, 100%), 1fr));\n }\n }\n @media (max-width: 480px) {\n .grid {\n grid-template-columns: 1fr;\n }\n }\n `;\n }\n\n _buildSidebarResponsive(attrs) {\n if (attrs.layout !== 'sidebar' && attrs.layout !== 'holy-grail') {\n return '';\n }\n return `\n @media (max-width: 768px) {\n .grid {\n grid-template-columns: 1fr;\n }\n }\n `;\n }\n\n render() {\n const attrs = this._getAttrs();\n const gridStyles = getLayoutTemplate(attrs.layout, attrs);\n const responsiveStyles =\n this._buildResponsiveBreakpoints(attrs) + this._buildSidebarResponsive(attrs);\n\n this.shadowRoot.innerHTML = html`\n <style>\n :host {\n display: block;\n width: 100%;\n box-sizing: border-box;\n }\n\n .grid {\n ${gridStyles}\n width: 100%;\n box-sizing: border-box;\n }\n\n /* Slotted children base styles */\n ::slotted(*) {\n min-width: 0; /* Prevent overflow in grid context */\n }\n\n ${responsiveStyles}\n </style>\n\n <div\n class=\"grid\"\n role=\"list\"\n part=\"grid\"\n aria-label=\"${this.getAttribute('aria-label') || 'Grid layout'}\"\n >\n <slot></slot>\n </div>\n `;\n }\n\n connectedCallback() {\n this.render();\n this._setupResizeObserver();\n }\n\n disconnectedCallback() {\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n }\n }\n\n _setupResizeObserver() {\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n\n let lastWidth = this.offsetWidth;\n this._resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const newWidth = entry.contentRect.width;\n if (Math.abs(newWidth - lastWidth) > 10) {\n lastWidth = newWidth;\n this.emit('af-grid-resize', {\n width: newWidth,\n height: entry.contentRect.height,\n layout: this.getAttribute('layout') || 'auto',\n });\n }\n }\n });\n\n this._resizeObserver.observe(this);\n }\n\n /**\n * Public API: programmatically update grid layout\n * @param {string} layout - New layout preset\n */\n setLayout(layout) {\n this.setAttribute('layout', layout);\n }\n\n /**\n * Public API: programmatically set column count\n * @param {number} count - Number of columns\n */\n setColumns(count) {\n this.setAttribute('columns', String(count));\n }\n\n /**\n * Public API: toggle dense packing\n * @param {boolean} enabled\n */\n setDense(enabled) {\n if (enabled) {\n this.setAttribute('dense', '');\n } else {\n this.removeAttribute('dense');\n }\n }\n}\n\nregisterComponent('af-grid', AfriGrid);\n",
|
|
@@ -49,13 +50,19 @@
|
|
|
49
50
|
"/**\r\n * AfriCode Language Switcher\r\n * A premium dropdown that uses native language names.\r\n */\r\nimport { AfriCodeComponent, registerComponent, html } from './base.js';\r\n\r\nexport class AfriLanguageSwitcher extends AfriCodeComponent {\r\n static get observedAttributes() {\r\n return ['current'];\r\n }\r\n\r\n render() {\r\n const languages = [\r\n { code: 'en', name: 'English' },\r\n { code: 'sw', name: 'Kiswahili' },\r\n { code: 'fr', name: 'Français' },\r\n { code: 'ar', name: 'العربية', dir: 'rtl' },\r\n { code: 'am', name: 'አማርኛ' },\r\n { code: 'yo', name: 'Yorùbá' }\r\n ];\r\n\r\n const current = this.getAttribute('current') || 'en';\r\n const currentLang = languages.find(l => l.code === current) || languages[0];\r\n\r\n this.shadowRoot.innerHTML = html`\r\n <style>\r\n :host { display: inline-block; position: relative; font-family: var(--font-body); }\r\n .switcher-btn {\r\n padding: 8px 16px;\r\n background: var(--glass-bg);\r\n border: 1px solid var(--glass-border);\r\n border-radius: var(--radius-md);\r\n color: var(--text-primary);\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n transition: all 0.3s ease;\r\n }\r\n .switcher-btn:hover { background: rgba(255,255,255,0.1); }\r\n .dropdown {\r\n position: absolute;\r\n top: calc(100% + 8px);\r\n right: 0;\r\n background: var(--afri-void);\r\n border: 1px solid var(--glass-border);\r\n border-radius: var(--radius-md);\r\n padding: 8px;\r\n display: none;\r\n min-width: 150px;\r\n z-index: 1000;\r\n box-shadow: 0 10px 40px rgba(0,0,0,0.5);\r\n }\r\n :host([open]) .dropdown { display: block; }\r\n .lang-option {\r\n padding: 8px 12px;\r\n border-radius: var(--radius-sm);\r\n cursor: pointer;\r\n transition: all 0.2s ease;\r\n }\r\n .lang-option:hover { background: var(--glass-bg); color: var(--accent-gold); }\r\n </style>\r\n\r\n <button class=\"switcher-btn\">\r\n <span>🌍</span>\r\n <span>${currentLang.name}</span>\r\n </button>\r\n\r\n <div class=\"dropdown\">\r\n ${languages.map(lang => html`\r\n <div class=\"lang-option\" data-code=\"${lang.code}\" dir=\"${lang.dir || 'ltr'}\">\r\n ${lang.name}\r\n </div>\r\n `)}\r\n </div>\r\n `;\r\n\r\n this.shadowRoot.querySelector('.switcher-btn').onclick = () => {\r\n this.toggleAttribute('open');\r\n };\r\n\r\n this.shadowRoot.querySelectorAll('.lang-option').forEach(opt => {\r\n opt.onclick = () => {\r\n const code = opt.dataset.code;\r\n this.setAttribute('current', code);\r\n this.removeAttribute('open');\r\n this.emit('lang-change', { code });\r\n\r\n // Demo logic: change document direction for Arabic\r\n if (code === 'ar') {\r\n document.documentElement.dir = 'rtl';\r\n } else {\r\n document.documentElement.dir = 'ltr';\r\n }\r\n };\r\n });\r\n }\r\n\r\n connectedCallback() {\r\n this.render();\r\n }\r\n\r\n attributeChangedCallback() {\r\n this.render();\r\n }\r\n}\r\n\r\nregisterComponent('af-language-switcher', AfriLanguageSwitcher);\r\n",
|
|
50
51
|
"/**\r\n * AfriCode Auth Component\r\n * A \"Profound Dark\" themed login/register form.\r\n * \r\n * Usage: <af-auth></af-auth>\r\n */\r\n\r\nimport { AfriCodeComponent, registerComponent } from './base.js';\r\n\r\nexport class AfriAuth extends AfriCodeComponent {\r\n constructor() {\r\n super();\r\n this.mode = 'login'; // login | register\r\n }\r\n\r\n connectedCallback() {\r\n this.render();\r\n this.setupEvents();\r\n }\r\n\r\n setupEvents() {\r\n const form = this.shadowRoot.querySelector('form');\r\n const toggle = this.shadowRoot.querySelector('.toggle-mode');\r\n\r\n if (toggle) {\r\n toggle.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n this.mode = this.mode === 'login' ? 'register' : 'login';\r\n this.render();\r\n this.setupEvents();\r\n });\r\n }\r\n\r\n if (form) {\r\n form.addEventListener('submit', async (e) => {\r\n e.preventDefault();\r\n const email = this.shadowRoot.querySelector('#email').value;\r\n const password = this.shadowRoot.querySelector('#password').value;\r\n const feedback = this.shadowRoot.querySelector('.feedback');\r\n\r\n feedback.textContent = 'Processing...';\r\n\r\n try {\r\n const res = await fetch('/api/auth', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ action: this.mode, email, password })\r\n });\r\n\r\n const data = await res.json();\r\n\r\n if (data.error) {\r\n feedback.textContent = data.error;\r\n feedback.style.color = '#ef4444';\r\n } else {\r\n feedback.textContent = 'Success! Redirecting...';\r\n feedback.style.color = '#22c55e';\r\n setTimeout(() => window.location.href = '/', 1000);\r\n }\r\n } catch (err) {\r\n feedback.textContent = 'Network Error';\r\n }\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const isLogin = this.mode === 'login';\r\n\r\n this.shadowRoot.innerHTML = `\r\n <style>\r\n :host {\r\n display: block;\r\n font-family: 'Inter', system-ui;\r\n max-width: 400px;\r\n margin: 0 auto;\r\n }\r\n .auth-card {\r\n background: #1e293b;\r\n border: 1px solid #334155;\r\n border-radius: 12px;\r\n padding: 32px;\r\n box-shadow: 0 10px 30px rgba(0,0,0,0.3);\r\n }\r\n h2 {\r\n margin-top: 0;\r\n color: white;\r\n text-align: center;\r\n font-weight: 800;\r\n }\r\n .input-group {\r\n margin-bottom: 20px;\r\n }\r\n label {\r\n display: block;\r\n color: #94a3b8;\r\n font-size: 0.9rem;\r\n margin-bottom: 8px;\r\n }\r\n input {\r\n width: 100%;\r\n padding: 12px;\r\n background: #0f172a;\r\n border: 1px solid #334155;\r\n border-radius: 6px;\r\n color: white;\r\n font-size: 1rem;\r\n box-sizing: border-box; \r\n }\r\n input:focus {\r\n border-color: #1EB53A;\r\n outline: none;\r\n }\r\n button {\r\n width: 100%;\r\n padding: 12px;\r\n background: #1EB53A;\r\n color: white;\r\n border: none;\r\n border-radius: 6px;\r\n font-weight: 700;\r\n cursor: pointer;\r\n font-size: 1rem;\r\n transition: all 0.2s;\r\n }\r\n button:hover {\r\n opacity: 0.9;\r\n transform: translateY(-1px);\r\n }\r\n .footer {\r\n margin-top: 20px;\r\n text-align: center;\r\n font-size: 0.9rem;\r\n color: #94a3b8;\r\n }\r\n .toggle-mode {\r\n color: #FCD116;\r\n cursor: pointer;\r\n text-decoration: underline;\r\n }\r\n .feedback {\r\n text-align: center;\r\n margin-bottom: 16px;\r\n min-height: 20px;\r\n font-size: 0.9rem;\r\n }\r\n </style>\r\n\r\n <div class=\"auth-card\">\r\n <h2>${isLogin ? 'Welcome Back' : 'Create Account'}</h2>\r\n <div class=\"feedback\"></div>\r\n <form>\r\n <div class=\"input-group\">\r\n <label for=\"email\">Email Address</label>\r\n <input type=\"email\" id=\"email\" required placeholder=\"you@example.com\">\r\n </div>\r\n <div class=\"input-group\">\r\n <label for=\"password\">Password</label>\r\n <input type=\"password\" id=\"password\" required placeholder=\"••••••••\">\r\n </div>\r\n <button type=\"submit\">${isLogin ? 'Sign In' : 'Sign Up'}</button>\r\n </form>\r\n <div class=\"footer\">\r\n ${isLogin ? 'New here?' : 'Already have an account?'}\r\n <span class=\"toggle-mode\">${isLogin ? 'Create an account' : 'Sign in'}</span>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\nregisterComponent('af-auth', AfriAuth);\r\n",
|
|
51
52
|
"import { AfriCodeComponent, registerComponent, html } from './base.js';\r\n\r\nclass ThemeToggle extends AfriCodeComponent {\r\n constructor() {\r\n super();\r\n this.currentTheme = 'dark';\r\n }\r\n\r\n connectedCallback() {\r\n this.loadStyles();\r\n \r\n // Check initial theme from document element or localStorage\r\n const storedTheme = localStorage.getItem('africode-theme');\r\n if (storedTheme) {\r\n this.currentTheme = storedTheme;\r\n document.documentElement.setAttribute('data-theme', storedTheme);\r\n } else {\r\n const hasLightMode = window.matchMedia('(prefers-color-scheme: light)').matches;\r\n this.currentTheme = hasLightMode ? 'light' : 'dark';\r\n document.documentElement.setAttribute('data-theme', this.currentTheme);\r\n }\r\n\r\n this.render();\r\n }\r\n\r\n toggleTheme() {\r\n this.currentTheme = this.currentTheme === 'dark' ? 'light' : 'dark';\r\n document.documentElement.setAttribute('data-theme', this.currentTheme);\r\n localStorage.setItem('africode-theme', this.currentTheme);\r\n \r\n // Dispatch event for other components that might need JS-level awareness\r\n window.dispatchEvent(new CustomEvent('theme-changed', { \r\n detail: { theme: this.currentTheme } \r\n }));\r\n\r\n this.render();\r\n }\r\n\r\n render() {\r\n const isDark = this.currentTheme === 'dark';\r\n \r\n this.shadowRoot.innerHTML = html`\r\n <style>\r\n .toggle-btn {\r\n background: var(--bg-surface-elevated, var(--afri-obsidian));\r\n border: 1px solid var(--border-color);\r\n color: var(--text-main);\r\n padding: var(--space-8) var(--space-13);\r\n border-radius: var(--radius-lg);\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n font-family: var(--font-body);\r\n font-size: 0.9rem;\r\n transition: all 0.3s var(--ease-snap);\r\n }\r\n .toggle-btn:hover {\r\n border-color: var(--brand-green);\r\n transform: translateY(-2px);\r\n }\r\n .icon {\r\n font-size: 1.1rem;\r\n }\r\n </style>\r\n \r\n <button class=\"toggle-btn\" @click=\"\\${() => this.toggleTheme()}\">\r\n <span class=\"icon\">\\${isDark ? '🌙' : '☀️'}</span>\r\n <span>\\${isDark ? 'Dark Mode' : 'Light Mode'}</span>\r\n </button>\r\n `;\r\n\r\n // Attach event listener natively since simple html tagged template doesn't bind events directly in this framework yet\r\n const btn = this.shadowRoot.querySelector('.toggle-btn');\r\n if (btn) {\r\n btn.addEventListener('click', () => this.toggleTheme());\r\n }\r\n }\r\n}\r\n\r\nregisterComponent('af-theme-toggle', ThemeToggle);\r\nexport default ThemeToggle;\r\n",
|
|
52
|
-
"/**\r\n * AfriCode
|
|
53
|
+
"/**\r\n * AfriCode Browser SDK\r\n * Client-side only entry point. Does not include server-only APIs.\r\n * \r\n * Use this for Bun.build({ target: 'browser' })\r\n * Use the full sdk.js for server/SSR contexts\r\n * \r\n * Philosophy: Browser-safe, tree-shakeable, zero server APIs\r\n */\r\n\r\nimport { createReactiveState, subscribe, createSignal, createEffect } from './state.js';\r\nimport { store, actions } from './store.js';\r\nimport patterns from './patterns.js';\r\nimport * as motion from './motion.js';\r\nimport { hydrate } from './hydration.js';\r\nimport { html, Layout } from './html.js';\r\nimport { schemas, Validation, rules, afri, AfriFieldBuilder, normalizeInput, buildSchema } from './validation.js';\r\nimport { createFramework, getConfig } from './config.js';\r\nimport { getRequestIdentity, parseCookieHeader, createSessionId, SESSION_COOKIE_NAME } from './request-identity.js';\r\nimport { sessionStore } from './session-store.js';\r\nimport { actions as runtimeActions } from './actions.js';\r\nimport { MiddlewareManager, loggerMiddleware, authMiddleware } from './middleware.js';\r\nimport {\r\n AfriCodeError, ValidationError, InvalidUrlError,\r\n SecurityError, CsrfError, RateLimitError,\r\n DatabaseError, ComponentError\r\n} from './errors.js';\r\n\r\n// v5.0.0 Browser-safe exports (A2UI protocol)\r\nimport { initA2UI, A2UIRenderer, A2UIProtocol } from './a2ui.js';\r\n\r\nimport { componentMap as coreMap } from '../components/index.js';\r\n\r\n// Utility to initialize the browser framework\r\nexport function init(projectComponentMap = {}) {\r\n if (typeof window !== 'undefined') {\r\n console.log('🌍 AfriCode Browser SDK Initialized');\r\n\r\n // Merge project map with core map\r\n const finalMap = { ...coreMap, ...projectComponentMap };\r\n\r\n if (Object.keys(finalMap).length > 0) {\r\n hydrate(finalMap);\r\n }\r\n }\r\n}\r\n\r\n// Browser-safe grouped exports\r\nexport {\r\n createReactiveState,\r\n subscribe,\r\n createSignal,\r\n createEffect\r\n} from './state.js';\r\n\r\nexport {\r\n store,\r\n actions,\r\n patterns,\r\n motion,\r\n html,\r\n Layout,\r\n schemas,\r\n Validation,\r\n rules,\r\n afri,\r\n AfriFieldBuilder,\r\n normalizeInput,\r\n buildSchema,\r\n createFramework,\r\n getConfig,\r\n getRequestIdentity,\r\n parseCookieHeader,\r\n createSessionId,\r\n SESSION_COOKIE_NAME,\r\n sessionStore,\r\n runtimeActions,\r\n MiddlewareManager,\r\n loggerMiddleware,\r\n authMiddleware,\r\n AfriCodeError,\r\n ValidationError,\r\n InvalidUrlError,\r\n SecurityError,\r\n CsrfError,\r\n RateLimitError,\r\n DatabaseError,\r\n ComponentError\r\n};\r\n\r\n// Browser-only exports (A2UI for AI-safe rendering)\r\nexport {\r\n initA2UI,\r\n A2UIRenderer,\r\n A2UIProtocol\r\n};\r\n\r\n// Default Export (Browser-safe)\r\nexport default {\r\n createReactiveState,\r\n subscribe,\r\n createSignal,\r\n createEffect,\r\n store,\r\n actions,\r\n patterns,\r\n motion,\r\n html,\r\n Layout,\r\n schemas,\r\n Validation,\r\n rules,\r\n afri,\r\n AfriFieldBuilder,\r\n normalizeInput,\r\n buildSchema,\r\n createFramework,\r\n getConfig,\r\n getRequestIdentity,\r\n parseCookieHeader,\r\n createSessionId,\r\n SESSION_COOKIE_NAME,\r\n sessionStore,\r\n runtimeActions,\r\n MiddlewareManager,\r\n loggerMiddleware,\r\n authMiddleware,\r\n AfriCodeError,\r\n ValidationError,\r\n InvalidUrlError,\r\n SecurityError,\r\n CsrfError,\r\n RateLimitError,\r\n DatabaseError,\r\n ComponentError,\r\n initA2UI,\r\n A2UIRenderer,\r\n A2UIProtocol,\r\n init\r\n};\r\n",
|
|
53
54
|
"/**\r\n * AfriCode Rhythmic Motion Engine\r\n * \r\n * Implements polyrhythmic easing and staggered animations\r\n * inspired by traditional African drumming and musical structures.\r\n * \r\n * Core concepts:\r\n * - \"Call and Response\": Interlocking animations\r\n * - \"Strain and Release\": Custom drum-beat easing\r\n * \r\n * @module core/motion\r\n */\r\n\r\n// Custom cubic-bezier mimicking the tension and release of a drum beat\r\n// Rapid attack, slight hold (tension), and natural release\r\nexport const Easing = {\r\n DrumBeat: 'cubic-bezier(0.1, 0.9, 0.2, 1.0)', // Percussive snap\r\n KoraPluck: 'cubic-bezier(0.34, 1.56, 0.64, 1)', // Elastic bounce\r\n RiverFlow: 'cubic-bezier(0.4, 0.0, 0.2, 1)', // Smooth continuous\r\n};\r\n\r\n/**\r\n * Animate elements with a \"Call and Response\" staggered effect\r\n * \r\n * @param {string|NodeList|Array} selector - Elements to animate\r\n * @param {Object} options - Animation configuration\r\n */\r\nexport function animateStaggered(selector, {\r\n delay = 50, // ms between items (polyrhythmic tick)\r\n duration = 600,\r\n easing = Easing.DrumBeat,\r\n y = 20, // Slide up distance\r\n scale = 0.95\r\n} = {}) {\r\n const elements = typeof selector === 'string'\r\n ? document.querySelectorAll(selector)\r\n : selector;\r\n\r\n if (!elements || elements.length === 0) {return;}\r\n\r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach((entry, index) => {\r\n if (entry.isIntersecting) {\r\n // Calculate staggered delay based on 12/8 time signature feel\r\n // We use a slight fluctuation to mimic human timing imperfections (groove)\r\n const groove = Math.random() * 10;\r\n const stagger = (index * delay) + groove;\r\n\r\n const el = entry.target;\r\n\r\n // Use Web Animations API for performance\r\n el.animate(\r\n [\r\n { opacity: 0, transform: `translateY(${y}px) scale(${scale})` },\r\n { opacity: 1, transform: 'translateY(0) scale(1)' }\r\n ],\r\n {\r\n duration: duration,\r\n delay: stagger,\r\n easing: easing,\r\n fill: 'forwards'\r\n }\r\n );\r\n\r\n // Stop observing once animated\r\n observer.unobserve(el);\r\n el.style.opacity = '1'; // Ensure final state\r\n }\r\n });\r\n }, { threshold: 0.1 });\r\n\r\n elements.forEach(el => {\r\n el.style.opacity = '0'; // Initial state\r\n observer.observe(el);\r\n });\r\n}\r\n\r\n/**\r\n * Apply \"Vibe\" transition to page navigation\r\n * Mimics a rhythmic \"wipe\" or \"beat\" transition\r\n */\r\nexport function transitionPage(nextPageFn) {\r\n // Simple example of a beat-match transition\r\n document.body.animate(\r\n [\r\n { opacity: 1, transform: 'scale(1)' },\r\n { opacity: 0, transform: 'scale(0.98)' } // \"Strain\" (Inhale)\r\n ],\r\n { duration: 200, easing: 'ease-in' }\r\n ).onfinish = () => {\r\n nextPageFn(); // Change content\r\n document.body.animate(\r\n [\r\n { opacity: 0, transform: 'scale(1.02)' },\r\n { opacity: 1, transform: 'scale(1)' } // \"Release\" (Exhale)\r\n ],\r\n { duration: 400, easing: Easing.DrumBeat }\r\n );\r\n };\r\n}\r\n\r\nexport default {\r\n Easing,\r\n animateStaggered,\r\n transitionPage\r\n};\r\n",
|
|
54
55
|
"/**\r\n * Islands Architecture Hydration Engine\r\n * \r\n * Efficiently loads component JavaScript only when elements are visible.\r\n * This enables the \"0 KB JS\" baseline for initial views.\r\n * \r\n * @module core/hydration\r\n */\r\n\r\n/**\r\n * Hydrate components based on visibility\r\n * @param {Object} componentMap - Map of tag names to dynamic import functions\r\n */\r\nexport function hydrate(componentMap) {\r\n if (typeof window === 'undefined') {return;}\r\n if (!('IntersectionObserver' in window)) {\r\n // Fallback for ancient browsers: load everything immediately\r\n Object.values(componentMap).forEach(load => load());\r\n return;\r\n }\r\n\r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const tag = entry.target.tagName.toLowerCase();\r\n const load = componentMap[tag];\r\n\r\n if (load) {\r\n console.log(`🏝️ Hydrating Island: <${tag}>`);\r\n load().then(() => {\r\n // Optimally, we could stop observing *all* of this tag type since definition is global\r\n // But for simplicity, we just unobserve this one.\r\n // The custom element upgrade happens automatically.\r\n\r\n // Remove from map to prevent double-loading attempts (though imports are cached)\r\n delete componentMap[tag];\r\n }).catch(err => console.error(`Failed to hydrate <${tag}>`, err));\r\n }\r\n\r\n // Stop observing this element regardless\r\n observer.unobserve(entry.target);\r\n }\r\n });\r\n }, { rootMargin: '50px 0px' }); // Pre-load 50px before view\r\n\r\n // Observe all registered tags locally\r\n Object.keys(componentMap).forEach(tag => {\r\n document.querySelectorAll(tag).forEach(el => observer.observe(el));\r\n });\r\n\r\n // TODO: Add MutationObserver for dynamically added nodes if needed\r\n}\r\n",
|
|
56
|
+
"/**\r\n * Request identity resolver for AfriCode sessions.\r\n *\r\n * @module core/request-identity\r\n */\r\n\r\nconst SESSION_COOKIE_NAME = 'afri_session';\r\nconst UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n\r\nexport function parseCookieHeader(cookieHeader = '') {\r\n return cookieHeader\r\n .split(';')\r\n .map((part) => part.trim())\r\n .filter(Boolean)\r\n .reduce((cookies, part) => {\r\n const separatorIndex = part.indexOf('=');\r\n if (separatorIndex === -1) {\r\n return cookies;\r\n }\r\n\r\n const key = part.slice(0, separatorIndex).trim();\r\n const value = part.slice(separatorIndex + 1).trim();\r\n cookies[key] = value;\r\n return cookies;\r\n }, {});\r\n}\r\n\r\nexport function createSessionId() {\r\n return crypto.randomUUID();\r\n}\r\n\r\nexport function getRequestIdentity(req) {\r\n const cookieHeader = req?.headers?.get?.('cookie') || '';\r\n const cookies = parseCookieHeader(cookieHeader);\r\n const sessionId = cookies[SESSION_COOKIE_NAME];\r\n\r\n if (sessionId && UUID_PATTERN.test(sessionId)) {\r\n return sessionId;\r\n }\r\n\r\n return createSessionId();\r\n}\r\n\r\nexport { SESSION_COOKIE_NAME };\r\n",
|
|
57
|
+
"/**\r\n * Server-side session state store for AfriCode.\r\n *\r\n * @module core/session-store\r\n */\r\n\r\nclass SessionStore {\r\n constructor() {\r\n this.sessions = new Map();\r\n }\r\n\r\n ensure(sessionId) {\r\n if (!this.sessions.has(sessionId)) {\r\n this.sessions.set(sessionId, {\r\n data: {\r\n counter: { value: 0 }\r\n },\r\n meta: {\r\n createdAt: new Date(),\r\n lastSeenAt: new Date()\r\n }\r\n });\r\n }\r\n\r\n return this.sessions.get(sessionId);\r\n }\r\n\r\n touch(sessionId) {\r\n const session = this.ensure(sessionId);\r\n session.meta.lastSeenAt = new Date();\r\n return session;\r\n }\r\n\r\n has(sessionId) {\r\n return this.sessions.has(sessionId);\r\n }\r\n\r\n get(sessionId) {\r\n return this.touch(sessionId).data;\r\n }\r\n\r\n set(sessionId, path, value) {\r\n const session = this.get(sessionId);\r\n const keys = path.split('/');\r\n let obj = session;\r\n\r\n while (keys.length > 1) {\r\n const key = keys.shift();\r\n if (!obj[key] || typeof obj[key] !== 'object') {\r\n obj[key] = {};\r\n }\r\n obj = obj[key];\r\n }\r\n\r\n obj[keys[0]] = value;\r\n return value;\r\n }\r\n\r\n delete(sessionId) {\r\n return this.sessions.delete(sessionId);\r\n }\r\n\r\n clear() {\r\n this.sessions.clear();\r\n }\r\n}\r\n\r\nexport const sessionStore = new SessionStore();\r\n",
|
|
58
|
+
"/**\r\n * Session-aware action helpers for AfriCode.\r\n *\r\n * @module core/actions\r\n */\r\n\r\nimport { sessionStore } from './session-store.js';\r\n\r\nexport const actions = {\r\n incrementCounter(sessionId) {\r\n const session = sessionStore.get(sessionId);\r\n const current = session.counter?.value || 0;\r\n const nextValue = current + 1;\r\n sessionStore.set(sessionId, 'counter/value', nextValue);\r\n return nextValue;\r\n },\r\n\r\n resetCounter(sessionId) {\r\n sessionStore.set(sessionId, 'counter/value', 0);\r\n return 0;\r\n },\r\n\r\n getCounter(sessionId) {\r\n const session = sessionStore.get(sessionId);\r\n return session.counter?.value || 0;\r\n }\r\n};\r\n",
|
|
59
|
+
"/**\r\n * AfriCode Middleware System\r\n * Core request interception pipeline\r\n *\r\n * @module core/middleware\r\n */\r\n\r\nimport { frameworkLog } from './logging.js';\r\n\r\nexport class MiddlewareManager {\r\n constructor() {\r\n this.middlewares = [];\r\n }\r\n\r\n use(fn) {\r\n if (typeof fn !== 'function') {\r\n throw new Error('Middleware must be a function');\r\n }\r\n\r\n this.middlewares.push(fn);\r\n return this;\r\n }\r\n\r\n async run(context) {\r\n for (const mw of this.middlewares) {\r\n const result = await mw(context);\r\n\r\n if (result instanceof Response) {\r\n return result;\r\n }\r\n\r\n // middleware can short-circuit request\r\n if (result?.response) {\r\n return result.response;\r\n }\r\n\r\n // allow mutation of context\r\n if (result?.context) {\r\n Object.assign(context, result.context);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Logging middleware - logs all requests\r\n */\r\nexport function loggerMiddleware() {\r\n return async (ctx) => {\r\n frameworkLog('log', `[AfriCode] ${ctx.req.method} ${ctx.pathname}`);\r\n return {};\r\n };\r\n}\r\n\r\n/**\r\n * Opt-in auth guard middleware for protected routes.\r\n */\r\nexport function authMiddleware(options = {}) {\r\n return async (ctx) => {\r\n const {\r\n protectedPaths = [],\r\n authorize = () => false,\r\n unauthorizedResponse = () => new Response('Unauthorized', { status: 401 })\r\n } = options;\r\n\r\n const isProtected = protectedPaths.some((path) => ctx.pathname.startsWith(path));\r\n\r\n if (isProtected) {\r\n const isAllowed = await authorize(ctx);\r\n\r\n if (!isAllowed) {\r\n return {\r\n response: unauthorizedResponse(ctx)\r\n };\r\n }\r\n }\r\n\r\n return {};\r\n };\r\n}\r\n",
|
|
60
|
+
"/**\r\n * AfriCode Error System\r\n *\r\n * Standardized error hierarchy for the entire framework.\r\n * Every error has: code, message, field (optional), context (optional).\r\n *\r\n * Design:\r\n * - All framework errors extend AfriCodeError\r\n * - Errors carry structured metadata for programmatic handling\r\n * - toJSON() produces a consistent API response format\r\n * - Error codes are namespaced: VALIDATION_*, SECURITY_*, DB_*, etc.\r\n *\r\n * @module core/errors\r\n */\r\n\r\n/**\r\n * Base error class for all AfriCode framework errors.\r\n *\r\n * @example\r\n * throw new AfriCodeError('Something failed', 'GENERIC_ERROR', { detail: '...' });\r\n *\r\n * @example\r\n * // In an API handler:\r\n * try { ... } catch (err) {\r\n * if (err instanceof AfriCodeError) {\r\n * return new Response(JSON.stringify(err.toJSON()), { status: err.statusCode });\r\n * }\r\n * }\r\n */\r\nexport class AfriCodeError extends Error {\r\n /**\r\n * @param {string} message - Human-readable error message\r\n * @param {string} code - Machine-readable error code (e.g. 'VALIDATION_FAILED')\r\n * @param {Object} [context={}] - Additional context for debugging\r\n * @param {number} [statusCode=500] - HTTP status code\r\n */\r\n constructor(message, code = 'INTERNAL_ERROR', context = {}, statusCode = 500) {\r\n super(message);\r\n this.name = 'AfriCodeError';\r\n this.code = code;\r\n this.context = context;\r\n this.statusCode = statusCode;\r\n this.timestamp = new Date().toISOString();\r\n }\r\n\r\n /**\r\n * Produce a consistent JSON structure for API responses.\r\n * @returns {Object}\r\n */\r\n toJSON() {\r\n return {\r\n error: {\r\n code: this.code,\r\n message: this.message,\r\n ...(this.context.field ? { field: this.context.field } : {}),\r\n ...(Object.keys(this.context).length > 0 ? { context: this.context } : {})\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Create an HTTP Response from this error.\r\n * @returns {Response}\r\n */\r\n toResponse() {\r\n return new Response(JSON.stringify(this.toJSON()), {\r\n status: this.statusCode,\r\n headers: { 'Content-Type': 'application/json' }\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Validation error — thrown when input fails schema validation.\r\n *\r\n * @example\r\n * throw new ValidationError(\"Field 'avatar_url' must be a valid URL or null\", 'avatar_url');\r\n */\r\nexport class ValidationError extends AfriCodeError {\r\n /**\r\n * @param {string} message\r\n * @param {string} [field] - The field that failed validation\r\n * @param {Object} [context={}]\r\n */\r\n constructor(message, field = null, context = {}) {\r\n super(message, 'VALIDATION_FAILED', { field, ...context }, 422);\r\n this.name = 'ValidationError';\r\n }\r\n\r\n /**\r\n * Create a ValidationError from a Zod error.\r\n * @param {import('zod').ZodError} zodError\r\n * @returns {ValidationError}\r\n */\r\n static fromZodError(zodError) {\r\n const firstIssue = zodError.issues[0];\r\n const field = firstIssue?.path?.join('.') || null;\r\n const message = firstIssue?.message || 'Validation failed';\r\n\r\n return new ValidationError(message, field, {\r\n issues: zodError.issues.map(issue => ({\r\n field: issue.path.join('.'),\r\n message: issue.message,\r\n code: issue.code\r\n }))\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Invalid URL error — specific subtype of validation error for URL fields.\r\n *\r\n * @example\r\n * throw new InvalidUrlError('avatar_url', '');\r\n * // → { error: { code: \"INVALID_URL\", message: \"Field 'avatar_url' ...\", field: \"avatar_url\" } }\r\n */\r\nexport class InvalidUrlError extends AfriCodeError {\r\n /**\r\n * @param {string} field - The URL field name\r\n * @param {*} value - The invalid value that was provided\r\n */\r\n constructor(field, value) {\r\n const valueDesc = value === '' ? 'an empty string' : `\"${value}\"`;\r\n super(\r\n `Field '${field}' must be a valid URL or null. Got ${valueDesc}.`,\r\n 'INVALID_URL',\r\n { field, received: value },\r\n 422\r\n );\r\n this.name = 'InvalidUrlError';\r\n }\r\n}\r\n\r\n/**\r\n * Security error — thrown for CSRF violations, rate limiting, etc.\r\n */\r\nexport class SecurityError extends AfriCodeError {\r\n /**\r\n * @param {string} message\r\n * @param {string} [code='SECURITY_VIOLATION']\r\n * @param {Object} [context={}]\r\n * @param {number} [statusCode=403]\r\n */\r\n constructor(message, code = 'SECURITY_VIOLATION', context = {}, statusCode = 403) {\r\n super(message, code, context, statusCode);\r\n this.name = 'SecurityError';\r\n }\r\n}\r\n\r\n/**\r\n * CSRF error — thrown when CSRF token is missing or mismatched.\r\n */\r\nexport class CsrfError extends SecurityError {\r\n constructor(reason = 'missing') {\r\n const messages = {\r\n missing: 'CSRF token missing. Include the token in both the cookie and the X-CSRF-Token header.',\r\n mismatch: 'CSRF token mismatch. The header token does not match the cookie token.'\r\n };\r\n super(messages[reason] || messages.missing, 'CSRF_FAILURE', { reason });\r\n this.name = 'CsrfError';\r\n }\r\n}\r\n\r\n/**\r\n * Rate limit error — thrown when request limit is exceeded.\r\n */\r\nexport class RateLimitError extends SecurityError {\r\n /**\r\n * @param {number} retryAfter - Seconds until the client can retry\r\n * @param {string} [message]\r\n */\r\n constructor(retryAfter, message = 'Too many requests. Please try again later.') {\r\n super(message, 'RATE_LIMIT_EXCEEDED', { retryAfter }, 429);\r\n this.name = 'RateLimitError';\r\n }\r\n}\r\n\r\n/**\r\n * Database error — thrown for DB operation failures.\r\n */\r\nexport class DatabaseError extends AfriCodeError {\r\n /**\r\n * @param {string} message\r\n * @param {string} [operation] - The operation that failed (e.g. 'INSERT', 'UPDATE')\r\n * @param {Object} [context={}]\r\n */\r\n constructor(message, operation = null, context = {}) {\r\n super(message, 'DATABASE_ERROR', { operation, ...context }, 500);\r\n this.name = 'DatabaseError';\r\n }\r\n}\r\n\r\n/**\r\n * Component error — thrown for Web Component failures.\r\n */\r\nexport class ComponentError extends AfriCodeError {\r\n /**\r\n * @param {string} message\r\n * @param {string} componentName - The component tag name (e.g. 'af-button')\r\n * @param {Object} [context={}]\r\n */\r\n constructor(message, componentName, context = {}) {\r\n super(\r\n `Component Error in <${componentName}>: ${message}`,\r\n 'COMPONENT_ERROR',\r\n { componentName, ...context },\r\n 500\r\n );\r\n this.name = 'ComponentError';\r\n }\r\n}\r\n\r\nexport default {\r\n AfriCodeError,\r\n ValidationError,\r\n InvalidUrlError,\r\n SecurityError,\r\n CsrfError,\r\n RateLimitError,\r\n DatabaseError,\r\n ComponentError\r\n};\r\n",
|
|
55
61
|
"/**\r\n * Component Registry (Islands Map)\r\n * \r\n * Instead of statically importing all components (monolithic bundle),\r\n * we export a map for lazy hydration.\r\n */\r\n\r\nexport { AfriCodeComponent } from './base.js';\r\nexport { AfriErrorBoundary } from './error-boundary.js';\r\n\r\n// Map of Tag Name -> Dynamic Import\r\nexport const componentMap = {\r\n // Core UI\r\n 'af-button': () => import('./button.js'),\r\n 'af-card': () => import('./card.js'),\r\n 'af-navbar': () => import('./navbar.js'),\r\n 'af-input': () => import('./input.js'),\r\n 'af-alert': () => import('./alert.js'),\r\n 'af-grid': () => import('./grid.js'),\r\n 'af-section': () => import('./section.js'),\r\n 'af-icon': () => import('./icon.js'),\r\n\r\n // Enterprise\r\n 'af-accordion': () => import('./accordion.js'),\r\n 'af-hero': () => import('./hero.js'),\r\n 'af-table': () => import('./table.js'),\r\n 'af-modal': () => import('./modal.js'),\r\n 'af-tabs': () => import('./tabs.js'),\r\n 'af-sidebar': () => import('./sidebar.js'),\r\n 'af-dropdown': () => import('./dropdown.js'),\r\n 'af-select': () => import('./select.js'),\r\n 'af-form': () => import('./form.js'),\r\n 'af-tooltip': () => import('./tooltip.js'),\r\n 'af-toast': () => import('./toast.js'),\r\n\r\n // Feedback & Display\r\n 'af-badge': () => import('./badge.js'),\r\n 'af-avatar': () => import('./avatar.js'),\r\n 'af-progress': () => import('./progress.js'),\r\n 'af-loader': () => import('./loader.js'),\r\n 'af-skeleton': () => import('./skeleton.js'),\r\n 'af-divider': () => import('./divider.js'),\r\n\r\n // Cultural\r\n 'af-kanga-card': () => import('./kanga-card.js'),\r\n 'af-cultural-card': () => import('./cultural-card.js'),\r\n 'af-pattern-showcase': () => import('./pattern-showcase.js'),\r\n 'af-language-switcher': () => import('./language-switcher.js'),\r\n\r\n // Auth\r\n 'af-auth': () => import('./auth.js'),\r\n\r\n // Theming\r\n 'af-theme-toggle': () => import('./theme-toggle.js'),\r\n};\r\n\r\nexport default componentMap;\r\n",
|
|
56
|
-
"import { AfriCodeComponent, registerComponent } from './base.js';\r\n\r\n/**\r\n * AfriCode Error Boundary Component\r\n * \r\n * Native Web Component implementation of an error boundary.\r\n * Listens for 'af-component-error' events bubbling up from children.\r\n * Gracefully displays a localized fallback UI.\r\n * \r\n * @module components/error-boundary\r\n */\r\nexport class AfriErrorBoundary extends AfriCodeComponent {\r\n static get observedAttributes() {\r\n return ['theme', 'fallback-message'];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this._hasError = false;\r\n this._errorDetail = null;\r\n this.render();\r\n }\r\n\r\n connectedCallback() {\r\n // Listen for internal errors bubbling up from custom AfriCode children\r\n this.addEventListener('af-component-error', this._handleError.bind(this));\r\n }\r\n\r\n disconnectedCallback() {\r\n this.removeEventListener('af-component-error', this._handleError.bind(this));\r\n }\r\n\r\n _handleError(e) {\r\n // Prevent it from bubbling further up and crashing higher boundaries\r\n e.stopPropagation();\r\n \r\n this._hasError = true;\r\n this._errorDetail = e.detail;\r\n \r\n console.warn('[AfriCode Boundary] Caught error:', this._errorDetail);\r\n this.render();\r\n }\r\n\r\n reset() {\r\n this._hasError = false;\r\n this._errorDetail = null;\r\n this.render();\r\n }\r\n\r\n attributeChangedCallback() {\r\n this.render();\r\n }\r\n\r\n render() {\r\n const theme = this.getAttribute('theme') || 'tanzania';\r\n const fallbackMessage = this.getAttribute('fallback-message') || 'A part of this page failed to load.';\r\n\r\n // Use appropriate semantic warning colors depending on culture theme\r\n const themes = {\r\n tanzania: { bg: '#FFF9E6', border: '#FCD116', text: '#5A4A00' },\r\n maasai: { bg: '#FFEEEE', border: '#FF0000', text: '#8B0000' },\r\n ndebele: { bg: '#EBF0FF', border: '#4169E1', text: '#002B5C' },\r\n ocean: { bg: '#E6FAFF', border: '#00A3DD', text: '#004A66' }\r\n };\r\n\r\n const t = themes[theme] || themes.tanzania;\r\n\r\n if (this._hasError) {\r\n this.shadowRoot.innerHTML = `\r\n <style>\r\n :host { display: block; width: 100%; font-family: 'Inter', system-ui, sans-serif; }\r\n .boundary-error {\r\n background: ${t.bg};\r\n border-left: 4px solid ${t.border};\r\n color: ${t.text};\r\n padding: 16px 20px;\r\n border-radius: 4px;\r\n margin: 12px 0;\r\n box-shadow: 0 2px 8px rgba(0,0,0,0.05);\r\n }\r\n .boundary-header {\r\n display: flex;\r\n align-items: center;\r\n gap: 12px;\r\n font-weight: 600;\r\n margin-bottom: 8px;\r\n font-size: 16px;\r\n }\r\n .boundary-message {\r\n font-size: 14px;\r\n opacity: 0.9;\r\n margin-bottom: 12px;\r\n }\r\n .boundary-dev-detail {\r\n font-family: monospace;\r\n font-size: 12px;\r\n background: rgba(0,0,0,0.05);\r\n padding: 8px;\r\n border-radius: 4px;\r\n overflow-x: auto;\r\n white-space: pre-wrap;\r\n }\r\n .boundary-action {\r\n margin-top: 12px;\r\n }\r\n button {\r\n background: transparent;\r\n border: 1px solid ${t.border};\r\n color: ${t.text};\r\n padding: 6px 12px;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n font-weight: 500;\r\n transition: background 0.2s;\r\n }\r\n button:hover {\r\n background: rgba(0,0,0,0.05);\r\n }\r\n </style>\r\n <div class=\"boundary-error\" role=\"alert\">\r\n <div class=\"boundary-header\">\r\n <span aria-hidden=\"true\">🔄</span>\r\n <span>Component Recovery</span>\r\n </div>\r\n <div class=\"boundary-message\">${fallbackMessage}</div>\r\n \r\n ${this._errorDetail ? `\r\n <div class=\"boundary-dev-detail\">\r\n <code><${this._errorDetail.component}>: ${this._errorDetail.message}</code>\r\n </div>\r\n ` : ''}\r\n\r\n <div class=\"boundary-action\">\r\n <button id=\"retry-btn\">Try Again</button>\r\n </div>\r\n </div>\r\n `;\r\n \r\n // Re-bind retry logic\r\n this.shadowRoot.getElementById('retry-btn').addEventListener('click', () => {\r\n this.reset();\r\n });\r\n return;\r\n }\r\n\r\n // If no error, just passthrough the light DOM via slots\r\n this.shadowRoot.innerHTML = `\r\n <style>:host { display: block; }</style>\r\n <slot></slot>\r\n `;\r\n }\r\n}\r\n\r\nregisterComponent('af-error-boundary', AfriErrorBoundary);\r\nexport default AfriErrorBoundary;\r\n"
|
|
62
|
+
"import { AfriCodeComponent, registerComponent } from './base.js';\r\n\r\n/**\r\n * AfriCode Error Boundary Component\r\n * \r\n * Native Web Component implementation of an error boundary.\r\n * Listens for 'af-component-error' events bubbling up from children.\r\n * Gracefully displays a localized fallback UI.\r\n * \r\n * @module components/error-boundary\r\n */\r\nexport class AfriErrorBoundary extends AfriCodeComponent {\r\n static get observedAttributes() {\r\n return ['theme', 'fallback-message'];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this._hasError = false;\r\n this._errorDetail = null;\r\n this.render();\r\n }\r\n\r\n connectedCallback() {\r\n // Listen for internal errors bubbling up from custom AfriCode children\r\n this.addEventListener('af-component-error', this._handleError.bind(this));\r\n }\r\n\r\n disconnectedCallback() {\r\n this.removeEventListener('af-component-error', this._handleError.bind(this));\r\n }\r\n\r\n _handleError(e) {\r\n // Prevent it from bubbling further up and crashing higher boundaries\r\n e.stopPropagation();\r\n \r\n this._hasError = true;\r\n this._errorDetail = e.detail;\r\n \r\n console.warn('[AfriCode Boundary] Caught error:', this._errorDetail);\r\n this.render();\r\n }\r\n\r\n reset() {\r\n this._hasError = false;\r\n this._errorDetail = null;\r\n this.render();\r\n }\r\n\r\n attributeChangedCallback() {\r\n this.render();\r\n }\r\n\r\n render() {\r\n const theme = this.getAttribute('theme') || 'tanzania';\r\n const fallbackMessage = this.getAttribute('fallback-message') || 'A part of this page failed to load.';\r\n\r\n // Use appropriate semantic warning colors depending on culture theme\r\n const themes = {\r\n tanzania: { bg: '#FFF9E6', border: '#FCD116', text: '#5A4A00' },\r\n maasai: { bg: '#FFEEEE', border: '#FF0000', text: '#8B0000' },\r\n ndebele: { bg: '#EBF0FF', border: '#4169E1', text: '#002B5C' },\r\n ocean: { bg: '#E6FAFF', border: '#00A3DD', text: '#004A66' }\r\n };\r\n\r\n const t = themes[theme] || themes.tanzania;\r\n\r\n if (this._hasError) {\r\n this.shadowRoot.innerHTML = `\r\n <style>\r\n :host { display: block; width: 100%; font-family: 'Inter', system-ui, sans-serif; }\r\n .boundary-error {\r\n background: ${t.bg};\r\n border-left: 4px solid ${t.border};\r\n color: ${t.text};\r\n padding: 16px 20px;\r\n border-radius: 4px;\r\n margin: 12px 0;\r\n box-shadow: 0 2px 8px rgba(0,0,0,0.05);\r\n }\r\n .boundary-header {\r\n display: flex;\r\n align-items: center;\r\n gap: 12px;\r\n font-weight: 600;\r\n margin-bottom: 8px;\r\n font-size: 16px;\r\n }\r\n .boundary-message {\r\n font-size: 14px;\r\n opacity: 0.9;\r\n margin-bottom: 12px;\r\n }\r\n .boundary-dev-detail {\r\n font-family: monospace;\r\n font-size: 12px;\r\n background: rgba(0,0,0,0.05);\r\n padding: 8px;\r\n border-radius: 4px;\r\n overflow-x: auto;\r\n white-space: pre-wrap;\r\n }\r\n .boundary-action {\r\n margin-top: 12px;\r\n }\r\n button {\r\n background: transparent;\r\n border: 1px solid ${t.border};\r\n color: ${t.text};\r\n padding: 6px 12px;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n font-weight: 500;\r\n transition: background 0.2s;\r\n }\r\n button:hover {\r\n background: rgba(0,0,0,0.05);\r\n }\r\n </style>\r\n <div class=\"boundary-error\" role=\"alert\">\r\n <div class=\"boundary-header\">\r\n <span aria-hidden=\"true\">🔄</span>\r\n <span>Component Recovery</span>\r\n </div>\r\n <div class=\"boundary-message\">${fallbackMessage}</div>\r\n \r\n ${this._errorDetail ? `\r\n <div class=\"boundary-dev-detail\">\r\n <code><${this._errorDetail.component}>: ${this._errorDetail.message}</code>\r\n </div>\r\n ` : ''}\r\n\r\n <div class=\"boundary-action\">\r\n <button id=\"retry-btn\">Try Again</button>\r\n </div>\r\n </div>\r\n `;\r\n \r\n // Re-bind retry logic\r\n this.shadowRoot.getElementById('retry-btn').addEventListener('click', () => {\r\n this.reset();\r\n });\r\n return;\r\n }\r\n\r\n // If no error, just passthrough the light DOM via slots\r\n this.shadowRoot.innerHTML = `\r\n <style>:host { display: block; }</style>\r\n <slot></slot>\r\n `;\r\n }\r\n}\r\n\r\nregisterComponent('af-error-boundary', AfriErrorBoundary);\r\nexport default AfriErrorBoundary;\r\n",
|
|
63
|
+
"/**\r\n * A2UI Protocol Implementation\r\n * Agent-to-User Interface declarative protocol for generative AI\r\n *\r\n * Enables AI agents to return UI widgets as part of responses without\r\n * executing arbitrary code, ensuring security and consistency.\r\n *\r\n * @module core/a2ui\r\n */\r\n\r\nimport { componentMap as coreComponentMap } from '../components/index.js';\r\n\r\n/**\r\n * A2UI Message Types\r\n */\r\nexport const A2UI_TYPES = {\r\n COMPONENT: 'component',\r\n FORM: 'form',\r\n LIST: 'list',\r\n CARD: 'card',\r\n MODAL: 'modal',\r\n TOAST: 'toast',\r\n PROGRESS: 'progress'\r\n};\r\n\r\n/**\r\n * A2UI Component Schemas\r\n */\r\nexport const A2UI_SCHEMAS = {\r\n component: {\r\n type: 'object',\r\n properties: {\r\n id: { type: 'string' },\r\n type: { type: 'string', enum: Object.values(A2UI_TYPES) },\r\n props: { type: 'object' },\r\n children: { type: 'array', items: { $ref: '#' } }\r\n },\r\n required: ['id', 'type']\r\n }\r\n};\r\n\r\nfunction escapeHtml(value) {\r\n return String(value)\r\n .replace(/&/g, '&')\r\n .replace(/</g, '<')\r\n .replace(/>/g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n}\r\n\r\nfunction renderNode(node) {\r\n if (Array.isArray(node)) {\r\n return node.map(renderNode).join('');\r\n }\r\n\r\n if (node === null || node === undefined || node === false) {\r\n return '';\r\n }\r\n\r\n if (typeof node === 'string' || typeof node === 'number' || typeof node === 'boolean') {\r\n return escapeHtml(node);\r\n }\r\n\r\n if (typeof node !== 'object') {\r\n return '';\r\n }\r\n\r\n const tag = node.tag || node.tagName;\r\n if (!tag) {\r\n return '';\r\n }\r\n\r\n const props = node.props || {};\r\n const attributes = Object.entries(props)\r\n .filter(([, value]) => value !== null && value !== undefined && value !== false)\r\n .map(([key, value]) => value === true ? key : `${key}=\"${escapeHtml(value)}\"`)\r\n .join(' ');\r\n\r\n const children = renderNode(node.children ?? node.content ?? '');\r\n return `<${tag}${attributes ? ` ${attributes}` : ''}>${children}</${tag}>`;\r\n}\r\n\r\nfunction isUnsafeHtml(html) {\r\n return /<\\s*script\\b|on\\w+\\s*=|javascript:/i.test(String(html));\r\n}\r\n\r\n/**\r\n * A2UI Renderer\r\n * Renders A2UI messages into actual DOM elements\r\n */\r\nexport class A2UIRenderer {\r\n constructor(rootElement) {\r\n this.root = rootElement;\r\n this.components = new Map();\r\n }\r\n\r\n /**\r\n * Render an A2UI message\r\n * @param {Object} message - A2UI message object\r\n */\r\n render(message) {\r\n if (!message || !message.type) {\r\n throw new Error('Invalid A2UI message');\r\n }\r\n\r\n if (message.html !== undefined) {\r\n if (isUnsafeHtml(message.html)) {\r\n throw new Error('Unsafe HTML is not allowed in A2UI render messages');\r\n }\r\n\r\n throw new Error('Raw HTML payloads are not supported in A2UI render messages');\r\n }\r\n\r\n const output = Array.isArray(message.components)\r\n ? message.components.map(renderNode).join('')\r\n : renderNode(message.component || message);\r\n\r\n if (message.id) {\r\n this.components.set(message.id, {\r\n id: message.id,\r\n type: message.type,\r\n props: message.props || {},\r\n children: message.children || message.components || []\r\n });\r\n }\r\n\r\n const canRenderToDOM = this.root && typeof this.root.appendChild === 'function' && typeof document !== 'undefined';\r\n if (canRenderToDOM && output) {\r\n const container = document.createElement('div');\r\n container.innerHTML = output;\r\n while (container.firstChild) {\r\n this.root.appendChild(container.firstChild);\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n\r\n /**\r\n * Create DOM element from A2UI component\r\n * @param {Object} component - A2UI component definition\r\n */\r\n createElement(component) {\r\n const { type, props = {}, children = [] } = component;\r\n\r\n let element;\r\n\r\n switch (type) {\r\n case A2UI_TYPES.COMPONENT:\r\n element = this.createCustomComponent(props);\r\n break;\r\n case A2UI_TYPES.FORM:\r\n element = this.createForm(props);\r\n break;\r\n case A2UI_TYPES.LIST:\r\n element = this.createList(props);\r\n break;\r\n case A2UI_TYPES.CARD:\r\n element = this.createCard(props);\r\n break;\r\n case A2UI_TYPES.MODAL:\r\n element = this.createModal(props);\r\n break;\r\n case A2UI_TYPES.TOAST:\r\n element = this.createToast(props);\r\n break;\r\n case A2UI_TYPES.PROGRESS:\r\n element = this.createProgress(props);\r\n break;\r\n default:\r\n throw new Error(`Unknown A2UI component type: ${type}`);\r\n }\r\n\r\n // Render children\r\n if (children.length > 0) {\r\n for (const child of children) {\r\n const childElement = this.createElement(child);\r\n element.appendChild(childElement);\r\n }\r\n }\r\n\r\n return element;\r\n }\r\n\r\n /**\r\n * Create custom AfriCode component\r\n */\r\n createCustomComponent({ tag, ...props }) {\r\n const element = document.createElement(tag || 'div');\r\n Object.assign(element, props);\r\n return element;\r\n }\r\n\r\n /**\r\n * Create form component\r\n */\r\n createForm({ fields = [], onSubmit }) {\r\n const form = document.createElement('af-form');\r\n\r\n for (const field of fields) {\r\n const input = document.createElement('af-input');\r\n input.setAttribute('name', field.name);\r\n input.setAttribute('placeholder', field.placeholder || '');\r\n input.setAttribute('type', field.type || 'text');\r\n form.appendChild(input);\r\n }\r\n\r\n if (onSubmit) {\r\n form.addEventListener('submit', onSubmit);\r\n }\r\n\r\n return form;\r\n }\r\n\r\n /**\r\n * Create list component\r\n */\r\n createList({ items = [] }) {\r\n const list = document.createElement('af-grid');\r\n\r\n for (const item of items) {\r\n const card = this.createCard(item);\r\n list.appendChild(card);\r\n }\r\n\r\n return list;\r\n }\r\n\r\n /**\r\n * Create card component\r\n */\r\n createCard({ title, content, image }) {\r\n const card = document.createElement('af-card');\r\n\r\n if (title) {\r\n const titleEl = document.createElement('h3');\r\n titleEl.textContent = title;\r\n card.appendChild(titleEl);\r\n }\r\n\r\n if (content) {\r\n const contentEl = document.createElement('p');\r\n contentEl.textContent = content;\r\n card.appendChild(contentEl);\r\n }\r\n\r\n if (image) {\r\n const img = document.createElement('img');\r\n img.src = image;\r\n img.alt = title || 'Card image';\r\n card.appendChild(img);\r\n }\r\n\r\n return card;\r\n }\r\n\r\n /**\r\n * Create modal component\r\n */\r\n createModal({ title, content, actions = [] }) {\r\n const modal = document.createElement('af-modal');\r\n modal.setAttribute('open', '');\r\n\r\n if (title) {\r\n const titleEl = document.createElement('h2');\r\n titleEl.slot = 'header';\r\n titleEl.textContent = title;\r\n modal.appendChild(titleEl);\r\n }\r\n\r\n if (content) {\r\n const contentEl = document.createElement('p');\r\n contentEl.textContent = content;\r\n modal.appendChild(contentEl);\r\n }\r\n\r\n const actionsContainer = document.createElement('div');\r\n actionsContainer.slot = 'footer';\r\n\r\n for (const action of actions) {\r\n const button = document.createElement('af-button');\r\n button.textContent = action.label;\r\n if (action.primary) {\r\n button.setAttribute('variant', 'primary');\r\n }\r\n if (action.onClick) {\r\n button.addEventListener('click', action.onClick);\r\n }\r\n actionsContainer.appendChild(button);\r\n }\r\n\r\n modal.appendChild(actionsContainer);\r\n return modal;\r\n }\r\n\r\n /**\r\n * Create toast component\r\n */\r\n createToast({ message, type = 'info', duration = 3000 }) {\r\n const toast = document.createElement('af-toast');\r\n toast.setAttribute('type', type);\r\n toast.textContent = message;\r\n\r\n // Auto-remove after duration\r\n setTimeout(() => {\r\n toast.remove();\r\n }, duration);\r\n\r\n return toast;\r\n }\r\n\r\n /**\r\n * Create progress component\r\n */\r\n createProgress({ value = 0, max = 100, label }) {\r\n const progress = document.createElement('af-progress');\r\n progress.setAttribute('value', value);\r\n progress.setAttribute('max', max);\r\n\r\n if (label) {\r\n progress.setAttribute('label', label);\r\n }\r\n\r\n return progress;\r\n }\r\n\r\n /**\r\n * Update existing component\r\n */\r\n update(id, newProps) {\r\n const element = this.components.get(id);\r\n if (element) {\r\n Object.assign(element, newProps);\r\n }\r\n }\r\n\r\n /**\r\n * Remove component\r\n */\r\n remove(id) {\r\n const element = this.components.get(id);\r\n if (element) {\r\n element.remove();\r\n this.components.delete(id);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A2UI Protocol Handler\r\n * Processes streaming A2UI messages from AI agents\r\n */\r\nexport class A2UIProtocol {\r\n constructor(renderer) {\r\n this.renderer = renderer;\r\n this.messageQueue = [];\r\n this.messageHandlers = [];\r\n this.isProcessing = false;\r\n }\r\n\r\n /**\r\n * Register a message handler callback\r\n * @param {Function} callback - Handler to receive processed messages\r\n */\r\n onMessage(callback) {\r\n if (typeof callback === 'function') {\r\n this.messageHandlers.push(callback);\r\n }\r\n }\r\n\r\n /**\r\n * Send a message into the A2UI system\r\n * @param {Object|string} message - A2UI message\r\n */\r\n sendMessage(message) {\r\n return this.processMessage(message);\r\n }\r\n\r\n /**\r\n * Process incoming A2UI message\r\n * @param {Object|string} message - A2UI message\r\n */\r\n processMessage(message) {\r\n if (typeof message === 'string') {\r\n try {\r\n message = JSON.parse(message);\r\n } catch {\r\n console.warn('Invalid A2UI message format:', message);\r\n return null;\r\n }\r\n }\r\n\r\n if (message?.type === 'render' && this.renderer) {\r\n return this.renderer.render(message);\r\n }\r\n\r\n for (const handler of this.messageHandlers) {\r\n handler(message);\r\n }\r\n\r\n return message;\r\n }\r\n\r\n /**\r\n * Process queued messages\r\n */\r\n processQueue() {\r\n if (this.isProcessing || this.messageQueue.length === 0) {\r\n return;\r\n }\r\n\r\n this.isProcessing = true;\r\n\r\n while (this.messageQueue.length > 0) {\r\n const message = this.messageQueue.shift();\r\n\r\n try {\r\n this.renderer.render(message);\r\n } catch (error) {\r\n console.error('A2UI render error:', error);\r\n }\r\n }\r\n\r\n this.isProcessing = false;\r\n }\r\n\r\n /**\r\n * Stream handler for real-time AI responses\r\n * @param {ReadableStream} stream - AI response stream\r\n */\r\n async handleStream(stream) {\r\n const reader = stream.getReader();\r\n const decoder = new TextDecoder();\r\n\r\n let buffer = '';\r\n\r\n while (true) {\r\n const { done, value } = await reader.read();\r\n\r\n if (done) {\r\n break;\r\n }\r\n\r\n buffer += decoder.decode(value, { stream: true });\r\n\r\n // Process complete messages\r\n const messages = buffer.split('\\n');\r\n buffer = messages.pop(); // Keep incomplete message in buffer\r\n\r\n for (const message of messages) {\r\n if (message.trim()) {\r\n this.processMessage(message.trim());\r\n }\r\n }\r\n }\r\n\r\n // Process any remaining buffer\r\n if (buffer.trim()) {\r\n this.processMessage(buffer.trim());\r\n }\r\n }\r\n\r\n createStream() {\r\n const subscribers = new Set();\r\n\r\n return {\r\n subscribe(callback) {\r\n if (typeof callback !== 'function') {\r\n return () => {};\r\n }\r\n\r\n subscribers.add(callback);\r\n return () => subscribers.delete(callback);\r\n },\r\n push(message) {\r\n for (const callback of subscribers) {\r\n callback(message);\r\n }\r\n }\r\n };\r\n }\r\n\r\n validateAgainstSchema(component) {\r\n const tag = component?.tag || component?.tagName;\r\n return Promise.resolve(Boolean(tag && coreComponentMap[tag]));\r\n }\r\n}\r\n\r\n/**\r\n * Initialize A2UI system\r\n * @param {HTMLElement} root - Root element for rendering\r\n */\r\nexport function initA2UI(root) {\r\n // Handle server-side rendering (no DOM)\r\n if (typeof document === 'undefined') {\r\n root = null;\r\n } else {\r\n root = root || document.body;\r\n }\r\n\r\n const renderer = new A2UIRenderer(root);\r\n const protocol = new A2UIProtocol(renderer);\r\n\r\n // Make globally available for AI agents\r\n if (typeof window !== 'undefined') {\r\n window.a2ui = {\r\n render: (message) => protocol.processMessage(message),\r\n handleStream: (stream) => protocol.handleStream(stream),\r\n update: (id, props) => renderer.update(id, props),\r\n remove: (id) => renderer.remove(id),\r\n sendMessage: (message) => protocol.sendMessage(message),\r\n onMessage: (callback) => protocol.onMessage(callback),\r\n createStream: () => protocol.createStream(),\r\n validateAgainstSchema: (component) => protocol.validateAgainstSchema(component)\r\n };\r\n }\r\n\r\n return { renderer, protocol };\r\n}\r\n"
|
|
57
64
|
],
|
|
58
|
-
"mappings": "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",
|
|
59
|
-
"debugId": "
|
|
65
|
+
"mappings": "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",
|
|
66
|
+
"debugId": "047013451C9EB27464756E2164756E21",
|
|
60
67
|
"names": []
|
|
61
68
|
}
|