@stackframe/stack-shared 2.8.12 → 2.8.17
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 +22 -0
- package/dist/config/format.js +2 -2
- package/dist/config/schema.d.mts +32 -32
- package/dist/config/schema.d.ts +32 -32
- package/dist/config/schema.js +4 -4
- package/dist/config/schema.js.map +1 -1
- package/dist/crud.js +2 -2
- package/dist/esm/config/format.js +2 -2
- package/dist/esm/config/schema.js +4 -4
- package/dist/esm/config/schema.js.map +1 -1
- package/dist/esm/crud.js +2 -2
- package/dist/esm/helpers/password.js +1 -1
- package/dist/esm/helpers/production-mode.js +2 -2
- package/dist/esm/hooks/use-async-callback.js +1 -1
- package/dist/esm/hooks/use-async-external-store.js +1 -1
- package/dist/esm/hooks/use-hash.js +1 -1
- package/dist/esm/hooks/use-strict-memo.js +1 -1
- package/dist/esm/index.js +4 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interface/{adminInterface.js → admin-interface.js} +19 -3
- package/dist/esm/interface/admin-interface.js.map +1 -0
- package/dist/esm/interface/{clientInterface.js → client-interface.js} +74 -856
- package/dist/esm/interface/client-interface.js.map +1 -0
- package/dist/esm/interface/crud/contact-channels.js +2 -2
- package/dist/esm/interface/crud/current-user.js +4 -4
- package/dist/esm/interface/crud/email-templates.js +3 -3
- package/dist/esm/interface/crud/email-templates.js.map +1 -1
- package/dist/esm/interface/crud/emails.js +3 -3
- package/dist/esm/interface/crud/internal-api-keys.js +2 -2
- package/dist/esm/interface/crud/notification-preferences.js +20 -0
- package/dist/esm/interface/crud/notification-preferences.js.map +1 -0
- package/dist/esm/interface/crud/oauth.js +2 -2
- package/dist/esm/interface/crud/project-api-keys.js +3 -3
- package/dist/esm/interface/crud/project-permissions.js +3 -3
- package/dist/esm/interface/crud/projects.js +3 -3
- package/dist/esm/interface/crud/sessions.js +3 -3
- package/dist/esm/interface/crud/svix-token.js +2 -2
- package/dist/esm/interface/crud/team-invitation-details.js +3 -3
- package/dist/esm/interface/crud/team-invitation.js +3 -3
- package/dist/esm/interface/crud/team-member-profiles.js +4 -4
- package/dist/esm/interface/crud/team-memberships.js +2 -2
- package/dist/esm/interface/crud/team-permissions.js +3 -3
- package/dist/esm/interface/crud/teams.js +3 -3
- package/dist/esm/interface/crud/users.js +3 -3
- package/dist/esm/interface/{serverInterface.js → server-interface.js} +34 -8
- package/dist/esm/interface/server-interface.js.map +1 -0
- package/dist/esm/interface/webhooks.js +4 -4
- package/dist/esm/known-errors.js +3 -3
- package/dist/esm/schema-fields.js +11 -11
- package/dist/esm/schema-fields.js.map +1 -1
- package/dist/esm/sessions.js +2 -2
- package/dist/esm/utils/api-keys.js +3 -3
- package/dist/esm/utils/arrays.js +1 -1
- package/dist/esm/utils/bytes.js +4 -27
- package/dist/esm/utils/bytes.js.map +1 -1
- package/dist/esm/utils/caches.js +4 -4
- package/dist/esm/utils/crypto.js +3 -3
- package/dist/esm/utils/dates.js +1 -1
- package/dist/esm/utils/env.js +2 -2
- package/dist/esm/utils/errors.js +3 -3
- package/dist/esm/utils/geo.js +1 -1
- package/dist/esm/utils/hashes.js +1 -1
- package/dist/esm/utils/html.js +1 -1
- package/dist/esm/utils/http.js +1 -1
- package/dist/esm/utils/json.js +1 -1
- package/dist/esm/utils/jwt.js +4 -4
- package/dist/esm/utils/maps.js +1 -1
- package/dist/esm/utils/node-http.js +1 -1
- package/dist/esm/utils/objects.js +3 -3
- package/dist/esm/utils/promises.js +5 -5
- package/dist/esm/utils/proxies.js +1 -1
- package/dist/esm/utils/react.js +3 -3
- package/dist/esm/utils/results.js +2 -2
- package/dist/esm/utils/stores.js +4 -4
- package/dist/esm/utils/strings.js +6 -3
- package/dist/esm/utils/strings.js.map +1 -1
- package/dist/esm/utils/strings.nicify.test.js +1 -1
- package/dist/esm/utils/unicode.js +1 -1
- package/dist/esm/utils/urls.js +2 -2
- package/dist/esm/utils/uuids.js +1 -1
- package/dist/helpers/password.js +1 -1
- package/dist/helpers/production-mode.js +2 -2
- package/dist/hooks/use-async-callback.js +1 -1
- package/dist/hooks/use-async-external-store.js +1 -1
- package/dist/hooks/use-hash.js +1 -1
- package/dist/hooks/use-strict-memo.js +1 -1
- package/dist/index.d.mts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/interface/{adminInterface.d.mts → admin-interface.d.mts} +4 -2
- package/dist/interface/{adminInterface.d.ts → admin-interface.d.ts} +4 -2
- package/dist/interface/{adminInterface.js → admin-interface.js} +23 -7
- package/dist/interface/admin-interface.js.map +1 -0
- package/dist/interface/{clientInterface.d.mts → client-interface.d.mts} +8 -0
- package/dist/interface/{clientInterface.d.ts → client-interface.d.ts} +8 -0
- package/dist/interface/{clientInterface.js → client-interface.js} +87 -861
- package/dist/interface/client-interface.js.map +1 -0
- package/dist/interface/crud/contact-channels.js +2 -2
- package/dist/interface/crud/current-user.js +4 -4
- package/dist/interface/crud/email-templates.d.mts +5 -5
- package/dist/interface/crud/email-templates.d.ts +5 -5
- package/dist/interface/crud/email-templates.js +3 -3
- package/dist/interface/crud/email-templates.js.map +1 -1
- package/dist/interface/crud/emails.js +3 -3
- package/dist/interface/crud/internal-api-keys.js +2 -2
- package/dist/interface/crud/notification-preferences.d.mts +25 -0
- package/dist/interface/crud/notification-preferences.d.ts +25 -0
- package/dist/interface/crud/notification-preferences.js +45 -0
- package/dist/interface/crud/notification-preferences.js.map +1 -0
- package/dist/interface/crud/oauth.js +2 -2
- package/dist/interface/crud/project-api-keys.js +3 -3
- package/dist/interface/crud/project-permissions.js +3 -3
- package/dist/interface/crud/projects.js +3 -3
- package/dist/interface/crud/sessions.js +3 -3
- package/dist/interface/crud/svix-token.js +2 -2
- package/dist/interface/crud/team-invitation-details.js +3 -3
- package/dist/interface/crud/team-invitation.js +3 -3
- package/dist/interface/crud/team-member-profiles.js +4 -4
- package/dist/interface/crud/team-memberships.js +2 -2
- package/dist/interface/crud/team-permissions.js +3 -3
- package/dist/interface/crud/teams.js +3 -3
- package/dist/interface/crud/users.js +3 -3
- package/dist/interface/{serverInterface.d.mts → server-interface.d.mts} +4 -1
- package/dist/interface/{serverInterface.d.ts → server-interface.d.ts} +4 -1
- package/dist/interface/{serverInterface.js → server-interface.js} +38 -12
- package/dist/interface/server-interface.js.map +1 -0
- package/dist/interface/webhooks.js +4 -4
- package/dist/known-errors.js +3 -3
- package/dist/schema-fields.js +11 -11
- package/dist/schema-fields.js.map +1 -1
- package/dist/sessions.js +2 -2
- package/dist/utils/api-keys.js +3 -3
- package/dist/utils/arrays.js +1 -1
- package/dist/utils/bytes.js +4 -27
- package/dist/utils/bytes.js.map +1 -1
- package/dist/utils/caches.js +4 -4
- package/dist/utils/crypto.js +3 -3
- package/dist/utils/dates.js +1 -1
- package/dist/utils/env.js +2 -2
- package/dist/utils/errors.js +3 -3
- package/dist/utils/geo.js +1 -1
- package/dist/utils/hashes.js +1 -1
- package/dist/utils/html.js +1 -1
- package/dist/utils/http.js +1 -1
- package/dist/utils/json.js +1 -1
- package/dist/utils/jwt.js +4 -4
- package/dist/utils/maps.js +1 -1
- package/dist/utils/node-http.js +1 -1
- package/dist/utils/objects.js +3 -3
- package/dist/utils/promises.js +5 -5
- package/dist/utils/proxies.js +1 -1
- package/dist/utils/react.js +3 -3
- package/dist/utils/results.js +2 -2
- package/dist/utils/stores.js +4 -4
- package/dist/utils/strings.js +6 -3
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/strings.nicify.test.js +1 -1
- package/dist/utils/unicode.js +1 -1
- package/dist/utils/urls.js +2 -2
- package/dist/utils/uuids.js +1 -1
- package/package.json +1 -1
- package/dist/esm/interface/adminInterface.js.map +0 -1
- package/dist/esm/interface/clientInterface.js.map +0 -1
- package/dist/esm/interface/serverInterface.js.map +0 -1
- package/dist/interface/adminInterface.js.map +0 -1
- package/dist/interface/clientInterface.js.map +0 -1
- package/dist/interface/serverInterface.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @stackframe/stack-shared
|
|
2
2
|
|
|
3
|
+
## 2.8.17
|
|
4
|
+
|
|
5
|
+
## 2.8.16
|
|
6
|
+
|
|
7
|
+
### Patch Changes
|
|
8
|
+
|
|
9
|
+
- Various changes
|
|
10
|
+
|
|
11
|
+
## 2.8.15
|
|
12
|
+
|
|
13
|
+
## 2.8.14
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Various changes
|
|
18
|
+
|
|
19
|
+
## 2.8.13
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Various changes
|
|
24
|
+
|
|
3
25
|
## 2.8.12
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/dist/config/format.js
CHANGED
|
@@ -28,8 +28,8 @@ __export(format_exports, {
|
|
|
28
28
|
override: () => override
|
|
29
29
|
});
|
|
30
30
|
module.exports = __toCommonJS(format_exports);
|
|
31
|
-
var import_errors = require("../utils/errors");
|
|
32
|
-
var import_objects = require("../utils/objects");
|
|
31
|
+
var import_errors = require("../utils/errors.js");
|
|
32
|
+
var import_objects = require("../utils/objects.js");
|
|
33
33
|
function isValidConfig(c) {
|
|
34
34
|
return getInvalidConfigReason(c) === void 0;
|
|
35
35
|
}
|
package/dist/config/schema.d.mts
CHANGED
|
@@ -13,7 +13,7 @@ declare const branchConfigSchema: yup.ObjectSchema<{} & {
|
|
|
13
13
|
rbac: {
|
|
14
14
|
permissions?: Record<string, {
|
|
15
15
|
description?: string | undefined;
|
|
16
|
-
scope?: "
|
|
16
|
+
scope?: "team" | "project" | undefined;
|
|
17
17
|
containedPermissionIds?: Record<string, true | undefined> | undefined;
|
|
18
18
|
} | undefined> | undefined;
|
|
19
19
|
defaultPermissions?: {
|
|
@@ -31,18 +31,18 @@ declare const branchConfigSchema: yup.ObjectSchema<{} & {
|
|
|
31
31
|
} | undefined;
|
|
32
32
|
apiKeys: {
|
|
33
33
|
enabled?: {
|
|
34
|
-
team?: boolean | undefined;
|
|
35
34
|
user?: boolean | undefined;
|
|
35
|
+
team?: boolean | undefined;
|
|
36
36
|
} | undefined;
|
|
37
37
|
} | undefined;
|
|
38
38
|
domains: {
|
|
39
39
|
allowLocalhost?: boolean | undefined;
|
|
40
40
|
} | undefined;
|
|
41
41
|
auth: {
|
|
42
|
-
allowSignUp?: boolean | undefined;
|
|
43
42
|
password?: {
|
|
44
43
|
allowSignIn?: boolean | undefined;
|
|
45
44
|
} | undefined;
|
|
45
|
+
allowSignUp?: boolean | undefined;
|
|
46
46
|
otp?: {
|
|
47
47
|
allowSignIn?: boolean | undefined;
|
|
48
48
|
} | undefined;
|
|
@@ -52,8 +52,8 @@ declare const branchConfigSchema: yup.ObjectSchema<{} & {
|
|
|
52
52
|
oauth?: {
|
|
53
53
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
54
54
|
providers?: Record<string, {
|
|
55
|
-
allowSignIn?: boolean | undefined;
|
|
56
55
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
56
|
+
allowSignIn?: boolean | undefined;
|
|
57
57
|
allowConnectedAccounts?: boolean | undefined;
|
|
58
58
|
}> | undefined;
|
|
59
59
|
} | undefined;
|
|
@@ -106,7 +106,7 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
106
106
|
rbac: {
|
|
107
107
|
permissions?: Record<string, {
|
|
108
108
|
description?: string | undefined;
|
|
109
|
-
scope?: "
|
|
109
|
+
scope?: "team" | "project" | undefined;
|
|
110
110
|
containedPermissionIds?: Record<string, true | undefined> | undefined;
|
|
111
111
|
} | undefined> | undefined;
|
|
112
112
|
defaultPermissions?: {
|
|
@@ -124,8 +124,8 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
124
124
|
} | undefined;
|
|
125
125
|
apiKeys: {
|
|
126
126
|
enabled?: {
|
|
127
|
-
team?: boolean | undefined;
|
|
128
127
|
user?: boolean | undefined;
|
|
128
|
+
team?: boolean | undefined;
|
|
129
129
|
} | undefined;
|
|
130
130
|
} | undefined;
|
|
131
131
|
domains: (Omit<{
|
|
@@ -137,10 +137,10 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
137
137
|
}> | undefined;
|
|
138
138
|
}) | undefined;
|
|
139
139
|
auth: (Omit<{
|
|
140
|
-
allowSignUp?: boolean | undefined;
|
|
141
140
|
password?: {
|
|
142
141
|
allowSignIn?: boolean | undefined;
|
|
143
142
|
} | undefined;
|
|
143
|
+
allowSignUp?: boolean | undefined;
|
|
144
144
|
otp?: {
|
|
145
145
|
allowSignIn?: boolean | undefined;
|
|
146
146
|
} | undefined;
|
|
@@ -150,8 +150,8 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
150
150
|
oauth?: {
|
|
151
151
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
152
152
|
providers?: Record<string, {
|
|
153
|
-
allowSignIn?: boolean | undefined;
|
|
154
153
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
154
|
+
allowSignIn?: boolean | undefined;
|
|
155
155
|
allowConnectedAccounts?: boolean | undefined;
|
|
156
156
|
}> | undefined;
|
|
157
157
|
} | undefined;
|
|
@@ -159,18 +159,18 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
159
159
|
oauth?: (Omit<{
|
|
160
160
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
161
161
|
providers?: Record<string, {
|
|
162
|
-
allowSignIn?: boolean | undefined;
|
|
163
162
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
163
|
+
allowSignIn?: boolean | undefined;
|
|
164
164
|
allowConnectedAccounts?: boolean | undefined;
|
|
165
165
|
}> | undefined;
|
|
166
166
|
}, never> & {
|
|
167
167
|
providers?: Record<string, {
|
|
168
|
-
allowSignIn?: boolean | undefined;
|
|
169
168
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
170
|
-
allowConnectedAccounts?: boolean | undefined;
|
|
171
|
-
isShared?: boolean | undefined;
|
|
172
169
|
clientId?: string | undefined;
|
|
173
170
|
clientSecret?: string | undefined;
|
|
171
|
+
allowSignIn?: boolean | undefined;
|
|
172
|
+
allowConnectedAccounts?: boolean | undefined;
|
|
173
|
+
isShared?: boolean | undefined;
|
|
174
174
|
facebookConfigId?: string | undefined;
|
|
175
175
|
microsoftTenantId?: string | undefined;
|
|
176
176
|
}> | undefined;
|
|
@@ -178,21 +178,21 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
178
178
|
}) | undefined;
|
|
179
179
|
emails: Omit<{}, never> & {
|
|
180
180
|
server: {
|
|
181
|
-
password?: string | undefined;
|
|
182
|
-
isShared?: boolean | undefined;
|
|
183
181
|
host?: string | undefined;
|
|
184
182
|
port?: number | undefined;
|
|
185
183
|
username?: string | undefined;
|
|
184
|
+
password?: string | undefined;
|
|
185
|
+
isShared?: boolean | undefined;
|
|
186
186
|
senderName?: string | undefined;
|
|
187
187
|
senderEmail?: string | undefined;
|
|
188
188
|
};
|
|
189
189
|
};
|
|
190
190
|
} & {
|
|
191
191
|
auth: (Omit<{
|
|
192
|
-
allowSignUp?: boolean | undefined;
|
|
193
192
|
password?: {
|
|
194
193
|
allowSignIn?: boolean | undefined;
|
|
195
194
|
} | undefined;
|
|
195
|
+
allowSignUp?: boolean | undefined;
|
|
196
196
|
otp?: {
|
|
197
197
|
allowSignIn?: boolean | undefined;
|
|
198
198
|
} | undefined;
|
|
@@ -202,8 +202,8 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
202
202
|
oauth?: {
|
|
203
203
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
204
204
|
providers?: Record<string, {
|
|
205
|
-
allowSignIn?: boolean | undefined;
|
|
206
205
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
206
|
+
allowSignIn?: boolean | undefined;
|
|
207
207
|
allowConnectedAccounts?: boolean | undefined;
|
|
208
208
|
}> | undefined;
|
|
209
209
|
} | undefined;
|
|
@@ -211,18 +211,18 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
211
211
|
oauth?: (Omit<{
|
|
212
212
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
213
213
|
providers?: Record<string, {
|
|
214
|
-
allowSignIn?: boolean | undefined;
|
|
215
214
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
215
|
+
allowSignIn?: boolean | undefined;
|
|
216
216
|
allowConnectedAccounts?: boolean | undefined;
|
|
217
217
|
}> | undefined;
|
|
218
218
|
}, never> & {
|
|
219
219
|
providers?: Record<string, {
|
|
220
|
-
allowSignIn?: boolean | undefined;
|
|
221
220
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
222
|
-
allowConnectedAccounts?: boolean | undefined;
|
|
223
|
-
isShared?: boolean | undefined;
|
|
224
221
|
clientId?: string | undefined;
|
|
225
222
|
clientSecret?: string | undefined;
|
|
223
|
+
allowSignIn?: boolean | undefined;
|
|
224
|
+
allowConnectedAccounts?: boolean | undefined;
|
|
225
|
+
isShared?: boolean | undefined;
|
|
226
226
|
facebookConfigId?: string | undefined;
|
|
227
227
|
microsoftTenantId?: string | undefined;
|
|
228
228
|
}> | undefined;
|
|
@@ -230,11 +230,11 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
230
230
|
}) | undefined;
|
|
231
231
|
emails: Omit<{}, never> & {
|
|
232
232
|
server: {
|
|
233
|
-
password?: string | undefined;
|
|
234
|
-
isShared?: boolean | undefined;
|
|
235
233
|
host?: string | undefined;
|
|
236
234
|
port?: number | undefined;
|
|
237
235
|
username?: string | undefined;
|
|
236
|
+
password?: string | undefined;
|
|
237
|
+
isShared?: boolean | undefined;
|
|
238
238
|
senderName?: string | undefined;
|
|
239
239
|
senderEmail?: string | undefined;
|
|
240
240
|
};
|
|
@@ -403,7 +403,7 @@ declare const organizationConfigSchema: yup.ObjectSchema<{
|
|
|
403
403
|
rbac: {
|
|
404
404
|
permissions?: Record<string, {
|
|
405
405
|
description?: string | undefined;
|
|
406
|
-
scope?: "
|
|
406
|
+
scope?: "team" | "project" | undefined;
|
|
407
407
|
containedPermissionIds?: Record<string, true | undefined> | undefined;
|
|
408
408
|
} | undefined> | undefined;
|
|
409
409
|
defaultPermissions?: {
|
|
@@ -421,8 +421,8 @@ declare const organizationConfigSchema: yup.ObjectSchema<{
|
|
|
421
421
|
} | undefined;
|
|
422
422
|
apiKeys: {
|
|
423
423
|
enabled?: {
|
|
424
|
-
team?: boolean | undefined;
|
|
425
424
|
user?: boolean | undefined;
|
|
425
|
+
team?: boolean | undefined;
|
|
426
426
|
} | undefined;
|
|
427
427
|
} | undefined;
|
|
428
428
|
domains: (Omit<{
|
|
@@ -434,10 +434,10 @@ declare const organizationConfigSchema: yup.ObjectSchema<{
|
|
|
434
434
|
}> | undefined;
|
|
435
435
|
}) | undefined;
|
|
436
436
|
auth: (Omit<{
|
|
437
|
-
allowSignUp?: boolean | undefined;
|
|
438
437
|
password?: {
|
|
439
438
|
allowSignIn?: boolean | undefined;
|
|
440
439
|
} | undefined;
|
|
440
|
+
allowSignUp?: boolean | undefined;
|
|
441
441
|
otp?: {
|
|
442
442
|
allowSignIn?: boolean | undefined;
|
|
443
443
|
} | undefined;
|
|
@@ -447,8 +447,8 @@ declare const organizationConfigSchema: yup.ObjectSchema<{
|
|
|
447
447
|
oauth?: {
|
|
448
448
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
449
449
|
providers?: Record<string, {
|
|
450
|
-
allowSignIn?: boolean | undefined;
|
|
451
450
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
451
|
+
allowSignIn?: boolean | undefined;
|
|
452
452
|
allowConnectedAccounts?: boolean | undefined;
|
|
453
453
|
}> | undefined;
|
|
454
454
|
} | undefined;
|
|
@@ -456,18 +456,18 @@ declare const organizationConfigSchema: yup.ObjectSchema<{
|
|
|
456
456
|
oauth?: (Omit<{
|
|
457
457
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
458
458
|
providers?: Record<string, {
|
|
459
|
-
allowSignIn?: boolean | undefined;
|
|
460
459
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
460
|
+
allowSignIn?: boolean | undefined;
|
|
461
461
|
allowConnectedAccounts?: boolean | undefined;
|
|
462
462
|
}> | undefined;
|
|
463
463
|
}, never> & {
|
|
464
464
|
providers?: Record<string, {
|
|
465
|
-
allowSignIn?: boolean | undefined;
|
|
466
465
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
467
|
-
allowConnectedAccounts?: boolean | undefined;
|
|
468
|
-
isShared?: boolean | undefined;
|
|
469
466
|
clientId?: string | undefined;
|
|
470
467
|
clientSecret?: string | undefined;
|
|
468
|
+
allowSignIn?: boolean | undefined;
|
|
469
|
+
allowConnectedAccounts?: boolean | undefined;
|
|
470
|
+
isShared?: boolean | undefined;
|
|
471
471
|
facebookConfigId?: string | undefined;
|
|
472
472
|
microsoftTenantId?: string | undefined;
|
|
473
473
|
}> | undefined;
|
|
@@ -475,11 +475,11 @@ declare const organizationConfigSchema: yup.ObjectSchema<{
|
|
|
475
475
|
}) | undefined;
|
|
476
476
|
emails: Omit<{}, never> & {
|
|
477
477
|
server: {
|
|
478
|
-
password?: string | undefined;
|
|
479
|
-
isShared?: boolean | undefined;
|
|
480
478
|
host?: string | undefined;
|
|
481
479
|
port?: number | undefined;
|
|
482
480
|
username?: string | undefined;
|
|
481
|
+
password?: string | undefined;
|
|
482
|
+
isShared?: boolean | undefined;
|
|
483
483
|
senderName?: string | undefined;
|
|
484
484
|
senderEmail?: string | undefined;
|
|
485
485
|
};
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ declare const branchConfigSchema: yup.ObjectSchema<{} & {
|
|
|
13
13
|
rbac: {
|
|
14
14
|
permissions?: Record<string, {
|
|
15
15
|
description?: string | undefined;
|
|
16
|
-
scope?: "
|
|
16
|
+
scope?: "team" | "project" | undefined;
|
|
17
17
|
containedPermissionIds?: Record<string, true | undefined> | undefined;
|
|
18
18
|
} | undefined> | undefined;
|
|
19
19
|
defaultPermissions?: {
|
|
@@ -31,18 +31,18 @@ declare const branchConfigSchema: yup.ObjectSchema<{} & {
|
|
|
31
31
|
} | undefined;
|
|
32
32
|
apiKeys: {
|
|
33
33
|
enabled?: {
|
|
34
|
-
team?: boolean | undefined;
|
|
35
34
|
user?: boolean | undefined;
|
|
35
|
+
team?: boolean | undefined;
|
|
36
36
|
} | undefined;
|
|
37
37
|
} | undefined;
|
|
38
38
|
domains: {
|
|
39
39
|
allowLocalhost?: boolean | undefined;
|
|
40
40
|
} | undefined;
|
|
41
41
|
auth: {
|
|
42
|
-
allowSignUp?: boolean | undefined;
|
|
43
42
|
password?: {
|
|
44
43
|
allowSignIn?: boolean | undefined;
|
|
45
44
|
} | undefined;
|
|
45
|
+
allowSignUp?: boolean | undefined;
|
|
46
46
|
otp?: {
|
|
47
47
|
allowSignIn?: boolean | undefined;
|
|
48
48
|
} | undefined;
|
|
@@ -52,8 +52,8 @@ declare const branchConfigSchema: yup.ObjectSchema<{} & {
|
|
|
52
52
|
oauth?: {
|
|
53
53
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
54
54
|
providers?: Record<string, {
|
|
55
|
-
allowSignIn?: boolean | undefined;
|
|
56
55
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
56
|
+
allowSignIn?: boolean | undefined;
|
|
57
57
|
allowConnectedAccounts?: boolean | undefined;
|
|
58
58
|
}> | undefined;
|
|
59
59
|
} | undefined;
|
|
@@ -106,7 +106,7 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
106
106
|
rbac: {
|
|
107
107
|
permissions?: Record<string, {
|
|
108
108
|
description?: string | undefined;
|
|
109
|
-
scope?: "
|
|
109
|
+
scope?: "team" | "project" | undefined;
|
|
110
110
|
containedPermissionIds?: Record<string, true | undefined> | undefined;
|
|
111
111
|
} | undefined> | undefined;
|
|
112
112
|
defaultPermissions?: {
|
|
@@ -124,8 +124,8 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
124
124
|
} | undefined;
|
|
125
125
|
apiKeys: {
|
|
126
126
|
enabled?: {
|
|
127
|
-
team?: boolean | undefined;
|
|
128
127
|
user?: boolean | undefined;
|
|
128
|
+
team?: boolean | undefined;
|
|
129
129
|
} | undefined;
|
|
130
130
|
} | undefined;
|
|
131
131
|
domains: (Omit<{
|
|
@@ -137,10 +137,10 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
137
137
|
}> | undefined;
|
|
138
138
|
}) | undefined;
|
|
139
139
|
auth: (Omit<{
|
|
140
|
-
allowSignUp?: boolean | undefined;
|
|
141
140
|
password?: {
|
|
142
141
|
allowSignIn?: boolean | undefined;
|
|
143
142
|
} | undefined;
|
|
143
|
+
allowSignUp?: boolean | undefined;
|
|
144
144
|
otp?: {
|
|
145
145
|
allowSignIn?: boolean | undefined;
|
|
146
146
|
} | undefined;
|
|
@@ -150,8 +150,8 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
150
150
|
oauth?: {
|
|
151
151
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
152
152
|
providers?: Record<string, {
|
|
153
|
-
allowSignIn?: boolean | undefined;
|
|
154
153
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
154
|
+
allowSignIn?: boolean | undefined;
|
|
155
155
|
allowConnectedAccounts?: boolean | undefined;
|
|
156
156
|
}> | undefined;
|
|
157
157
|
} | undefined;
|
|
@@ -159,18 +159,18 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
159
159
|
oauth?: (Omit<{
|
|
160
160
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
161
161
|
providers?: Record<string, {
|
|
162
|
-
allowSignIn?: boolean | undefined;
|
|
163
162
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
163
|
+
allowSignIn?: boolean | undefined;
|
|
164
164
|
allowConnectedAccounts?: boolean | undefined;
|
|
165
165
|
}> | undefined;
|
|
166
166
|
}, never> & {
|
|
167
167
|
providers?: Record<string, {
|
|
168
|
-
allowSignIn?: boolean | undefined;
|
|
169
168
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
170
|
-
allowConnectedAccounts?: boolean | undefined;
|
|
171
|
-
isShared?: boolean | undefined;
|
|
172
169
|
clientId?: string | undefined;
|
|
173
170
|
clientSecret?: string | undefined;
|
|
171
|
+
allowSignIn?: boolean | undefined;
|
|
172
|
+
allowConnectedAccounts?: boolean | undefined;
|
|
173
|
+
isShared?: boolean | undefined;
|
|
174
174
|
facebookConfigId?: string | undefined;
|
|
175
175
|
microsoftTenantId?: string | undefined;
|
|
176
176
|
}> | undefined;
|
|
@@ -178,21 +178,21 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
178
178
|
}) | undefined;
|
|
179
179
|
emails: Omit<{}, never> & {
|
|
180
180
|
server: {
|
|
181
|
-
password?: string | undefined;
|
|
182
|
-
isShared?: boolean | undefined;
|
|
183
181
|
host?: string | undefined;
|
|
184
182
|
port?: number | undefined;
|
|
185
183
|
username?: string | undefined;
|
|
184
|
+
password?: string | undefined;
|
|
185
|
+
isShared?: boolean | undefined;
|
|
186
186
|
senderName?: string | undefined;
|
|
187
187
|
senderEmail?: string | undefined;
|
|
188
188
|
};
|
|
189
189
|
};
|
|
190
190
|
} & {
|
|
191
191
|
auth: (Omit<{
|
|
192
|
-
allowSignUp?: boolean | undefined;
|
|
193
192
|
password?: {
|
|
194
193
|
allowSignIn?: boolean | undefined;
|
|
195
194
|
} | undefined;
|
|
195
|
+
allowSignUp?: boolean | undefined;
|
|
196
196
|
otp?: {
|
|
197
197
|
allowSignIn?: boolean | undefined;
|
|
198
198
|
} | undefined;
|
|
@@ -202,8 +202,8 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
202
202
|
oauth?: {
|
|
203
203
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
204
204
|
providers?: Record<string, {
|
|
205
|
-
allowSignIn?: boolean | undefined;
|
|
206
205
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
206
|
+
allowSignIn?: boolean | undefined;
|
|
207
207
|
allowConnectedAccounts?: boolean | undefined;
|
|
208
208
|
}> | undefined;
|
|
209
209
|
} | undefined;
|
|
@@ -211,18 +211,18 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
211
211
|
oauth?: (Omit<{
|
|
212
212
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
213
213
|
providers?: Record<string, {
|
|
214
|
-
allowSignIn?: boolean | undefined;
|
|
215
214
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
215
|
+
allowSignIn?: boolean | undefined;
|
|
216
216
|
allowConnectedAccounts?: boolean | undefined;
|
|
217
217
|
}> | undefined;
|
|
218
218
|
}, never> & {
|
|
219
219
|
providers?: Record<string, {
|
|
220
|
-
allowSignIn?: boolean | undefined;
|
|
221
220
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
222
|
-
allowConnectedAccounts?: boolean | undefined;
|
|
223
|
-
isShared?: boolean | undefined;
|
|
224
221
|
clientId?: string | undefined;
|
|
225
222
|
clientSecret?: string | undefined;
|
|
223
|
+
allowSignIn?: boolean | undefined;
|
|
224
|
+
allowConnectedAccounts?: boolean | undefined;
|
|
225
|
+
isShared?: boolean | undefined;
|
|
226
226
|
facebookConfigId?: string | undefined;
|
|
227
227
|
microsoftTenantId?: string | undefined;
|
|
228
228
|
}> | undefined;
|
|
@@ -230,11 +230,11 @@ declare const environmentConfigSchema: yup.ObjectSchema<{
|
|
|
230
230
|
}) | undefined;
|
|
231
231
|
emails: Omit<{}, never> & {
|
|
232
232
|
server: {
|
|
233
|
-
password?: string | undefined;
|
|
234
|
-
isShared?: boolean | undefined;
|
|
235
233
|
host?: string | undefined;
|
|
236
234
|
port?: number | undefined;
|
|
237
235
|
username?: string | undefined;
|
|
236
|
+
password?: string | undefined;
|
|
237
|
+
isShared?: boolean | undefined;
|
|
238
238
|
senderName?: string | undefined;
|
|
239
239
|
senderEmail?: string | undefined;
|
|
240
240
|
};
|
|
@@ -403,7 +403,7 @@ declare const organizationConfigSchema: yup.ObjectSchema<{
|
|
|
403
403
|
rbac: {
|
|
404
404
|
permissions?: Record<string, {
|
|
405
405
|
description?: string | undefined;
|
|
406
|
-
scope?: "
|
|
406
|
+
scope?: "team" | "project" | undefined;
|
|
407
407
|
containedPermissionIds?: Record<string, true | undefined> | undefined;
|
|
408
408
|
} | undefined> | undefined;
|
|
409
409
|
defaultPermissions?: {
|
|
@@ -421,8 +421,8 @@ declare const organizationConfigSchema: yup.ObjectSchema<{
|
|
|
421
421
|
} | undefined;
|
|
422
422
|
apiKeys: {
|
|
423
423
|
enabled?: {
|
|
424
|
-
team?: boolean | undefined;
|
|
425
424
|
user?: boolean | undefined;
|
|
425
|
+
team?: boolean | undefined;
|
|
426
426
|
} | undefined;
|
|
427
427
|
} | undefined;
|
|
428
428
|
domains: (Omit<{
|
|
@@ -434,10 +434,10 @@ declare const organizationConfigSchema: yup.ObjectSchema<{
|
|
|
434
434
|
}> | undefined;
|
|
435
435
|
}) | undefined;
|
|
436
436
|
auth: (Omit<{
|
|
437
|
-
allowSignUp?: boolean | undefined;
|
|
438
437
|
password?: {
|
|
439
438
|
allowSignIn?: boolean | undefined;
|
|
440
439
|
} | undefined;
|
|
440
|
+
allowSignUp?: boolean | undefined;
|
|
441
441
|
otp?: {
|
|
442
442
|
allowSignIn?: boolean | undefined;
|
|
443
443
|
} | undefined;
|
|
@@ -447,8 +447,8 @@ declare const organizationConfigSchema: yup.ObjectSchema<{
|
|
|
447
447
|
oauth?: {
|
|
448
448
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
449
449
|
providers?: Record<string, {
|
|
450
|
-
allowSignIn?: boolean | undefined;
|
|
451
450
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
451
|
+
allowSignIn?: boolean | undefined;
|
|
452
452
|
allowConnectedAccounts?: boolean | undefined;
|
|
453
453
|
}> | undefined;
|
|
454
454
|
} | undefined;
|
|
@@ -456,18 +456,18 @@ declare const organizationConfigSchema: yup.ObjectSchema<{
|
|
|
456
456
|
oauth?: (Omit<{
|
|
457
457
|
accountMergeStrategy?: "link_method" | "raise_error" | "allow_duplicates" | undefined;
|
|
458
458
|
providers?: Record<string, {
|
|
459
|
-
allowSignIn?: boolean | undefined;
|
|
460
459
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
460
|
+
allowSignIn?: boolean | undefined;
|
|
461
461
|
allowConnectedAccounts?: boolean | undefined;
|
|
462
462
|
}> | undefined;
|
|
463
463
|
}, never> & {
|
|
464
464
|
providers?: Record<string, {
|
|
465
|
-
allowSignIn?: boolean | undefined;
|
|
466
465
|
type?: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | undefined;
|
|
467
|
-
allowConnectedAccounts?: boolean | undefined;
|
|
468
|
-
isShared?: boolean | undefined;
|
|
469
466
|
clientId?: string | undefined;
|
|
470
467
|
clientSecret?: string | undefined;
|
|
468
|
+
allowSignIn?: boolean | undefined;
|
|
469
|
+
allowConnectedAccounts?: boolean | undefined;
|
|
470
|
+
isShared?: boolean | undefined;
|
|
471
471
|
facebookConfigId?: string | undefined;
|
|
472
472
|
microsoftTenantId?: string | undefined;
|
|
473
473
|
}> | undefined;
|
|
@@ -475,11 +475,11 @@ declare const organizationConfigSchema: yup.ObjectSchema<{
|
|
|
475
475
|
}) | undefined;
|
|
476
476
|
emails: Omit<{}, never> & {
|
|
477
477
|
server: {
|
|
478
|
-
password?: string | undefined;
|
|
479
|
-
isShared?: boolean | undefined;
|
|
480
478
|
host?: string | undefined;
|
|
481
479
|
port?: number | undefined;
|
|
482
480
|
username?: string | undefined;
|
|
481
|
+
password?: string | undefined;
|
|
482
|
+
isShared?: boolean | undefined;
|
|
483
483
|
senderName?: string | undefined;
|
|
484
484
|
senderEmail?: string | undefined;
|
|
485
485
|
};
|
package/dist/config/schema.js
CHANGED
|
@@ -42,10 +42,10 @@ __export(schema_exports, {
|
|
|
42
42
|
projectConfigSchema: () => projectConfigSchema
|
|
43
43
|
});
|
|
44
44
|
module.exports = __toCommonJS(schema_exports);
|
|
45
|
-
var schemaFields = __toESM(require("../schema-fields"));
|
|
46
|
-
var import_schema_fields = require("../schema-fields");
|
|
47
|
-
var import_oauth = require("../utils/oauth");
|
|
48
|
-
var import_objects = require("../utils/objects");
|
|
45
|
+
var schemaFields = __toESM(require("../schema-fields.js"));
|
|
46
|
+
var import_schema_fields = require("../schema-fields.js");
|
|
47
|
+
var import_oauth = require("../utils/oauth.js");
|
|
48
|
+
var import_objects = require("../utils/objects.js");
|
|
49
49
|
var configLevels = ["project", "branch", "environment", "organization"];
|
|
50
50
|
var permissionRegex = /^\$?[a-z0-9_:]+$/;
|
|
51
51
|
var customPermissionRegex = /^[a-z0-9_:]+$/;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/schema.ts"],"sourcesContent":["import * as yup from \"yup\";\nimport * as schemaFields from \"../schema-fields\";\nimport { yupBoolean, yupObject, yupRecord, yupString } from \"../schema-fields\";\nimport { allProviders } from \"../utils/oauth\";\nimport { DeepMerge, DeepPartial, get, has, isObjectLike, mapValues, set } from \"../utils/objects\";\nimport { PrettifyType } from \"../utils/types\";\nimport { Config, NormalizesTo } from \"./format\";\n\n// NOTE: The validation schemas in here are all schematic validators, not sanity-check validators.\n// For more info, see ./README.md\n\n\nexport const configLevels = ['project', 'branch', 'environment', 'organization'] as const;\nexport type ConfigLevel = typeof configLevels[number];\nconst permissionRegex = /^\\$?[a-z0-9_:]+$/;\nconst customPermissionRegex = /^[a-z0-9_:]+$/;\n\n/**\n * All fields that can be overridden at this level.\n */\nexport const projectConfigSchema = yupObject({});\n\n// --- NEW RBAC Schema ---\nconst branchRbacDefaultPermissions = yupRecord(\n yupString().optional().matches(permissionRegex),\n yupBoolean().isTrue().optional(),\n).optional();\n\nconst branchRbacSchema = yupObject({\n permissions: yupRecord(\n yupString().optional().matches(customPermissionRegex),\n yupObject({\n description: yupString().optional(),\n scope: yupString().oneOf(['team', 'project']).optional(),\n containedPermissionIds: yupRecord(\n yupString().optional().matches(permissionRegex),\n yupBoolean().isTrue().optional()\n ).optional(),\n }).optional(),\n ).optional(),\n defaultPermissions: yupObject({\n teamCreator: branchRbacDefaultPermissions,\n teamMember: branchRbacDefaultPermissions,\n signUp: branchRbacDefaultPermissions,\n }).optional(),\n}).optional();\n// --- END NEW RBAC Schema ---\n\n// --- NEW API Keys Schema ---\nconst branchApiKeysSchema = yupObject({\n enabled: yupObject({\n team: yupBoolean().optional(),\n user: yupBoolean().optional(),\n }).optional(),\n}).optional();\n// --- END NEW API Keys Schema ---\n\n\nconst branchAuthSchema = yupObject({\n allowSignUp: yupBoolean().optional(),\n password: yupObject({\n allowSignIn: yupBoolean().optional(),\n }).optional(),\n otp: yupObject({\n allowSignIn: yupBoolean().optional(),\n }).optional(),\n passkey: yupObject({\n allowSignIn: yupBoolean().optional(),\n }).optional(),\n oauth: yupObject({\n accountMergeStrategy: yupString().oneOf(['link_method', 'raise_error', 'allow_duplicates']).optional(),\n providers: yupRecord(\n yupString().optional().matches(permissionRegex),\n yupObject({\n type: yupString().oneOf(allProviders).optional(),\n allowSignIn: yupBoolean().optional(),\n allowConnectedAccounts: yupBoolean().optional(),\n }).defined(),\n ).optional(),\n }).optional(),\n}).optional();\n\nconst branchDomain = yupObject({\n allowLocalhost: yupBoolean().optional(),\n}).optional();\n\nexport const branchConfigSchema = projectConfigSchema.concat(yupObject({\n rbac: branchRbacSchema,\n\n teams: yupObject({\n createPersonalTeamOnSignUp: yupBoolean().optional(),\n allowClientTeamCreation: yupBoolean().optional(),\n }).optional(),\n\n users: yupObject({\n allowClientUserDeletion: yupBoolean().optional(),\n }).optional(),\n\n apiKeys: branchApiKeysSchema,\n\n domains: branchDomain,\n\n auth: branchAuthSchema,\n\n emails: yupObject({}),\n}));\n\n\nexport const environmentConfigSchema = branchConfigSchema.concat(yupObject({\n auth: branchConfigSchema.getNested(\"auth\").concat(yupObject({\n oauth: branchConfigSchema.getNested(\"auth\").getNested(\"oauth\").concat(yupObject({\n providers: yupRecord(\n yupString().optional().matches(permissionRegex),\n yupObject({\n type: yupString().oneOf(allProviders).optional(),\n isShared: yupBoolean().optional(),\n clientId: schemaFields.oauthClientIdSchema.optional(),\n clientSecret: schemaFields.oauthClientSecretSchema.optional(),\n facebookConfigId: schemaFields.oauthFacebookConfigIdSchema.optional(),\n microsoftTenantId: schemaFields.oauthMicrosoftTenantIdSchema.optional(),\n allowSignIn: yupBoolean().optional(),\n allowConnectedAccounts: yupBoolean().optional(),\n }),\n ).optional(),\n }).optional()),\n })),\n\n emails: branchConfigSchema.getNested(\"emails\").concat(yupObject({\n server: yupObject({\n isShared: yupBoolean().optional(),\n host: schemaFields.emailHostSchema.optional().nonEmpty(),\n port: schemaFields.emailPortSchema.optional(),\n username: schemaFields.emailUsernameSchema.optional().nonEmpty(),\n password: schemaFields.emailPasswordSchema.optional().nonEmpty(),\n senderName: schemaFields.emailSenderNameSchema.optional().nonEmpty(),\n senderEmail: schemaFields.emailSenderEmailSchema.optional().nonEmpty(),\n }),\n }).optional()),\n\n domains: branchConfigSchema.getNested(\"domains\").concat(yupObject({\n trustedDomains: yupRecord(\n yupString().uuid().optional(),\n yupObject({\n baseUrl: schemaFields.urlSchema.optional(),\n handlerPath: schemaFields.handlerPathSchema.optional(),\n }),\n ).optional(),\n })),\n}));\n\nexport const organizationConfigSchema = environmentConfigSchema.concat(yupObject({}));\n\n\n// Defaults\n// these are objects that are merged together to form the rendered config (see ./README.md)\n// Wherever an object could be used as a value, a function can instead be used to generate the default values on a per-key basis\nexport const projectConfigDefaults = {} satisfies DeepReplaceAllowFunctionsForObjects<ProjectConfigStrippedNormalizedOverride>;\n\nexport const branchConfigDefaults = {} satisfies DeepReplaceAllowFunctionsForObjects<BranchConfigStrippedNormalizedOverride>;\n\nexport const environmentConfigDefaults = {} satisfies DeepReplaceAllowFunctionsForObjects<EnvironmentConfigStrippedNormalizedOverride>;\n\nexport const organizationConfigDefaults = {\n rbac: {\n permissions: (key: string) => ({}),\n defaultPermissions: {\n teamCreator: {},\n teamMember: {},\n signUp: {},\n },\n },\n\n apiKeys: {\n enabled: {\n team: false,\n user: false,\n },\n },\n\n teams: {\n createPersonalTeamOnSignUp: false,\n allowClientTeamCreation: false,\n },\n\n users: {\n allowClientUserDeletion: false,\n },\n\n domains: {\n allowLocalhost: false,\n trustedDomains: (key: string) => ({\n handlerPath: '/handler',\n }),\n },\n\n auth: {\n allowSignUp: true,\n password: {\n allowSignIn: false,\n },\n otp: {\n allowSignIn: false,\n },\n passkey: {\n allowSignIn: false,\n },\n oauth: {\n accountMergeStrategy: 'link_method',\n providers: (key: string) => ({\n isShared: true,\n allowSignIn: false,\n allowConnectedAccounts: false,\n }),\n },\n },\n\n emails: {\n server: {\n isShared: true,\n },\n },\n} satisfies DeepReplaceAllowFunctionsForObjects<OrganizationConfigStrippedNormalizedOverride>;\n\nexport type DeepReplaceAllowFunctionsForObjects<T> = T extends object ? { [K in keyof T]: DeepReplaceAllowFunctionsForObjects<T[K]> } | ((arg: keyof T) => DeepReplaceAllowFunctionsForObjects<T[keyof T]>) : T;\nexport type DeepReplaceFunctionsWithObjects<T> = T extends (arg: infer K extends string) => infer R ? DeepReplaceFunctionsWithObjects<Record<K, R>> : (T extends object ? { [K in keyof T]: DeepReplaceFunctionsWithObjects<T[K]> } : T);\nexport type ApplyDefaults<D extends object | ((key: string) => unknown), C extends object> = DeepMerge<DeepReplaceFunctionsWithObjects<D>, C>;\nexport function applyDefaults<D extends object | ((key: string) => unknown), C extends object>(defaults: D, config: C): ApplyDefaults<D, C> {\n const res: any = typeof defaults === 'function' ? {} : mapValues(defaults, v => typeof v === 'function' ? {} : (typeof v === 'object' ? applyDefaults(v as any, {}) : v));\n for (const [key, mergeValue] of Object.entries(config)) {\n const baseValue = typeof defaults === 'function' ? defaults(key) : (has(defaults, key as any) ? get(defaults, key as any) : undefined);\n if (baseValue !== undefined) {\n if (isObjectLike(baseValue) && isObjectLike(mergeValue)) {\n set(res, key, applyDefaults(baseValue, mergeValue));\n continue;\n }\n }\n set(res, key, mergeValue);\n }\n return res as any;\n}\nundefined?.test(\"applyDefaults\", ({ expect }) => {\n expect(applyDefaults({ a: 1 }, { a: 2 })).toEqual({ a: 2 });\n expect(applyDefaults({ a: { b: 1 } }, { a: { c: 2 } })).toEqual({ a: { b: 1, c: 2 } });\n expect(applyDefaults((key: string) => ({ b: key }), { a: {} })).toEqual({ a: { b: \"a\" } });\n expect(applyDefaults({ a: (key: string) => ({ b: key }) }, { a: { c: { d: 1 } } })).toEqual({ a: { c: { b: \"c\", d: 1 } } });\n expect(applyDefaults({ a: (key: string) => ({ b: key }) }, {})).toEqual({ a: {} });\n expect(applyDefaults({ a: { b: (key: string) => ({ b: key }) } }, {})).toEqual({ a: { b: {} } });\n});\n\n// Normalized overrides\nexport type ProjectConfigNormalizedOverride = yup.InferType<typeof projectConfigSchema>;\nexport type BranchConfigNormalizedOverride = yup.InferType<typeof branchConfigSchema>;\nexport type EnvironmentConfigNormalizedOverride = yup.InferType<typeof environmentConfigSchema>;\nexport type OrganizationConfigNormalizedOverride = yup.InferType<typeof organizationConfigSchema>;\n\n// Normalized overrides, without the properties that may be overridden still\nexport type ProjectConfigStrippedNormalizedOverride = Omit<ProjectConfigNormalizedOverride,\n | keyof BranchConfigNormalizedOverride\n | keyof EnvironmentConfigNormalizedOverride\n | keyof OrganizationConfigNormalizedOverride\n>;\nexport type BranchConfigStrippedNormalizedOverride = Omit<BranchConfigNormalizedOverride,\n | keyof EnvironmentConfigNormalizedOverride\n | keyof OrganizationConfigNormalizedOverride\n>;\nexport type EnvironmentConfigStrippedNormalizedOverride = Omit<EnvironmentConfigNormalizedOverride,\n | keyof OrganizationConfigNormalizedOverride\n>;\nexport type OrganizationConfigStrippedNormalizedOverride = OrganizationConfigNormalizedOverride;\n\n// Overrides\nexport type ProjectConfigOverride = NormalizesTo<ProjectConfigNormalizedOverride>;\nexport type BranchConfigOverride = NormalizesTo<BranchConfigNormalizedOverride>;\nexport type EnvironmentConfigOverride = NormalizesTo<EnvironmentConfigNormalizedOverride>;\nexport type OrganizationConfigOverride = NormalizesTo<OrganizationConfigNormalizedOverride>;\n\n// Override overrides (used to update the overrides)\nexport type ProjectConfigOverrideOverride = Config & DeepPartial<ProjectConfigOverride>;\nexport type BranchConfigOverrideOverride = Config & DeepPartial<BranchConfigOverride>;\nexport type EnvironmentConfigOverrideOverride = Config & DeepPartial<EnvironmentConfigOverride>;\nexport type OrganizationConfigOverrideOverride = Config & DeepPartial<OrganizationConfigOverride>;\n\n// Incomplete configs\nexport type ProjectIncompleteConfig = ProjectConfigNormalizedOverride;\nexport type BranchIncompleteConfig = ProjectIncompleteConfig & BranchConfigNormalizedOverride;\nexport type EnvironmentIncompleteConfig = BranchIncompleteConfig & EnvironmentConfigNormalizedOverride;\nexport type OrganizationIncompleteConfig = EnvironmentIncompleteConfig & OrganizationConfigNormalizedOverride;\n\n// Rendered configs\nexport type ProjectRenderedConfig = PrettifyType<ApplyDefaults<typeof projectConfigDefaults, ProjectConfigStrippedNormalizedOverride>>;\nexport type BranchRenderedConfig = PrettifyType<ProjectRenderedConfig & ApplyDefaults<typeof branchConfigDefaults, BranchConfigStrippedNormalizedOverride>>;\nexport type EnvironmentRenderedConfig = PrettifyType<BranchRenderedConfig & ApplyDefaults<typeof environmentConfigDefaults, EnvironmentConfigStrippedNormalizedOverride>>;\nexport type OrganizationRenderedConfig = PrettifyType<EnvironmentRenderedConfig & ApplyDefaults<typeof organizationConfigDefaults, OrganizationConfigStrippedNormalizedOverride>>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA8B;AAC9B,2BAA4D;AAC5D,mBAA6B;AAC7B,qBAA+E;AAQxE,IAAM,eAAe,CAAC,WAAW,UAAU,eAAe,cAAc;AAE/E,IAAM,kBAAkB;AACxB,IAAM,wBAAwB;AAKvB,IAAM,0BAAsB,gCAAU,CAAC,CAAC;AAG/C,IAAM,mCAA+B;AAAA,MACnC,gCAAU,EAAE,SAAS,EAAE,QAAQ,eAAe;AAAA,MAC9C,iCAAW,EAAE,OAAO,EAAE,SAAS;AACjC,EAAE,SAAS;AAEX,IAAM,uBAAmB,gCAAU;AAAA,EACjC,iBAAa;AAAA,QACX,gCAAU,EAAE,SAAS,EAAE,QAAQ,qBAAqB;AAAA,QACpD,gCAAU;AAAA,MACR,iBAAa,gCAAU,EAAE,SAAS;AAAA,MAClC,WAAO,gCAAU,EAAE,MAAM,CAAC,QAAQ,SAAS,CAAC,EAAE,SAAS;AAAA,MACvD,4BAAwB;AAAA,YACtB,gCAAU,EAAE,SAAS,EAAE,QAAQ,eAAe;AAAA,YAC9C,iCAAW,EAAE,OAAO,EAAE,SAAS;AAAA,MACjC,EAAE,SAAS;AAAA,IACb,CAAC,EAAE,SAAS;AAAA,EACd,EAAE,SAAS;AAAA,EACX,wBAAoB,gCAAU;AAAA,IAC5B,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,QAAQ;AAAA,EACV,CAAC,EAAE,SAAS;AACd,CAAC,EAAE,SAAS;AAIZ,IAAM,0BAAsB,gCAAU;AAAA,EACpC,aAAS,gCAAU;AAAA,IACjB,UAAM,iCAAW,EAAE,SAAS;AAAA,IAC5B,UAAM,iCAAW,EAAE,SAAS;AAAA,EAC9B,CAAC,EAAE,SAAS;AACd,CAAC,EAAE,SAAS;AAIZ,IAAM,uBAAmB,gCAAU;AAAA,EACjC,iBAAa,iCAAW,EAAE,SAAS;AAAA,EACnC,cAAU,gCAAU;AAAA,IAClB,iBAAa,iCAAW,EAAE,SAAS;AAAA,EACrC,CAAC,EAAE,SAAS;AAAA,EACZ,SAAK,gCAAU;AAAA,IACb,iBAAa,iCAAW,EAAE,SAAS;AAAA,EACrC,CAAC,EAAE,SAAS;AAAA,EACZ,aAAS,gCAAU;AAAA,IACjB,iBAAa,iCAAW,EAAE,SAAS;AAAA,EACrC,CAAC,EAAE,SAAS;AAAA,EACZ,WAAO,gCAAU;AAAA,IACf,0BAAsB,gCAAU,EAAE,MAAM,CAAC,eAAe,eAAe,kBAAkB,CAAC,EAAE,SAAS;AAAA,IACrG,eAAW;AAAA,UACT,gCAAU,EAAE,SAAS,EAAE,QAAQ,eAAe;AAAA,UAC9C,gCAAU;AAAA,QACR,UAAM,gCAAU,EAAE,MAAM,yBAAY,EAAE,SAAS;AAAA,QAC/C,iBAAa,iCAAW,EAAE,SAAS;AAAA,QACnC,4BAAwB,iCAAW,EAAE,SAAS;AAAA,MAChD,CAAC,EAAE,QAAQ;AAAA,IACb,EAAE,SAAS;AAAA,EACb,CAAC,EAAE,SAAS;AACd,CAAC,EAAE,SAAS;AAEZ,IAAM,mBAAe,gCAAU;AAAA,EAC7B,oBAAgB,iCAAW,EAAE,SAAS;AACxC,CAAC,EAAE,SAAS;AAEL,IAAM,qBAAqB,oBAAoB,WAAO,gCAAU;AAAA,EACrE,MAAM;AAAA,EAEN,WAAO,gCAAU;AAAA,IACf,gCAA4B,iCAAW,EAAE,SAAS;AAAA,IAClD,6BAAyB,iCAAW,EAAE,SAAS;AAAA,EACjD,CAAC,EAAE,SAAS;AAAA,EAEZ,WAAO,gCAAU;AAAA,IACf,6BAAyB,iCAAW,EAAE,SAAS;AAAA,EACjD,CAAC,EAAE,SAAS;AAAA,EAEZ,SAAS;AAAA,EAET,SAAS;AAAA,EAET,MAAM;AAAA,EAEN,YAAQ,gCAAU,CAAC,CAAC;AACtB,CAAC,CAAC;AAGK,IAAM,0BAA0B,mBAAmB,WAAO,gCAAU;AAAA,EACzE,MAAM,mBAAmB,UAAU,MAAM,EAAE,WAAO,gCAAU;AAAA,IAC1D,OAAO,mBAAmB,UAAU,MAAM,EAAE,UAAU,OAAO,EAAE,WAAO,gCAAU;AAAA,MAC9E,eAAW;AAAA,YACT,gCAAU,EAAE,SAAS,EAAE,QAAQ,eAAe;AAAA,YAC9C,gCAAU;AAAA,UACR,UAAM,gCAAU,EAAE,MAAM,yBAAY,EAAE,SAAS;AAAA,UAC/C,cAAU,iCAAW,EAAE,SAAS;AAAA,UAChC,UAAuB,iCAAoB,SAAS;AAAA,UACpD,cAA2B,qCAAwB,SAAS;AAAA,UAC5D,kBAA+B,yCAA4B,SAAS;AAAA,UACpE,mBAAgC,0CAA6B,SAAS;AAAA,UACtE,iBAAa,iCAAW,EAAE,SAAS;AAAA,UACnC,4BAAwB,iCAAW,EAAE,SAAS;AAAA,QAChD,CAAC;AAAA,MACH,EAAE,SAAS;AAAA,IACb,CAAC,EAAE,SAAS,CAAC;AAAA,EACf,CAAC,CAAC;AAAA,EAEF,QAAQ,mBAAmB,UAAU,QAAQ,EAAE,WAAO,gCAAU;AAAA,IAC9D,YAAQ,gCAAU;AAAA,MAChB,cAAU,iCAAW,EAAE,SAAS;AAAA,MAChC,MAAmB,6BAAgB,SAAS,EAAE,SAAS;AAAA,MACvD,MAAmB,6BAAgB,SAAS;AAAA,MAC5C,UAAuB,iCAAoB,SAAS,EAAE,SAAS;AAAA,MAC/D,UAAuB,iCAAoB,SAAS,EAAE,SAAS;AAAA,MAC/D,YAAyB,mCAAsB,SAAS,EAAE,SAAS;AAAA,MACnE,aAA0B,oCAAuB,SAAS,EAAE,SAAS;AAAA,IACvE,CAAC;AAAA,EACH,CAAC,EAAE,SAAS,CAAC;AAAA,EAEb,SAAS,mBAAmB,UAAU,SAAS,EAAE,WAAO,gCAAU;AAAA,IAChE,oBAAgB;AAAA,UACd,gCAAU,EAAE,KAAK,EAAE,SAAS;AAAA,UAC5B,gCAAU;AAAA,QACR,SAAsB,uBAAU,SAAS;AAAA,QACzC,aAA0B,+BAAkB,SAAS;AAAA,MACvD,CAAC;AAAA,IACH,EAAE,SAAS;AAAA,EACb,CAAC,CAAC;AACJ,CAAC,CAAC;AAEK,IAAM,2BAA2B,wBAAwB,WAAO,gCAAU,CAAC,CAAC,CAAC;AAM7E,IAAM,wBAAwB,CAAC;AAE/B,IAAM,uBAAuB,CAAC;AAE9B,IAAM,4BAA4B,CAAC;AAEnC,IAAM,6BAA6B;AAAA,EACxC,MAAM;AAAA,IACJ,aAAa,CAAC,SAAiB,CAAC;AAAA,IAChC,oBAAoB;AAAA,MAClB,aAAa,CAAC;AAAA,MACd,YAAY,CAAC;AAAA,MACb,QAAQ,CAAC;AAAA,IACX;AAAA,EACF;AAAA,EAEA,SAAS;AAAA,IACP,SAAS;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,4BAA4B;AAAA,IAC5B,yBAAyB;AAAA,EAC3B;AAAA,EAEA,OAAO;AAAA,IACL,yBAAyB;AAAA,EAC3B;AAAA,EAEA,SAAS;AAAA,IACP,gBAAgB;AAAA,IAChB,gBAAgB,CAAC,SAAiB;AAAA,MAChC,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,MAAM;AAAA,IACJ,aAAa;AAAA,IACb,UAAU;AAAA,MACR,aAAa;AAAA,IACf;AAAA,IACA,KAAK;AAAA,MACH,aAAa;AAAA,IACf;AAAA,IACA,SAAS;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,OAAO;AAAA,MACL,sBAAsB;AAAA,MACtB,WAAW,CAAC,SAAiB;AAAA,QAC3B,UAAU;AAAA,QACV,aAAa;AAAA,QACb,wBAAwB;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,QAAQ;AAAA,IACN,QAAQ;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAKO,SAAS,cAA+E,UAAa,QAAgC;AAC1I,QAAM,MAAW,OAAO,aAAa,aAAa,CAAC,QAAI,0BAAU,UAAU,OAAK,OAAO,MAAM,aAAa,CAAC,IAAK,OAAO,MAAM,WAAW,cAAc,GAAU,CAAC,CAAC,IAAI,CAAE;AACxK,aAAW,CAAC,KAAK,UAAU,KAAK,OAAO,QAAQ,MAAM,GAAG;AACtD,UAAM,YAAY,OAAO,aAAa,aAAa,SAAS,GAAG,QAAK,oBAAI,UAAU,GAAU,QAAI,oBAAI,UAAU,GAAU,IAAI;AAC5H,QAAI,cAAc,QAAW;AAC3B,cAAI,6BAAa,SAAS,SAAK,6BAAa,UAAU,GAAG;AACvD,gCAAI,KAAK,KAAK,cAAc,WAAW,UAAU,CAAC;AAClD;AAAA,MACF;AAAA,IACF;AACA,4BAAI,KAAK,KAAK,UAAU;AAAA,EAC1B;AACA,SAAO;AACT;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/config/schema.ts"],"sourcesContent":["import * as yup from \"yup\";\nimport * as schemaFields from \"../schema-fields\";\nimport { yupBoolean, yupObject, yupRecord, yupString } from \"../schema-fields\";\nimport { allProviders } from \"../utils/oauth\";\nimport { DeepMerge, DeepPartial, get, has, isObjectLike, mapValues, set } from \"../utils/objects\";\nimport { PrettifyType } from \"../utils/types\";\nimport { Config, NormalizesTo } from \"./format\";\n\n// NOTE: The validation schemas in here are all schematic validators, not sanity-check validators.\n// For more info, see ./README.md\n\n\nexport const configLevels = ['project', 'branch', 'environment', 'organization'] as const;\nexport type ConfigLevel = typeof configLevels[number];\nconst permissionRegex = /^\\$?[a-z0-9_:]+$/;\nconst customPermissionRegex = /^[a-z0-9_:]+$/;\n\n/**\n * All fields that can be overridden at this level.\n */\nexport const projectConfigSchema = yupObject({});\n\n// --- NEW RBAC Schema ---\nconst branchRbacDefaultPermissions = yupRecord(\n yupString().optional().matches(permissionRegex),\n yupBoolean().isTrue().optional(),\n).optional();\n\nconst branchRbacSchema = yupObject({\n permissions: yupRecord(\n yupString().optional().matches(customPermissionRegex),\n yupObject({\n description: yupString().optional(),\n scope: yupString().oneOf(['team', 'project']).optional(),\n containedPermissionIds: yupRecord(\n yupString().optional().matches(permissionRegex),\n yupBoolean().isTrue().optional()\n ).optional(),\n }).optional(),\n ).optional(),\n defaultPermissions: yupObject({\n teamCreator: branchRbacDefaultPermissions,\n teamMember: branchRbacDefaultPermissions,\n signUp: branchRbacDefaultPermissions,\n }).optional(),\n}).optional();\n// --- END NEW RBAC Schema ---\n\n// --- NEW API Keys Schema ---\nconst branchApiKeysSchema = yupObject({\n enabled: yupObject({\n team: yupBoolean().optional(),\n user: yupBoolean().optional(),\n }).optional(),\n}).optional();\n// --- END NEW API Keys Schema ---\n\n\nconst branchAuthSchema = yupObject({\n allowSignUp: yupBoolean().optional(),\n password: yupObject({\n allowSignIn: yupBoolean().optional(),\n }).optional(),\n otp: yupObject({\n allowSignIn: yupBoolean().optional(),\n }).optional(),\n passkey: yupObject({\n allowSignIn: yupBoolean().optional(),\n }).optional(),\n oauth: yupObject({\n accountMergeStrategy: yupString().oneOf(['link_method', 'raise_error', 'allow_duplicates']).optional(),\n providers: yupRecord(\n yupString().optional().matches(permissionRegex),\n yupObject({\n type: yupString().oneOf(allProviders).optional(),\n allowSignIn: yupBoolean().optional(),\n allowConnectedAccounts: yupBoolean().optional(),\n }).defined(),\n ).optional(),\n }).optional(),\n}).optional();\n\nconst branchDomain = yupObject({\n allowLocalhost: yupBoolean().optional(),\n}).optional();\n\nexport const branchConfigSchema = projectConfigSchema.concat(yupObject({\n rbac: branchRbacSchema,\n\n teams: yupObject({\n createPersonalTeamOnSignUp: yupBoolean().optional(),\n allowClientTeamCreation: yupBoolean().optional(),\n }).optional(),\n\n users: yupObject({\n allowClientUserDeletion: yupBoolean().optional(),\n }).optional(),\n\n apiKeys: branchApiKeysSchema,\n\n domains: branchDomain,\n\n auth: branchAuthSchema,\n\n emails: yupObject({}),\n}));\n\n\nexport const environmentConfigSchema = branchConfigSchema.concat(yupObject({\n auth: branchConfigSchema.getNested(\"auth\").concat(yupObject({\n oauth: branchConfigSchema.getNested(\"auth\").getNested(\"oauth\").concat(yupObject({\n providers: yupRecord(\n yupString().optional().matches(permissionRegex),\n yupObject({\n type: yupString().oneOf(allProviders).optional(),\n isShared: yupBoolean().optional(),\n clientId: schemaFields.oauthClientIdSchema.optional(),\n clientSecret: schemaFields.oauthClientSecretSchema.optional(),\n facebookConfigId: schemaFields.oauthFacebookConfigIdSchema.optional(),\n microsoftTenantId: schemaFields.oauthMicrosoftTenantIdSchema.optional(),\n allowSignIn: yupBoolean().optional(),\n allowConnectedAccounts: yupBoolean().optional(),\n }),\n ).optional(),\n }).optional()),\n })),\n\n emails: branchConfigSchema.getNested(\"emails\").concat(yupObject({\n server: yupObject({\n isShared: yupBoolean().optional(),\n host: schemaFields.emailHostSchema.optional().nonEmpty(),\n port: schemaFields.emailPortSchema.optional(),\n username: schemaFields.emailUsernameSchema.optional().nonEmpty(),\n password: schemaFields.emailPasswordSchema.optional().nonEmpty(),\n senderName: schemaFields.emailSenderNameSchema.optional().nonEmpty(),\n senderEmail: schemaFields.emailSenderEmailSchema.optional().nonEmpty(),\n }),\n }).optional()),\n\n domains: branchConfigSchema.getNested(\"domains\").concat(yupObject({\n trustedDomains: yupRecord(\n yupString().uuid().optional(),\n yupObject({\n baseUrl: schemaFields.urlSchema.optional(),\n handlerPath: schemaFields.handlerPathSchema.optional(),\n }),\n ).optional(),\n })),\n}));\n\nexport const organizationConfigSchema = environmentConfigSchema.concat(yupObject({}));\n\n\n// Defaults\n// these are objects that are merged together to form the rendered config (see ./README.md)\n// Wherever an object could be used as a value, a function can instead be used to generate the default values on a per-key basis\n// NOTE: These values are the defaults of the schema, NOT the defaults for newly created projects. The values here signify what `null` means for each property. If you want new projects by default to have a certain value set to true, you should update the corresponding function in the backend instead.\nexport const projectConfigDefaults = {} satisfies DeepReplaceAllowFunctionsForObjects<ProjectConfigStrippedNormalizedOverride>;\n\nexport const branchConfigDefaults = {} satisfies DeepReplaceAllowFunctionsForObjects<BranchConfigStrippedNormalizedOverride>;\n\nexport const environmentConfigDefaults = {} satisfies DeepReplaceAllowFunctionsForObjects<EnvironmentConfigStrippedNormalizedOverride>;\n\nexport const organizationConfigDefaults = {\n rbac: {\n permissions: (key: string) => ({}),\n defaultPermissions: {\n teamCreator: {},\n teamMember: {},\n signUp: {},\n },\n },\n\n apiKeys: {\n enabled: {\n team: false,\n user: false,\n },\n },\n\n teams: {\n createPersonalTeamOnSignUp: false,\n allowClientTeamCreation: false,\n },\n\n users: {\n allowClientUserDeletion: false,\n },\n\n domains: {\n allowLocalhost: false,\n trustedDomains: (key: string) => ({\n handlerPath: '/handler',\n }),\n },\n\n auth: {\n allowSignUp: true,\n password: {\n allowSignIn: false,\n },\n otp: {\n allowSignIn: false,\n },\n passkey: {\n allowSignIn: false,\n },\n oauth: {\n accountMergeStrategy: 'link_method',\n providers: (key: string) => ({\n isShared: true,\n allowSignIn: false,\n allowConnectedAccounts: false,\n }),\n },\n },\n\n emails: {\n server: {\n isShared: true,\n },\n },\n} satisfies DeepReplaceAllowFunctionsForObjects<OrganizationConfigStrippedNormalizedOverride>;\n\nexport type DeepReplaceAllowFunctionsForObjects<T> = T extends object ? { [K in keyof T]: DeepReplaceAllowFunctionsForObjects<T[K]> } | ((arg: keyof T) => DeepReplaceAllowFunctionsForObjects<T[keyof T]>) : T;\nexport type DeepReplaceFunctionsWithObjects<T> = T extends (arg: infer K extends string) => infer R ? DeepReplaceFunctionsWithObjects<Record<K, R>> : (T extends object ? { [K in keyof T]: DeepReplaceFunctionsWithObjects<T[K]> } : T);\nexport type ApplyDefaults<D extends object | ((key: string) => unknown), C extends object> = DeepMerge<DeepReplaceFunctionsWithObjects<D>, C>;\nexport function applyDefaults<D extends object | ((key: string) => unknown), C extends object>(defaults: D, config: C): ApplyDefaults<D, C> {\n const res: any = typeof defaults === 'function' ? {} : mapValues(defaults, v => typeof v === 'function' ? {} : (typeof v === 'object' ? applyDefaults(v as any, {}) : v));\n for (const [key, mergeValue] of Object.entries(config)) {\n const baseValue = typeof defaults === 'function' ? defaults(key) : (has(defaults, key as any) ? get(defaults, key as any) : undefined);\n if (baseValue !== undefined) {\n if (isObjectLike(baseValue) && isObjectLike(mergeValue)) {\n set(res, key, applyDefaults(baseValue, mergeValue));\n continue;\n }\n }\n set(res, key, mergeValue);\n }\n return res as any;\n}\nundefined?.test(\"applyDefaults\", ({ expect }) => {\n expect(applyDefaults({ a: 1 }, { a: 2 })).toEqual({ a: 2 });\n expect(applyDefaults({ a: { b: 1 } }, { a: { c: 2 } })).toEqual({ a: { b: 1, c: 2 } });\n expect(applyDefaults((key: string) => ({ b: key }), { a: {} })).toEqual({ a: { b: \"a\" } });\n expect(applyDefaults({ a: (key: string) => ({ b: key }) }, { a: { c: { d: 1 } } })).toEqual({ a: { c: { b: \"c\", d: 1 } } });\n expect(applyDefaults({ a: (key: string) => ({ b: key }) }, {})).toEqual({ a: {} });\n expect(applyDefaults({ a: { b: (key: string) => ({ b: key }) } }, {})).toEqual({ a: { b: {} } });\n});\n\n// Normalized overrides\nexport type ProjectConfigNormalizedOverride = yup.InferType<typeof projectConfigSchema>;\nexport type BranchConfigNormalizedOverride = yup.InferType<typeof branchConfigSchema>;\nexport type EnvironmentConfigNormalizedOverride = yup.InferType<typeof environmentConfigSchema>;\nexport type OrganizationConfigNormalizedOverride = yup.InferType<typeof organizationConfigSchema>;\n\n// Normalized overrides, without the properties that may be overridden still\nexport type ProjectConfigStrippedNormalizedOverride = Omit<ProjectConfigNormalizedOverride,\n | keyof BranchConfigNormalizedOverride\n | keyof EnvironmentConfigNormalizedOverride\n | keyof OrganizationConfigNormalizedOverride\n>;\nexport type BranchConfigStrippedNormalizedOverride = Omit<BranchConfigNormalizedOverride,\n | keyof EnvironmentConfigNormalizedOverride\n | keyof OrganizationConfigNormalizedOverride\n>;\nexport type EnvironmentConfigStrippedNormalizedOverride = Omit<EnvironmentConfigNormalizedOverride,\n | keyof OrganizationConfigNormalizedOverride\n>;\nexport type OrganizationConfigStrippedNormalizedOverride = OrganizationConfigNormalizedOverride;\n\n// Overrides\nexport type ProjectConfigOverride = NormalizesTo<ProjectConfigNormalizedOverride>;\nexport type BranchConfigOverride = NormalizesTo<BranchConfigNormalizedOverride>;\nexport type EnvironmentConfigOverride = NormalizesTo<EnvironmentConfigNormalizedOverride>;\nexport type OrganizationConfigOverride = NormalizesTo<OrganizationConfigNormalizedOverride>;\n\n// Override overrides (used to update the overrides)\nexport type ProjectConfigOverrideOverride = Config & DeepPartial<ProjectConfigOverride>;\nexport type BranchConfigOverrideOverride = Config & DeepPartial<BranchConfigOverride>;\nexport type EnvironmentConfigOverrideOverride = Config & DeepPartial<EnvironmentConfigOverride>;\nexport type OrganizationConfigOverrideOverride = Config & DeepPartial<OrganizationConfigOverride>;\n\n// Incomplete configs\nexport type ProjectIncompleteConfig = ProjectConfigNormalizedOverride;\nexport type BranchIncompleteConfig = ProjectIncompleteConfig & BranchConfigNormalizedOverride;\nexport type EnvironmentIncompleteConfig = BranchIncompleteConfig & EnvironmentConfigNormalizedOverride;\nexport type OrganizationIncompleteConfig = EnvironmentIncompleteConfig & OrganizationConfigNormalizedOverride;\n\n// Rendered configs\nexport type ProjectRenderedConfig = PrettifyType<ApplyDefaults<typeof projectConfigDefaults, ProjectConfigStrippedNormalizedOverride>>;\nexport type BranchRenderedConfig = PrettifyType<ProjectRenderedConfig & ApplyDefaults<typeof branchConfigDefaults, BranchConfigStrippedNormalizedOverride>>;\nexport type EnvironmentRenderedConfig = PrettifyType<BranchRenderedConfig & ApplyDefaults<typeof environmentConfigDefaults, EnvironmentConfigStrippedNormalizedOverride>>;\nexport type OrganizationRenderedConfig = PrettifyType<EnvironmentRenderedConfig & ApplyDefaults<typeof organizationConfigDefaults, OrganizationConfigStrippedNormalizedOverride>>;\n"],"mappings":"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","names":[]}
|
package/dist/crud.js
CHANGED
|
@@ -23,8 +23,8 @@ __export(crud_exports, {
|
|
|
23
23
|
createCrud: () => createCrud
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(crud_exports);
|
|
26
|
-
var import_schema_fields = require("./schema-fields");
|
|
27
|
-
var import_objects = require("./utils/objects");
|
|
26
|
+
var import_schema_fields = require("./schema-fields.js");
|
|
27
|
+
var import_objects = require("./utils/objects.js");
|
|
28
28
|
function createCrud(options) {
|
|
29
29
|
const docs = options.docs ?? {};
|
|
30
30
|
const client = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/config/format.ts
|
|
2
|
-
import { StackAssertionError, throwErr } from "../utils/errors";
|
|
3
|
-
import { deleteKey, filterUndefined, get, hasAndNotUndefined, set } from "../utils/objects";
|
|
2
|
+
import { StackAssertionError, throwErr } from "../utils/errors.js";
|
|
3
|
+
import { deleteKey, filterUndefined, get, hasAndNotUndefined, set } from "../utils/objects.js";
|
|
4
4
|
function isValidConfig(c) {
|
|
5
5
|
return getInvalidConfigReason(c) === void 0;
|
|
6
6
|
}
|