@hexclave/shared 1.0.14 → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apps/apps-config.d.ts +6 -0
- package/dist/apps/apps-config.js +6 -0
- package/dist/apps/apps-config.js.map +1 -1
- package/dist/config/schema.d.ts +68 -68
- package/dist/config-authoring.d.ts.map +1 -1
- package/dist/config-authoring.js.map +1 -1
- package/dist/config-authoring.test.js +1 -1
- package/dist/config-authoring.test.js.map +1 -1
- package/dist/config-rendering.d.ts +2 -2
- package/dist/config-rendering.js +16 -0
- package/dist/config-rendering.js.map +1 -1
- package/dist/esm/apps/apps-config.d.ts +6 -0
- package/dist/esm/apps/apps-config.js +6 -0
- package/dist/esm/apps/apps-config.js.map +1 -1
- package/dist/esm/config/schema.d.ts +68 -68
- package/dist/esm/config-authoring.d.ts.map +1 -1
- package/dist/esm/config-authoring.js.map +1 -1
- package/dist/esm/config-authoring.test.js +1 -1
- package/dist/esm/config-authoring.test.js.map +1 -1
- package/dist/esm/config-rendering.d.ts +2 -2
- package/dist/esm/config-rendering.js +16 -2
- package/dist/esm/config-rendering.js.map +1 -1
- package/dist/esm/hexclave-config-file.d.ts +24 -1
- package/dist/esm/hexclave-config-file.d.ts.map +1 -1
- package/dist/esm/hexclave-config-file.js +69 -2
- package/dist/esm/hexclave-config-file.js.map +1 -1
- package/dist/esm/interface/admin-interface.d.ts +19 -1
- package/dist/esm/interface/admin-interface.d.ts.map +1 -1
- package/dist/esm/interface/admin-interface.js +14 -0
- package/dist/esm/interface/admin-interface.js.map +1 -1
- package/dist/esm/interface/admin-metrics.d.ts +101 -7
- package/dist/esm/interface/admin-metrics.d.ts.map +1 -1
- package/dist/esm/interface/admin-metrics.js +61 -1
- package/dist/esm/interface/admin-metrics.js.map +1 -1
- package/dist/esm/interface/conversations.d.ts +38 -38
- package/dist/esm/interface/crud/current-user.d.ts +2 -2
- package/dist/esm/interface/crud/email-outbox.d.ts +150 -150
- package/dist/esm/interface/crud/invoices.d.ts +2 -2
- package/dist/esm/interface/crud/products.d.ts +4 -4
- package/dist/esm/interface/crud/project-api-keys.d.ts +2 -2
- package/dist/esm/interface/crud/projects.d.ts +51 -51
- package/dist/esm/interface/crud/team-member-profiles.d.ts +10 -10
- package/dist/esm/interface/crud/transactions.d.ts +2 -2
- package/dist/esm/interface/crud/users.d.ts +10 -10
- package/dist/esm/interface/webhooks.d.ts +2 -2
- package/dist/esm/schema-fields.d.ts +3 -3
- package/dist/esm/sessions.d.ts +2 -2
- package/dist/esm/utils/analytics-clickmap-overlay.d.ts +18 -0
- package/dist/esm/utils/analytics-clickmap-overlay.d.ts.map +1 -0
- package/dist/esm/utils/analytics-clickmap-overlay.js +19 -0
- package/dist/esm/utils/analytics-clickmap-overlay.js.map +1 -0
- package/dist/esm/utils/dev-tool.d.ts +31 -0
- package/dist/esm/utils/dev-tool.d.ts.map +1 -0
- package/dist/esm/utils/dev-tool.js +32 -0
- package/dist/esm/utils/dev-tool.js.map +1 -0
- package/dist/esm/utils/dom.d.ts +7 -1
- package/dist/esm/utils/dom.d.ts.map +1 -1
- package/dist/esm/utils/dom.js +20 -1
- package/dist/esm/utils/dom.js.map +1 -1
- package/dist/esm/utils/elements-chain.d.ts +38 -0
- package/dist/esm/utils/elements-chain.d.ts.map +1 -0
- package/dist/esm/utils/elements-chain.js +297 -0
- package/dist/esm/utils/elements-chain.js.map +1 -0
- package/dist/hexclave-config-file.d.ts +24 -1
- package/dist/hexclave-config-file.d.ts.map +1 -1
- package/dist/hexclave-config-file.js +71 -1
- package/dist/hexclave-config-file.js.map +1 -1
- package/dist/interface/admin-interface.d.ts +19 -1
- package/dist/interface/admin-interface.d.ts.map +1 -1
- package/dist/interface/admin-interface.js +14 -0
- package/dist/interface/admin-interface.js.map +1 -1
- package/dist/interface/admin-metrics.d.ts +101 -7
- package/dist/interface/admin-metrics.d.ts.map +1 -1
- package/dist/interface/admin-metrics.js +65 -0
- package/dist/interface/admin-metrics.js.map +1 -1
- package/dist/interface/conversations.d.ts +38 -38
- package/dist/interface/crud/current-user.d.ts +2 -2
- package/dist/interface/crud/email-outbox.d.ts +150 -150
- package/dist/interface/crud/invoices.d.ts +2 -2
- package/dist/interface/crud/products.d.ts +4 -4
- package/dist/interface/crud/project-api-keys.d.ts +2 -2
- package/dist/interface/crud/projects.d.ts +51 -51
- package/dist/interface/crud/team-member-profiles.d.ts +10 -10
- package/dist/interface/crud/transactions.d.ts +2 -2
- package/dist/interface/crud/users.d.ts +10 -10
- package/dist/interface/webhooks.d.ts +2 -2
- package/dist/schema-fields.d.ts +3 -3
- package/dist/sessions.d.ts +2 -2
- package/dist/utils/analytics-clickmap-overlay.d.ts +18 -0
- package/dist/utils/analytics-clickmap-overlay.d.ts.map +1 -0
- package/dist/utils/analytics-clickmap-overlay.js +23 -0
- package/dist/utils/analytics-clickmap-overlay.js.map +1 -0
- package/dist/utils/dev-tool.d.ts +31 -0
- package/dist/utils/dev-tool.d.ts.map +1 -0
- package/dist/utils/dev-tool.js +37 -0
- package/dist/utils/dev-tool.js.map +1 -0
- package/dist/utils/dom.d.ts +7 -1
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/dom.js +20 -0
- package/dist/utils/dom.js.map +1 -1
- package/dist/utils/elements-chain.d.ts +38 -0
- package/dist/utils/elements-chain.d.ts.map +1 -0
- package/dist/utils/elements-chain.js +304 -0
- package/dist/utils/elements-chain.js.map +1 -0
- package/package.json +1 -1
- package/src/apps/apps-config.ts +6 -0
- package/src/config-authoring.test.ts +1 -1
- package/src/config-authoring.ts +6 -6
- package/src/config-rendering.ts +24 -2
- package/src/hexclave-config-file.ts +90 -1
- package/src/interface/admin-interface.ts +43 -1
- package/src/interface/admin-metrics.ts +92 -4
- package/src/utils/analytics-clickmap-overlay.tsx +15 -0
- package/src/utils/dev-tool.tsx +30 -0
- package/src/utils/dom.tsx +42 -0
- package/src/utils/elements-chain.tsx +349 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-rendering.js","names":[],"sources":["../src/config-rendering.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"fs\";\nimport path from \"path\";\nimport { parseHexclaveConfigFileContent, renderConfigFileContent } from \"./hexclave-config-file\";\nexport { parseHexclaveConfigFileContent, renderConfigFileContent };\n\n/**\n * Packages that export the `HexclaveConfig` type, in priority order.\n * The first match found in a project's dependencies wins. Hexclave-branded\n * packages come first (canonical); the legacy `@stackframe/*` names remain\n * so projects pinned to the last legacy release still render a config file\n * that compiles against their installed SDK.\n */\nconst CONFIG_IMPORT_PACKAGES = [\n \"@hexclave/next\",\n \"@hexclave/react\",\n \"@hexclave/tanstack-start\",\n \"@hexclave/js\",\n \"@hexclave/template\",\n \"@stackframe/stack\",\n \"@stackframe/react\",\n \"@stackframe/js\",\n \"@stackframe/template\",\n] as const;\n\n/**\n * Given a list of dependency names (from package.json), returns the SDK\n * package that should be used for the `HexclaveConfig` import, or `undefined`\n * if none of the known packages are installed.\n */\nexport function detectConfigImportPackage(dependencies: string[]): string | undefined {\n for (const pkg of CONFIG_IMPORT_PACKAGES) {\n if (dependencies.includes(pkg)) {\n return pkg;\n }\n }\n return undefined;\n}\n\n/**\n * Walks up from `dir` to find the nearest `package.json` and returns the\n * best SDK package to use for the `HexclaveConfig` type import.\n */\nexport function detectImportPackageFromDir(dir: string): string | undefined {\n let current = dir;\n while (true) {\n const pkgPath = path.join(current, \"package.json\");\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\"));\n const deps = [\n ...Object.keys(pkg.dependencies ?? {}),\n ...Object.keys(pkg.devDependencies ?? {}),\n ];\n return detectConfigImportPackage(deps);\n } catch {\n return undefined;\n }\n }\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return undefined;\n}\n\nimport.meta.vitest?.test(\"renderConfigFileContent normalizes config exports\", ({ expect }) => {\n expect(renderConfigFileContent({\n \"payments.items.todos.displayName\": \"Todo Slots\",\n \"payments.items.todos.customerType\": \"user\",\n })).toContain(`export const config: HexclaveConfig = {\n \"payments\": {\n \"items\": {\n \"todos\": {\n \"displayName\": \"Todo Slots\",\n \"customerType\": \"user\"\n }\n }\n }\n};`);\n});\n\nimport.meta.vitest?.test(\"parseHexclaveConfigFileContent parses static config exports\", ({ expect }) => {\n expect(parseHexclaveConfigFileContent(`\n import type { StackConfig } from \"@hexclave/js\";\n export const config: StackConfig = {\n auth: { allowSignUp: true },\n payments: { testMode: false },\n };\n `, \"stack.config.ts\")).toMatchInlineSnapshot(`\n {\n \"auth\": {\n \"allowSignUp\": true,\n },\n \"payments\": {\n \"testMode\": false,\n },\n }\n `);\n});\n\nimport.meta.vitest?.test(\"parseHexclaveConfigFileContent parses show-onboarding\", ({ expect }) => {\n expect(parseHexclaveConfigFileContent('export const config = \"show-onboarding\";', \"stack.config.ts\")).toBe(\"show-onboarding\");\n});\n\nimport.meta.vitest?.test(\"parseHexclaveConfigFileContent rejects dynamic config exports\", ({ expect }) => {\n expect(() => parseHexclaveConfigFileContent(\"export const config = makeConfig();\", \"stack.config.ts\")).toThrow(/Unsupported config expression/);\n});\n\nimport.meta.vitest?.test(\"renderConfigFileContent rejects conflicting dotted keys\", ({ expect }) => {\n expect(() => renderConfigFileContent({\n \"a.b\": 1,\n \"a.b.c\": 2,\n })).toThrowError(/conflicting keys.*\"a\\.b\\.c\"/);\n});\n\nimport.meta.vitest?.test(\"renderConfigFileContent rejects invalid config exports\", ({ expect }) => {\n expect(() => renderConfigFileContent(null)).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invalid config: expected a plain object.]`,\n );\n});\n\nimport.meta.vitest?.test(\"renderConfigFileContent uses custom import package\", ({ expect }) => {\n const content = renderConfigFileContent({}, \"@hexclave/next\");\n expect(content).toContain('import type { HexclaveConfig } from \"@hexclave/next/config\";');\n});\n\nimport.meta.vitest?.test(\"renderConfigFileContent defaults to @hexclave/js\", ({ expect }) => {\n const content = renderConfigFileContent({});\n expect(content).toContain('import type { HexclaveConfig } from \"@hexclave/js/config\";');\n});\n\nimport.meta.vitest?.test(\"renderConfigFileContent keeps legacy @stackframe packages on their root entrypoint\", ({ expect }) => {\n // The lightweight `/config` subpath only exists on Hexclave-branded packages;\n // already-published @stackframe/* releases predate it.\n const content = renderConfigFileContent({}, \"@stackframe/next\");\n expect(content).toContain('import type { HexclaveConfig } from \"@stackframe/next\";');\n});\n\nimport.meta.vitest?.test(\"detectConfigImportPackage picks first matching package by priority\", ({ expect }) => {\n expect(detectConfigImportPackage([\"@hexclave/next\", \"@hexclave/js\"])).toBe(\"@hexclave/next\");\n expect(detectConfigImportPackage([\"@hexclave/react\", \"@hexclave/js\"])).toBe(\"@hexclave/react\");\n expect(detectConfigImportPackage([\"@hexclave/js\"])).toBe(\"@hexclave/js\");\n expect(detectConfigImportPackage([\"@hexclave/tanstack-start\"])).toBe(\"@hexclave/tanstack-start\");\n // Hexclave names take priority over legacy stackframe names when both appear.\n expect(detectConfigImportPackage([\"@stackframe/stack\", \"@hexclave/next\"])).toBe(\"@hexclave/next\");\n // Legacy fallback still works for projects pinned to the last @stackframe/* release.\n expect(detectConfigImportPackage([\"@stackframe/stack\"])).toBe(\"@stackframe/stack\");\n expect(detectConfigImportPackage([\"@stackframe/template\"])).toBe(\"@stackframe/template\");\n expect(detectConfigImportPackage([\"lodash\", \"express\"])).toBeUndefined();\n expect(detectConfigImportPackage([])).toBeUndefined();\n});\n"],"mappings":";;;;;;;;;;;;;;;AAYA,MAAM,yBAAyB;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;;;AAOD,SAAgB,0BAA0B,cAA4C;AACpF,MAAK,MAAM,OAAO,uBAChB,KAAI,aAAa,SAAS,IAAI,CAC5B,QAAO;;;;;;AAUb,SAAgB,2BAA2B,KAAiC;CAC1E,IAAI,UAAU;AACd,QAAO,MAAM;EACX,MAAM,UAAU,aAAK,KAAK,SAAS,eAAe;AAClD,yBAAe,QAAQ,CACrB,KAAI;GACF,MAAM,MAAM,KAAK,2BAAmB,SAAS,QAAQ,CAAC;AAKtD,UAAO,0BAJM,CACX,GAAG,OAAO,KAAK,IAAI,gBAAgB,EAAE,CAAC,EACtC,GAAG,OAAO,KAAK,IAAI,mBAAmB,EAAE,CAAC,CAC1C,CACqC;UAChC;AACN;;EAGJ,MAAM,SAAS,aAAK,QAAQ,QAAQ;AACpC,MAAI,WAAW,QAAS;AACxB,YAAU;;;CAKd,SAAW,KAAC,sDAAwD,EAAA,aAAa;AAC/E,+DAA+B;EAC7B,oCAAoC;EACpC,qCAAqC;EACtC,CAAC,CAAC,CAAC,UAAU;;;;;;;;;IASZ;EACF;CAEF,SAAW,KAAC,gEAAkE,EAAA,aAAa;AACzF,sEAAsC;;;;;;KAMnC,kBAAkB,CAAC,CAAC,sBAAsB;;;;;;;;;IAS3C;EACF;CAEF,SAAW,KAAC,0DAAyD,EAAA,aAAgB;AACnF,sEAAsC,8CAA4C,kBAAkB,CAAC,CAAC,KAAK,kBAAkB;EAC7H;CAEF,SAAW,KAAC,kEAAoE,EAAA,aAAa;AAC3F,4EAA4C,uCAAuC,kBAAkB,CAAC,CAAC,QAAQ,gCAAgC;EAC/I;CAEF,SAAW,KAAC,4DAAgE,EAAC,aAAU;AACrF,qEAAqC;EACnC,OAAO;EACP,SAAS;EACV,CAAC,CAAC,CAAC,aAAa,8BAA8B;EAC/C;CAEF,SAAW,KAAC,2DAA6D,EAAA,aAAa;AACpF,qEAAqC,KAAK,CAAC,CAAC,mCAC1C,oDACD;EACD;CAEF,SAAW,KAAC,uDAAyD,EAAA,aAAa;AAEhF,+DADwC,EAAE,EAAE,iBAAiB,CAC9C,CAAC,UAAU,iEAA+D;EACzF;CAEF,SAAW,KAAC,qDAAmD,EAAQ,aAAS;AAE9E,+DADwC,EAAE,CAAC,CAC5B,CAAC,UAAU,+DAA6D;EACvF;CAEF,SAAW,KAAC,uFAAsF,EAAA,aAAgB;AAIhH,+DADwC,EAAE,EAAE,mBAAmB,CAChD,CAAC,UAAU,4DAA0D;EACpF;CAEF,SAAW,KAAC,uEAAwE,EAAA,aAAc;AAChG,QAAO,0BAA0B,CAAC,kBAAkB,eAAe,CAAC,CAAC,CAAC,KAAK,iBAAiB;AAC5F,QAAO,0BAA0B,CAAC,mBAAmB,eAAe,CAAC,CAAC,CAAC,KAAK,kBAAkB;AAC9F,QAAO,0BAA0B,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,eAAe;AACxE,QAAO,0BAA0B,CAAC,2BAA2B,CAAC,CAAC,CAAC,KAAK,2BAA2B;AAEhG,QAAO,0BAA0B,CAAC,qBAAqB,iBAAiB,CAAC,CAAC,CAAC,KAAK,iBAAiB;AAEjG,QAAO,0BAA0B,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,oBAAoB;AAClF,QAAO,0BAA0B,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,uBAAuB;AACxF,QAAO,0BAA0B,CAAC,UAAU,UAAU,CAAC,CAAC,CAAC,eAAe;AACxE,QAAO,0BAA0B,EAAE,CAAC,CAAC,CAAC,eAAe;EACrD"}
|
|
1
|
+
{"version":3,"file":"config-rendering.js","names":[],"sources":["../src/config-rendering.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"fs\";\nimport path from \"path\";\nimport { hexclaveConfigFileExportsConfig, parseHexclaveConfigFileContent, renderConfigFileContent, tryParseHexclaveConfigFileContent } from \"./hexclave-config-file\";\nexport { hexclaveConfigFileExportsConfig, parseHexclaveConfigFileContent, renderConfigFileContent, tryParseHexclaveConfigFileContent };\n\n/**\n * Packages that export the `HexclaveConfig` type, in priority order.\n * The first match found in a project's dependencies wins. Hexclave-branded\n * packages come first (canonical); the legacy `@stackframe/*` names remain\n * so projects pinned to the last legacy release still render a config file\n * that compiles against their installed SDK.\n */\nconst CONFIG_IMPORT_PACKAGES = [\n \"@hexclave/next\",\n \"@hexclave/react\",\n \"@hexclave/tanstack-start\",\n \"@hexclave/js\",\n \"@hexclave/template\",\n \"@stackframe/stack\",\n \"@stackframe/react\",\n \"@stackframe/js\",\n \"@stackframe/template\",\n] as const;\n\n/**\n * Given a list of dependency names (from package.json), returns the SDK\n * package that should be used for the `HexclaveConfig` import, or `undefined`\n * if none of the known packages are installed.\n */\nexport function detectConfigImportPackage(dependencies: string[]): string | undefined {\n for (const pkg of CONFIG_IMPORT_PACKAGES) {\n if (dependencies.includes(pkg)) {\n return pkg;\n }\n }\n return undefined;\n}\n\n/**\n * Walks up from `dir` to find the nearest `package.json` and returns the\n * best SDK package to use for the `HexclaveConfig` type import.\n */\nexport function detectImportPackageFromDir(dir: string): string | undefined {\n let current = dir;\n while (true) {\n const pkgPath = path.join(current, \"package.json\");\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\"));\n const deps = [\n ...Object.keys(pkg.dependencies ?? {}),\n ...Object.keys(pkg.devDependencies ?? {}),\n ];\n return detectConfigImportPackage(deps);\n } catch {\n return undefined;\n }\n }\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return undefined;\n}\n\nimport.meta.vitest?.test(\"renderConfigFileContent normalizes config exports\", ({ expect }) => {\n expect(renderConfigFileContent({\n \"payments.items.todos.displayName\": \"Todo Slots\",\n \"payments.items.todos.customerType\": \"user\",\n })).toContain(`export const config: HexclaveConfig = {\n \"payments\": {\n \"items\": {\n \"todos\": {\n \"displayName\": \"Todo Slots\",\n \"customerType\": \"user\"\n }\n }\n }\n};`);\n});\n\nimport.meta.vitest?.test(\"parseHexclaveConfigFileContent parses static config exports\", ({ expect }) => {\n expect(parseHexclaveConfigFileContent(`\n import type { StackConfig } from \"@hexclave/js\";\n export const config: StackConfig = {\n auth: { allowSignUp: true },\n payments: { testMode: false },\n };\n `, \"stack.config.ts\")).toMatchInlineSnapshot(`\n {\n \"auth\": {\n \"allowSignUp\": true,\n },\n \"payments\": {\n \"testMode\": false,\n },\n }\n `);\n});\n\nimport.meta.vitest?.test(\"parseHexclaveConfigFileContent parses show-onboarding\", ({ expect }) => {\n expect(parseHexclaveConfigFileContent('export const config = \"show-onboarding\";', \"stack.config.ts\")).toBe(\"show-onboarding\");\n});\n\nimport.meta.vitest?.test(\"parseHexclaveConfigFileContent rejects dynamic config exports\", ({ expect }) => {\n expect(() => parseHexclaveConfigFileContent(\"export const config = makeConfig();\", \"stack.config.ts\")).toThrow(/Unsupported config expression/);\n});\n\nimport.meta.vitest?.test(\"tryParseHexclaveConfigFileContent returns the config for static exports\", ({ expect }) => {\n expect(tryParseHexclaveConfigFileContent(\"export const config = { auth: { allowSignUp: true } };\", \"stack.config.ts\")).toEqual({\n auth: { allowSignUp: true },\n });\n});\n\nimport.meta.vitest?.test(\"tryParseHexclaveConfigFileContent returns null for non-static exports\", ({ expect }) => {\n // Wrapped in a helper call (e.g. defineStackConfig) -> not a plain literal.\n expect(tryParseHexclaveConfigFileContent(\"export const config = makeConfig();\", \"stack.config.ts\")).toBeNull();\n // References an imported value -> has structure to preserve.\n expect(tryParseHexclaveConfigFileContent('import x from \"./x.txt\" with { type: \"text\" };\\nexport const config = { a: x };', \"stack.config.ts\")).toBeNull();\n // Syntax error.\n expect(tryParseHexclaveConfigFileContent(\"export const config = {\", \"stack.config.ts\")).toBeNull();\n});\n\nimport.meta.vitest?.test(\"hexclaveConfigFileExportsConfig detects a config export\", ({ expect }) => {\n expect(hexclaveConfigFileExportsConfig(\"export const config = { a: 1 };\", \"stack.config.ts\")).toBe(true);\n expect(hexclaveConfigFileExportsConfig('import x from \"./x.txt\" with { type: \"text\" };\\nexport const config = { a: x };', \"stack.config.ts\")).toBe(true);\n expect(hexclaveConfigFileExportsConfig(\"export const notConfig = { a: 1 };\", \"stack.config.ts\")).toBe(false);\n expect(hexclaveConfigFileExportsConfig(\"export const config = {\", \"stack.config.ts\")).toBe(false);\n});\n\nimport.meta.vitest?.test(\"renderConfigFileContent rejects conflicting dotted keys\", ({ expect }) => {\n expect(() => renderConfigFileContent({\n \"a.b\": 1,\n \"a.b.c\": 2,\n })).toThrowError(/conflicting keys.*\"a\\.b\\.c\"/);\n});\n\nimport.meta.vitest?.test(\"renderConfigFileContent rejects invalid config exports\", ({ expect }) => {\n expect(() => renderConfigFileContent(null)).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invalid config: expected a plain object.]`,\n );\n});\n\nimport.meta.vitest?.test(\"renderConfigFileContent uses custom import package\", ({ expect }) => {\n const content = renderConfigFileContent({}, \"@hexclave/next\");\n expect(content).toContain('import type { HexclaveConfig } from \"@hexclave/next/config\";');\n});\n\nimport.meta.vitest?.test(\"renderConfigFileContent defaults to @hexclave/js\", ({ expect }) => {\n const content = renderConfigFileContent({});\n expect(content).toContain('import type { HexclaveConfig } from \"@hexclave/js/config\";');\n});\n\nimport.meta.vitest?.test(\"renderConfigFileContent keeps legacy @stackframe packages on their root entrypoint\", ({ expect }) => {\n // The lightweight `/config` subpath only exists on Hexclave-branded packages;\n // already-published @stackframe/* releases predate it.\n const content = renderConfigFileContent({}, \"@stackframe/next\");\n expect(content).toContain('import type { HexclaveConfig } from \"@stackframe/next\";');\n});\n\nimport.meta.vitest?.test(\"detectConfigImportPackage picks first matching package by priority\", ({ expect }) => {\n expect(detectConfigImportPackage([\"@hexclave/next\", \"@hexclave/js\"])).toBe(\"@hexclave/next\");\n expect(detectConfigImportPackage([\"@hexclave/react\", \"@hexclave/js\"])).toBe(\"@hexclave/react\");\n expect(detectConfigImportPackage([\"@hexclave/js\"])).toBe(\"@hexclave/js\");\n expect(detectConfigImportPackage([\"@hexclave/tanstack-start\"])).toBe(\"@hexclave/tanstack-start\");\n // Hexclave names take priority over legacy stackframe names when both appear.\n expect(detectConfigImportPackage([\"@stackframe/stack\", \"@hexclave/next\"])).toBe(\"@hexclave/next\");\n // Legacy fallback still works for projects pinned to the last @stackframe/* release.\n expect(detectConfigImportPackage([\"@stackframe/stack\"])).toBe(\"@stackframe/stack\");\n expect(detectConfigImportPackage([\"@stackframe/template\"])).toBe(\"@stackframe/template\");\n expect(detectConfigImportPackage([\"lodash\", \"express\"])).toBeUndefined();\n expect(detectConfigImportPackage([])).toBeUndefined();\n});\n"],"mappings":";;;;;;;;;;;;;;;AAYA,MAAM,yBAAyB;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;;;AAOD,SAAgB,0BAA0B,cAA4C;AACpF,MAAK,MAAM,OAAO,uBAChB,KAAI,aAAa,SAAS,IAAI,CAC5B,QAAO;;;;;;AAUb,SAAgB,2BAA2B,KAAiC;CAC1E,IAAI,UAAU;AACd,QAAO,MAAM;EACX,MAAM,UAAU,aAAK,KAAK,SAAS,eAAe;AAClD,yBAAe,QAAQ,CACrB,KAAI;GACF,MAAM,MAAM,KAAK,2BAAmB,SAAS,QAAQ,CAAC;AAKtD,UAAO,0BAJM,CACX,GAAG,OAAO,KAAK,IAAI,gBAAgB,EAAE,CAAC,EACtC,GAAG,OAAO,KAAK,IAAI,mBAAmB,EAAE,CAAC,CAC1C,CACqC;UAChC;AACN;;EAGJ,MAAM,SAAS,aAAK,QAAQ,QAAQ;AACpC,MAAI,WAAW,QAAS;AACxB,YAAU;;;CAKd,SAAW,KAAC,sDAAwD,EAAA,aAAa;AAC/E,+DAA+B;EAC7B,oCAAoC;EACpC,qCAAqC;EACtC,CAAC,CAAC,CAAC,UAAU;;;;;;;;;IASZ;EACF;CAEF,SAAW,KAAC,gEAAkE,EAAA,aAAa;AACzF,sEAAsC;;;;;;KAMnC,kBAAkB,CAAC,CAAC,sBAAsB;;;;;;;;;IAS3C;EACF;CAEF,SAAW,KAAC,0DAAyD,EAAA,aAAgB;AACnF,sEAAsC,8CAA4C,kBAAkB,CAAC,CAAC,KAAK,kBAAkB;EAC7H;CAEF,SAAW,KAAC,kEAAoE,EAAA,aAAa;AAC3F,4EAA4C,uCAAuC,kBAAkB,CAAC,CAAC,QAAQ,gCAAgC;EAC/I;CAEF,SAAW,KAAC,4EAA8E,EAAA,aAAa;AACrG,yEAAyC,0DAA0D,kBAAkB,CAAC,CAAC,QAAQ,EAC7H,MAAM,EAAE,aAAa,MAAM,EAC5B,CAAC;EACF;CAEF,SAAW,KAAC,0EAA4E,EAAA,aAAa;AAEnG,yEAAyC,uCAAuC,kBAAkB,CAAC,CAAC,UAAU;AAE9G,yEAAyC,uFAAmF,kBAAkB,CAAC,CAAC,UAAU;AAE1J,yEAAyC,2BAA2B,kBAAkB,CAAC,CAAC,UAAU;EAClG;CAEF,SAAW,KAAC,4DAA+D,EAAA,aAAY;AACrF,uEAAuC,mCAAmC,kBAAkB,CAAC,CAAC,KAAK,KAAK;AACxG,uEAAuC,uFAAmF,kBAAkB,CAAC,CAAC,KAAK,KAAK;AACxJ,uEAAuC,sCAAsC,kBAAkB,CAAC,CAAC,KAAK,MAAM;AAC5G,uEAAuC,2BAA2B,kBAAkB,CAAC,CAAC,KAAK,MAAM;EACjG;CAEF,SAAW,KAAC,4DAAgE,EAAC,aAAU;AACrF,qEAAqC;EACnC,OAAO;EACP,SAAS;EACV,CAAC,CAAC,CAAC,aAAa,8BAA8B;EAC/C;CAEF,SAAW,KAAC,2DAA6D,EAAA,aAAa;AACpF,qEAAqC,KAAK,CAAC,CAAC,mCAC1C,oDACD;EACD;CAEF,SAAW,KAAC,uDAAyD,EAAA,aAAa;AAEhF,+DADwC,EAAE,EAAE,iBAAiB,CAC9C,CAAC,UAAU,iEAA+D;EACzF;CAEF,SAAW,KAAC,qDAAmD,EAAQ,aAAS;AAE9E,+DADwC,EAAE,CAAC,CAC5B,CAAC,UAAU,+DAA6D;EACvF;CAEF,SAAW,KAAC,uFAAsF,EAAA,aAAgB;AAIhH,+DADwC,EAAE,EAAE,mBAAmB,CAChD,CAAC,UAAU,4DAA0D;EACpF;CAEF,SAAW,KAAC,uEAAwE,EAAA,aAAc;AAChG,QAAO,0BAA0B,CAAC,kBAAkB,eAAe,CAAC,CAAC,CAAC,KAAK,iBAAiB;AAC5F,QAAO,0BAA0B,CAAC,mBAAmB,eAAe,CAAC,CAAC,CAAC,KAAK,kBAAkB;AAC9F,QAAO,0BAA0B,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,eAAe;AACxE,QAAO,0BAA0B,CAAC,2BAA2B,CAAC,CAAC,CAAC,KAAK,2BAA2B;AAEhG,QAAO,0BAA0B,CAAC,qBAAqB,iBAAiB,CAAC,CAAC,CAAC,KAAK,iBAAiB;AAEjG,QAAO,0BAA0B,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,oBAAoB;AAClF,QAAO,0BAA0B,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,uBAAuB;AACxF,QAAO,0BAA0B,CAAC,UAAU,UAAU,CAAC,CAAC,CAAC,eAAe;AACxE,QAAO,0BAA0B,EAAE,CAAC,CAAC,CAAC,eAAe;EACrD"}
|
|
@@ -156,6 +156,12 @@ declare const ALL_APPS: {
|
|
|
156
156
|
readonly tags: ["developers", "operations"];
|
|
157
157
|
readonly stage: "stable";
|
|
158
158
|
};
|
|
159
|
+
readonly clickmaps: {
|
|
160
|
+
readonly displayName: "Clickmaps";
|
|
161
|
+
readonly subtitle: "Visualize where users click across your app";
|
|
162
|
+
readonly tags: ["developers", "operations"];
|
|
163
|
+
readonly stage: "alpha";
|
|
164
|
+
};
|
|
159
165
|
readonly "session-replays": {
|
|
160
166
|
readonly displayName: "Session Replays";
|
|
161
167
|
readonly subtitle: "Watch real user sessions to understand how people use your app";
|
|
@@ -141,6 +141,12 @@ const ALL_APPS = {
|
|
|
141
141
|
tags: ["developers", "operations"],
|
|
142
142
|
stage: "stable"
|
|
143
143
|
},
|
|
144
|
+
"clickmaps": {
|
|
145
|
+
displayName: "Clickmaps",
|
|
146
|
+
subtitle: "Visualize where users click across your app",
|
|
147
|
+
tags: ["developers", "operations"],
|
|
148
|
+
stage: "alpha"
|
|
149
|
+
},
|
|
144
150
|
"session-replays": {
|
|
145
151
|
displayName: "Session Replays",
|
|
146
152
|
subtitle: "Watch real user sessions to understand how people use your app",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apps-config.js","names":[],"sources":["../../../src/apps/apps-config.ts"],"sourcesContent":["type AppTag = {\n displayName: string,\n};\n\nexport const ALL_APP_TAGS = {\n \"expert\": {\n displayName: \"Expert\",\n },\n \"integration\": {\n displayName: \"Integrations\",\n },\n \"auth\": {\n displayName: \"Authentication\",\n },\n \"developers\": {\n displayName: \"For Developers\",\n },\n \"security\": {\n displayName: \"Security\",\n },\n \"operations\": {\n displayName: \"For Operations\",\n },\n \"gtm\": {\n displayName: \"Go-to-market\",\n },\n \"comms\": {\n displayName: \"Communications\",\n },\n \"automation\": {\n displayName: \"Automation\",\n },\n \"storage\": {\n displayName: \"Storage & Databases\",\n },\n \"various\": {\n displayName: \"Various\",\n },\n} as const satisfies Record<string, AppTag>;\n\ntype App = {\n displayName: string,\n subtitle: string,\n tags: (keyof typeof ALL_APP_TAGS)[],\n stage: \"alpha\" | \"beta\" | \"stable\",\n};\n\nexport type AppId = keyof typeof ALL_APPS;\n\nexport const ALL_APPS = {\n \"authentication\": {\n displayName: \"Authentication\",\n subtitle: \"User sign-in and account management\",\n tags: [\"auth\", \"security\"],\n stage: \"stable\",\n },\n \"fraud-protection\": {\n displayName: \"Fraud Protection\",\n subtitle: \"Protect your project from fraud and abuse\",\n tags: [\"auth\", \"security\"],\n stage: \"stable\",\n },\n \"onboarding\": {\n displayName: \"Onboarding\",\n subtitle: \"Configure user onboarding requirements\",\n tags: [\"auth\"],\n stage: \"alpha\",\n },\n \"teams\": {\n displayName: \"Teams\",\n subtitle: \"Team collaboration and management\",\n tags: [\"auth\", \"security\"],\n stage: \"stable\",\n },\n \"rbac\": {\n displayName: \"RBAC\",\n subtitle: \"Role-based access control and permissions\",\n tags: [\"auth\", \"security\"],\n stage: \"stable\",\n },\n \"api-keys\": {\n displayName: \"API Keys\",\n subtitle: \"API key generation and management\",\n tags: [\"auth\", \"security\", \"developers\"],\n stage: \"stable\",\n },\n \"payments\": {\n displayName: \"Payments\",\n subtitle: \"Payment processing and subscription management\",\n tags: [\"operations\", \"gtm\"],\n stage: \"beta\",\n },\n \"emails\": {\n displayName: \"Emails\",\n subtitle: \"Email template configuration and management\",\n tags: [\"comms\"],\n stage: \"stable\",\n },\n \"support\": {\n displayName: \"Support\",\n subtitle: \"Customer conversations, team replies, and internal notes\",\n tags: [\"comms\", \"operations\"],\n stage: \"alpha\",\n },\n \"email-api\": {\n displayName: \"Email API\",\n subtitle: \"Programmatic email sending and delivery\",\n tags: [\"comms\", \"developers\", \"expert\"],\n stage: \"alpha\",\n },\n \"data-vault\": {\n displayName: \"Data Vault\",\n subtitle: \"Secure storage for sensitive user data\",\n tags: [\"security\", \"storage\"],\n stage: \"beta\",\n },\n \"webhooks\": {\n displayName: \"Webhooks\",\n subtitle: \"Real-time event notifications and integrations\",\n tags: [\"developers\"],\n stage: \"stable\",\n },\n \"tv-mode\": {\n displayName: \"TV mode\",\n subtitle: \"Dashboard display for large screens\",\n tags: [\"various\"],\n stage: \"alpha\",\n },\n \"launch-checklist\": {\n displayName: \"Launch Checklist\",\n subtitle: \"Pre-launch verification and readiness checks\",\n tags: [\"various\"],\n stage: \"stable\",\n },\n \"catalyst\": {\n displayName: \"Catalyst\",\n subtitle: \"Project scaffolding and rapid development\",\n tags: [\"various\"],\n stage: \"alpha\",\n },\n \"neon\": {\n displayName: \"Neon Integration\",\n subtitle: \"Serverless Postgres database integration\",\n tags: [\"integration\", \"storage\"],\n stage: \"alpha\",\n },\n \"convex\": {\n displayName: \"Convex Integration\",\n subtitle: \"Real-time backend platform integration\",\n tags: [\"integration\", \"storage\"],\n stage: \"alpha\",\n },\n \"vercel\": {\n displayName: \"Vercel Integration\",\n subtitle: \"Deploy your Hexclave project to Vercel\",\n tags: [\"integration\", \"developers\"],\n stage: \"stable\",\n },\n \"tanstack-start\": {\n displayName: \"TanStack Start\",\n subtitle: \"Use Hexclave in TanStack Start apps\",\n tags: [\"integration\", \"developers\"],\n stage: \"alpha\",\n },\n \"analytics\": {\n displayName: \"Analytics\",\n subtitle: \"View and explore analytics data\",\n tags: [\"developers\", \"operations\"],\n stage: \"stable\",\n },\n \"session-replays\": {\n displayName: \"Session Replays\",\n subtitle: \"Watch real user sessions to understand how people use your app\",\n tags: [\"developers\", \"operations\"],\n stage: \"stable\",\n },\n} as const satisfies Record<string, App>;\n"],"mappings":";AAIA,MAAa,eAAe;CAC1B,UAAU,EACR,aAAa,UACd;CACD,eAAe,EACb,aAAa,gBACd;CACD,QAAQ,EACN,aAAa,kBACd;CACD,cAAc,EACZ,aAAa,kBACd;CACD,YAAY,EACV,aAAa,YACd;CACD,cAAc,EACZ,aAAa,kBACd;CACD,OAAO,EACL,aAAa,gBACd;CACD,SAAS,EACP,aAAa,kBACd;CACD,cAAc,EACZ,aAAa,cACd;CACD,WAAW,EACT,aAAa,uBACd;CACD,WAAW,EACT,aAAa,WACd;CACF;AAWD,MAAa,WAAW;CACtB,kBAAkB;EAChB,aAAa;EACb,UAAU;EACV,MAAM,CAAC,QAAQ,WAAW;EAC1B,OAAO;EACR;CACD,oBAAoB;EAClB,aAAa;EACb,UAAU;EACV,MAAM,CAAC,QAAQ,WAAW;EAC1B,OAAO;EACR;CACD,cAAc;EACZ,aAAa;EACb,UAAU;EACV,MAAM,CAAC,OAAO;EACd,OAAO;EACR;CACD,SAAS;EACP,aAAa;EACb,UAAU;EACV,MAAM,CAAC,QAAQ,WAAW;EAC1B,OAAO;EACR;CACD,QAAQ;EACN,aAAa;EACb,UAAU;EACV,MAAM,CAAC,QAAQ,WAAW;EAC1B,OAAO;EACR;CACD,YAAY;EACV,aAAa;EACb,UAAU;EACV,MAAM;GAAC;GAAQ;GAAY;GAAa;EACxC,OAAO;EACR;CACD,YAAY;EACV,aAAa;EACb,UAAU;EACV,MAAM,CAAC,cAAc,MAAM;EAC3B,OAAO;EACR;CACD,UAAU;EACR,aAAa;EACb,UAAU;EACV,MAAM,CAAC,QAAQ;EACf,OAAO;EACR;CACD,WAAW;EACT,aAAa;EACb,UAAU;EACV,MAAM,CAAC,SAAS,aAAa;EAC7B,OAAO;EACR;CACD,aAAa;EACX,aAAa;EACb,UAAU;EACV,MAAM;GAAC;GAAS;GAAc;GAAS;EACvC,OAAO;EACR;CACD,cAAc;EACZ,aAAa;EACb,UAAU;EACV,MAAM,CAAC,YAAY,UAAU;EAC7B,OAAO;EACR;CACD,YAAY;EACV,aAAa;EACb,UAAU;EACV,MAAM,CAAC,aAAa;EACpB,OAAO;EACR;CACD,WAAW;EACT,aAAa;EACb,UAAU;EACV,MAAM,CAAC,UAAU;EACjB,OAAO;EACR;CACD,oBAAoB;EAClB,aAAa;EACb,UAAU;EACV,MAAM,CAAC,UAAU;EACjB,OAAO;EACR;CACD,YAAY;EACV,aAAa;EACb,UAAU;EACV,MAAM,CAAC,UAAU;EACjB,OAAO;EACR;CACD,QAAQ;EACN,aAAa;EACb,UAAU;EACV,MAAM,CAAC,eAAe,UAAU;EAChC,OAAO;EACR;CACD,UAAU;EACR,aAAa;EACb,UAAU;EACV,MAAM,CAAC,eAAe,UAAU;EAChC,OAAO;EACR;CACD,UAAU;EACR,aAAa;EACb,UAAU;EACV,MAAM,CAAC,eAAe,aAAa;EACnC,OAAO;EACR;CACD,kBAAkB;EAChB,aAAa;EACb,UAAU;EACV,MAAM,CAAC,eAAe,aAAa;EACnC,OAAO;EACR;CACD,aAAa;EACX,aAAa;EACb,UAAU;EACV,MAAM,CAAC,cAAc,aAAa;EAClC,OAAO;EACR;CACD,mBAAmB;EACjB,aAAa;EACb,UAAU;EACV,MAAM,CAAC,cAAc,aAAa;EAClC,OAAO;EACR;CACF"}
|
|
1
|
+
{"version":3,"file":"apps-config.js","names":[],"sources":["../../../src/apps/apps-config.ts"],"sourcesContent":["type AppTag = {\n displayName: string,\n};\n\nexport const ALL_APP_TAGS = {\n \"expert\": {\n displayName: \"Expert\",\n },\n \"integration\": {\n displayName: \"Integrations\",\n },\n \"auth\": {\n displayName: \"Authentication\",\n },\n \"developers\": {\n displayName: \"For Developers\",\n },\n \"security\": {\n displayName: \"Security\",\n },\n \"operations\": {\n displayName: \"For Operations\",\n },\n \"gtm\": {\n displayName: \"Go-to-market\",\n },\n \"comms\": {\n displayName: \"Communications\",\n },\n \"automation\": {\n displayName: \"Automation\",\n },\n \"storage\": {\n displayName: \"Storage & Databases\",\n },\n \"various\": {\n displayName: \"Various\",\n },\n} as const satisfies Record<string, AppTag>;\n\ntype App = {\n displayName: string,\n subtitle: string,\n tags: (keyof typeof ALL_APP_TAGS)[],\n stage: \"alpha\" | \"beta\" | \"stable\",\n};\n\nexport type AppId = keyof typeof ALL_APPS;\n\nexport const ALL_APPS = {\n \"authentication\": {\n displayName: \"Authentication\",\n subtitle: \"User sign-in and account management\",\n tags: [\"auth\", \"security\"],\n stage: \"stable\",\n },\n \"fraud-protection\": {\n displayName: \"Fraud Protection\",\n subtitle: \"Protect your project from fraud and abuse\",\n tags: [\"auth\", \"security\"],\n stage: \"stable\",\n },\n \"onboarding\": {\n displayName: \"Onboarding\",\n subtitle: \"Configure user onboarding requirements\",\n tags: [\"auth\"],\n stage: \"alpha\",\n },\n \"teams\": {\n displayName: \"Teams\",\n subtitle: \"Team collaboration and management\",\n tags: [\"auth\", \"security\"],\n stage: \"stable\",\n },\n \"rbac\": {\n displayName: \"RBAC\",\n subtitle: \"Role-based access control and permissions\",\n tags: [\"auth\", \"security\"],\n stage: \"stable\",\n },\n \"api-keys\": {\n displayName: \"API Keys\",\n subtitle: \"API key generation and management\",\n tags: [\"auth\", \"security\", \"developers\"],\n stage: \"stable\",\n },\n \"payments\": {\n displayName: \"Payments\",\n subtitle: \"Payment processing and subscription management\",\n tags: [\"operations\", \"gtm\"],\n stage: \"beta\",\n },\n \"emails\": {\n displayName: \"Emails\",\n subtitle: \"Email template configuration and management\",\n tags: [\"comms\"],\n stage: \"stable\",\n },\n \"support\": {\n displayName: \"Support\",\n subtitle: \"Customer conversations, team replies, and internal notes\",\n tags: [\"comms\", \"operations\"],\n stage: \"alpha\",\n },\n \"email-api\": {\n displayName: \"Email API\",\n subtitle: \"Programmatic email sending and delivery\",\n tags: [\"comms\", \"developers\", \"expert\"],\n stage: \"alpha\",\n },\n \"data-vault\": {\n displayName: \"Data Vault\",\n subtitle: \"Secure storage for sensitive user data\",\n tags: [\"security\", \"storage\"],\n stage: \"beta\",\n },\n \"webhooks\": {\n displayName: \"Webhooks\",\n subtitle: \"Real-time event notifications and integrations\",\n tags: [\"developers\"],\n stage: \"stable\",\n },\n \"tv-mode\": {\n displayName: \"TV mode\",\n subtitle: \"Dashboard display for large screens\",\n tags: [\"various\"],\n stage: \"alpha\",\n },\n \"launch-checklist\": {\n displayName: \"Launch Checklist\",\n subtitle: \"Pre-launch verification and readiness checks\",\n tags: [\"various\"],\n stage: \"stable\",\n },\n \"catalyst\": {\n displayName: \"Catalyst\",\n subtitle: \"Project scaffolding and rapid development\",\n tags: [\"various\"],\n stage: \"alpha\",\n },\n \"neon\": {\n displayName: \"Neon Integration\",\n subtitle: \"Serverless Postgres database integration\",\n tags: [\"integration\", \"storage\"],\n stage: \"alpha\",\n },\n \"convex\": {\n displayName: \"Convex Integration\",\n subtitle: \"Real-time backend platform integration\",\n tags: [\"integration\", \"storage\"],\n stage: \"alpha\",\n },\n \"vercel\": {\n displayName: \"Vercel Integration\",\n subtitle: \"Deploy your Hexclave project to Vercel\",\n tags: [\"integration\", \"developers\"],\n stage: \"stable\",\n },\n \"tanstack-start\": {\n displayName: \"TanStack Start\",\n subtitle: \"Use Hexclave in TanStack Start apps\",\n tags: [\"integration\", \"developers\"],\n stage: \"alpha\",\n },\n \"analytics\": {\n displayName: \"Analytics\",\n subtitle: \"View and explore analytics data\",\n tags: [\"developers\", \"operations\"],\n stage: \"stable\",\n },\n \"clickmaps\": {\n displayName: \"Clickmaps\",\n subtitle: \"Visualize where users click across your app\",\n tags: [\"developers\", \"operations\"],\n stage: \"alpha\",\n },\n \"session-replays\": {\n displayName: \"Session Replays\",\n subtitle: \"Watch real user sessions to understand how people use your app\",\n tags: [\"developers\", \"operations\"],\n stage: \"stable\",\n },\n} as const satisfies Record<string, App>;\n"],"mappings":";AAIA,MAAa,eAAe;CAC1B,UAAU,EACR,aAAa,UACd;CACD,eAAe,EACb,aAAa,gBACd;CACD,QAAQ,EACN,aAAa,kBACd;CACD,cAAc,EACZ,aAAa,kBACd;CACD,YAAY,EACV,aAAa,YACd;CACD,cAAc,EACZ,aAAa,kBACd;CACD,OAAO,EACL,aAAa,gBACd;CACD,SAAS,EACP,aAAa,kBACd;CACD,cAAc,EACZ,aAAa,cACd;CACD,WAAW,EACT,aAAa,uBACd;CACD,WAAW,EACT,aAAa,WACd;CACF;AAWD,MAAa,WAAW;CACtB,kBAAkB;EAChB,aAAa;EACb,UAAU;EACV,MAAM,CAAC,QAAQ,WAAW;EAC1B,OAAO;EACR;CACD,oBAAoB;EAClB,aAAa;EACb,UAAU;EACV,MAAM,CAAC,QAAQ,WAAW;EAC1B,OAAO;EACR;CACD,cAAc;EACZ,aAAa;EACb,UAAU;EACV,MAAM,CAAC,OAAO;EACd,OAAO;EACR;CACD,SAAS;EACP,aAAa;EACb,UAAU;EACV,MAAM,CAAC,QAAQ,WAAW;EAC1B,OAAO;EACR;CACD,QAAQ;EACN,aAAa;EACb,UAAU;EACV,MAAM,CAAC,QAAQ,WAAW;EAC1B,OAAO;EACR;CACD,YAAY;EACV,aAAa;EACb,UAAU;EACV,MAAM;GAAC;GAAQ;GAAY;GAAa;EACxC,OAAO;EACR;CACD,YAAY;EACV,aAAa;EACb,UAAU;EACV,MAAM,CAAC,cAAc,MAAM;EAC3B,OAAO;EACR;CACD,UAAU;EACR,aAAa;EACb,UAAU;EACV,MAAM,CAAC,QAAQ;EACf,OAAO;EACR;CACD,WAAW;EACT,aAAa;EACb,UAAU;EACV,MAAM,CAAC,SAAS,aAAa;EAC7B,OAAO;EACR;CACD,aAAa;EACX,aAAa;EACb,UAAU;EACV,MAAM;GAAC;GAAS;GAAc;GAAS;EACvC,OAAO;EACR;CACD,cAAc;EACZ,aAAa;EACb,UAAU;EACV,MAAM,CAAC,YAAY,UAAU;EAC7B,OAAO;EACR;CACD,YAAY;EACV,aAAa;EACb,UAAU;EACV,MAAM,CAAC,aAAa;EACpB,OAAO;EACR;CACD,WAAW;EACT,aAAa;EACb,UAAU;EACV,MAAM,CAAC,UAAU;EACjB,OAAO;EACR;CACD,oBAAoB;EAClB,aAAa;EACb,UAAU;EACV,MAAM,CAAC,UAAU;EACjB,OAAO;EACR;CACD,YAAY;EACV,aAAa;EACb,UAAU;EACV,MAAM,CAAC,UAAU;EACjB,OAAO;EACR;CACD,QAAQ;EACN,aAAa;EACb,UAAU;EACV,MAAM,CAAC,eAAe,UAAU;EAChC,OAAO;EACR;CACD,UAAU;EACR,aAAa;EACb,UAAU;EACV,MAAM,CAAC,eAAe,UAAU;EAChC,OAAO;EACR;CACD,UAAU;EACR,aAAa;EACb,UAAU;EACV,MAAM,CAAC,eAAe,aAAa;EACnC,OAAO;EACR;CACD,kBAAkB;EAChB,aAAa;EACb,UAAU;EACV,MAAM,CAAC,eAAe,aAAa;EACnC,OAAO;EACR;CACD,aAAa;EACX,aAAa;EACb,UAAU;EACV,MAAM,CAAC,cAAc,aAAa;EAClC,OAAO;EACR;CACD,aAAa;EACX,aAAa;EACb,UAAU;EACV,MAAM,CAAC,cAAc,aAAa;EAClC,OAAO;EACR;CACD,mBAAmB;EACjB,aAAa;EACb,UAAU;EACV,MAAM,CAAC,cAAc,aAAa;EAClC,OAAO;EACR;CACF"}
|
|
@@ -84,7 +84,7 @@ declare const branchConfigSchema: yup$1.Schema<Omit<Omit<{
|
|
|
84
84
|
sourceOfTruth: {
|
|
85
85
|
type: "hosted";
|
|
86
86
|
};
|
|
87
|
-
}, string>, "
|
|
87
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
88
88
|
payments?: {
|
|
89
89
|
blockNewPurchases?: boolean | undefined;
|
|
90
90
|
autoPay?: {
|
|
@@ -125,6 +125,13 @@ declare const branchConfigSchema: yup$1.Schema<Omit<Omit<{
|
|
|
125
125
|
}>;
|
|
126
126
|
}>;
|
|
127
127
|
} | undefined;
|
|
128
|
+
users: {
|
|
129
|
+
allowClientUserDeletion?: boolean | undefined;
|
|
130
|
+
};
|
|
131
|
+
teams: {
|
|
132
|
+
createPersonalTeamOnSignUp?: boolean | undefined;
|
|
133
|
+
allowClientTeamCreation?: boolean | undefined;
|
|
134
|
+
};
|
|
128
135
|
auth: {
|
|
129
136
|
allowSignUp?: boolean | undefined;
|
|
130
137
|
signUpRulesDefaultAction?: string | undefined;
|
|
@@ -134,9 +141,6 @@ declare const branchConfigSchema: yup$1.Schema<Omit<Omit<{
|
|
|
134
141
|
otp: {
|
|
135
142
|
allowSignIn?: boolean | undefined;
|
|
136
143
|
};
|
|
137
|
-
passkey: {
|
|
138
|
-
allowSignIn?: boolean | undefined;
|
|
139
|
-
};
|
|
140
144
|
oauth: {
|
|
141
145
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
142
146
|
providers: Record<string, {
|
|
@@ -145,10 +149,13 @@ declare const branchConfigSchema: yup$1.Schema<Omit<Omit<{
|
|
|
145
149
|
allowConnectedAccounts?: boolean | undefined;
|
|
146
150
|
}>;
|
|
147
151
|
};
|
|
152
|
+
passkey: {
|
|
153
|
+
allowSignIn?: boolean | undefined;
|
|
154
|
+
};
|
|
148
155
|
signUpRules: Record<string, {
|
|
149
156
|
displayName?: string | undefined;
|
|
150
|
-
enabled?: boolean | undefined;
|
|
151
157
|
priority?: number | undefined;
|
|
158
|
+
enabled?: boolean | undefined;
|
|
152
159
|
condition?: string | undefined;
|
|
153
160
|
action: {
|
|
154
161
|
message?: string | undefined;
|
|
@@ -159,10 +166,6 @@ declare const branchConfigSchema: yup$1.Schema<Omit<Omit<{
|
|
|
159
166
|
onboarding: {
|
|
160
167
|
requireEmailVerification?: boolean | undefined;
|
|
161
168
|
};
|
|
162
|
-
teams: {
|
|
163
|
-
createPersonalTeamOnSignUp?: boolean | undefined;
|
|
164
|
-
allowClientTeamCreation?: boolean | undefined;
|
|
165
|
-
};
|
|
166
169
|
rbac: {
|
|
167
170
|
permissions: Record<string, {
|
|
168
171
|
description?: string | undefined;
|
|
@@ -187,9 +190,6 @@ declare const branchConfigSchema: yup$1.Schema<Omit<Omit<{
|
|
|
187
190
|
tsxSource: string;
|
|
188
191
|
}>;
|
|
189
192
|
};
|
|
190
|
-
users: {
|
|
191
|
-
allowClientUserDeletion?: boolean | undefined;
|
|
192
|
-
};
|
|
193
193
|
apiKeys: {
|
|
194
194
|
enabled: {
|
|
195
195
|
team?: boolean | undefined;
|
|
@@ -197,7 +197,7 @@ declare const branchConfigSchema: yup$1.Schema<Omit<Omit<{
|
|
|
197
197
|
};
|
|
198
198
|
};
|
|
199
199
|
apps: {
|
|
200
|
-
installed: Record<"authentication" | "fraud-protection" | "onboarding" | "
|
|
200
|
+
installed: Record<"teams" | "authentication" | "fraud-protection" | "onboarding" | "rbac" | "api-keys" | "payments" | "emails" | "support" | "email-api" | "data-vault" | "webhooks" | "tv-mode" | "launch-checklist" | "catalyst" | "neon" | "convex" | "vercel" | "tanstack-start" | "analytics" | "clickmaps" | "session-replays", {
|
|
201
201
|
enabled?: boolean | undefined;
|
|
202
202
|
}>;
|
|
203
203
|
};
|
|
@@ -218,7 +218,7 @@ declare const branchConfigSchema: yup$1.Schema<Omit<Omit<{
|
|
|
218
218
|
project: {
|
|
219
219
|
requirePublishableClientKey: undefined;
|
|
220
220
|
};
|
|
221
|
-
}, string>, "
|
|
221
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
222
222
|
rbac: {
|
|
223
223
|
permissions: undefined;
|
|
224
224
|
defaultPermissions: {
|
|
@@ -293,7 +293,7 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
293
293
|
sourceOfTruth: {
|
|
294
294
|
type: "hosted";
|
|
295
295
|
};
|
|
296
|
-
}, string>, "
|
|
296
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
297
297
|
payments?: {
|
|
298
298
|
blockNewPurchases?: boolean | undefined;
|
|
299
299
|
autoPay?: {
|
|
@@ -334,6 +334,13 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
334
334
|
}>;
|
|
335
335
|
}>;
|
|
336
336
|
} | undefined;
|
|
337
|
+
users: {
|
|
338
|
+
allowClientUserDeletion?: boolean | undefined;
|
|
339
|
+
};
|
|
340
|
+
teams: {
|
|
341
|
+
createPersonalTeamOnSignUp?: boolean | undefined;
|
|
342
|
+
allowClientTeamCreation?: boolean | undefined;
|
|
343
|
+
};
|
|
337
344
|
auth: {
|
|
338
345
|
allowSignUp?: boolean | undefined;
|
|
339
346
|
signUpRulesDefaultAction?: string | undefined;
|
|
@@ -343,9 +350,6 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
343
350
|
otp: {
|
|
344
351
|
allowSignIn?: boolean | undefined;
|
|
345
352
|
};
|
|
346
|
-
passkey: {
|
|
347
|
-
allowSignIn?: boolean | undefined;
|
|
348
|
-
};
|
|
349
353
|
oauth: {
|
|
350
354
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
351
355
|
providers: Record<string, {
|
|
@@ -354,10 +358,13 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
354
358
|
allowConnectedAccounts?: boolean | undefined;
|
|
355
359
|
}>;
|
|
356
360
|
};
|
|
361
|
+
passkey: {
|
|
362
|
+
allowSignIn?: boolean | undefined;
|
|
363
|
+
};
|
|
357
364
|
signUpRules: Record<string, {
|
|
358
365
|
displayName?: string | undefined;
|
|
359
|
-
enabled?: boolean | undefined;
|
|
360
366
|
priority?: number | undefined;
|
|
367
|
+
enabled?: boolean | undefined;
|
|
361
368
|
condition?: string | undefined;
|
|
362
369
|
action: {
|
|
363
370
|
message?: string | undefined;
|
|
@@ -368,10 +375,6 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
368
375
|
onboarding: {
|
|
369
376
|
requireEmailVerification?: boolean | undefined;
|
|
370
377
|
};
|
|
371
|
-
teams: {
|
|
372
|
-
createPersonalTeamOnSignUp?: boolean | undefined;
|
|
373
|
-
allowClientTeamCreation?: boolean | undefined;
|
|
374
|
-
};
|
|
375
378
|
rbac: {
|
|
376
379
|
permissions: Record<string, {
|
|
377
380
|
description?: string | undefined;
|
|
@@ -396,9 +399,6 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
396
399
|
tsxSource: string;
|
|
397
400
|
}>;
|
|
398
401
|
};
|
|
399
|
-
users: {
|
|
400
|
-
allowClientUserDeletion?: boolean | undefined;
|
|
401
|
-
};
|
|
402
402
|
apiKeys: {
|
|
403
403
|
enabled: {
|
|
404
404
|
team?: boolean | undefined;
|
|
@@ -406,7 +406,7 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
406
406
|
};
|
|
407
407
|
};
|
|
408
408
|
apps: {
|
|
409
|
-
installed: Record<"authentication" | "fraud-protection" | "onboarding" | "
|
|
409
|
+
installed: Record<"teams" | "authentication" | "fraud-protection" | "onboarding" | "rbac" | "api-keys" | "payments" | "emails" | "support" | "email-api" | "data-vault" | "webhooks" | "tv-mode" | "launch-checklist" | "catalyst" | "neon" | "convex" | "vercel" | "tanstack-start" | "analytics" | "clickmaps" | "session-replays", {
|
|
410
410
|
enabled?: boolean | undefined;
|
|
411
411
|
}>;
|
|
412
412
|
};
|
|
@@ -474,9 +474,6 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
474
474
|
otp: {
|
|
475
475
|
allowSignIn?: boolean | undefined;
|
|
476
476
|
};
|
|
477
|
-
passkey: {
|
|
478
|
-
allowSignIn?: boolean | undefined;
|
|
479
|
-
};
|
|
480
477
|
oauth: {
|
|
481
478
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
482
479
|
providers: Record<string, {
|
|
@@ -485,10 +482,13 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
485
482
|
allowConnectedAccounts?: boolean | undefined;
|
|
486
483
|
}>;
|
|
487
484
|
};
|
|
485
|
+
passkey: {
|
|
486
|
+
allowSignIn?: boolean | undefined;
|
|
487
|
+
};
|
|
488
488
|
signUpRules: Record<string, {
|
|
489
489
|
displayName?: string | undefined;
|
|
490
|
-
enabled?: boolean | undefined;
|
|
491
490
|
priority?: number | undefined;
|
|
491
|
+
enabled?: boolean | undefined;
|
|
492
492
|
condition?: string | undefined;
|
|
493
493
|
action: {
|
|
494
494
|
message?: string | undefined;
|
|
@@ -572,7 +572,7 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
572
572
|
project: {
|
|
573
573
|
requirePublishableClientKey: undefined;
|
|
574
574
|
};
|
|
575
|
-
}, string>, "
|
|
575
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
576
576
|
rbac: {
|
|
577
577
|
permissions: undefined;
|
|
578
578
|
defaultPermissions: {
|
|
@@ -645,7 +645,7 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
645
645
|
project: {
|
|
646
646
|
requirePublishableClientKey: undefined;
|
|
647
647
|
};
|
|
648
|
-
}, string>, "
|
|
648
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
649
649
|
rbac: {
|
|
650
650
|
permissions: undefined;
|
|
651
651
|
defaultPermissions: {
|
|
@@ -718,7 +718,7 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
718
718
|
project: {
|
|
719
719
|
requirePublishableClientKey: undefined;
|
|
720
720
|
};
|
|
721
|
-
}, string>, "
|
|
721
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
722
722
|
rbac: {
|
|
723
723
|
permissions: undefined;
|
|
724
724
|
defaultPermissions: {
|
|
@@ -794,7 +794,7 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
794
794
|
project: {
|
|
795
795
|
requirePublishableClientKey: undefined;
|
|
796
796
|
};
|
|
797
|
-
}, string>, "
|
|
797
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
798
798
|
rbac: {
|
|
799
799
|
permissions: undefined;
|
|
800
800
|
defaultPermissions: {
|
|
@@ -880,7 +880,7 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
880
880
|
project: {
|
|
881
881
|
requirePublishableClientKey: undefined;
|
|
882
882
|
};
|
|
883
|
-
}, string>, "
|
|
883
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
884
884
|
rbac: {
|
|
885
885
|
permissions: undefined;
|
|
886
886
|
defaultPermissions: {
|
|
@@ -956,7 +956,7 @@ declare const environmentConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
956
956
|
project: {
|
|
957
957
|
requirePublishableClientKey: undefined;
|
|
958
958
|
};
|
|
959
|
-
}, string>, "
|
|
959
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
960
960
|
rbac: {
|
|
961
961
|
permissions: undefined;
|
|
962
962
|
defaultPermissions: {
|
|
@@ -1038,7 +1038,7 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1038
1038
|
sourceOfTruth: {
|
|
1039
1039
|
type: "hosted";
|
|
1040
1040
|
};
|
|
1041
|
-
}, string>, "
|
|
1041
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
1042
1042
|
payments?: {
|
|
1043
1043
|
blockNewPurchases?: boolean | undefined;
|
|
1044
1044
|
autoPay?: {
|
|
@@ -1079,6 +1079,13 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1079
1079
|
}>;
|
|
1080
1080
|
}>;
|
|
1081
1081
|
} | undefined;
|
|
1082
|
+
users: {
|
|
1083
|
+
allowClientUserDeletion?: boolean | undefined;
|
|
1084
|
+
};
|
|
1085
|
+
teams: {
|
|
1086
|
+
createPersonalTeamOnSignUp?: boolean | undefined;
|
|
1087
|
+
allowClientTeamCreation?: boolean | undefined;
|
|
1088
|
+
};
|
|
1082
1089
|
auth: {
|
|
1083
1090
|
allowSignUp?: boolean | undefined;
|
|
1084
1091
|
signUpRulesDefaultAction?: string | undefined;
|
|
@@ -1088,9 +1095,6 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1088
1095
|
otp: {
|
|
1089
1096
|
allowSignIn?: boolean | undefined;
|
|
1090
1097
|
};
|
|
1091
|
-
passkey: {
|
|
1092
|
-
allowSignIn?: boolean | undefined;
|
|
1093
|
-
};
|
|
1094
1098
|
oauth: {
|
|
1095
1099
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
1096
1100
|
providers: Record<string, {
|
|
@@ -1099,10 +1103,13 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1099
1103
|
allowConnectedAccounts?: boolean | undefined;
|
|
1100
1104
|
}>;
|
|
1101
1105
|
};
|
|
1106
|
+
passkey: {
|
|
1107
|
+
allowSignIn?: boolean | undefined;
|
|
1108
|
+
};
|
|
1102
1109
|
signUpRules: Record<string, {
|
|
1103
1110
|
displayName?: string | undefined;
|
|
1104
|
-
enabled?: boolean | undefined;
|
|
1105
1111
|
priority?: number | undefined;
|
|
1112
|
+
enabled?: boolean | undefined;
|
|
1106
1113
|
condition?: string | undefined;
|
|
1107
1114
|
action: {
|
|
1108
1115
|
message?: string | undefined;
|
|
@@ -1113,10 +1120,6 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1113
1120
|
onboarding: {
|
|
1114
1121
|
requireEmailVerification?: boolean | undefined;
|
|
1115
1122
|
};
|
|
1116
|
-
teams: {
|
|
1117
|
-
createPersonalTeamOnSignUp?: boolean | undefined;
|
|
1118
|
-
allowClientTeamCreation?: boolean | undefined;
|
|
1119
|
-
};
|
|
1120
1123
|
rbac: {
|
|
1121
1124
|
permissions: Record<string, {
|
|
1122
1125
|
description?: string | undefined;
|
|
@@ -1141,9 +1144,6 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1141
1144
|
tsxSource: string;
|
|
1142
1145
|
}>;
|
|
1143
1146
|
};
|
|
1144
|
-
users: {
|
|
1145
|
-
allowClientUserDeletion?: boolean | undefined;
|
|
1146
|
-
};
|
|
1147
1147
|
apiKeys: {
|
|
1148
1148
|
enabled: {
|
|
1149
1149
|
team?: boolean | undefined;
|
|
@@ -1151,7 +1151,7 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1151
1151
|
};
|
|
1152
1152
|
};
|
|
1153
1153
|
apps: {
|
|
1154
|
-
installed: Record<"authentication" | "fraud-protection" | "onboarding" | "
|
|
1154
|
+
installed: Record<"teams" | "authentication" | "fraud-protection" | "onboarding" | "rbac" | "api-keys" | "payments" | "emails" | "support" | "email-api" | "data-vault" | "webhooks" | "tv-mode" | "launch-checklist" | "catalyst" | "neon" | "convex" | "vercel" | "tanstack-start" | "analytics" | "clickmaps" | "session-replays", {
|
|
1155
1155
|
enabled?: boolean | undefined;
|
|
1156
1156
|
}>;
|
|
1157
1157
|
};
|
|
@@ -1219,9 +1219,6 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1219
1219
|
otp: {
|
|
1220
1220
|
allowSignIn?: boolean | undefined;
|
|
1221
1221
|
};
|
|
1222
|
-
passkey: {
|
|
1223
|
-
allowSignIn?: boolean | undefined;
|
|
1224
|
-
};
|
|
1225
1222
|
oauth: {
|
|
1226
1223
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
1227
1224
|
providers: Record<string, {
|
|
@@ -1230,10 +1227,13 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1230
1227
|
allowConnectedAccounts?: boolean | undefined;
|
|
1231
1228
|
}>;
|
|
1232
1229
|
};
|
|
1230
|
+
passkey: {
|
|
1231
|
+
allowSignIn?: boolean | undefined;
|
|
1232
|
+
};
|
|
1233
1233
|
signUpRules: Record<string, {
|
|
1234
1234
|
displayName?: string | undefined;
|
|
1235
|
-
enabled?: boolean | undefined;
|
|
1236
1235
|
priority?: number | undefined;
|
|
1236
|
+
enabled?: boolean | undefined;
|
|
1237
1237
|
condition?: string | undefined;
|
|
1238
1238
|
action: {
|
|
1239
1239
|
message?: string | undefined;
|
|
@@ -1317,7 +1317,7 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1317
1317
|
project: {
|
|
1318
1318
|
requirePublishableClientKey: undefined;
|
|
1319
1319
|
};
|
|
1320
|
-
}, string>, "
|
|
1320
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
1321
1321
|
rbac: {
|
|
1322
1322
|
permissions: undefined;
|
|
1323
1323
|
defaultPermissions: {
|
|
@@ -1390,7 +1390,7 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1390
1390
|
project: {
|
|
1391
1391
|
requirePublishableClientKey: undefined;
|
|
1392
1392
|
};
|
|
1393
|
-
}, string>, "
|
|
1393
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
1394
1394
|
rbac: {
|
|
1395
1395
|
permissions: undefined;
|
|
1396
1396
|
defaultPermissions: {
|
|
@@ -1463,7 +1463,7 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1463
1463
|
project: {
|
|
1464
1464
|
requirePublishableClientKey: undefined;
|
|
1465
1465
|
};
|
|
1466
|
-
}, string>, "
|
|
1466
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
1467
1467
|
rbac: {
|
|
1468
1468
|
permissions: undefined;
|
|
1469
1469
|
defaultPermissions: {
|
|
@@ -1539,7 +1539,7 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1539
1539
|
project: {
|
|
1540
1540
|
requirePublishableClientKey: undefined;
|
|
1541
1541
|
};
|
|
1542
|
-
}, string>, "
|
|
1542
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
1543
1543
|
rbac: {
|
|
1544
1544
|
permissions: undefined;
|
|
1545
1545
|
defaultPermissions: {
|
|
@@ -1625,7 +1625,7 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1625
1625
|
project: {
|
|
1626
1626
|
requirePublishableClientKey: undefined;
|
|
1627
1627
|
};
|
|
1628
|
-
}, string>, "
|
|
1628
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
1629
1629
|
rbac: {
|
|
1630
1630
|
permissions: undefined;
|
|
1631
1631
|
defaultPermissions: {
|
|
@@ -1701,7 +1701,7 @@ declare const organizationConfigSchema: yup$1.Schema<Omit<NonNullable<Omit<NonNu
|
|
|
1701
1701
|
project: {
|
|
1702
1702
|
requirePublishableClientKey: undefined;
|
|
1703
1703
|
};
|
|
1704
|
-
}, string>, "
|
|
1704
|
+
}, string>, "users" | "teams" | "auth" | "onboarding" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "domains" | "dbSync" | "dataVault"> & {
|
|
1705
1705
|
rbac: {
|
|
1706
1706
|
permissions: undefined;
|
|
1707
1707
|
defaultPermissions: {
|
|
@@ -2064,15 +2064,14 @@ declare function sanitizeOrganizationConfig(config: OrganizationRenderedConfigBe
|
|
|
2064
2064
|
};
|
|
2065
2065
|
signUpRules: Record<string, {
|
|
2066
2066
|
displayName: string | undefined;
|
|
2067
|
-
enabled: boolean;
|
|
2068
2067
|
priority: number;
|
|
2068
|
+
enabled: boolean;
|
|
2069
2069
|
condition: string | undefined;
|
|
2070
2070
|
action: {
|
|
2071
2071
|
message: string | undefined;
|
|
2072
2072
|
type: "allow" | "reject" | "restrict" | "log";
|
|
2073
2073
|
};
|
|
2074
2074
|
}>;
|
|
2075
|
-
allowSignUp: boolean;
|
|
2076
2075
|
password: {
|
|
2077
2076
|
allowSignIn: boolean;
|
|
2078
2077
|
};
|
|
@@ -2082,6 +2081,7 @@ declare function sanitizeOrganizationConfig(config: OrganizationRenderedConfigBe
|
|
|
2082
2081
|
passkey: {
|
|
2083
2082
|
allowSignIn: boolean;
|
|
2084
2083
|
};
|
|
2084
|
+
allowSignUp: boolean;
|
|
2085
2085
|
signUpRulesDefaultAction: string;
|
|
2086
2086
|
};
|
|
2087
2087
|
emails: {
|
|
@@ -2137,8 +2137,8 @@ declare function sanitizeOrganizationConfig(config: OrganizationRenderedConfigBe
|
|
|
2137
2137
|
stackable: boolean | undefined;
|
|
2138
2138
|
includedItems: {
|
|
2139
2139
|
[x: string]: {
|
|
2140
|
-
repeat: "never" | [number, "day" | "week" | "month" | "year"];
|
|
2141
2140
|
quantity: number;
|
|
2141
|
+
repeat: "never" | [number, "day" | "week" | "month" | "year"];
|
|
2142
2142
|
expires: "never" | "when-purchase-expires" | "when-repeated";
|
|
2143
2143
|
};
|
|
2144
2144
|
};
|
|
@@ -2174,13 +2174,16 @@ declare function sanitizeOrganizationConfig(config: OrganizationRenderedConfigBe
|
|
|
2174
2174
|
} & {
|
|
2175
2175
|
readonly type: "hosted";
|
|
2176
2176
|
};
|
|
2177
|
-
|
|
2178
|
-
|
|
2177
|
+
users: {
|
|
2178
|
+
allowClientUserDeletion: boolean;
|
|
2179
2179
|
};
|
|
2180
2180
|
teams: {
|
|
2181
2181
|
createPersonalTeamOnSignUp: boolean;
|
|
2182
2182
|
allowClientTeamCreation: boolean;
|
|
2183
2183
|
};
|
|
2184
|
+
onboarding: {
|
|
2185
|
+
requireEmailVerification: boolean;
|
|
2186
|
+
};
|
|
2184
2187
|
rbac: {
|
|
2185
2188
|
permissions: {
|
|
2186
2189
|
[x: string]: {
|
|
@@ -2218,9 +2221,6 @@ declare function sanitizeOrganizationConfig(config: OrganizationRenderedConfigBe
|
|
|
2218
2221
|
};
|
|
2219
2222
|
};
|
|
2220
2223
|
};
|
|
2221
|
-
users: {
|
|
2222
|
-
allowClientUserDeletion: boolean;
|
|
2223
|
-
};
|
|
2224
2224
|
apiKeys: {
|
|
2225
2225
|
enabled: {
|
|
2226
2226
|
team: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-authoring.d.ts","names":[],"sources":["../../src/config-authoring.ts"],"mappings":";;;KAEK,iBAAA,GAAoB,8BAAA;AAAA,cACZ,iCAAA;AAHyD;AAAA,KAK1D,WAAA,GAAc,iBAAA,UAA2B,iCAAA;AAAA,KAGzC,cAAA,GAAiB,iBAAA,UAA2B,iCAAA;AAAA,KAEnD,iBAAA,qBACH,QAAA,
|
|
1
|
+
{"version":3,"file":"config-authoring.d.ts","names":[],"sources":["../../src/config-authoring.ts"],"mappings":";;;KAEK,iBAAA,GAAoB,8BAAA;AAAA,cACZ,iCAAA;AAHyD;AAAA,KAK1D,WAAA,GAAc,iBAAA,UAA2B,iCAAA;AAAA,KAGzC,cAAA,GAAiB,iBAAA,UAA2B,iCAAA;AAAA,KAEnD,iBAAA,qBACH,QAAA,8BACM,MAAA,4CACc,MAAA,GAAS,CAAA,eAAgB,QAAA,GAAW,iBAAA,CAAkB,MAAA,CAAO,CAAA,GAAI,QAAA,CAAS,CAAA,eACtF,MAAA,GACJ,QAAA,kBACI,MAAA,kBACA,OAAA,OAAc,MAAA,QAAc,QAAA,gCACZ,MAAA,GAAS,CAAA,eAAgB,QAAA,GAAW,iBAAA,CAAkB,MAAA,CAAO,CAAA,GAAI,QAAA,CAAS,CAAA,uBAExF,MAAA,GACF,MAAA;AAAA,KAEL,iBAAA,WAA4B,WAAA,IAC/B,CAAA,SAAU,iBAAA,GACN,CAAA,GAAI,iBAAA,CAAkB,CAAA,EAAG,iBAAA,IACzB,CAAA;;iBAGU,iBAAA,iBAAkC,WAAA,CAAA,CAAa,MAAA,EAAQ,iBAAA,CAAkB,CAAA,IAAK,CAAA;AAAA,iBAK9E,oBAAA,iBAAqC,cAAA,CAAA,CAAgB,MAAA,EAAQ,iBAAA,CAAkB,CAAA,IAAK,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-authoring.js","names":[],"sources":["../../src/config-authoring.ts"],"sourcesContent":["import type { BranchConfigNormalizedOverride } from \"./config/schema\";\n\ntype StackConfigObject = BranchConfigNormalizedOverride;\nexport const showOnboardingHexclaveConfigValue = \"show-onboarding\";\n/** @deprecated Use `HexclaveConfig` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackConfig = StackConfigObject | typeof showOnboardingHexclaveConfigValue;\n\n// Hexclave alias — same shape, declared separately so it doesn't inherit the deprecation tag.\nexport type HexclaveConfig = StackConfigObject | typeof showOnboardingHexclaveConfigValue;\n\ntype StrictConfigShape<Actual, Expected> =\n Expected extends readonly unknown[]\n
|
|
1
|
+
{"version":3,"file":"config-authoring.js","names":[],"sources":["../../src/config-authoring.ts"],"sourcesContent":["import type { BranchConfigNormalizedOverride } from \"./config/schema\";\n\ntype StackConfigObject = BranchConfigNormalizedOverride;\nexport const showOnboardingHexclaveConfigValue = \"show-onboarding\";\n/** @deprecated Use `HexclaveConfig` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackConfig = StackConfigObject | typeof showOnboardingHexclaveConfigValue;\n\n// Hexclave alias — same shape, declared separately so it doesn't inherit the deprecation tag.\nexport type HexclaveConfig = StackConfigObject | typeof showOnboardingHexclaveConfigValue;\n\ntype StrictConfigShape<Actual, Expected> =\n Expected extends readonly unknown[]\n ? Actual extends readonly unknown[]\n ? { [K in keyof Actual]: K extends keyof Expected ? StrictConfigShape<Actual[K], Expected[K]> : never }\n : Actual\n : Expected extends object\n ? Actual extends object\n ? Exclude<keyof Actual, keyof Expected> extends never\n ? { [K in keyof Actual]: K extends keyof Expected ? StrictConfigShape<Actual[K], Expected[K]> : never }\n : never\n : Actual\n : Actual;\n\ntype StrictStackConfig<T extends StackConfig> =\n T extends StackConfigObject\n ? T & StrictConfigShape<T, StackConfigObject>\n : T;\n\n/** @deprecated Use `defineHexclaveConfig` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport function defineStackConfig<const T extends StackConfig>(config: StrictStackConfig<T>): T {\n return config;\n}\n\n// Hexclave alias — separate function so it does not inherit the deprecation tag.\nexport function defineHexclaveConfig<const T extends HexclaveConfig>(config: StrictStackConfig<T>): T {\n return config;\n}\n"],"mappings":";AAGA,MAAa,oCAAoC;;AA0BjD,SAAgB,kBAA+C,QAAiC;AAC9F,QAAO;;AAIT,SAAgB,qBAAqD,QAAiC;AACpG,QAAO"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { expect, it } from "vitest";
|
|
2
|
-
import { typeAssertExtends } from "./utils/types.js";
|
|
3
2
|
import { defineStackConfig } from "./config-authoring.js";
|
|
3
|
+
import { typeAssertExtends } from "./utils/types.js";
|
|
4
4
|
|
|
5
5
|
//#region src/config-authoring.test.ts
|
|
6
6
|
const validConfig = defineStackConfig({ payments: { items: { todos: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-authoring.test.js","names":[],"sources":["../../src/config-authoring.test.ts"],"sourcesContent":["import { expect, it } from \"vitest\";\nimport {
|
|
1
|
+
{"version":3,"file":"config-authoring.test.js","names":[],"sources":["../../src/config-authoring.test.ts"],"sourcesContent":["import { expect, it } from \"vitest\";\nimport { defineStackConfig, type StackConfig } from \"./config-authoring\";\nimport { typeAssertExtends } from \"./utils/types\";\n\nconst validConfig = defineStackConfig({\n payments: {\n items: {\n todos: {\n displayName: \"Todo Slots\",\n customerType: \"user\",\n },\n },\n },\n});\nconst showOnboardingConfig = defineStackConfig(\"show-onboarding\");\n\ntypeAssertExtends<typeof validConfig, StackConfig>()();\ntypeAssertExtends<typeof showOnboardingConfig, StackConfig>()();\n\nit(\"returns its input unchanged\", () => {\n expect(defineStackConfig(validConfig)).toBe(validConfig);\n expect(defineStackConfig(showOnboardingConfig)).toBe(showOnboardingConfig);\n});\n\ndefineStackConfig({\n // @ts-expect-error Top-level dot notation should not be accepted in typed config files.\n \"payments.items\": {\n todos: {\n displayName: \"Todo Slots\",\n customerType: \"user\",\n },\n },\n});\n\ndefineStackConfig({\n payments: {\n // @ts-expect-error Unknown keys should not be accepted in typed config files.\n missingField: true,\n },\n});\n\ndefineStackConfig({\n payments: {\n items: {\n todos: {\n displayName: \"Todo Slots\",\n // @ts-expect-error Invalid enum values should fail type-checking.\n customerType: \"workspace\",\n },\n },\n },\n});\n"],"mappings":";;;;;AAIA,MAAM,cAAc,kBAAkB,EACpC,UAAU,EACR,OAAO,EACL,OAAO;CACL,aAAa;CACb,cAAc;CACf,EACF,EACF,EACF,CAAC;AACF,MAAM,uBAAuB,kBAAkB,kBAAkB;AAEjE,mBAAoD,EAAE;AACtD,mBAA6D,EAAE;AAE/D,GAAG,qCAAqC;AACtC,QAAO,kBAAkB,YAAY,CAAC,CAAC,KAAK,YAAY;AACxD,QAAO,kBAAkB,qBAAqB,CAAC,CAAC,KAAK,qBAAqB;EAC1E;AAEF,kBAAkB,EAEhB,kBAAkB,EAChB,OAAO;CACL,aAAa;CACb,cAAc;CACf,EACF,EACF,CAAC;AAEF,kBAAkB,EAChB,UAAU,EAER,cAAc,MACf,EACF,CAAC;AAEF,kBAAkB,EAChB,UAAU,EACR,OAAO,EACL,OAAO;CACL,aAAa;CAEb,cAAc;CACf,EACF,EACF,EACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseHexclaveConfigFileContent, renderConfigFileContent } from "./hexclave-config-file";
|
|
1
|
+
import { hexclaveConfigFileExportsConfig, parseHexclaveConfigFileContent, renderConfigFileContent, tryParseHexclaveConfigFileContent } from "./hexclave-config-file";
|
|
2
2
|
|
|
3
3
|
//#region src/config-rendering.d.ts
|
|
4
4
|
/**
|
|
@@ -13,5 +13,5 @@ declare function detectConfigImportPackage(dependencies: string[]): string | und
|
|
|
13
13
|
*/
|
|
14
14
|
declare function detectImportPackageFromDir(dir: string): string | undefined;
|
|
15
15
|
//#endregion
|
|
16
|
-
export { detectConfigImportPackage, detectImportPackageFromDir, parseHexclaveConfigFileContent, renderConfigFileContent };
|
|
16
|
+
export { detectConfigImportPackage, detectImportPackageFromDir, hexclaveConfigFileExportsConfig, parseHexclaveConfigFileContent, renderConfigFileContent, tryParseHexclaveConfigFileContent };
|
|
17
17
|
//# sourceMappingURL=config-rendering.d.ts.map
|