@stackframe/stack-shared 2.8.46 → 2.8.48
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/CHANGELOG.md +12 -0
- package/dist/apps/apps-config.d.mts +8 -8
- package/dist/apps/apps-config.d.ts +8 -8
- package/dist/apps/apps-config.js +8 -8
- package/dist/apps/apps-config.js.map +1 -1
- package/dist/config/schema-fuzzer.test.js +0 -9
- package/dist/config/schema-fuzzer.test.js.map +1 -1
- package/dist/config/schema.d.mts +21 -91
- package/dist/config/schema.d.ts +21 -91
- package/dist/config/schema.js +1 -19
- package/dist/config/schema.js.map +1 -1
- package/dist/esm/apps/apps-config.js +8 -8
- package/dist/esm/apps/apps-config.js.map +1 -1
- package/dist/esm/config/schema-fuzzer.test.js +0 -9
- package/dist/esm/config/schema-fuzzer.test.js.map +1 -1
- package/dist/esm/config/schema.js +1 -19
- package/dist/esm/config/schema.js.map +1 -1
- package/dist/esm/interface/client-interface.js.map +1 -1
- package/dist/esm/known-errors.js +1 -21
- package/dist/esm/known-errors.js.map +1 -1
- package/dist/esm/schema-fields.js +17 -1
- package/dist/esm/schema-fields.js.map +1 -1
- package/dist/interface/client-interface.d.mts +1 -1
- package/dist/interface/client-interface.d.ts +1 -1
- package/dist/interface/client-interface.js.map +1 -1
- package/dist/interface/crud/products.d.mts +9 -0
- package/dist/interface/crud/products.d.ts +9 -0
- package/dist/known-errors.d.mts +0 -6
- package/dist/known-errors.d.ts +0 -6
- package/dist/known-errors.js +1 -21
- package/dist/known-errors.js.map +1 -1
- package/dist/schema-fields.d.mts +53 -1
- package/dist/schema-fields.d.ts +53 -1
- package/dist/schema-fields.js +21 -1
- package/dist/schema-fields.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -83,12 +83,6 @@ declare const ALL_APPS: {
|
|
|
83
83
|
readonly tags: ["security", "storage"];
|
|
84
84
|
readonly stage: "beta";
|
|
85
85
|
};
|
|
86
|
-
readonly workflows: {
|
|
87
|
-
readonly displayName: "Workflows";
|
|
88
|
-
readonly subtitle: "Automated business process orchestration";
|
|
89
|
-
readonly tags: ["automation"];
|
|
90
|
-
readonly stage: "beta";
|
|
91
|
-
};
|
|
92
86
|
readonly webhooks: {
|
|
93
87
|
readonly displayName: "Webhooks";
|
|
94
88
|
readonly subtitle: "Real-time event notifications and integrations";
|
|
@@ -114,17 +108,23 @@ declare const ALL_APPS: {
|
|
|
114
108
|
readonly stage: "alpha";
|
|
115
109
|
};
|
|
116
110
|
readonly neon: {
|
|
117
|
-
readonly displayName: "Neon";
|
|
111
|
+
readonly displayName: "Neon Integration";
|
|
118
112
|
readonly subtitle: "Serverless Postgres database integration";
|
|
119
113
|
readonly tags: ["integration", "storage"];
|
|
120
114
|
readonly stage: "alpha";
|
|
121
115
|
};
|
|
122
116
|
readonly convex: {
|
|
123
|
-
readonly displayName: "Convex";
|
|
117
|
+
readonly displayName: "Convex Integration";
|
|
124
118
|
readonly subtitle: "Real-time backend platform integration";
|
|
125
119
|
readonly tags: ["integration", "storage"];
|
|
126
120
|
readonly stage: "alpha";
|
|
127
121
|
};
|
|
122
|
+
readonly vercel: {
|
|
123
|
+
readonly displayName: "Vercel Integration";
|
|
124
|
+
readonly subtitle: "Deploy your Stack Auth project to Vercel";
|
|
125
|
+
readonly tags: ["integration", "developers"];
|
|
126
|
+
readonly stage: "stable";
|
|
127
|
+
};
|
|
128
128
|
};
|
|
129
129
|
|
|
130
130
|
export { ALL_APPS, ALL_APP_TAGS, type AppId };
|
|
@@ -83,12 +83,6 @@ declare const ALL_APPS: {
|
|
|
83
83
|
readonly tags: ["security", "storage"];
|
|
84
84
|
readonly stage: "beta";
|
|
85
85
|
};
|
|
86
|
-
readonly workflows: {
|
|
87
|
-
readonly displayName: "Workflows";
|
|
88
|
-
readonly subtitle: "Automated business process orchestration";
|
|
89
|
-
readonly tags: ["automation"];
|
|
90
|
-
readonly stage: "beta";
|
|
91
|
-
};
|
|
92
86
|
readonly webhooks: {
|
|
93
87
|
readonly displayName: "Webhooks";
|
|
94
88
|
readonly subtitle: "Real-time event notifications and integrations";
|
|
@@ -114,17 +108,23 @@ declare const ALL_APPS: {
|
|
|
114
108
|
readonly stage: "alpha";
|
|
115
109
|
};
|
|
116
110
|
readonly neon: {
|
|
117
|
-
readonly displayName: "Neon";
|
|
111
|
+
readonly displayName: "Neon Integration";
|
|
118
112
|
readonly subtitle: "Serverless Postgres database integration";
|
|
119
113
|
readonly tags: ["integration", "storage"];
|
|
120
114
|
readonly stage: "alpha";
|
|
121
115
|
};
|
|
122
116
|
readonly convex: {
|
|
123
|
-
readonly displayName: "Convex";
|
|
117
|
+
readonly displayName: "Convex Integration";
|
|
124
118
|
readonly subtitle: "Real-time backend platform integration";
|
|
125
119
|
readonly tags: ["integration", "storage"];
|
|
126
120
|
readonly stage: "alpha";
|
|
127
121
|
};
|
|
122
|
+
readonly vercel: {
|
|
123
|
+
readonly displayName: "Vercel Integration";
|
|
124
|
+
readonly subtitle: "Deploy your Stack Auth project to Vercel";
|
|
125
|
+
readonly tags: ["integration", "developers"];
|
|
126
|
+
readonly stage: "stable";
|
|
127
|
+
};
|
|
128
128
|
};
|
|
129
129
|
|
|
130
130
|
export { ALL_APPS, ALL_APP_TAGS, type AppId };
|
package/dist/apps/apps-config.js
CHANGED
|
@@ -108,12 +108,6 @@ var ALL_APPS = {
|
|
|
108
108
|
tags: ["security", "storage"],
|
|
109
109
|
stage: "beta"
|
|
110
110
|
},
|
|
111
|
-
"workflows": {
|
|
112
|
-
displayName: "Workflows",
|
|
113
|
-
subtitle: "Automated business process orchestration",
|
|
114
|
-
tags: ["automation"],
|
|
115
|
-
stage: "beta"
|
|
116
|
-
},
|
|
117
111
|
"webhooks": {
|
|
118
112
|
displayName: "Webhooks",
|
|
119
113
|
subtitle: "Real-time event notifications and integrations",
|
|
@@ -139,16 +133,22 @@ var ALL_APPS = {
|
|
|
139
133
|
stage: "alpha"
|
|
140
134
|
},
|
|
141
135
|
"neon": {
|
|
142
|
-
displayName: "Neon",
|
|
136
|
+
displayName: "Neon Integration",
|
|
143
137
|
subtitle: "Serverless Postgres database integration",
|
|
144
138
|
tags: ["integration", "storage"],
|
|
145
139
|
stage: "alpha"
|
|
146
140
|
},
|
|
147
141
|
"convex": {
|
|
148
|
-
displayName: "Convex",
|
|
142
|
+
displayName: "Convex Integration",
|
|
149
143
|
subtitle: "Real-time backend platform integration",
|
|
150
144
|
tags: ["integration", "storage"],
|
|
151
145
|
stage: "alpha"
|
|
146
|
+
},
|
|
147
|
+
"vercel": {
|
|
148
|
+
displayName: "Vercel Integration",
|
|
149
|
+
subtitle: "Deploy your Stack Auth project to Vercel",
|
|
150
|
+
tags: ["integration", "developers"],
|
|
151
|
+
stage: "stable"
|
|
152
152
|
}
|
|
153
153
|
};
|
|
154
154
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"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 \"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: \"stable\",\n },\n \"emails\": {\n displayName: \"Emails\",\n subtitle: \"Email template configuration and management\",\n tags: [\"comms\"],\n stage: \"stable\",\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 \"
|
|
1
|
+
{"version":3,"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 \"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: \"stable\",\n },\n \"emails\": {\n displayName: \"Emails\",\n subtitle: \"Email template configuration and management\",\n tags: [\"comms\"],\n stage: \"stable\",\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 Stack Auth project to Vercel\",\n tags: [\"integration\", \"developers\"],\n stage: \"stable\",\n },\n} as const satisfies Record<string, App>;\n"],"mappings":"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","names":[]}
|
|
@@ -113,15 +113,6 @@ var branchSchemaFuzzerConfig = [{
|
|
|
113
113
|
}]
|
|
114
114
|
}]
|
|
115
115
|
}],
|
|
116
|
-
workflows: [{
|
|
117
|
-
availableWorkflows: [{
|
|
118
|
-
"some-workflow-id": [{
|
|
119
|
-
displayName: ["Some Workflow", "Some Other Workflow"],
|
|
120
|
-
tsSource: ["", "some typescript source code"],
|
|
121
|
-
enabled: [true, false]
|
|
122
|
-
}]
|
|
123
|
-
}]
|
|
124
|
-
}],
|
|
125
116
|
teams: [{
|
|
126
117
|
createPersonalTeamOnSignUp: [true, false],
|
|
127
118
|
allowClientTeamCreation: [true, false]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/schema-fuzzer.test.ts"],"sourcesContent":["import { ALL_APPS } from \"../apps/apps-config\";\nimport { SUPPORTED_CURRENCIES } from \"../utils/currency-constants\";\nimport { StackAssertionError } from \"../utils/errors\";\nimport { getOrUndefined, isObjectLike, set, typedEntries, typedFromEntries } from \"../utils/objects\";\nimport { nicify } from \"../utils/strings\";\nimport { normalize, override } from \"./format\";\nimport { BranchConfigNormalizedOverride, EnvironmentConfigNormalizedOverride, OrganizationConfigNormalizedOverride, ProjectConfigNormalizedOverride, applyBranchDefaults, applyEnvironmentDefaults, applyOrganizationDefaults, applyProjectDefaults, assertNoConfigOverrideErrors, branchConfigSchema, environmentConfigSchema, migrateConfigOverride, organizationConfigSchema, projectConfigSchema, sanitizeBranchConfig, sanitizeEnvironmentConfig, sanitizeOrganizationConfig, sanitizeProjectConfig } from \"./schema\";\n\ntype FuzzerConfig<T> = ReadonlyArray<T extends object ? ([T] extends [any[]] ? { readonly [K in keyof T]: FuzzerConfig<T[K]> } : Required<{\n [K in keyof T]: FuzzerConfig<T[K]>;\n}> & Record<string, FuzzerConfig<any>>) : T>;\n\nconst projectSchemaFuzzerConfig = [{\n sourceOfTruth: [{\n type: [\"hosted\", \"neon\", \"postgres\"],\n connectionString: [\"\", \"postgres://user:password@host:port/database\", \"THIS IS A STRING LOLOL\"],\n connectionStrings: [{\n \"123-some-branch-id\": [\"\", \"THIS IS A CONNECTION STRING OR SO\"],\n }],\n }],\n}] satisfies FuzzerConfig<ProjectConfigNormalizedOverride>;\n\nconst branchSchemaFuzzerConfig = [{\n apiKeys: [{\n enabled: [{\n team: [true, false],\n user: [true, false],\n }],\n }],\n auth: [{\n allowSignUp: [true, false],\n password: [{\n allowSignIn: [true, false],\n }],\n otp: [{\n allowSignIn: [true, false],\n }],\n passkey: [{\n allowSignIn: [true, false],\n }],\n oauth: [{\n accountMergeStrategy: [\"link_method\", \"raise_error\", \"allow_duplicates\"],\n providers: [{\n \"google\": [{\n type: [\"google\", \"github\", \"x\"] as const,\n allowSignIn: [true, false],\n allowConnectedAccounts: [true, false],\n }],\n }],\n }],\n }],\n dataVault: [{\n stores: [{\n \"some-store-id\": [{\n displayName: [\"Some Store\", \"Some Other Store\"],\n }],\n \"some-other-store-id\": [{\n displayName: [\"Some Store\", \"Some Other Store\"],\n }],\n }],\n }],\n payments: [{\n testMode: [false, true],\n autoPay: [{\n interval: [[[0, 1, -3, 100, 0.333, Infinity], [\"day\", \"week\", \"month\", \"year\"]]] as const,\n }],\n catalogs: [{\n \"some-catalog-id\": [{\n displayName: [\"Some Catalog\", \"Some Other Catalog\"],\n }],\n }],\n groups: [{\n \"some-catalog-id\": [{\n displayName: [\"Some Catalog\", \"Some Other Catalog\"],\n }],\n }],\n items: [{\n \"some-item-id\": [{\n customerType: [\"user\", \"team\", \"custom\"] as const,\n displayName: [\"Some Item\", \"Some Other Item\"],\n }],\n }],\n products: [{\n \"some-product-id\": [{\n displayName: [\"Some Product\", \"Some Other Product\"],\n customerType: [\"user\", \"team\", \"custom\"] as const,\n freeTrial: [[[0, 1, -3, 100, 0.333, Infinity], [\"day\", \"week\", \"month\", \"year\"]]] as const,\n serverOnly: [true, false],\n stackable: [true, false],\n catalogId: [\"some-catalog-id\", \"some-other-catalog-id\"],\n groupId: [\"some-catalog-id\", \"some-other-catalog-id\"], // ensure migration works\n isAddOnTo: [false, { \"some-product-id\": [true], \"some-other-product-id\": [true] }] as const,\n prices: [\"include-by-default\" as \"include-by-default\", {\n \"some-price-id\": [{\n ...typedFromEntries(SUPPORTED_CURRENCIES.map(currency => [currency.code, [\"100_00\", \"not a number\", \"Infinity\", \"0\"]])),\n interval: [[[0, 1, -3, 100, 0.333, Infinity], [\"day\", \"week\", \"month\", \"year\"]]] as const,\n serverOnly: [true, false],\n freeTrial: [[[0, 1, -3, 100, 0.333, Infinity], [\"day\", \"week\", \"month\", \"year\"]]] as const,\n }],\n }],\n includedItems: [{\n \"some-item-id\": [{\n quantity: [0, 1, -3, 100, 0.333, Infinity],\n repeat: [\"never\", [[0, 1, -3, 100, 0.333, Infinity], [\"day\", \"week\", \"month\", \"year\"]]] as const,\n expires: [\"never\", \"when-purchase-expires\", \"when-repeated\"] as const,\n }],\n }],\n }],\n }],\n }],\n emails: [{\n themes: [{\n \"12345678-1234-4234-9234-123456789012\": [{\n displayName: [\"Some Theme\", \"Some Other Theme\"],\n tsxSource: [\"\", \"some typescript source code\"],\n }],\n }],\n selectedThemeId: [\"some-theme-id\", \"some-other-theme-id\"],\n templates: [{\n \"12345678-1234-4234-9234-123456789012\": [{\n themeId: [\"some-theme-id\", \"some-other-theme-id\"],\n displayName: [\"Some Template\", \"Some Other Template\"],\n tsxSource: [\"\", \"some typescript source code\"],\n }],\n }],\n }],\n workflows: [{\n availableWorkflows: [{\n \"some-workflow-id\": [{\n displayName: [\"Some Workflow\", \"Some Other Workflow\"],\n tsSource: [\"\", \"some typescript source code\"],\n enabled: [true, false],\n }],\n }],\n }],\n teams: [{\n createPersonalTeamOnSignUp: [true, false],\n allowClientTeamCreation: [true, false],\n }],\n users: [{\n allowClientUserDeletion: [true, false],\n }],\n rbac: [{\n permissions: [{\n \"some_permission_id\": [{\n containedPermissionIds: [{\n \"some_permission_id\": [true],\n \"$some_other_permission_id\": [true],\n }] as const,\n description: [\"Some Permission\", \"Some Other Permission\"],\n scope: [\"team\", \"project\"] as const,\n }],\n }],\n defaultPermissions: [{\n teamCreator: [{\n \"some_permission_id\": [true],\n \"$some_other_permission_id\": [true],\n }] as const,\n teamMember: [{\n \"some_permission_id\": [true],\n \"$some_other_permission_id\": [true],\n }] as const,\n signUp: [{\n \"some_permission_id\": [true],\n \"$some_other_permission_id\": [true],\n }] as const,\n }],\n }],\n domains: [{\n allowLocalhost: [true, false],\n }],\n apps: [{\n installed: [typedFromEntries(typedEntries(ALL_APPS).map(([key, value]) => [key, [{\n enabled: [true, false],\n }]]))],\n }],\n}] satisfies FuzzerConfig<BranchConfigNormalizedOverride>;\n\nconst environmentSchemaFuzzerConfig = [{\n ...branchSchemaFuzzerConfig[0],\n auth: [{\n ...branchSchemaFuzzerConfig[0].auth[0],\n oauth: [{\n ...branchSchemaFuzzerConfig[0].auth[0].oauth[0],\n providers: [typedFromEntries(typedEntries(branchSchemaFuzzerConfig[0].auth[0].oauth[0].providers[0]).map(([key, value]) => [key, [{\n ...value[0],\n isShared: [true, false],\n clientId: [\"some-client-id\"],\n clientSecret: [\"some-client-secret\"],\n facebookConfigId: [\"some-facebook-config-id\"],\n microsoftTenantId: [\"some-microsoft-tenant-id\"],\n }]]))] as const,\n }],\n }],\n domains: [{\n ...branchSchemaFuzzerConfig[0].domains[0],\n trustedDomains: [{\n \"some-domain-id\": [{\n baseUrl: [\"https://example.com/something-here\"],\n handlerPath: [\"/something-here\"],\n }],\n }],\n }],\n emails: [{\n ...branchSchemaFuzzerConfig[0].emails[0],\n server: [{\n isShared: [true, false],\n provider: [\"resend\", \"smtp\"] as const,\n host: [\"example.com\", \"://super weird host that's not valid\"],\n port: [1234, 0.12543, -100, Infinity],\n username: [\"some-username\", \"some username with a space\"],\n password: [\"some-password\", \"some password with a space\"],\n senderName: [\"Some Sender\"],\n senderEmail: [\"some-sender@example.com\", \"some invalid email\"],\n }],\n }],\n}] satisfies FuzzerConfig<EnvironmentConfigNormalizedOverride>;\n\nconst organizationSchemaFuzzerConfig = environmentSchemaFuzzerConfig satisfies FuzzerConfig<OrganizationConfigNormalizedOverride>;\n\nfunction setDeep<T>(obj: T, path: string[], value: any) {\n if (!isObjectLike(obj)) return obj;\n\n if (path.length === 0) {\n throw new Error(\"Path is empty\");\n } else if (path.length === 1) {\n set(obj as any, path[0], value);\n } else {\n const [key, ...rest] = path;\n setDeep(getOrUndefined(obj as any, key), rest, value);\n }\n}\n\nfunction createFuzzerInput<T>(config: FuzzerConfig<T>, progress: number): T {\n progress = Math.min(1, 2 * progress);\n const createShouldRandom = (strength: number) => {\n const chance = Math.random() * strength * 1.2 - 0.1;\n return () => Math.random() < chance;\n };\n const createShouldObjectDependent = (strength: number) => {\n const objectChance = Math.random() * strength * 1.2 - 0.1;\n const primitiveChance = Math.random() * strength * 1.2 - 0.1;\n return (v: any) => Math.random() * Math.random() < (isObjectLike(v) ? objectChance : primitiveChance);\n };\n\n const shouldKeep = createShouldObjectDependent(progress * 1);\n const shouldMakeNested = createShouldObjectDependent(1.25);\n const shouldNull = createShouldRandom(0.25);\n\n let res: any;\n const recurse = <U>(outputPath: string[], config: FuzzerConfig<U>, forceNested: boolean, forceNonNull: boolean) => {\n let subConfig: any = config[Math.floor(Math.random() * config.length)];\n const originalValue = isObjectLike(subConfig) ? (Array.isArray(subConfig) ? [] : {}) : subConfig;\n\n const newValue = forceNonNull || !shouldNull() ? originalValue : null;\n const newOutputPath = forceNested || shouldMakeNested(originalValue) || outputPath.length === 0 ? outputPath : [outputPath.join(\".\")];\n if (outputPath.length === 0) {\n res = newValue;\n } else {\n if (forceNested || shouldKeep(originalValue)) {\n setDeep(res, newOutputPath, newValue);\n }\n }\n if (isObjectLike(subConfig)) {\n for (const [key, newValue] of typedEntries(subConfig)) {\n recurse([...newOutputPath, key], newValue, Array.isArray(subConfig), Array.isArray(subConfig));\n }\n }\n };\n recurse<T>([], config, false, true);\n return res;\n}\n\nundefined?.test(\"fuzz schemas\", async ({ expect }) => {\n const totalIterations = process.env.CI ? 1000 : 200;\n for (let i = 0; i < totalIterations; i++) {\n const projectInput = createFuzzerInput<ProjectConfigNormalizedOverride>(projectSchemaFuzzerConfig, i / totalIterations);\n const branchInput = createFuzzerInput<BranchConfigNormalizedOverride>(branchSchemaFuzzerConfig, i / totalIterations);\n const environmentInput = createFuzzerInput<EnvironmentConfigNormalizedOverride>(environmentSchemaFuzzerConfig, i / totalIterations);\n const organizationInput = createFuzzerInput<OrganizationConfigNormalizedOverride>(organizationSchemaFuzzerConfig, i / totalIterations);\n\n try {\n const projectMigrated = migrateConfigOverride(\"project\", projectInput);\n await assertNoConfigOverrideErrors(projectConfigSchema, projectMigrated);\n const projectOverridden = override({}, projectMigrated);\n await sanitizeProjectConfig(normalize(applyProjectDefaults(projectOverridden), { onDotIntoNonObject: \"ignore\" }) as any);\n\n const branchMigrated = migrateConfigOverride(\"branch\", branchInput);\n await assertNoConfigOverrideErrors(branchConfigSchema, branchMigrated);\n const branchOverridden = override(projectOverridden, branchMigrated);\n await sanitizeBranchConfig(normalize(applyBranchDefaults(branchOverridden), { onDotIntoNonObject: \"ignore\" }) as any);\n\n const environmentMigrated = migrateConfigOverride(\"environment\", environmentInput);\n await assertNoConfigOverrideErrors(environmentConfigSchema, environmentMigrated);\n const environmentOverridden = override(branchOverridden, environmentMigrated);\n await sanitizeEnvironmentConfig(normalize(applyEnvironmentDefaults(environmentOverridden), { onDotIntoNonObject: \"ignore\" }) as any);\n\n const organizationMigrated = migrateConfigOverride(\"organization\", organizationInput);\n await assertNoConfigOverrideErrors(organizationConfigSchema, organizationMigrated);\n const organizationOverridden = override(environmentOverridden, organizationMigrated);\n await sanitizeOrganizationConfig(normalize(applyOrganizationDefaults(organizationOverridden), { onDotIntoNonObject: \"ignore\" }) as any);\n\n } catch (e) {\n const data = {\n cause: e,\n inputs: {\n projectInput,\n branchInput,\n environmentInput,\n organizationInput,\n },\n } as const;\n console.error(\"Failed to fuzz schema in iteration ${i}/${totalIterations}!\", nicify(data));\n throw new StackAssertionError(`Error in iteration ${i}/${totalIterations} of schema fuzz: ${e}`, { cause: e });\n }\n }\n});\n\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/config/schema-fuzzer.test.ts"],"sourcesContent":["import { ALL_APPS } from \"../apps/apps-config\";\nimport { SUPPORTED_CURRENCIES } from \"../utils/currency-constants\";\nimport { StackAssertionError } from \"../utils/errors\";\nimport { getOrUndefined, isObjectLike, set, typedEntries, typedFromEntries } from \"../utils/objects\";\nimport { nicify } from \"../utils/strings\";\nimport { normalize, override } from \"./format\";\nimport { BranchConfigNormalizedOverride, EnvironmentConfigNormalizedOverride, OrganizationConfigNormalizedOverride, ProjectConfigNormalizedOverride, applyBranchDefaults, applyEnvironmentDefaults, applyOrganizationDefaults, applyProjectDefaults, assertNoConfigOverrideErrors, branchConfigSchema, environmentConfigSchema, migrateConfigOverride, organizationConfigSchema, projectConfigSchema, sanitizeBranchConfig, sanitizeEnvironmentConfig, sanitizeOrganizationConfig, sanitizeProjectConfig } from \"./schema\";\n\ntype FuzzerConfig<T> = ReadonlyArray<T extends object ? ([T] extends [any[]] ? { readonly [K in keyof T]: FuzzerConfig<T[K]> } : Required<{\n [K in keyof T]: FuzzerConfig<T[K]>;\n}> & Record<string, FuzzerConfig<any>>) : T>;\n\nconst projectSchemaFuzzerConfig = [{\n sourceOfTruth: [{\n type: [\"hosted\", \"neon\", \"postgres\"],\n connectionString: [\"\", \"postgres://user:password@host:port/database\", \"THIS IS A STRING LOLOL\"],\n connectionStrings: [{\n \"123-some-branch-id\": [\"\", \"THIS IS A CONNECTION STRING OR SO\"],\n }],\n }],\n}] satisfies FuzzerConfig<ProjectConfigNormalizedOverride>;\n\nconst branchSchemaFuzzerConfig = [{\n apiKeys: [{\n enabled: [{\n team: [true, false],\n user: [true, false],\n }],\n }],\n auth: [{\n allowSignUp: [true, false],\n password: [{\n allowSignIn: [true, false],\n }],\n otp: [{\n allowSignIn: [true, false],\n }],\n passkey: [{\n allowSignIn: [true, false],\n }],\n oauth: [{\n accountMergeStrategy: [\"link_method\", \"raise_error\", \"allow_duplicates\"],\n providers: [{\n \"google\": [{\n type: [\"google\", \"github\", \"x\"] as const,\n allowSignIn: [true, false],\n allowConnectedAccounts: [true, false],\n }],\n }],\n }],\n }],\n dataVault: [{\n stores: [{\n \"some-store-id\": [{\n displayName: [\"Some Store\", \"Some Other Store\"],\n }],\n \"some-other-store-id\": [{\n displayName: [\"Some Store\", \"Some Other Store\"],\n }],\n }],\n }],\n payments: [{\n testMode: [false, true],\n autoPay: [{\n interval: [[[0, 1, -3, 100, 0.333, Infinity], [\"day\", \"week\", \"month\", \"year\"]]] as const,\n }],\n catalogs: [{\n \"some-catalog-id\": [{\n displayName: [\"Some Catalog\", \"Some Other Catalog\"],\n }],\n }],\n groups: [{\n \"some-catalog-id\": [{\n displayName: [\"Some Catalog\", \"Some Other Catalog\"],\n }],\n }],\n items: [{\n \"some-item-id\": [{\n customerType: [\"user\", \"team\", \"custom\"] as const,\n displayName: [\"Some Item\", \"Some Other Item\"],\n }],\n }],\n products: [{\n \"some-product-id\": [{\n displayName: [\"Some Product\", \"Some Other Product\"],\n customerType: [\"user\", \"team\", \"custom\"] as const,\n freeTrial: [[[0, 1, -3, 100, 0.333, Infinity], [\"day\", \"week\", \"month\", \"year\"]]] as const,\n serverOnly: [true, false],\n stackable: [true, false],\n catalogId: [\"some-catalog-id\", \"some-other-catalog-id\"],\n groupId: [\"some-catalog-id\", \"some-other-catalog-id\"], // ensure migration works\n isAddOnTo: [false, { \"some-product-id\": [true], \"some-other-product-id\": [true] }] as const,\n prices: [\"include-by-default\" as \"include-by-default\", {\n \"some-price-id\": [{\n ...typedFromEntries(SUPPORTED_CURRENCIES.map(currency => [currency.code, [\"100_00\", \"not a number\", \"Infinity\", \"0\"]])),\n interval: [[[0, 1, -3, 100, 0.333, Infinity], [\"day\", \"week\", \"month\", \"year\"]]] as const,\n serverOnly: [true, false],\n freeTrial: [[[0, 1, -3, 100, 0.333, Infinity], [\"day\", \"week\", \"month\", \"year\"]]] as const,\n }],\n }],\n includedItems: [{\n \"some-item-id\": [{\n quantity: [0, 1, -3, 100, 0.333, Infinity],\n repeat: [\"never\", [[0, 1, -3, 100, 0.333, Infinity], [\"day\", \"week\", \"month\", \"year\"]]] as const,\n expires: [\"never\", \"when-purchase-expires\", \"when-repeated\"] as const,\n }],\n }],\n }],\n }],\n }],\n emails: [{\n themes: [{\n \"12345678-1234-4234-9234-123456789012\": [{\n displayName: [\"Some Theme\", \"Some Other Theme\"],\n tsxSource: [\"\", \"some typescript source code\"],\n }],\n }],\n selectedThemeId: [\"some-theme-id\", \"some-other-theme-id\"],\n templates: [{\n \"12345678-1234-4234-9234-123456789012\": [{\n themeId: [\"some-theme-id\", \"some-other-theme-id\"],\n displayName: [\"Some Template\", \"Some Other Template\"],\n tsxSource: [\"\", \"some typescript source code\"],\n }],\n }],\n }],\n teams: [{\n createPersonalTeamOnSignUp: [true, false],\n allowClientTeamCreation: [true, false],\n }],\n users: [{\n allowClientUserDeletion: [true, false],\n }],\n rbac: [{\n permissions: [{\n \"some_permission_id\": [{\n containedPermissionIds: [{\n \"some_permission_id\": [true],\n \"$some_other_permission_id\": [true],\n }] as const,\n description: [\"Some Permission\", \"Some Other Permission\"],\n scope: [\"team\", \"project\"] as const,\n }],\n }],\n defaultPermissions: [{\n teamCreator: [{\n \"some_permission_id\": [true],\n \"$some_other_permission_id\": [true],\n }] as const,\n teamMember: [{\n \"some_permission_id\": [true],\n \"$some_other_permission_id\": [true],\n }] as const,\n signUp: [{\n \"some_permission_id\": [true],\n \"$some_other_permission_id\": [true],\n }] as const,\n }],\n }],\n domains: [{\n allowLocalhost: [true, false],\n }],\n apps: [{\n installed: [typedFromEntries(typedEntries(ALL_APPS).map(([key, value]) => [key, [{\n enabled: [true, false],\n }]]))],\n }],\n}] satisfies FuzzerConfig<BranchConfigNormalizedOverride>;\n\nconst environmentSchemaFuzzerConfig = [{\n ...branchSchemaFuzzerConfig[0],\n auth: [{\n ...branchSchemaFuzzerConfig[0].auth[0],\n oauth: [{\n ...branchSchemaFuzzerConfig[0].auth[0].oauth[0],\n providers: [typedFromEntries(typedEntries(branchSchemaFuzzerConfig[0].auth[0].oauth[0].providers[0]).map(([key, value]) => [key, [{\n ...value[0],\n isShared: [true, false],\n clientId: [\"some-client-id\"],\n clientSecret: [\"some-client-secret\"],\n facebookConfigId: [\"some-facebook-config-id\"],\n microsoftTenantId: [\"some-microsoft-tenant-id\"],\n }]]))] as const,\n }],\n }],\n domains: [{\n ...branchSchemaFuzzerConfig[0].domains[0],\n trustedDomains: [{\n \"some-domain-id\": [{\n baseUrl: [\"https://example.com/something-here\"],\n handlerPath: [\"/something-here\"],\n }],\n }],\n }],\n emails: [{\n ...branchSchemaFuzzerConfig[0].emails[0],\n server: [{\n isShared: [true, false],\n provider: [\"resend\", \"smtp\"] as const,\n host: [\"example.com\", \"://super weird host that's not valid\"],\n port: [1234, 0.12543, -100, Infinity],\n username: [\"some-username\", \"some username with a space\"],\n password: [\"some-password\", \"some password with a space\"],\n senderName: [\"Some Sender\"],\n senderEmail: [\"some-sender@example.com\", \"some invalid email\"],\n }],\n }],\n}] satisfies FuzzerConfig<EnvironmentConfigNormalizedOverride>;\n\nconst organizationSchemaFuzzerConfig = environmentSchemaFuzzerConfig satisfies FuzzerConfig<OrganizationConfigNormalizedOverride>;\n\nfunction setDeep<T>(obj: T, path: string[], value: any) {\n if (!isObjectLike(obj)) return obj;\n\n if (path.length === 0) {\n throw new Error(\"Path is empty\");\n } else if (path.length === 1) {\n set(obj as any, path[0], value);\n } else {\n const [key, ...rest] = path;\n setDeep(getOrUndefined(obj as any, key), rest, value);\n }\n}\n\nfunction createFuzzerInput<T>(config: FuzzerConfig<T>, progress: number): T {\n progress = Math.min(1, 2 * progress);\n const createShouldRandom = (strength: number) => {\n const chance = Math.random() * strength * 1.2 - 0.1;\n return () => Math.random() < chance;\n };\n const createShouldObjectDependent = (strength: number) => {\n const objectChance = Math.random() * strength * 1.2 - 0.1;\n const primitiveChance = Math.random() * strength * 1.2 - 0.1;\n return (v: any) => Math.random() * Math.random() < (isObjectLike(v) ? objectChance : primitiveChance);\n };\n\n const shouldKeep = createShouldObjectDependent(progress * 1);\n const shouldMakeNested = createShouldObjectDependent(1.25);\n const shouldNull = createShouldRandom(0.25);\n\n let res: any;\n const recurse = <U>(outputPath: string[], config: FuzzerConfig<U>, forceNested: boolean, forceNonNull: boolean) => {\n let subConfig: any = config[Math.floor(Math.random() * config.length)];\n const originalValue = isObjectLike(subConfig) ? (Array.isArray(subConfig) ? [] : {}) : subConfig;\n\n const newValue = forceNonNull || !shouldNull() ? originalValue : null;\n const newOutputPath = forceNested || shouldMakeNested(originalValue) || outputPath.length === 0 ? outputPath : [outputPath.join(\".\")];\n if (outputPath.length === 0) {\n res = newValue;\n } else {\n if (forceNested || shouldKeep(originalValue)) {\n setDeep(res, newOutputPath, newValue);\n }\n }\n if (isObjectLike(subConfig)) {\n for (const [key, newValue] of typedEntries(subConfig)) {\n recurse([...newOutputPath, key], newValue, Array.isArray(subConfig), Array.isArray(subConfig));\n }\n }\n };\n recurse<T>([], config, false, true);\n return res;\n}\n\nundefined?.test(\"fuzz schemas\", async ({ expect }) => {\n const totalIterations = process.env.CI ? 1000 : 200;\n for (let i = 0; i < totalIterations; i++) {\n const projectInput = createFuzzerInput<ProjectConfigNormalizedOverride>(projectSchemaFuzzerConfig, i / totalIterations);\n const branchInput = createFuzzerInput<BranchConfigNormalizedOverride>(branchSchemaFuzzerConfig, i / totalIterations);\n const environmentInput = createFuzzerInput<EnvironmentConfigNormalizedOverride>(environmentSchemaFuzzerConfig, i / totalIterations);\n const organizationInput = createFuzzerInput<OrganizationConfigNormalizedOverride>(organizationSchemaFuzzerConfig, i / totalIterations);\n\n try {\n const projectMigrated = migrateConfigOverride(\"project\", projectInput);\n await assertNoConfigOverrideErrors(projectConfigSchema, projectMigrated);\n const projectOverridden = override({}, projectMigrated);\n await sanitizeProjectConfig(normalize(applyProjectDefaults(projectOverridden), { onDotIntoNonObject: \"ignore\" }) as any);\n\n const branchMigrated = migrateConfigOverride(\"branch\", branchInput);\n await assertNoConfigOverrideErrors(branchConfigSchema, branchMigrated);\n const branchOverridden = override(projectOverridden, branchMigrated);\n await sanitizeBranchConfig(normalize(applyBranchDefaults(branchOverridden), { onDotIntoNonObject: \"ignore\" }) as any);\n\n const environmentMigrated = migrateConfigOverride(\"environment\", environmentInput);\n await assertNoConfigOverrideErrors(environmentConfigSchema, environmentMigrated);\n const environmentOverridden = override(branchOverridden, environmentMigrated);\n await sanitizeEnvironmentConfig(normalize(applyEnvironmentDefaults(environmentOverridden), { onDotIntoNonObject: \"ignore\" }) as any);\n\n const organizationMigrated = migrateConfigOverride(\"organization\", organizationInput);\n await assertNoConfigOverrideErrors(organizationConfigSchema, organizationMigrated);\n const organizationOverridden = override(environmentOverridden, organizationMigrated);\n await sanitizeOrganizationConfig(normalize(applyOrganizationDefaults(organizationOverridden), { onDotIntoNonObject: \"ignore\" }) as any);\n\n } catch (e) {\n const data = {\n cause: e,\n inputs: {\n projectInput,\n branchInput,\n environmentInput,\n organizationInput,\n },\n } as const;\n console.error(\"Failed to fuzz schema in iteration ${i}/${totalIterations}!\", nicify(data));\n throw new StackAssertionError(`Error in iteration ${i}/${totalIterations} of schema fuzz: ${e}`, { cause: e });\n }\n }\n});\n"],"mappings":";;;AAAA,yBAAyB;AACzB,gCAAqC;AACrC,oBAAoC;AACpC,qBAAkF;AAClF,qBAAuB;AACvB,oBAAoC;AACpC,oBAAgf;AAgBhf,IAAM,2BAA2B,CAAC;AAAA,EAChC,SAAS,CAAC;AAAA,IACR,SAAS,CAAC;AAAA,MACR,MAAM,CAAC,MAAM,KAAK;AAAA,MAClB,MAAM,CAAC,MAAM,KAAK;AAAA,IACpB,CAAC;AAAA,EACH,CAAC;AAAA,EACD,MAAM,CAAC;AAAA,IACL,aAAa,CAAC,MAAM,KAAK;AAAA,IACzB,UAAU,CAAC;AAAA,MACT,aAAa,CAAC,MAAM,KAAK;AAAA,IAC3B,CAAC;AAAA,IACD,KAAK,CAAC;AAAA,MACJ,aAAa,CAAC,MAAM,KAAK;AAAA,IAC3B,CAAC;AAAA,IACD,SAAS,CAAC;AAAA,MACR,aAAa,CAAC,MAAM,KAAK;AAAA,IAC3B,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,sBAAsB,CAAC,eAAe,eAAe,kBAAkB;AAAA,MACvE,WAAW,CAAC;AAAA,QACV,UAAU,CAAC;AAAA,UACT,MAAM,CAAC,UAAU,UAAU,GAAG;AAAA,UAC9B,aAAa,CAAC,MAAM,KAAK;AAAA,UACzB,wBAAwB,CAAC,MAAM,KAAK;AAAA,QACtC,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AAAA,EACD,WAAW,CAAC;AAAA,IACV,QAAQ,CAAC;AAAA,MACP,iBAAiB,CAAC;AAAA,QAChB,aAAa,CAAC,cAAc,kBAAkB;AAAA,MAChD,CAAC;AAAA,MACD,uBAAuB,CAAC;AAAA,QACtB,aAAa,CAAC,cAAc,kBAAkB;AAAA,MAChD,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AAAA,EACD,UAAU,CAAC;AAAA,IACT,UAAU,CAAC,OAAO,IAAI;AAAA,IACtB,SAAS,CAAC;AAAA,MACR,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,OAAO,QAAQ,GAAG,CAAC,OAAO,QAAQ,SAAS,MAAM,CAAC,CAAC;AAAA,IACjF,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,mBAAmB,CAAC;AAAA,QAClB,aAAa,CAAC,gBAAgB,oBAAoB;AAAA,MACpD,CAAC;AAAA,IACH,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,mBAAmB,CAAC;AAAA,QAClB,aAAa,CAAC,gBAAgB,oBAAoB;AAAA,MACpD,CAAC;AAAA,IACH,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,MACN,gBAAgB,CAAC;AAAA,QACf,cAAc,CAAC,QAAQ,QAAQ,QAAQ;AAAA,QACvC,aAAa,CAAC,aAAa,iBAAiB;AAAA,MAC9C,CAAC;AAAA,IACH,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,MACT,mBAAmB,CAAC;AAAA,QAClB,aAAa,CAAC,gBAAgB,oBAAoB;AAAA,QAClD,cAAc,CAAC,QAAQ,QAAQ,QAAQ;AAAA,QACvC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,OAAO,QAAQ,GAAG,CAAC,OAAO,QAAQ,SAAS,MAAM,CAAC,CAAC;AAAA,QAChF,YAAY,CAAC,MAAM,KAAK;AAAA,QACxB,WAAW,CAAC,MAAM,KAAK;AAAA,QACvB,WAAW,CAAC,mBAAmB,uBAAuB;AAAA,QACtD,SAAS,CAAC,mBAAmB,uBAAuB;AAAA;AAAA,QACpD,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,IAAI,GAAG,yBAAyB,CAAC,IAAI,EAAE,CAAC;AAAA,QACjF,QAAQ,CAAC,sBAA8C;AAAA,UACrD,iBAAiB,CAAC;AAAA,YAChB,OAAG,iCAAiB,+CAAqB,IAAI,cAAY,CAAC,SAAS,MAAM,CAAC,UAAU,gBAAgB,YAAY,GAAG,CAAC,CAAC,CAAC;AAAA,YACtH,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,OAAO,QAAQ,GAAG,CAAC,OAAO,QAAQ,SAAS,MAAM,CAAC,CAAC;AAAA,YAC/E,YAAY,CAAC,MAAM,KAAK;AAAA,YACxB,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,OAAO,QAAQ,GAAG,CAAC,OAAO,QAAQ,SAAS,MAAM,CAAC,CAAC;AAAA,UAClF,CAAC;AAAA,QACH,CAAC;AAAA,QACD,eAAe,CAAC;AAAA,UACd,gBAAgB,CAAC;AAAA,YACf,UAAU,CAAC,GAAG,GAAG,IAAI,KAAK,OAAO,QAAQ;AAAA,YACzC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,OAAO,QAAQ,GAAG,CAAC,OAAO,QAAQ,SAAS,MAAM,CAAC,CAAC;AAAA,YACtF,SAAS,CAAC,SAAS,yBAAyB,eAAe;AAAA,UAC7D,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AAAA,EACD,QAAQ,CAAC;AAAA,IACP,QAAQ,CAAC;AAAA,MACP,wCAAwC,CAAC;AAAA,QACvC,aAAa,CAAC,cAAc,kBAAkB;AAAA,QAC9C,WAAW,CAAC,IAAI,6BAA6B;AAAA,MAC/C,CAAC;AAAA,IACH,CAAC;AAAA,IACD,iBAAiB,CAAC,iBAAiB,qBAAqB;AAAA,IACxD,WAAW,CAAC;AAAA,MACV,wCAAwC,CAAC;AAAA,QACvC,SAAS,CAAC,iBAAiB,qBAAqB;AAAA,QAChD,aAAa,CAAC,iBAAiB,qBAAqB;AAAA,QACpD,WAAW,CAAC,IAAI,6BAA6B;AAAA,MAC/C,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AAAA,EACD,OAAO,CAAC;AAAA,IACN,4BAA4B,CAAC,MAAM,KAAK;AAAA,IACxC,yBAAyB,CAAC,MAAM,KAAK;AAAA,EACvC,CAAC;AAAA,EACD,OAAO,CAAC;AAAA,IACN,yBAAyB,CAAC,MAAM,KAAK;AAAA,EACvC,CAAC;AAAA,EACD,MAAM,CAAC;AAAA,IACL,aAAa,CAAC;AAAA,MACZ,sBAAsB,CAAC;AAAA,QACrB,wBAAwB,CAAC;AAAA,UACvB,sBAAsB,CAAC,IAAI;AAAA,UAC3B,6BAA6B,CAAC,IAAI;AAAA,QACpC,CAAC;AAAA,QACD,aAAa,CAAC,mBAAmB,uBAAuB;AAAA,QACxD,OAAO,CAAC,QAAQ,SAAS;AAAA,MAC3B,CAAC;AAAA,IACH,CAAC;AAAA,IACD,oBAAoB,CAAC;AAAA,MACnB,aAAa,CAAC;AAAA,QACZ,sBAAsB,CAAC,IAAI;AAAA,QAC3B,6BAA6B,CAAC,IAAI;AAAA,MACpC,CAAC;AAAA,MACD,YAAY,CAAC;AAAA,QACX,sBAAsB,CAAC,IAAI;AAAA,QAC3B,6BAA6B,CAAC,IAAI;AAAA,MACpC,CAAC;AAAA,MACD,QAAQ,CAAC;AAAA,QACP,sBAAsB,CAAC,IAAI;AAAA,QAC3B,6BAA6B,CAAC,IAAI;AAAA,MACpC,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AAAA,EACD,SAAS,CAAC;AAAA,IACR,gBAAgB,CAAC,MAAM,KAAK;AAAA,EAC9B,CAAC;AAAA,EACD,MAAM,CAAC;AAAA,IACL,WAAW,KAAC,qCAAiB,6BAAa,2BAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC;AAAA,MAC/E,SAAS,CAAC,MAAM,KAAK;AAAA,IACvB,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,EACP,CAAC;AACH,CAAC;AAED,IAAM,gCAAgC,CAAC;AAAA,EACrC,GAAG,yBAAyB,CAAC;AAAA,EAC7B,MAAM,CAAC;AAAA,IACL,GAAG,yBAAyB,CAAC,EAAE,KAAK,CAAC;AAAA,IACrC,OAAO,CAAC;AAAA,MACN,GAAG,yBAAyB,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC;AAAA,MAC9C,WAAW,KAAC,qCAAiB,6BAAa,yBAAyB,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC;AAAA,QAChI,GAAG,MAAM,CAAC;AAAA,QACV,UAAU,CAAC,MAAM,KAAK;AAAA,QACtB,UAAU,CAAC,gBAAgB;AAAA,QAC3B,cAAc,CAAC,oBAAoB;AAAA,QACnC,kBAAkB,CAAC,yBAAyB;AAAA,QAC5C,mBAAmB,CAAC,0BAA0B;AAAA,MAChD,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,IACP,CAAC;AAAA,EACH,CAAC;AAAA,EACD,SAAS,CAAC;AAAA,IACR,GAAG,yBAAyB,CAAC,EAAE,QAAQ,CAAC;AAAA,IACxC,gBAAgB,CAAC;AAAA,MACf,kBAAkB,CAAC;AAAA,QACjB,SAAS,CAAC,oCAAoC;AAAA,QAC9C,aAAa,CAAC,iBAAiB;AAAA,MACjC,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AAAA,EACD,QAAQ,CAAC;AAAA,IACP,GAAG,yBAAyB,CAAC,EAAE,OAAO,CAAC;AAAA,IACvC,QAAQ,CAAC;AAAA,MACP,UAAU,CAAC,MAAM,KAAK;AAAA,MACtB,UAAU,CAAC,UAAU,MAAM;AAAA,MAC3B,MAAM,CAAC,eAAe,sCAAsC;AAAA,MAC5D,MAAM,CAAC,MAAM,SAAS,MAAM,QAAQ;AAAA,MACpC,UAAU,CAAC,iBAAiB,4BAA4B;AAAA,MACxD,UAAU,CAAC,iBAAiB,4BAA4B;AAAA,MACxD,YAAY,CAAC,aAAa;AAAA,MAC1B,aAAa,CAAC,2BAA2B,oBAAoB;AAAA,IAC/D,CAAC;AAAA,EACH,CAAC;AACH,CAAC;","names":[]}
|
package/dist/config/schema.d.mts
CHANGED
|
@@ -86,7 +86,7 @@ declare const branchConfigSchema: yup.Schema<Omit<Omit<{
|
|
|
86
86
|
type: "postgres";
|
|
87
87
|
connectionString: string;
|
|
88
88
|
};
|
|
89
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
89
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
90
90
|
domains: {
|
|
91
91
|
allowLocalhost?: boolean | undefined;
|
|
92
92
|
};
|
|
@@ -177,13 +177,6 @@ declare const branchConfigSchema: yup.Schema<Omit<Omit<{
|
|
|
177
177
|
tsxSource: string;
|
|
178
178
|
}>;
|
|
179
179
|
};
|
|
180
|
-
workflows: {
|
|
181
|
-
availableWorkflows: Record<string, {
|
|
182
|
-
displayName?: string | undefined;
|
|
183
|
-
enabled?: boolean | undefined;
|
|
184
|
-
tsSource?: string | undefined;
|
|
185
|
-
}>;
|
|
186
|
-
};
|
|
187
180
|
apiKeys: {
|
|
188
181
|
enabled: {
|
|
189
182
|
team?: boolean | undefined;
|
|
@@ -191,7 +184,7 @@ declare const branchConfigSchema: yup.Schema<Omit<Omit<{
|
|
|
191
184
|
};
|
|
192
185
|
};
|
|
193
186
|
apps: {
|
|
194
|
-
installed: Record<"teams" | "authentication" | "rbac" | "api-keys" | "payments" | "emails" | "email-api" | "data-vault" | "
|
|
187
|
+
installed: Record<"teams" | "authentication" | "rbac" | "api-keys" | "payments" | "emails" | "email-api" | "data-vault" | "webhooks" | "tv-mode" | "launch-checklist" | "catalyst" | "neon" | "convex" | "vercel", {
|
|
195
188
|
enabled?: boolean | undefined;
|
|
196
189
|
}>;
|
|
197
190
|
};
|
|
@@ -205,7 +198,7 @@ declare const branchConfigSchema: yup.Schema<Omit<Omit<{
|
|
|
205
198
|
};
|
|
206
199
|
}, yup.AnyObject, Omit<Omit<{
|
|
207
200
|
sourceOfTruth: undefined;
|
|
208
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
201
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
209
202
|
rbac: {
|
|
210
203
|
permissions: undefined;
|
|
211
204
|
defaultPermissions: {
|
|
@@ -266,9 +259,6 @@ declare const branchConfigSchema: yup.Schema<Omit<Omit<{
|
|
|
266
259
|
dataVault: {
|
|
267
260
|
stores: undefined;
|
|
268
261
|
};
|
|
269
|
-
workflows: {
|
|
270
|
-
availableWorkflows: undefined;
|
|
271
|
-
};
|
|
272
262
|
}, "">;
|
|
273
263
|
declare const environmentConfigSchema: yup.Schema<Omit<NonNullable<Omit<Omit<{
|
|
274
264
|
sourceOfTruth: {
|
|
@@ -280,7 +270,7 @@ declare const environmentConfigSchema: yup.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
280
270
|
type: "postgres";
|
|
281
271
|
connectionString: string;
|
|
282
272
|
};
|
|
283
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
273
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
284
274
|
domains: {
|
|
285
275
|
allowLocalhost?: boolean | undefined;
|
|
286
276
|
};
|
|
@@ -371,13 +361,6 @@ declare const environmentConfigSchema: yup.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
371
361
|
tsxSource: string;
|
|
372
362
|
}>;
|
|
373
363
|
};
|
|
374
|
-
workflows: {
|
|
375
|
-
availableWorkflows: Record<string, {
|
|
376
|
-
displayName?: string | undefined;
|
|
377
|
-
enabled?: boolean | undefined;
|
|
378
|
-
tsSource?: string | undefined;
|
|
379
|
-
}>;
|
|
380
|
-
};
|
|
381
364
|
apiKeys: {
|
|
382
365
|
enabled: {
|
|
383
366
|
team?: boolean | undefined;
|
|
@@ -385,7 +368,7 @@ declare const environmentConfigSchema: yup.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
385
368
|
};
|
|
386
369
|
};
|
|
387
370
|
apps: {
|
|
388
|
-
installed: Record<"teams" | "authentication" | "rbac" | "api-keys" | "payments" | "emails" | "email-api" | "data-vault" | "
|
|
371
|
+
installed: Record<"teams" | "authentication" | "rbac" | "api-keys" | "payments" | "emails" | "email-api" | "data-vault" | "webhooks" | "tv-mode" | "launch-checklist" | "catalyst" | "neon" | "convex" | "vercel", {
|
|
389
372
|
enabled?: boolean | undefined;
|
|
390
373
|
}>;
|
|
391
374
|
};
|
|
@@ -471,7 +454,7 @@ declare const environmentConfigSchema: yup.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
471
454
|
};
|
|
472
455
|
}, yup.AnyObject, Omit<NonNullable<Omit<Omit<{
|
|
473
456
|
sourceOfTruth: undefined;
|
|
474
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
457
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
475
458
|
rbac: {
|
|
476
459
|
permissions: undefined;
|
|
477
460
|
defaultPermissions: {
|
|
@@ -532,13 +515,10 @@ declare const environmentConfigSchema: yup.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
532
515
|
dataVault: {
|
|
533
516
|
stores: undefined;
|
|
534
517
|
};
|
|
535
|
-
workflows: {
|
|
536
|
-
availableWorkflows: undefined;
|
|
537
|
-
};
|
|
538
518
|
}>, "domains" | "auth" | "emails"> & {
|
|
539
519
|
auth: Omit<NonNullable<Omit<Omit<{
|
|
540
520
|
sourceOfTruth: undefined;
|
|
541
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
521
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
542
522
|
rbac: {
|
|
543
523
|
permissions: undefined;
|
|
544
524
|
defaultPermissions: {
|
|
@@ -599,13 +579,10 @@ declare const environmentConfigSchema: yup.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
599
579
|
dataVault: {
|
|
600
580
|
stores: undefined;
|
|
601
581
|
};
|
|
602
|
-
workflows: {
|
|
603
|
-
availableWorkflows: undefined;
|
|
604
|
-
};
|
|
605
582
|
}>, "oauth"> & {
|
|
606
583
|
oauth: Omit<NonNullable<Omit<Omit<{
|
|
607
584
|
sourceOfTruth: undefined;
|
|
608
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
585
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
609
586
|
rbac: {
|
|
610
587
|
permissions: undefined;
|
|
611
588
|
defaultPermissions: {
|
|
@@ -666,16 +643,13 @@ declare const environmentConfigSchema: yup.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
666
643
|
dataVault: {
|
|
667
644
|
stores: undefined;
|
|
668
645
|
};
|
|
669
|
-
workflows: {
|
|
670
|
-
availableWorkflows: undefined;
|
|
671
|
-
};
|
|
672
646
|
}>, "providers"> & {
|
|
673
647
|
providers: undefined;
|
|
674
648
|
};
|
|
675
649
|
};
|
|
676
650
|
emails: Omit<NonNullable<Omit<Omit<{
|
|
677
651
|
sourceOfTruth: undefined;
|
|
678
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
652
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
679
653
|
rbac: {
|
|
680
654
|
permissions: undefined;
|
|
681
655
|
defaultPermissions: {
|
|
@@ -736,9 +710,6 @@ declare const environmentConfigSchema: yup.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
736
710
|
dataVault: {
|
|
737
711
|
stores: undefined;
|
|
738
712
|
};
|
|
739
|
-
workflows: {
|
|
740
|
-
availableWorkflows: undefined;
|
|
741
|
-
};
|
|
742
713
|
}>, "server"> & {
|
|
743
714
|
server: {
|
|
744
715
|
isShared: undefined;
|
|
@@ -753,7 +724,7 @@ declare const environmentConfigSchema: yup.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
753
724
|
};
|
|
754
725
|
domains: Omit<NonNullable<Omit<Omit<{
|
|
755
726
|
sourceOfTruth: undefined;
|
|
756
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
727
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
757
728
|
rbac: {
|
|
758
729
|
permissions: undefined;
|
|
759
730
|
defaultPermissions: {
|
|
@@ -814,9 +785,6 @@ declare const environmentConfigSchema: yup.Schema<Omit<NonNullable<Omit<Omit<{
|
|
|
814
785
|
dataVault: {
|
|
815
786
|
stores: undefined;
|
|
816
787
|
};
|
|
817
|
-
workflows: {
|
|
818
|
-
availableWorkflows: undefined;
|
|
819
|
-
};
|
|
820
788
|
}>, "trustedDomains"> & {
|
|
821
789
|
trustedDomains: undefined;
|
|
822
790
|
};
|
|
@@ -831,7 +799,7 @@ declare const organizationConfigSchema: yup.Schema<Omit<NonNullable<Omit<NonNull
|
|
|
831
799
|
type: "postgres";
|
|
832
800
|
connectionString: string;
|
|
833
801
|
};
|
|
834
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
802
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
835
803
|
domains: {
|
|
836
804
|
allowLocalhost?: boolean | undefined;
|
|
837
805
|
};
|
|
@@ -922,13 +890,6 @@ declare const organizationConfigSchema: yup.Schema<Omit<NonNullable<Omit<NonNull
|
|
|
922
890
|
tsxSource: string;
|
|
923
891
|
}>;
|
|
924
892
|
};
|
|
925
|
-
workflows: {
|
|
926
|
-
availableWorkflows: Record<string, {
|
|
927
|
-
displayName?: string | undefined;
|
|
928
|
-
enabled?: boolean | undefined;
|
|
929
|
-
tsSource?: string | undefined;
|
|
930
|
-
}>;
|
|
931
|
-
};
|
|
932
893
|
apiKeys: {
|
|
933
894
|
enabled: {
|
|
934
895
|
team?: boolean | undefined;
|
|
@@ -936,7 +897,7 @@ declare const organizationConfigSchema: yup.Schema<Omit<NonNullable<Omit<NonNull
|
|
|
936
897
|
};
|
|
937
898
|
};
|
|
938
899
|
apps: {
|
|
939
|
-
installed: Record<"teams" | "authentication" | "rbac" | "api-keys" | "payments" | "emails" | "email-api" | "data-vault" | "
|
|
900
|
+
installed: Record<"teams" | "authentication" | "rbac" | "api-keys" | "payments" | "emails" | "email-api" | "data-vault" | "webhooks" | "tv-mode" | "launch-checklist" | "catalyst" | "neon" | "convex" | "vercel", {
|
|
940
901
|
enabled?: boolean | undefined;
|
|
941
902
|
}>;
|
|
942
903
|
};
|
|
@@ -1022,7 +983,7 @@ declare const organizationConfigSchema: yup.Schema<Omit<NonNullable<Omit<NonNull
|
|
|
1022
983
|
};
|
|
1023
984
|
}>, never> & {}, yup.AnyObject, Omit<NonNullable<Omit<NonNullable<Omit<Omit<{
|
|
1024
985
|
sourceOfTruth: undefined;
|
|
1025
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
986
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
1026
987
|
rbac: {
|
|
1027
988
|
permissions: undefined;
|
|
1028
989
|
defaultPermissions: {
|
|
@@ -1083,13 +1044,10 @@ declare const organizationConfigSchema: yup.Schema<Omit<NonNullable<Omit<NonNull
|
|
|
1083
1044
|
dataVault: {
|
|
1084
1045
|
stores: undefined;
|
|
1085
1046
|
};
|
|
1086
|
-
workflows: {
|
|
1087
|
-
availableWorkflows: undefined;
|
|
1088
|
-
};
|
|
1089
1047
|
}>, "domains" | "auth" | "emails"> & {
|
|
1090
1048
|
auth: Omit<NonNullable<Omit<Omit<{
|
|
1091
1049
|
sourceOfTruth: undefined;
|
|
1092
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
1050
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
1093
1051
|
rbac: {
|
|
1094
1052
|
permissions: undefined;
|
|
1095
1053
|
defaultPermissions: {
|
|
@@ -1150,13 +1108,10 @@ declare const organizationConfigSchema: yup.Schema<Omit<NonNullable<Omit<NonNull
|
|
|
1150
1108
|
dataVault: {
|
|
1151
1109
|
stores: undefined;
|
|
1152
1110
|
};
|
|
1153
|
-
workflows: {
|
|
1154
|
-
availableWorkflows: undefined;
|
|
1155
|
-
};
|
|
1156
1111
|
}>, "oauth"> & {
|
|
1157
1112
|
oauth: Omit<NonNullable<Omit<Omit<{
|
|
1158
1113
|
sourceOfTruth: undefined;
|
|
1159
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
1114
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
1160
1115
|
rbac: {
|
|
1161
1116
|
permissions: undefined;
|
|
1162
1117
|
defaultPermissions: {
|
|
@@ -1217,16 +1172,13 @@ declare const organizationConfigSchema: yup.Schema<Omit<NonNullable<Omit<NonNull
|
|
|
1217
1172
|
dataVault: {
|
|
1218
1173
|
stores: undefined;
|
|
1219
1174
|
};
|
|
1220
|
-
workflows: {
|
|
1221
|
-
availableWorkflows: undefined;
|
|
1222
|
-
};
|
|
1223
1175
|
}>, "providers"> & {
|
|
1224
1176
|
providers: undefined;
|
|
1225
1177
|
};
|
|
1226
1178
|
};
|
|
1227
1179
|
emails: Omit<NonNullable<Omit<Omit<{
|
|
1228
1180
|
sourceOfTruth: undefined;
|
|
1229
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
1181
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
1230
1182
|
rbac: {
|
|
1231
1183
|
permissions: undefined;
|
|
1232
1184
|
defaultPermissions: {
|
|
@@ -1287,9 +1239,6 @@ declare const organizationConfigSchema: yup.Schema<Omit<NonNullable<Omit<NonNull
|
|
|
1287
1239
|
dataVault: {
|
|
1288
1240
|
stores: undefined;
|
|
1289
1241
|
};
|
|
1290
|
-
workflows: {
|
|
1291
|
-
availableWorkflows: undefined;
|
|
1292
|
-
};
|
|
1293
1242
|
}>, "server"> & {
|
|
1294
1243
|
server: {
|
|
1295
1244
|
isShared: undefined;
|
|
@@ -1304,7 +1253,7 @@ declare const organizationConfigSchema: yup.Schema<Omit<NonNullable<Omit<NonNull
|
|
|
1304
1253
|
};
|
|
1305
1254
|
domains: Omit<NonNullable<Omit<Omit<{
|
|
1306
1255
|
sourceOfTruth: undefined;
|
|
1307
|
-
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "
|
|
1256
|
+
}, string>, "domains" | "teams" | "auth" | "rbac" | "payments" | "emails" | "apiKeys" | "apps" | "users" | "dataVault"> & {
|
|
1308
1257
|
rbac: {
|
|
1309
1258
|
permissions: undefined;
|
|
1310
1259
|
defaultPermissions: {
|
|
@@ -1365,9 +1314,6 @@ declare const organizationConfigSchema: yup.Schema<Omit<NonNullable<Omit<NonNull
|
|
|
1365
1314
|
dataVault: {
|
|
1366
1315
|
stores: undefined;
|
|
1367
1316
|
};
|
|
1368
|
-
workflows: {
|
|
1369
|
-
availableWorkflows: undefined;
|
|
1370
|
-
};
|
|
1371
1317
|
}>, "trustedDomains"> & {
|
|
1372
1318
|
trustedDomains: undefined;
|
|
1373
1319
|
};
|
|
@@ -1402,7 +1348,7 @@ declare const organizationConfigDefaults: {
|
|
|
1402
1348
|
};
|
|
1403
1349
|
};
|
|
1404
1350
|
readonly apps: {
|
|
1405
|
-
readonly installed: Record<"teams" | "authentication" | "rbac" | "api-keys" | "payments" | "emails" | "email-api" | "data-vault" | "
|
|
1351
|
+
readonly installed: Record<"teams" | "authentication" | "rbac" | "api-keys" | "payments" | "emails" | "email-api" | "data-vault" | "webhooks" | "tv-mode" | "launch-checklist" | "catalyst" | "neon" | "convex" | "vercel", {
|
|
1406
1352
|
enabled: false;
|
|
1407
1353
|
}>;
|
|
1408
1354
|
};
|
|
@@ -1544,13 +1490,6 @@ declare const organizationConfigDefaults: {
|
|
|
1544
1490
|
displayName: string;
|
|
1545
1491
|
};
|
|
1546
1492
|
};
|
|
1547
|
-
readonly workflows: {
|
|
1548
|
-
readonly availableWorkflows: (key: string) => {
|
|
1549
|
-
displayName: string;
|
|
1550
|
-
tsSource: string;
|
|
1551
|
-
enabled: false;
|
|
1552
|
-
};
|
|
1553
|
-
};
|
|
1554
1493
|
};
|
|
1555
1494
|
type ReplaceFunctionsWithObjects<T> = T & (T extends (arg: infer K extends string) => infer R ? Record<K, R> & object : unknown);
|
|
1556
1495
|
type DeepReplaceFunctionsWithObjects<T> = T extends object ? {
|
|
@@ -1779,15 +1718,6 @@ declare function sanitizeOrganizationConfig(config: OrganizationRenderedConfigBe
|
|
|
1779
1718
|
};
|
|
1780
1719
|
};
|
|
1781
1720
|
};
|
|
1782
|
-
workflows: {
|
|
1783
|
-
availableWorkflows: {
|
|
1784
|
-
[x: string]: {
|
|
1785
|
-
displayName: string;
|
|
1786
|
-
enabled: boolean;
|
|
1787
|
-
tsSource: string;
|
|
1788
|
-
};
|
|
1789
|
-
};
|
|
1790
|
-
};
|
|
1791
1721
|
apiKeys: {
|
|
1792
1722
|
enabled: {
|
|
1793
1723
|
team: boolean;
|
|
@@ -1820,9 +1750,6 @@ declare function sanitizeOrganizationConfig(config: OrganizationRenderedConfigBe
|
|
|
1820
1750
|
"data-vault": {
|
|
1821
1751
|
enabled: boolean;
|
|
1822
1752
|
};
|
|
1823
|
-
workflows: {
|
|
1824
|
-
enabled: boolean;
|
|
1825
|
-
};
|
|
1826
1753
|
webhooks: {
|
|
1827
1754
|
enabled: boolean;
|
|
1828
1755
|
};
|
|
@@ -1841,6 +1768,9 @@ declare function sanitizeOrganizationConfig(config: OrganizationRenderedConfigBe
|
|
|
1841
1768
|
convex: {
|
|
1842
1769
|
enabled: boolean;
|
|
1843
1770
|
};
|
|
1771
|
+
vercel: {
|
|
1772
|
+
enabled: boolean;
|
|
1773
|
+
};
|
|
1844
1774
|
};
|
|
1845
1775
|
};
|
|
1846
1776
|
users: {
|