@riverbankcms/sdk 0.7.0 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +229 -0
- package/dist/cli/index.js +42 -95
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init-docs/content/agents-section.md +50 -0
- package/dist/cli/init-docs/content/cli-reference.md +574 -0
- package/dist/cli/init-docs/content/content-management.md +384 -0
- package/dist/cli/init-docs/content/context-brand.md +125 -0
- package/dist/cli/init-docs/content/context-brief.md +77 -0
- package/dist/cli/init-docs/content/context-knowledge.md +111 -0
- package/dist/cli/init-docs/content/getting-started.md +130 -0
- package/dist/cli/init-docs/content/site-workflows-readme.md +96 -0
- package/dist/cli/init-docs/content/workflow-add-block.md +228 -0
- package/dist/cli/init-docs/content/workflow-create-page.md +193 -0
- package/dist/cli/init-docs/content/workflow-publish.md +280 -0
- package/dist/client/bookings.d.mts +2 -0
- package/dist/client/bookings.d.ts +2 -0
- package/dist/client/bookings.js +2956 -104
- package/dist/client/bookings.js.map +1 -1
- package/dist/client/bookings.mjs +2929 -70
- package/dist/client/bookings.mjs.map +1 -1
- package/dist/client/client.d.mts +2 -2
- package/dist/client/client.d.ts +2 -2
- package/dist/client/client.js +602 -68
- package/dist/client/client.js.map +1 -1
- package/dist/client/client.mjs +602 -68
- package/dist/client/client.mjs.map +1 -1
- package/dist/client/hooks.d.mts +2 -2
- package/dist/client/hooks.d.ts +2 -2
- package/dist/client/rendering/client.js +3070 -259
- package/dist/client/rendering/client.js.map +1 -1
- package/dist/client/rendering/client.mjs +3212 -395
- package/dist/client/rendering/client.mjs.map +1 -1
- package/dist/client/spam-protection.d.mts +55 -0
- package/dist/client/spam-protection.d.ts +55 -0
- package/dist/client/spam-protection.js +2915 -0
- package/dist/client/spam-protection.js.map +1 -0
- package/dist/client/spam-protection.mjs +2893 -0
- package/dist/client/spam-protection.mjs.map +1 -0
- package/dist/client/{usePage-BiOReg0_.d.ts → usePage-BYmJCCm1.d.ts} +132 -11
- package/dist/client/{usePage-BXjk8BhD.d.mts → usePage-DZtrWajy.d.mts} +132 -11
- package/dist/server/{Layout-wBtJLTVX.d.ts → Layout-Yluyb6sK.d.ts} +1 -1
- package/dist/server/{Layout-B7cvis7r.d.mts → Layout-qWLdVm5-.d.mts} +1 -1
- package/dist/server/chunk-2IZ6S225.js +122 -0
- package/dist/server/chunk-2IZ6S225.js.map +1 -0
- package/dist/server/chunk-4CV4JOE5.js +27 -0
- package/dist/server/chunk-4CV4JOE5.js.map +1 -0
- package/dist/server/chunk-5LRR64Y6.mjs +72 -0
- package/dist/server/chunk-5LRR64Y6.mjs.map +1 -0
- package/dist/server/chunk-NBTRDLCM.js +72 -0
- package/dist/server/chunk-NBTRDLCM.js.map +1 -0
- package/dist/server/chunk-NFEGQTCC.mjs +27 -0
- package/dist/server/{chunk-7FIJSGHU.mjs → chunk-NFQLH5IA.mjs} +856 -74
- package/dist/server/chunk-NFQLH5IA.mjs.map +1 -0
- package/dist/server/chunk-PPHZV6YD.mjs +122 -0
- package/dist/server/chunk-PPHZV6YD.mjs.map +1 -0
- package/dist/server/{chunk-P7UVAMK6.js → chunk-VLXTNB2C.js} +866 -84
- package/dist/server/chunk-VLXTNB2C.js.map +1 -0
- package/dist/server/{components-CMMwDXTW.d.mts → components-DNHfSCML.d.mts} +3 -3
- package/dist/server/{components-CICSJyp_.d.ts → components-Di5ME6He.d.ts} +3 -3
- package/dist/server/components.d.mts +5 -5
- package/dist/server/components.d.ts +5 -5
- package/dist/server/components.js +1 -1
- package/dist/server/components.mjs +1 -1
- package/dist/server/config-validation.js +1 -1
- package/dist/server/config-validation.mjs +1 -1
- package/dist/server/config.js +1 -1
- package/dist/server/config.mjs +1 -1
- package/dist/server/data.d.mts +2 -2
- package/dist/server/data.d.ts +2 -2
- package/dist/server/data.js +1 -1
- package/dist/server/data.mjs +1 -1
- package/dist/server/env.d.mts +109 -0
- package/dist/server/env.d.ts +109 -0
- package/dist/server/env.js +14 -0
- package/dist/server/env.js.map +1 -0
- package/dist/server/env.mjs +14 -0
- package/dist/server/{index-DI_qlYx3.d.mts → index--Oyunk_B.d.mts} +2 -2
- package/dist/server/{index-BTwWvSBu.d.ts → index-C9Ra8dza.d.ts} +2 -2
- package/dist/server/{index-Bucs6UqG.d.mts → index-Clm3skz_.d.mts} +1 -1
- package/dist/server/{index-Cp7tJuRt.d.ts → index-DLvNddi-.d.ts} +1 -1
- package/dist/server/index.d.mts +216 -5
- package/dist/server/index.d.ts +216 -5
- package/dist/server/index.js +301 -4
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +301 -4
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/{loadContent-DmgpFcFC.d.ts → loadContent-D7LQwI0o.d.ts} +3 -3
- package/dist/server/{loadContent-C-YYUKQa.d.mts → loadContent-DVfuBLiZ.d.mts} +3 -3
- package/dist/server/{loadPage-IDGVDFBB.js → loadPage-AXNAERDS.js} +2 -2
- package/dist/server/{loadPage-IDGVDFBB.js.map → loadPage-AXNAERDS.js.map} +1 -1
- package/dist/server/{loadPage-DP3nrHBi.d.ts → loadPage-BmYJCe_V.d.ts} +2 -2
- package/dist/server/{loadPage-B8mQUUSo.d.mts → loadPage-BucnLHmE.d.mts} +2 -2
- package/dist/server/{loadPage-DNQTTRHL.mjs → loadPage-XR7ORQ2E.mjs} +2 -2
- package/dist/server/loadPage-XR7ORQ2E.mjs.map +1 -0
- package/dist/server/metadata.d.mts +4 -4
- package/dist/server/metadata.d.ts +4 -4
- package/dist/server/metadata.js +1 -1
- package/dist/server/metadata.mjs +1 -1
- package/dist/server/navigation.d.mts +2 -2
- package/dist/server/navigation.d.ts +2 -2
- package/dist/server/navigation.js +1 -1
- package/dist/server/navigation.mjs +1 -1
- package/dist/server/next/revalidate.d.mts +66 -0
- package/dist/server/next/revalidate.d.ts +66 -0
- package/dist/server/next/revalidate.js +60 -0
- package/dist/server/next/revalidate.js.map +1 -0
- package/dist/server/next/revalidate.mjs +60 -0
- package/dist/server/next/revalidate.mjs.map +1 -0
- package/dist/server/next/tags.d.mts +81 -0
- package/dist/server/next/tags.d.ts +81 -0
- package/dist/server/next/tags.js +36 -0
- package/dist/server/next/tags.js.map +1 -0
- package/dist/server/next/tags.mjs +36 -0
- package/dist/server/next/tags.mjs.map +1 -0
- package/dist/server/next.d.mts +164 -6
- package/dist/server/next.d.ts +164 -6
- package/dist/server/next.js +79 -11
- package/dist/server/next.js.map +1 -1
- package/dist/server/next.mjs +76 -8
- package/dist/server/next.mjs.map +1 -1
- package/dist/server/rendering/server.d.mts +4 -4
- package/dist/server/rendering/server.d.ts +4 -4
- package/dist/server/rendering/server.js +1 -1
- package/dist/server/rendering/server.mjs +1 -1
- package/dist/server/rendering.d.mts +7 -7
- package/dist/server/rendering.d.ts +7 -7
- package/dist/server/rendering.js +3 -3
- package/dist/server/rendering.js.map +1 -1
- package/dist/server/rendering.mjs +4 -4
- package/dist/server/routing.d.mts +3 -3
- package/dist/server/routing.d.ts +3 -3
- package/dist/server/routing.js +2 -2
- package/dist/server/routing.mjs +2 -2
- package/dist/server/server.d.mts +5 -5
- package/dist/server/server.d.ts +5 -5
- package/dist/server/server.js +5 -5
- package/dist/server/server.js.map +1 -1
- package/dist/server/server.mjs +5 -5
- package/dist/server/theme-bridge.js +1 -1
- package/dist/server/theme-bridge.mjs +1 -1
- package/dist/server/theme.js +1 -1
- package/dist/server/theme.mjs +1 -1
- package/dist/server/{types-BvcJU7zk.d.ts → types-BRQyLrQU.d.ts} +132 -11
- package/dist/server/{types-Dsu9wsUh.d.mts → types-BSV6Vc-P.d.mts} +2 -2
- package/dist/server/{types-1cLz0vnq.d.mts → types-C-LShyIg.d.mts} +132 -11
- package/dist/server/{types-CVykEqXN.d.ts → types-Dt98DeYa.d.ts} +2 -2
- package/dist/server/webhooks.d.mts +81 -0
- package/dist/server/webhooks.d.ts +81 -0
- package/dist/server/webhooks.js +12 -0
- package/dist/server/webhooks.js.map +1 -0
- package/dist/server/webhooks.mjs +12 -0
- package/dist/server/webhooks.mjs.map +1 -0
- package/package.json +29 -3
- package/dist/client/resolver-BhueZVxZ.d.mts +0 -61
- package/dist/client/resolver-BhueZVxZ.d.ts +0 -61
- package/dist/client/usePage--fGlyrgj.d.mts +0 -6439
- package/dist/client/usePage-BBcFCxOU.d.ts +0 -6297
- package/dist/client/usePage-BC8Q2E3t.d.mts +0 -6431
- package/dist/client/usePage-BTPnCuWC.d.mts +0 -6511
- package/dist/client/usePage-BafOS9UT.d.mts +0 -6512
- package/dist/client/usePage-BcjWPXvh.d.mts +0 -6388
- package/dist/client/usePage-Bnx-kA6x.d.mts +0 -6670
- package/dist/client/usePage-BvKAa3Zw.d.mts +0 -366
- package/dist/client/usePage-BvKAa3Zw.d.ts +0 -366
- package/dist/client/usePage-BydHcMYB.d.mts +0 -6297
- package/dist/client/usePage-C3ZKNwY7.d.mts +0 -6393
- package/dist/client/usePage-CE7X5NcN.d.ts +0 -6439
- package/dist/client/usePage-CHEybPMD.d.ts +0 -6429
- package/dist/client/usePage-CrKw1H6Y.d.ts +0 -6338
- package/dist/client/usePage-CyYpOJud.d.ts +0 -6388
- package/dist/client/usePage-D4fxZbRR.d.mts +0 -6429
- package/dist/client/usePage-DMI8ImsU.d.mts +0 -6338
- package/dist/client/usePage-DoPI6b8V.d.ts +0 -6511
- package/dist/client/usePage-DpRNZUtP.d.ts +0 -6431
- package/dist/client/usePage-QNWArrVO.d.ts +0 -6670
- package/dist/client/usePage-fBgPB6Oq.d.ts +0 -6512
- package/dist/client/usePage-gpVaeWDy.d.ts +0 -6393
- package/dist/server/chunk-7FIJSGHU.mjs.map +0 -1
- package/dist/server/chunk-BJTO5JO5.mjs +0 -11
- package/dist/server/chunk-DGUM43GV.js +0 -11
- package/dist/server/chunk-DGUM43GV.js.map +0 -1
- package/dist/server/chunk-P7UVAMK6.js.map +0 -1
- /package/dist/server/{chunk-BJTO5JO5.mjs.map → chunk-NFEGQTCC.mjs.map} +0 -0
- /package/dist/server/{loadPage-DNQTTRHL.mjs.map → env.mjs.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/env.ts"],"sourcesContent":["/**\n * Environment detection utilities for SDK\n *\n * Provides helpers for detecting preview mode and auto-selecting the correct API key.\n *\n * @example\n * ```ts\n * import { getRiverbankEnv } from '@riverbankcms/sdk/env';\n * import { createRiverbankClient } from '@riverbankcms/sdk';\n *\n * const env = getRiverbankEnv();\n * const client = createRiverbankClient({\n * apiKey: env.apiKey,\n * baseUrl: env.baseUrl,\n * });\n * ```\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Environment target: 'local' for development, 'remote' for production\n */\nexport type RiverbankEnvTarget = 'local' | 'remote';\n\n/**\n * Runtime environment configuration\n */\nexport interface RiverbankEnvConfig {\n /** The detected environment target */\n target: RiverbankEnvTarget;\n /** Whether preview mode is enabled */\n previewMode: boolean;\n /** Site ID */\n siteId: string;\n /** Dashboard/API base URL */\n baseUrl: string;\n /** The auto-selected API key (preview or content key based on mode) */\n apiKey: string;\n /** The type of key being used */\n keyType: 'preview' | 'content';\n}\n\n/**\n * Error thrown when required environment variables are missing\n */\nexport class RiverbankEnvError extends Error {\n constructor(\n message: string,\n public readonly missingVars: string[]\n ) {\n super(message);\n this.name = 'RiverbankEnvError';\n }\n}\n\n// ============================================================================\n// Internal Helpers\n// ============================================================================\n\n/**\n * Get the environment variable prefix based on target\n */\nfunction getEnvPrefix(target: RiverbankEnvTarget): string {\n return target === 'remote' ? 'RIVERBANK_REMOTE' : 'RIVERBANK_LOCAL';\n}\n\n/**\n * Detect the environment target from RIVERBANK_ENV\n */\nfunction detectTarget(): RiverbankEnvTarget {\n const env = process.env.RIVERBANK_ENV?.toLowerCase();\n if (env === 'remote' || env === 'production' || env === 'prod') {\n return 'remote';\n }\n return 'local';\n}\n\n/**\n * Detect if preview mode is enabled.\n * Uses RIVERBANK_PREVIEW_MODE first, then falls back to RIVERBANK_PREVIEW for backward compat.\n */\nfunction detectPreviewMode(): boolean {\n // RIVERBANK_PREVIEW_MODE takes precedence (new convention)\n const previewMode = process.env.RIVERBANK_PREVIEW_MODE;\n if (previewMode !== undefined && previewMode !== '') {\n return previewMode === 'true';\n }\n\n // Fall back to RIVERBANK_PREVIEW (backward compatibility)\n const previewLegacy = process.env.RIVERBANK_PREVIEW;\n if (previewLegacy !== undefined && previewLegacy !== '') {\n return previewLegacy === 'true';\n }\n\n // Fall back to Vercel environment detection\n return process.env.VERCEL_ENV === 'preview';\n}\n\n/**\n * Validate that an API key matches the expected format for its type\n */\nfunction validateKeyType(key: string, expectedType: 'preview' | 'content'): void {\n const isPreviewKey = key.startsWith('bld_preview_sk_');\n const isContentKey = key.startsWith('bld_live_sk_');\n\n if (expectedType === 'preview' && !isPreviewKey) {\n if (isContentKey) {\n throw new RiverbankEnvError(\n `Preview mode is enabled (RIVERBANK_PREVIEW_MODE=true) but a content key was provided. ` +\n `Preview mode requires a preview API key (bld_preview_sk_...) to access draft content. ` +\n `Either:\\n` +\n ` 1. Set RIVERBANK_*_PREVIEW_API_KEY with your preview key, or\\n` +\n ` 2. Set RIVERBANK_PREVIEW_MODE=false to fetch published content instead.`,\n []\n );\n }\n throw new RiverbankEnvError(\n `Invalid API key format for preview mode. Expected key starting with bld_preview_sk_`,\n []\n );\n }\n\n if (expectedType === 'content' && !isContentKey) {\n if (isPreviewKey) {\n // This is actually fine - preview keys can access both draft and published content\n // Just log a note that they could use a more restrictive key\n console.debug(\n '[getRiverbankEnv] Using preview key for published content. ' +\n 'Consider using a content key (bld_live_sk_...) for production.'\n );\n return;\n }\n throw new RiverbankEnvError(\n `Invalid API key format for content access. Expected key starting with bld_live_sk_ or bld_preview_sk_`,\n []\n );\n }\n}\n\n// ============================================================================\n// Public API\n// ============================================================================\n\n/**\n * Detects if the current environment is in preview mode.\n *\n * Precedence:\n * 1. RIVERBANK_PREVIEW_MODE env var (explicit override) - 'true' or 'false'\n * 2. RIVERBANK_PREVIEW env var (legacy) - 'true' or 'false'\n * 3. VERCEL_ENV === 'preview' (Vercel preview deployments)\n * 4. Default: false (production behavior)\n *\n * In preview mode:\n * - Draft content is visible\n * - ISR revalidation is more aggressive\n * - Cache bypass may be enabled\n *\n * @returns true if in preview mode, false otherwise\n */\nexport function isPreviewMode(): boolean {\n return detectPreviewMode();\n}\n\n/**\n * Get the current environment target.\n *\n * This is a convenience function for checking `RIVERBANK_ENV`.\n *\n * @returns 'local' or 'remote'\n */\nexport function getRiverbankTarget(): RiverbankEnvTarget {\n return detectTarget();\n}\n\n/**\n * Get runtime environment configuration with automatic API key selection.\n *\n * This helper reads environment variables and automatically selects the correct\n * API key based on the current environment and preview mode:\n *\n * - When `RIVERBANK_PREVIEW_MODE=true`: Uses preview API key (bld_preview_sk_...)\n * - When `RIVERBANK_PREVIEW_MODE=false` (default): Uses content API key (bld_live_sk_...)\n *\n * Environment variable patterns:\n * - `RIVERBANK_ENV`: 'local' (default) or 'remote'\n * - `RIVERBANK_PREVIEW_MODE`: 'true' or 'false' (default)\n * - `RIVERBANK_{LOCAL|REMOTE}_SITE_ID`: Site ID\n * - `RIVERBANK_{LOCAL|REMOTE}_DASHBOARD_URL`: Dashboard URL\n * - `RIVERBANK_{LOCAL|REMOTE}_API_KEY`: Content/live API key\n * - `RIVERBANK_{LOCAL|REMOTE}_PREVIEW_API_KEY`: Preview API key\n *\n * @returns Environment configuration with auto-selected API key\n * @throws {RiverbankEnvError} If required environment variables are missing\n *\n * @example\n * ```ts\n * // lib/builder-client.ts\n * import { getRiverbankEnv } from '@riverbankcms/sdk/env';\n * import { createRiverbankClient } from '@riverbankcms/sdk';\n *\n * const env = getRiverbankEnv();\n *\n * export const client = createRiverbankClient({\n * apiKey: env.apiKey,\n * baseUrl: env.baseUrl,\n * });\n *\n * export const siteId = env.siteId;\n * ```\n */\nexport function getRiverbankEnv(): RiverbankEnvConfig {\n const target = detectTarget();\n const previewMode = detectPreviewMode();\n const prefix = getEnvPrefix(target);\n\n // Required vars\n const siteId = process.env[`${prefix}_SITE_ID`];\n const dashboardUrl = process.env[`${prefix}_DASHBOARD_URL`];\n\n // API keys - pick based on preview mode\n const contentKey = process.env[`${prefix}_API_KEY`];\n const previewKey = process.env[`${prefix}_PREVIEW_API_KEY`];\n\n // Collect missing required vars\n const missingVars: string[] = [];\n if (!siteId) missingVars.push(`${prefix}_SITE_ID`);\n if (!dashboardUrl) missingVars.push(`${prefix}_DASHBOARD_URL`);\n\n // Select the appropriate key\n let apiKey: string | undefined;\n let keyType: 'preview' | 'content';\n\n if (previewMode) {\n apiKey = previewKey;\n keyType = 'preview';\n if (!apiKey) {\n missingVars.push(`${prefix}_PREVIEW_API_KEY`);\n }\n } else {\n // For published content, prefer content key but allow preview key as fallback\n apiKey = contentKey || previewKey;\n keyType = contentKey ? 'content' : 'preview';\n if (!apiKey) {\n missingVars.push(`${prefix}_API_KEY`);\n }\n }\n\n if (missingVars.length > 0) {\n throw new RiverbankEnvError(\n `Missing required environment variables for Riverbank SDK:\\n` +\n missingVars.map((v) => ` - ${v}`).join('\\n') +\n `\\n\\nCurrent settings: RIVERBANK_ENV=${process.env.RIVERBANK_ENV || 'local'}, ` +\n `RIVERBANK_PREVIEW_MODE=${process.env.RIVERBANK_PREVIEW_MODE || 'false'}`,\n missingVars\n );\n }\n\n // Validate key type matches expected usage\n validateKeyType(apiKey!, keyType);\n\n // Construct base URL (ensure it ends with /api)\n let baseUrl = dashboardUrl!;\n if (!baseUrl.endsWith('/api')) {\n baseUrl = baseUrl.replace(/\\/$/, '') + '/api';\n }\n\n return {\n target,\n previewMode,\n siteId: siteId!,\n baseUrl,\n apiKey: apiKey!,\n keyType,\n };\n}\n"],"mappings":";AAgDO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAC3C,YACE,SACgB,aAChB;AACA,UAAM,OAAO;AAFG;AAGhB,SAAK,OAAO;AAAA,EACd;AACF;AASA,SAAS,aAAa,QAAoC;AACxD,SAAO,WAAW,WAAW,qBAAqB;AACpD;AAKA,SAAS,eAAmC;AAC1C,QAAM,MAAM,QAAQ,IAAI,eAAe,YAAY;AACnD,MAAI,QAAQ,YAAY,QAAQ,gBAAgB,QAAQ,QAAQ;AAC9D,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAMA,SAAS,oBAA6B;AAEpC,QAAM,cAAc,QAAQ,IAAI;AAChC,MAAI,gBAAgB,UAAa,gBAAgB,IAAI;AACnD,WAAO,gBAAgB;AAAA,EACzB;AAGA,QAAM,gBAAgB,QAAQ,IAAI;AAClC,MAAI,kBAAkB,UAAa,kBAAkB,IAAI;AACvD,WAAO,kBAAkB;AAAA,EAC3B;AAGA,SAAO,QAAQ,IAAI,eAAe;AACpC;AAKA,SAAS,gBAAgB,KAAa,cAA2C;AAC/E,QAAM,eAAe,IAAI,WAAW,iBAAiB;AACrD,QAAM,eAAe,IAAI,WAAW,cAAc;AAElD,MAAI,iBAAiB,aAAa,CAAC,cAAc;AAC/C,QAAI,cAAc;AAChB,YAAM,IAAI;AAAA,QACR;AAAA;AAAA;AAAA,QAKA,CAAC;AAAA,MACH;AAAA,IACF;AACA,UAAM,IAAI;AAAA,MACR;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,iBAAiB,aAAa,CAAC,cAAc;AAC/C,QAAI,cAAc;AAGhB,cAAQ;AAAA,QACN;AAAA,MAEF;AACA;AAAA,IACF;AACA,UAAM,IAAI;AAAA,MACR;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAsBO,SAAS,gBAAyB;AACvC,SAAO,kBAAkB;AAC3B;AASO,SAAS,qBAAyC;AACvD,SAAO,aAAa;AACtB;AAsCO,SAAS,kBAAsC;AACpD,QAAM,SAAS,aAAa;AAC5B,QAAM,cAAc,kBAAkB;AACtC,QAAM,SAAS,aAAa,MAAM;AAGlC,QAAM,SAAS,QAAQ,IAAI,GAAG,MAAM,UAAU;AAC9C,QAAM,eAAe,QAAQ,IAAI,GAAG,MAAM,gBAAgB;AAG1D,QAAM,aAAa,QAAQ,IAAI,GAAG,MAAM,UAAU;AAClD,QAAM,aAAa,QAAQ,IAAI,GAAG,MAAM,kBAAkB;AAG1D,QAAM,cAAwB,CAAC;AAC/B,MAAI,CAAC,OAAQ,aAAY,KAAK,GAAG,MAAM,UAAU;AACjD,MAAI,CAAC,aAAc,aAAY,KAAK,GAAG,MAAM,gBAAgB;AAG7D,MAAI;AACJ,MAAI;AAEJ,MAAI,aAAa;AACf,aAAS;AACT,cAAU;AACV,QAAI,CAAC,QAAQ;AACX,kBAAY,KAAK,GAAG,MAAM,kBAAkB;AAAA,IAC9C;AAAA,EACF,OAAO;AAEL,aAAS,cAAc;AACvB,cAAU,aAAa,YAAY;AACnC,QAAI,CAAC,QAAQ;AACX,kBAAY,KAAK,GAAG,MAAM,UAAU;AAAA,IACtC;AAAA,EACF;AAEA,MAAI,YAAY,SAAS,GAAG;AAC1B,UAAM,IAAI;AAAA,MACR;AAAA,IACE,YAAY,IAAI,CAAC,MAAM,OAAO,CAAC,EAAE,EAAE,KAAK,IAAI,IAC5C;AAAA;AAAA,kCAAuC,QAAQ,IAAI,iBAAiB,OAAO,4BACjD,QAAQ,IAAI,0BAA0B,OAAO;AAAA,MACzE;AAAA,IACF;AAAA,EACF;AAGA,kBAAgB,QAAS,OAAO;AAGhC,MAAI,UAAU;AACd,MAAI,CAAC,QAAQ,SAAS,MAAM,GAAG;AAC7B,cAAU,QAAQ,QAAQ,OAAO,EAAE,IAAI;AAAA,EACzC;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|