@vexcms/core 0.0.20 → 0.1.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/dist/.build +1 -0
- package/dist/access/buildChecks.d.ts +58 -0
- package/dist/access/buildChecks.d.ts.map +1 -0
- package/dist/access/canAccessAdminPanel.d.ts +53 -0
- package/dist/access/canAccessAdminPanel.d.ts.map +1 -0
- package/dist/access/compileConstraints.d.ts +155 -0
- package/dist/access/compileConstraints.d.ts.map +1 -0
- package/dist/access/config.d.ts +62 -0
- package/dist/access/config.d.ts.map +1 -0
- package/dist/access/constants.d.ts +95 -0
- package/dist/access/constants.d.ts.map +1 -0
- package/dist/access/constraintTypes.d.ts +337 -0
- package/dist/access/constraintTypes.d.ts.map +1 -0
- package/dist/access/createAccessQueryBuilder.d.ts +59 -0
- package/dist/access/createAccessQueryBuilder.d.ts.map +1 -0
- package/dist/access/createFilterConstraintBuilder.d.ts +26 -0
- package/dist/access/createFilterConstraintBuilder.d.ts.map +1 -0
- package/dist/access/createIndexConstraintBuilder.d.ts +40 -0
- package/dist/access/createIndexConstraintBuilder.d.ts.map +1 -0
- package/dist/access/hasPermission.d.ts +85 -0
- package/dist/access/hasPermission.d.ts.map +1 -0
- package/dist/access/index.d.ts +13 -0
- package/dist/access/index.d.ts.map +1 -0
- package/dist/access/pickQueryIndex.d.ts +42 -0
- package/dist/access/pickQueryIndex.d.ts.map +1 -0
- package/dist/access/resolveAccessRule.d.ts +85 -0
- package/dist/access/resolveAccessRule.d.ts.map +1 -0
- package/dist/access/types.d.ts +738 -0
- package/dist/access/types.d.ts.map +1 -0
- package/dist/access/validateAccessConstraints.d.ts +57 -0
- package/dist/access/validateAccessConstraints.d.ts.map +1 -0
- package/dist/api/client.d.ts +20 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +117 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/convex.d.ts +296 -0
- package/dist/api/convex.d.ts.map +1 -0
- package/dist/api/create/client.d.ts +50 -0
- package/dist/api/create/client.d.ts.map +1 -0
- package/dist/api/create/server.d.ts +43 -0
- package/dist/api/create/server.d.ts.map +1 -0
- package/dist/api/depth.d.ts +39 -0
- package/dist/api/depth.d.ts.map +1 -0
- package/dist/api/find/client.d.ts +90 -0
- package/dist/api/find/client.d.ts.map +1 -0
- package/dist/api/find/server.d.ts +73 -0
- package/dist/api/find/server.d.ts.map +1 -0
- package/dist/api/get/client.d.ts +56 -0
- package/dist/api/get/client.d.ts.map +1 -0
- package/dist/api/get/server.d.ts +49 -0
- package/dist/api/get/server.d.ts.map +1 -0
- package/dist/api/globals/find.client.d.ts +20 -0
- package/dist/api/globals/find.client.d.ts.map +1 -0
- package/dist/api/globals/find.server.d.ts +29 -0
- package/dist/api/globals/find.server.d.ts.map +1 -0
- package/dist/api/globals/get.client.d.ts +46 -0
- package/dist/api/globals/get.client.d.ts.map +1 -0
- package/dist/api/globals/get.server.d.ts +55 -0
- package/dist/api/globals/get.server.d.ts.map +1 -0
- package/dist/api/globals/types.d.ts +65 -0
- package/dist/api/globals/types.d.ts.map +1 -0
- package/dist/api/globals/upsert.client.d.ts +24 -0
- package/dist/api/globals/upsert.client.d.ts.map +1 -0
- package/dist/api/globals/upsert.server.d.ts +47 -0
- package/dist/api/globals/upsert.server.d.ts.map +1 -0
- package/dist/api/populate.d.ts +23 -0
- package/dist/api/populate.d.ts.map +1 -0
- package/dist/api/remove/client.d.ts +58 -0
- package/dist/api/remove/client.d.ts.map +1 -0
- package/dist/api/remove/server.d.ts +65 -0
- package/dist/api/remove/server.d.ts.map +1 -0
- package/dist/api/search/client.d.ts +58 -0
- package/dist/api/search/client.d.ts.map +1 -0
- package/dist/api/search/server.d.ts +54 -0
- package/dist/api/search/server.d.ts.map +1 -0
- package/dist/api/server.d.ts +370 -0
- package/dist/api/server.d.ts.map +1 -0
- package/dist/api/server.js +33 -0
- package/dist/api/server.js.map +1 -0
- package/dist/api/types.d.ts +525 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/update/client.d.ts +53 -0
- package/dist/api/update/client.d.ts.map +1 -0
- package/dist/api/update/server.d.ts +47 -0
- package/dist/api/update/server.d.ts.map +1 -0
- package/dist/api/utils.d.ts +57 -0
- package/dist/api/utils.d.ts.map +1 -0
- package/dist/auth/mergeCollections.d.ts +28 -0
- package/dist/auth/mergeCollections.d.ts.map +1 -0
- package/dist/auth/types.d.ts +84 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/chunk-2DU7JDEX.js +1877 -0
- package/dist/chunk-2DU7JDEX.js.map +1 -0
- package/dist/chunk-2IB2DCN7.js +75 -0
- package/dist/chunk-2IB2DCN7.js.map +1 -0
- package/dist/collections/config.d.ts +28 -0
- package/dist/collections/config.d.ts.map +1 -0
- package/dist/collections/constants.d.ts +27 -0
- package/dist/collections/constants.d.ts.map +1 -0
- package/dist/collections/index.d.ts +7 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/collections/indexFields.d.ts +20 -0
- package/dist/collections/indexFields.d.ts.map +1 -0
- package/dist/collections/interfaceGen.d.ts +59 -0
- package/dist/collections/interfaceGen.d.ts.map +1 -0
- package/dist/collections/internal/index.d.ts +2 -0
- package/dist/collections/internal/index.d.ts.map +1 -0
- package/dist/collections/types.d.ts +282 -0
- package/dist/collections/types.d.ts.map +1 -0
- package/dist/collections/utils.d.ts +71 -0
- package/dist/collections/utils.d.ts.map +1 -0
- package/dist/collections/validator.d.ts +73 -0
- package/dist/collections/validator.d.ts.map +1 -0
- package/dist/config/config.d.ts +43 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/sanitizeConfig.d.ts +82 -0
- package/dist/config/sanitizeConfig.d.ts.map +1 -0
- package/dist/config/types.d.ts +316 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/fields/array/config.d.ts +57 -0
- package/dist/fields/array/config.d.ts.map +1 -0
- package/dist/fields/array/index.d.ts +5 -0
- package/dist/fields/array/index.d.ts.map +1 -0
- package/dist/fields/array/inputSchema.d.ts +32 -0
- package/dist/fields/array/inputSchema.d.ts.map +1 -0
- package/dist/fields/array/types.d.ts +127 -0
- package/dist/fields/array/types.d.ts.map +1 -0
- package/dist/fields/array/validator.d.ts +30 -0
- package/dist/fields/array/validator.d.ts.map +1 -0
- package/dist/fields/baseTypes.d.ts +251 -0
- package/dist/fields/baseTypes.d.ts.map +1 -0
- package/dist/fields/blocks/config.d.ts +63 -0
- package/dist/fields/blocks/config.d.ts.map +1 -0
- package/dist/fields/blocks/index.d.ts +5 -0
- package/dist/fields/blocks/index.d.ts.map +1 -0
- package/dist/fields/blocks/inputSchema.d.ts +22 -0
- package/dist/fields/blocks/inputSchema.d.ts.map +1 -0
- package/dist/fields/blocks/types.d.ts +253 -0
- package/dist/fields/blocks/types.d.ts.map +1 -0
- package/dist/fields/blocks/validator.d.ts +32 -0
- package/dist/fields/blocks/validator.d.ts.map +1 -0
- package/dist/fields/checkbox/config.d.ts +46 -0
- package/dist/fields/checkbox/config.d.ts.map +1 -0
- package/dist/fields/checkbox/index.d.ts +5 -0
- package/dist/fields/checkbox/index.d.ts.map +1 -0
- package/dist/fields/checkbox/inputSchema.d.ts +27 -0
- package/dist/fields/checkbox/inputSchema.d.ts.map +1 -0
- package/dist/fields/checkbox/types.d.ts +67 -0
- package/dist/fields/checkbox/types.d.ts.map +1 -0
- package/dist/fields/checkbox/validator.d.ts +34 -0
- package/dist/fields/checkbox/validator.d.ts.map +1 -0
- package/dist/fields/color/config.d.ts +49 -0
- package/dist/fields/color/config.d.ts.map +1 -0
- package/dist/fields/color/convert.d.ts +72 -0
- package/dist/fields/color/convert.d.ts.map +1 -0
- package/dist/fields/color/formats.d.ts +38 -0
- package/dist/fields/color/formats.d.ts.map +1 -0
- package/dist/fields/color/index.d.ts +8 -0
- package/dist/fields/color/index.d.ts.map +1 -0
- package/dist/fields/color/inputSchema.d.ts +29 -0
- package/dist/fields/color/inputSchema.d.ts.map +1 -0
- package/dist/fields/color/types.d.ts +100 -0
- package/dist/fields/color/types.d.ts.map +1 -0
- package/dist/fields/color/utils.d.ts +100 -0
- package/dist/fields/color/utils.d.ts.map +1 -0
- package/dist/fields/color/validator.d.ts +27 -0
- package/dist/fields/color/validator.d.ts.map +1 -0
- package/dist/fields/constants.d.ts +108 -0
- package/dist/fields/constants.d.ts.map +1 -0
- package/dist/fields/date/config.d.ts +57 -0
- package/dist/fields/date/config.d.ts.map +1 -0
- package/dist/fields/date/index.d.ts +5 -0
- package/dist/fields/date/index.d.ts.map +1 -0
- package/dist/fields/date/inputSchema.d.ts +29 -0
- package/dist/fields/date/inputSchema.d.ts.map +1 -0
- package/dist/fields/date/types.d.ts +147 -0
- package/dist/fields/date/types.d.ts.map +1 -0
- package/dist/fields/date/validator.d.ts +34 -0
- package/dist/fields/date/validator.d.ts.map +1 -0
- package/dist/fields/group/config.d.ts +47 -0
- package/dist/fields/group/config.d.ts.map +1 -0
- package/dist/fields/group/index.d.ts +5 -0
- package/dist/fields/group/index.d.ts.map +1 -0
- package/dist/fields/group/inputSchema.d.ts +27 -0
- package/dist/fields/group/inputSchema.d.ts.map +1 -0
- package/dist/fields/group/types.d.ts +105 -0
- package/dist/fields/group/types.d.ts.map +1 -0
- package/dist/fields/group/validator.d.ts +41 -0
- package/dist/fields/group/validator.d.ts.map +1 -0
- package/dist/fields/index.d.ts +20 -0
- package/dist/fields/index.d.ts.map +1 -0
- package/dist/fields/inputSchemas/index.d.ts +23 -0
- package/dist/fields/inputSchemas/index.d.ts.map +1 -0
- package/dist/fields/inputSchemas/utils.d.ts +25 -0
- package/dist/fields/inputSchemas/utils.d.ts.map +1 -0
- package/dist/fields/interfaceGen.d.ts +15 -0
- package/dist/fields/interfaceGen.d.ts.map +1 -0
- package/dist/fields/number/config.d.ts +48 -0
- package/dist/fields/number/config.d.ts.map +1 -0
- package/dist/fields/number/index.d.ts +5 -0
- package/dist/fields/number/index.d.ts.map +1 -0
- package/dist/fields/number/inputSchema.d.ts +23 -0
- package/dist/fields/number/inputSchema.d.ts.map +1 -0
- package/dist/fields/number/types.d.ts +100 -0
- package/dist/fields/number/types.d.ts.map +1 -0
- package/dist/fields/number/validator.d.ts +39 -0
- package/dist/fields/number/validator.d.ts.map +1 -0
- package/dist/fields/relationship/config.d.ts +45 -0
- package/dist/fields/relationship/config.d.ts.map +1 -0
- package/dist/fields/relationship/index.d.ts +5 -0
- package/dist/fields/relationship/index.d.ts.map +1 -0
- package/dist/fields/relationship/inputSchema.d.ts +31 -0
- package/dist/fields/relationship/inputSchema.d.ts.map +1 -0
- package/dist/fields/relationship/types.d.ts +126 -0
- package/dist/fields/relationship/types.d.ts.map +1 -0
- package/dist/fields/relationship/validator.d.ts +27 -0
- package/dist/fields/relationship/validator.d.ts.map +1 -0
- package/dist/fields/select/config.d.ts +59 -0
- package/dist/fields/select/config.d.ts.map +1 -0
- package/dist/fields/select/index.d.ts +5 -0
- package/dist/fields/select/index.d.ts.map +1 -0
- package/dist/fields/select/inputSchema.d.ts +28 -0
- package/dist/fields/select/inputSchema.d.ts.map +1 -0
- package/dist/fields/select/types.d.ts +89 -0
- package/dist/fields/select/types.d.ts.map +1 -0
- package/dist/fields/select/validator.d.ts +31 -0
- package/dist/fields/select/validator.d.ts.map +1 -0
- package/dist/fields/text/config.d.ts +48 -0
- package/dist/fields/text/config.d.ts.map +1 -0
- package/dist/fields/text/index.d.ts +5 -0
- package/dist/fields/text/index.d.ts.map +1 -0
- package/dist/fields/text/inputSchema.d.ts +24 -0
- package/dist/fields/text/inputSchema.d.ts.map +1 -0
- package/dist/fields/text/types.d.ts +132 -0
- package/dist/fields/text/types.d.ts.map +1 -0
- package/dist/fields/text/validator.d.ts +39 -0
- package/dist/fields/text/validator.d.ts.map +1 -0
- package/dist/fields/types.d.ts +135 -0
- package/dist/fields/types.d.ts.map +1 -0
- package/dist/fields/upload/config.d.ts +24 -0
- package/dist/fields/upload/config.d.ts.map +1 -0
- package/dist/fields/upload/index.d.ts +5 -0
- package/dist/fields/upload/index.d.ts.map +1 -0
- package/dist/fields/upload/inputSchema.d.ts +17 -0
- package/dist/fields/upload/inputSchema.d.ts.map +1 -0
- package/dist/fields/upload/types.d.ts +78 -0
- package/dist/fields/upload/types.d.ts.map +1 -0
- package/dist/fields/upload/validator.d.ts +16 -0
- package/dist/fields/upload/validator.d.ts.map +1 -0
- package/dist/fields/url/config.d.ts +49 -0
- package/dist/fields/url/config.d.ts.map +1 -0
- package/dist/fields/url/index.d.ts +5 -0
- package/dist/fields/url/index.d.ts.map +1 -0
- package/dist/fields/url/inputSchema.d.ts +31 -0
- package/dist/fields/url/inputSchema.d.ts.map +1 -0
- package/dist/fields/url/types.d.ts +70 -0
- package/dist/fields/url/types.d.ts.map +1 -0
- package/dist/fields/url/validator.d.ts +37 -0
- package/dist/fields/url/validator.d.ts.map +1 -0
- package/dist/fields/utils.d.ts +47 -0
- package/dist/fields/utils.d.ts.map +1 -0
- package/dist/fields/validators/index.d.ts +23 -0
- package/dist/fields/validators/index.d.ts.map +1 -0
- package/dist/fields/validators/utils.d.ts +24 -0
- package/dist/fields/validators/utils.d.ts.map +1 -0
- package/dist/framework.d.ts +227 -0
- package/dist/framework.d.ts.map +1 -0
- package/dist/globals/config/config.d.ts +1 -0
- package/dist/globals/config/config.d.ts.map +1 -0
- package/dist/globals/config/types.d.ts +1 -0
- package/dist/globals/config/types.d.ts.map +1 -0
- package/dist/globals/config.d.ts +47 -0
- package/dist/globals/config.d.ts.map +1 -0
- package/dist/globals/index.d.ts +5 -0
- package/dist/globals/index.d.ts.map +1 -0
- package/dist/globals/interfaceGen.d.ts +33 -0
- package/dist/globals/interfaceGen.d.ts.map +1 -0
- package/dist/globals/types.d.ts +175 -0
- package/dist/globals/types.d.ts.map +1 -0
- package/dist/globals/utils.d.ts +37 -0
- package/dist/globals/utils.d.ts.map +1 -0
- package/dist/index.d.ts +15 -3165
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2101 -3475
- package/dist/index.js.map +1 -1
- package/dist/media/api/index.d.ts +5 -0
- package/dist/media/api/index.d.ts.map +1 -0
- package/dist/media/api/mutations.d.ts +76 -0
- package/dist/media/api/mutations.d.ts.map +1 -0
- package/dist/media/api/queries.d.ts +28 -0
- package/dist/media/api/queries.d.ts.map +1 -0
- package/dist/media/api/server.d.ts +68 -0
- package/dist/media/api/server.d.ts.map +1 -0
- package/dist/media/api/types.d.ts +171 -0
- package/dist/media/api/types.d.ts.map +1 -0
- package/dist/media/config.d.ts +25 -0
- package/dist/media/config.d.ts.map +1 -0
- package/dist/media/index.d.ts +6 -0
- package/dist/media/index.d.ts.map +1 -0
- package/dist/media/types.d.ts +332 -0
- package/dist/media/types.d.ts.map +1 -0
- package/dist/media/utils.d.ts +35 -0
- package/dist/media/utils.d.ts.map +1 -0
- package/dist/media/validators.d.ts +61 -0
- package/dist/media/validators.d.ts.map +1 -0
- package/dist/schema/generateVexSchema.d.ts +36 -0
- package/dist/schema/generateVexSchema.d.ts.map +1 -0
- package/dist/schema/index.d.ts +3 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/migrate.d.ts +73 -0
- package/dist/schema/migrate.d.ts.map +1 -0
- package/dist/types/generateVexTypes.d.ts +41 -0
- package/dist/types/generateVexTypes.d.ts.map +1 -0
- package/dist/types/generated.d.ts +382 -0
- package/dist/types/generated.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils.d.ts +57 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +67 -24
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type GenericDataModel, GenericQueryCtx } from "convex/server";
|
|
2
|
+
import { type GenericId } from "convex/values";
|
|
3
|
+
import { type VexConfig } from "../config";
|
|
4
|
+
import { type CollectionSlug } from "../types";
|
|
5
|
+
import { VexAccessConfig } from "../access";
|
|
6
|
+
import { AccessCallOptions } from "./types";
|
|
7
|
+
/**
|
|
8
|
+
* Resolves the access config and action for one server-function call.
|
|
9
|
+
*
|
|
10
|
+
* Single seam for `access.action` / `access.bypass`. Bypass returns `undefined` for
|
|
11
|
+
* `access`, which is the documented "RBAC not configured" path — no separate enforcement
|
|
12
|
+
* branch exists or should be added.
|
|
13
|
+
*
|
|
14
|
+
* @param props.config - Resolved Vex config; `config.access` supplies the matrix.
|
|
15
|
+
* @param props.access - Per-call overrides.
|
|
16
|
+
* @param props.defaultAction - The function's natural verb.
|
|
17
|
+
* @param props.resource - Subject slug: the custom-action lookup key, and the name the
|
|
18
|
+
* dev warnings report.
|
|
19
|
+
* @returns The access config to enforce (`undefined` when bypassed) and the action to check.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveAccessCall<A extends string>(props: {
|
|
22
|
+
config?: VexConfig;
|
|
23
|
+
access?: AccessCallOptions<A>;
|
|
24
|
+
defaultAction: A;
|
|
25
|
+
resource: string;
|
|
26
|
+
}): {
|
|
27
|
+
access: VexAccessConfig | undefined;
|
|
28
|
+
action: A;
|
|
29
|
+
resource: string;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Resolves the collection slug that owns a document `id` by probing
|
|
33
|
+
* `ctx.db.normalizeId` against every registered collection.
|
|
34
|
+
*
|
|
35
|
+
* A Convex `Id` does not expose its table name at runtime. `get/server.ts`'s
|
|
36
|
+
* D12 comment documents the same constraint for depth-populate, where
|
|
37
|
+
* degrading to "unresolvable" is safe (populate is simply skipped). It is
|
|
38
|
+
* NOT safe here — `get`, `update`, and `remove` gate a real permission
|
|
39
|
+
* check — so this resolves the slug via the `ctx.db.normalizeId(tableName, id)`
|
|
40
|
+
* syscall instead of string-parsing the id. Unlike the D12 trick, this works
|
|
41
|
+
* identically in `convex-test` and production Convex.
|
|
42
|
+
*
|
|
43
|
+
* @param props.ctx - Query or mutation context — only `ctx.db.normalizeId` is used.
|
|
44
|
+
* @param props.config - The resolved `VexConfig`, to enumerate candidate collections.
|
|
45
|
+
* @param props.id - The document id to resolve.
|
|
46
|
+
* @returns The owning collection's slug.
|
|
47
|
+
* @throws {Error} When no registered collection claims the id (e.g. an id for a
|
|
48
|
+
* non-collection table like `vex_globals`, or a stale id from a deleted collection).
|
|
49
|
+
* Callers gate the permission check behind this, so an unresolvable id is a hard error,
|
|
50
|
+
* not a silent skip.
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveCollectionSlug<DataModel extends GenericDataModel>(props: {
|
|
53
|
+
ctx: GenericQueryCtx<DataModel>;
|
|
54
|
+
config?: VexConfig;
|
|
55
|
+
id: GenericId<CollectionSlug>;
|
|
56
|
+
}): CollectionSlug;
|
|
57
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/api/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAwD,eAAe,EAAE,MAAM,WAAW,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE;IACzD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG;IAAE,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAkDvE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,SAAS,gBAAgB,EAAE,KAAK,EAAE;IAC/E,GAAG,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,EAAE,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;CAC/B,GAAG,cAAc,CASjB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CollectionConfig } from "../collections";
|
|
2
|
+
import { type AuthCollectionConfig } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Merges auth collections with user-defined collections, respecting
|
|
5
|
+
* `protected` at the collection level and `meta.locked` on individual fields.
|
|
6
|
+
*
|
|
7
|
+
* Merge rules:
|
|
8
|
+
* 1. User collections that match a `protected` auth slug throw an error.
|
|
9
|
+
* 2. Iterate remaining user collections in their declared order.
|
|
10
|
+
* 3. If a user collection's slug matches an auth collection:
|
|
11
|
+
* - Auth fields with `meta.locked === true` are preserved.
|
|
12
|
+
* - All other fields: user field wins (override or extend).
|
|
13
|
+
* - Admin config: user collection wins.
|
|
14
|
+
* - The merged collection appears at the user's declared position.
|
|
15
|
+
* 4. Auth collections with no matching user collection are appended at the end.
|
|
16
|
+
* 5. User collections with no matching auth collection are added as-is.
|
|
17
|
+
*
|
|
18
|
+
* @param props — authCollections, userCollections
|
|
19
|
+
* @param props.authCollections — Collections from the auth adapter.
|
|
20
|
+
* @param props.userCollections — Collections defined by the user.
|
|
21
|
+
* @throws VexAuthConfigError when users pass a protected collection slug.
|
|
22
|
+
* @returns Merged collections array for `VexConfig`.
|
|
23
|
+
*/
|
|
24
|
+
export declare function mergeAuthCollections(props: {
|
|
25
|
+
authCollections: AuthCollectionConfig[];
|
|
26
|
+
userCollections: CollectionConfig[];
|
|
27
|
+
}): CollectionConfig[];
|
|
28
|
+
//# sourceMappingURL=mergeCollections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeCollections.d.ts","sourceRoot":"","sources":["../../src/auth/mergeCollections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,SAAS,CAAC;AAGjB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,eAAe,EAAE,oBAAoB,EAAE,CAAC;IACxC,eAAe,EAAE,gBAAgB,EAAE,CAAC;CACrC,GAAG,gBAAgB,EAAE,CAsCrB"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { CollectionConfig } from "../collections";
|
|
2
|
+
import { ComponentHKT } from "../fields";
|
|
3
|
+
import { CollectionSlug } from "../types";
|
|
4
|
+
/**
|
|
5
|
+
* Metadata attached to auth fields to control merge behavior during
|
|
6
|
+
* auth collection merging.
|
|
7
|
+
*
|
|
8
|
+
* When `locked: true`, the field definition from the auth adapter is
|
|
9
|
+
* preserved and cannot be overridden by a user-defined collection.
|
|
10
|
+
* Unlocked fields can be extended or replaced by the user.
|
|
11
|
+
*
|
|
12
|
+
* @see {@link mergeAuthCollections} for the merge logic that respects this flag
|
|
13
|
+
* @see {@link better-auth/src!betterAuthAdapter} for the adapter that sets `locked` on system fields
|
|
14
|
+
*/
|
|
15
|
+
export interface AuthFieldMeta {
|
|
16
|
+
/** When `true`, this field cannot be overridden by user-defined collections. */
|
|
17
|
+
locked: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Metadata attached to auth collections to control merge behavior with
|
|
21
|
+
* user-defined collections.
|
|
22
|
+
*
|
|
23
|
+
* Auth adapters mark collections as `protected` to prevent accidental
|
|
24
|
+
* overrides that could break authentication.
|
|
25
|
+
*/
|
|
26
|
+
export type AuthCollectionMeta = {
|
|
27
|
+
/**
|
|
28
|
+
* When `true`, this auth collection cannot be overridden by a user-defined
|
|
29
|
+
* collection with the same slug. Attempting to do so throws a
|
|
30
|
+
* {@link VexAuthConfigError}.
|
|
31
|
+
*
|
|
32
|
+
* When `false` or omitted, user-defined collections can extend or
|
|
33
|
+
* override this auth collection (unlocked fields can still be overridden,
|
|
34
|
+
* but locked fields are preserved — see {@link AuthFieldMeta}).
|
|
35
|
+
*/
|
|
36
|
+
protected?: boolean;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Auth collection config — extends `CollectionConfig` with field-level
|
|
40
|
+
* locking so auth adapters can protect fields that must not be overridden.
|
|
41
|
+
*/
|
|
42
|
+
export type AuthCollectionConfig<TCollectionSlug extends CollectionSlug = CollectionSlug, TFieldSlug extends string = string, TComponent extends ComponentHKT = ComponentHKT> = CollectionConfig<AuthFieldMeta, AuthCollectionMeta, TCollectionSlug, TFieldSlug, TComponent>;
|
|
43
|
+
/**
|
|
44
|
+
* Auth adapter returned by an auth provider package (e.g. `@vexcms/better-auth`).
|
|
45
|
+
*
|
|
46
|
+
* The adapter exposes auth collections as standard Vex `CollectionConfig[]`
|
|
47
|
+
* so that schema generation, admin navigation, and CRUD views treat them
|
|
48
|
+
* identically to user-defined collections.
|
|
49
|
+
*
|
|
50
|
+
* @see {@link better-auth/src!betterAuthAdapter} — the Better Auth implementation
|
|
51
|
+
*/
|
|
52
|
+
export interface VexAuthAdapter {
|
|
53
|
+
/** Provider identifier for debugging and telemetry. */
|
|
54
|
+
readonly name: string;
|
|
55
|
+
/**
|
|
56
|
+
* Auth collections to register alongside user-defined collections.
|
|
57
|
+
*
|
|
58
|
+
* These are merged into `VexConfig.collections` automatically by
|
|
59
|
+
* `defineConfig()`. Each collection uses standard Vex field builders
|
|
60
|
+
* (`text()`, `relationship()`, etc.) and may carry `admin.readOnly`
|
|
61
|
+
* defaults on system fields.
|
|
62
|
+
*/
|
|
63
|
+
readonly collections: AuthCollectionConfig[];
|
|
64
|
+
/**
|
|
65
|
+
* The slug of the collection that stores user documents.
|
|
66
|
+
*
|
|
67
|
+
* Used by the admin panel to resolve user references and by auth-aware
|
|
68
|
+
* components to look up the current user collection.
|
|
69
|
+
*/
|
|
70
|
+
readonly userCollection: CollectionSlug;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Error thrown when auth configuration is invalid or when a user-defined
|
|
74
|
+
* collection attempts to override a protected auth collection.
|
|
75
|
+
*
|
|
76
|
+
* @see {@link mergeAuthCollections} for the merge logic that throws this error
|
|
77
|
+
*/
|
|
78
|
+
export declare class VexAuthConfigError extends Error {
|
|
79
|
+
/**
|
|
80
|
+
* @param message — Human-readable description of the configuration error.
|
|
81
|
+
*/
|
|
82
|
+
constructor(message: string);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,CAC9B,eAAe,SAAS,cAAc,GAAG,cAAc,EACvD,UAAU,SAAS,MAAM,GAAG,MAAM,EAClC,UAAU,SAAS,YAAY,GAAG,YAAY,IAC5C,gBAAgB,CAClB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,UAAU,CACX,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IAE7C;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CACzC;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C;;OAEG;gBACS,OAAO,EAAE,MAAM;CAI5B"}
|