@verdant-web/common 2.0.3 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/presence.d.ts +2 -0
- package/dist/cjs/schema/defaults.test.js +16 -3
- package/dist/cjs/schema/defaults.test.js.map +1 -1
- package/dist/cjs/schema/fieldHelpers.d.ts +35 -0
- package/dist/cjs/schema/fieldHelpers.js +38 -0
- package/dist/cjs/schema/fieldHelpers.js.map +1 -0
- package/dist/cjs/schema/fields.js +13 -2
- package/dist/cjs/schema/fields.js.map +1 -1
- package/dist/cjs/schema/index.d.ts +44 -0
- package/dist/cjs/schema/index.js +10 -0
- package/dist/cjs/schema/index.js.map +1 -1
- package/dist/cjs/schema/types/compounds.d.ts +1 -1
- package/dist/cjs/schema/types/fields.d.ts +9 -8
- package/dist/cjs/schema/types/shapes.d.ts +5 -2
- package/dist/cjs/schema/validation.js.map +1 -1
- package/dist/esm/presence.d.ts +2 -0
- package/dist/esm/schema/defaults.test.js +16 -3
- package/dist/esm/schema/defaults.test.js.map +1 -1
- package/dist/esm/schema/fieldHelpers.d.ts +35 -0
- package/dist/esm/schema/fieldHelpers.js +35 -0
- package/dist/esm/schema/fieldHelpers.js.map +1 -0
- package/dist/esm/schema/fields.js +13 -2
- package/dist/esm/schema/fields.js.map +1 -1
- package/dist/esm/schema/index.d.ts +44 -0
- package/dist/esm/schema/index.js +7 -0
- package/dist/esm/schema/index.js.map +1 -1
- package/dist/esm/schema/types/compounds.d.ts +1 -1
- package/dist/esm/schema/types/fields.d.ts +9 -8
- package/dist/esm/schema/types/shapes.d.ts +5 -2
- package/dist/esm/schema/validation.js.map +1 -1
- package/dist/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/presence.ts +2 -0
- package/src/schema/defaults.test.ts +18 -4
- package/src/schema/fieldHelpers.ts +106 -0
- package/src/schema/fields.ts +23 -3
- package/src/schema/index.ts +7 -0
- package/src/schema/types/compounds.ts +2 -2
- package/src/schema/types/fields.ts +15 -13
- package/src/schema/types/shapes.ts +9 -5
- package/src/schema/validation.ts +8 -2
package/dist/cjs/presence.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export interface UserInfo<Profile, Presence> {
|
|
2
2
|
/**
|
|
3
|
+
* @deprecated - include the ID in your Profile data instead.
|
|
4
|
+
*
|
|
3
5
|
* This is the ID representing the user who is utilizing a
|
|
4
6
|
* replica client to connect to the storage network.
|
|
5
7
|
* One user may have multiple replica clients active at once,
|
|
@@ -3,19 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const vitest_1 = require("vitest");
|
|
4
4
|
const fields_js_1 = require("./fields.js");
|
|
5
5
|
const oids_js_1 = require("../oids.js");
|
|
6
|
+
const fieldHelpers_js_1 = require("./fieldHelpers.js");
|
|
6
7
|
(0, vitest_1.describe)('getting field defaults', () => {
|
|
7
8
|
(0, vitest_1.it)('does not apply the same oid from the previous application', () => {
|
|
8
|
-
const field = {
|
|
9
|
-
type: 'any',
|
|
9
|
+
const field = fieldHelpers_js_1.fields.any({
|
|
10
10
|
default: {
|
|
11
11
|
id: '123',
|
|
12
12
|
name: 'test',
|
|
13
13
|
},
|
|
14
|
-
};
|
|
14
|
+
});
|
|
15
15
|
const first = (0, fields_js_1.getFieldDefault)(field);
|
|
16
16
|
(0, oids_js_1.assignOid)(first, (0, oids_js_1.createOid)('test', '1'));
|
|
17
17
|
const second = (0, fields_js_1.getFieldDefault)(field);
|
|
18
18
|
(0, vitest_1.expect)((0, oids_js_1.maybeGetOid)(second)).toBe(undefined);
|
|
19
19
|
});
|
|
20
|
+
(0, vitest_1.it)('defaults nested fields', () => {
|
|
21
|
+
const field = fieldHelpers_js_1.fields.object({
|
|
22
|
+
default: {},
|
|
23
|
+
properties: {
|
|
24
|
+
foo: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
default: 'bar',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
const defaults = (0, fields_js_1.getFieldDefault)(field);
|
|
31
|
+
(0, vitest_1.expect)(defaults).toEqual({ foo: 'bar' });
|
|
32
|
+
});
|
|
20
33
|
});
|
|
21
34
|
//# sourceMappingURL=defaults.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.test.js","sourceRoot":"","sources":["../../../src/schema/defaults.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,2CAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"defaults.test.js","sourceRoot":"","sources":["../../../src/schema/defaults.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,2CAA8C;AAC9C,wCAA+D;AAC/D,uDAA2C;AAE3C,IAAA,iBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,IAAA,WAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;QACpE,MAAM,KAAK,GAAG,wBAAM,CAAC,GAAG,CAAC;YACxB,OAAO,EAAE;gBACR,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,MAAM;aACZ;SACD,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,2BAAe,EAAC,KAAK,CAAC,CAAC;QACrC,IAAA,mBAAS,EAAC,KAAK,EAAE,IAAA,mBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAA,2BAAe,EAAC,KAAK,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,IAAA,qBAAW,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wBAAwB,EAAE,GAAG,EAAE;QACjC,MAAM,KAAK,GAAG,wBAAM,CAAC,MAAM,CAAC;YAC3B,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACX,GAAG,EAAE;oBACJ,IAAI,EAAE,QAAiB;oBACvB,OAAO,EAAE,KAAK;iBACd;aACD;SACD,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAA,2BAAe,EAAC,KAAK,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { NestedStorageFieldSchema, NestedStorageFieldsSchema, ShapeFromFieldsWithDefaults, StorageAnyFieldSchema, StorageArrayFieldSchema, StorageBooleanFieldSchema, StorageFileFieldSchema, StorageMapFieldSchema, StorageNumberFieldSchema, StorageObjectFieldSchema, StorageStringFieldSchema } from './types.js';
|
|
2
|
+
export declare const fields: {
|
|
3
|
+
object: <Props extends NestedStorageFieldsSchema>(args: {
|
|
4
|
+
properties: Props;
|
|
5
|
+
nullable?: boolean | undefined;
|
|
6
|
+
default?: ShapeFromFieldsWithDefaults<Props> | (() => ShapeFromFieldsWithDefaults<Props>) | undefined;
|
|
7
|
+
}) => StorageObjectFieldSchema<Props>;
|
|
8
|
+
array: <T extends NestedStorageFieldSchema>(args: {
|
|
9
|
+
items: T;
|
|
10
|
+
nullable?: boolean | undefined;
|
|
11
|
+
}) => StorageArrayFieldSchema<T>;
|
|
12
|
+
string: (args?: {
|
|
13
|
+
nullable?: boolean;
|
|
14
|
+
default?: string | (() => string);
|
|
15
|
+
options?: string[];
|
|
16
|
+
}) => StorageStringFieldSchema;
|
|
17
|
+
number: (args?: {
|
|
18
|
+
nullable?: boolean;
|
|
19
|
+
default?: number | (() => number);
|
|
20
|
+
}) => StorageNumberFieldSchema;
|
|
21
|
+
boolean: (args?: {
|
|
22
|
+
nullable?: boolean;
|
|
23
|
+
default?: boolean | (() => boolean);
|
|
24
|
+
}) => StorageBooleanFieldSchema;
|
|
25
|
+
any: <TShape>(args?: {
|
|
26
|
+
default?: TShape | undefined;
|
|
27
|
+
} | undefined) => StorageAnyFieldSchema<TShape>;
|
|
28
|
+
map: <T_1 extends NestedStorageFieldSchema>(args: {
|
|
29
|
+
values: T_1;
|
|
30
|
+
}) => StorageMapFieldSchema<T_1>;
|
|
31
|
+
file: (args?: {
|
|
32
|
+
nullable?: boolean;
|
|
33
|
+
downloadRemote?: boolean;
|
|
34
|
+
}) => StorageFileFieldSchema;
|
|
35
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fields = void 0;
|
|
4
|
+
const objectField = (args) => {
|
|
5
|
+
return Object.assign({ type: 'object' }, args);
|
|
6
|
+
};
|
|
7
|
+
const arrayField = (args) => {
|
|
8
|
+
return Object.assign({ type: 'array' }, args);
|
|
9
|
+
};
|
|
10
|
+
const stringField = (args) => {
|
|
11
|
+
return Object.assign({ type: 'string' }, args);
|
|
12
|
+
};
|
|
13
|
+
const numberField = (args) => {
|
|
14
|
+
return Object.assign({ type: 'number' }, args);
|
|
15
|
+
};
|
|
16
|
+
const booleanField = (args) => {
|
|
17
|
+
return Object.assign({ type: 'boolean' }, args);
|
|
18
|
+
};
|
|
19
|
+
const anyField = (args) => {
|
|
20
|
+
return Object.assign({ type: 'any' }, args);
|
|
21
|
+
};
|
|
22
|
+
const mapField = (args) => {
|
|
23
|
+
return Object.assign({ type: 'map' }, args);
|
|
24
|
+
};
|
|
25
|
+
const fileField = (args) => {
|
|
26
|
+
return Object.assign({ type: 'file' }, args);
|
|
27
|
+
};
|
|
28
|
+
exports.fields = {
|
|
29
|
+
object: objectField,
|
|
30
|
+
array: arrayField,
|
|
31
|
+
string: stringField,
|
|
32
|
+
number: numberField,
|
|
33
|
+
boolean: booleanField,
|
|
34
|
+
any: anyField,
|
|
35
|
+
map: mapField,
|
|
36
|
+
file: fileField,
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=fieldHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldHelpers.js","sourceRoot":"","sources":["../../../src/schema/fieldHelpers.ts"],"names":[],"mappings":";;;AAcA,MAAM,WAAW,GAAG,CAA0C,IAM7D,EAAmC,EAAE;IACrC,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAqC,IAGvD,EAA8B,EAAE;IAChC,uBACC,IAAI,EAAE,OAAO,IACV,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAIpB,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAGpB,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAGrB,EAA6B,EAAE;IAC/B,uBACC,IAAI,EAAE,SAAS,IACZ,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAS,IAEzB,EAAiC,EAAE;IACnC,uBACC,IAAI,EAAE,KAAK,IACR,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAqC,IAErD,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,KAAK,IACR,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAGlB,EAA0B,EAAE;IAC5B,uBACC,IAAI,EAAE,MAAM,IACT,IAAI,EACN;AACH,CAAC,CAAC;AAEW,QAAA,MAAM,GAAG;IACrB,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;IACrB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;CACf,CAAC"}
|
|
@@ -20,8 +20,6 @@ function hasDefault(field) {
|
|
|
20
20
|
return true;
|
|
21
21
|
if (field.type === 'file')
|
|
22
22
|
return false;
|
|
23
|
-
if (field.type === 'object')
|
|
24
|
-
return false;
|
|
25
23
|
return field.default !== undefined;
|
|
26
24
|
}
|
|
27
25
|
exports.hasDefault = hasDefault;
|
|
@@ -137,6 +135,19 @@ function getFieldDefault(field) {
|
|
|
137
135
|
if (field.type !== 'any' && field.nullable) {
|
|
138
136
|
return null;
|
|
139
137
|
}
|
|
138
|
+
if (field.type === 'object' && field.default) {
|
|
139
|
+
const defaultValue =
|
|
140
|
+
// @ts-ignore
|
|
141
|
+
typeof field.default === 'function'
|
|
142
|
+
? field.default()
|
|
143
|
+
: JSON.parse(JSON.stringify(field.default));
|
|
144
|
+
for (const [key, property] of Object.entries(field.properties)) {
|
|
145
|
+
if (defaultValue[key] === undefined) {
|
|
146
|
+
defaultValue[key] = getFieldDefault(property);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return defaultValue;
|
|
150
|
+
}
|
|
140
151
|
return undefined;
|
|
141
152
|
}
|
|
142
153
|
exports.getFieldDefault = getFieldDefault;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/schema/fields.ts"],"names":[],"mappings":";;;AAAA,wCAAqD;AACrD,0CAAuC;
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/schema/fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,50 @@ export declare function collection<Fields extends StorageFieldsSchema, Synthetic
|
|
|
3
3
|
export declare function schema<Schema extends StorageSchema<{
|
|
4
4
|
[key: string]: StorageCollectionSchema<any, any, any>;
|
|
5
5
|
}>>(input: Schema): StorageSchema;
|
|
6
|
+
export declare namespace schema {
|
|
7
|
+
var collection: typeof import("./index.js").collection;
|
|
8
|
+
var fields: {
|
|
9
|
+
object: <Props extends import("./types.js").NestedStorageFieldsSchema>(args: {
|
|
10
|
+
properties: Props;
|
|
11
|
+
nullable?: boolean | undefined;
|
|
12
|
+
default?: import("./types.js").ShapeFromFieldsWithDefaults<Props> | (() => import("./types.js").ShapeFromFieldsWithDefaults<Props>) | undefined;
|
|
13
|
+
}) => import("./types.js").StorageObjectFieldSchema<Props>;
|
|
14
|
+
array: <T extends import("./types.js").NestedStorageFieldSchema>(args: {
|
|
15
|
+
items: T;
|
|
16
|
+
nullable?: boolean | undefined;
|
|
17
|
+
}) => import("./types.js").StorageArrayFieldSchema<T>;
|
|
18
|
+
string: (args?: {
|
|
19
|
+
nullable?: boolean | undefined;
|
|
20
|
+
default?: string | (() => string) | undefined;
|
|
21
|
+
options?: string[] | undefined;
|
|
22
|
+
} | undefined) => import("./types.js").StorageStringFieldSchema;
|
|
23
|
+
number: (args?: {
|
|
24
|
+
nullable?: boolean | undefined;
|
|
25
|
+
default?: number | (() => number) | undefined;
|
|
26
|
+
} | undefined) => import("./types.js").StorageNumberFieldSchema;
|
|
27
|
+
boolean: (args?: {
|
|
28
|
+
nullable?: boolean | undefined;
|
|
29
|
+
default?: boolean | (() => boolean) | undefined;
|
|
30
|
+
} | undefined) => import("./types.js").StorageBooleanFieldSchema;
|
|
31
|
+
any: <TShape>(args?: {
|
|
32
|
+
default?: TShape | undefined;
|
|
33
|
+
} | undefined) => import("./types.js").StorageAnyFieldSchema<TShape>;
|
|
34
|
+
map: <T_1 extends import("./types.js").NestedStorageFieldSchema>(args: {
|
|
35
|
+
values: T_1;
|
|
36
|
+
}) => import("./types.js").StorageMapFieldSchema<T_1>;
|
|
37
|
+
file: (args?: {
|
|
38
|
+
nullable?: boolean | undefined;
|
|
39
|
+
downloadRemote?: boolean | undefined;
|
|
40
|
+
} | undefined) => import("./types.js").StorageFileFieldSchema;
|
|
41
|
+
};
|
|
42
|
+
var generated: {
|
|
43
|
+
id: (() => string) & {
|
|
44
|
+
slug: () => string;
|
|
45
|
+
isCuid: (cuid: string) => boolean;
|
|
46
|
+
isSlug: (slug: string) => boolean;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
}
|
|
6
50
|
export * from './types.js';
|
|
7
51
|
export * from './indexFilters.js';
|
|
8
52
|
export * from './fields.js';
|
package/dist/cjs/schema/index.js
CHANGED
|
@@ -24,9 +24,14 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
24
24
|
}
|
|
25
25
|
return t;
|
|
26
26
|
};
|
|
27
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
28
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
29
|
+
};
|
|
27
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
31
|
exports.schema = exports.collection = void 0;
|
|
29
32
|
const fields_js_1 = require("./fields.js");
|
|
33
|
+
const fieldHelpers_js_1 = require("./fieldHelpers.js");
|
|
34
|
+
const cuid_1 = __importDefault(require("cuid"));
|
|
30
35
|
function collection(_a) {
|
|
31
36
|
var { synthetics, indexes } = _a, input = __rest(_a, ["synthetics", "indexes"]);
|
|
32
37
|
// back compat - copy synthetics in with indexes
|
|
@@ -46,6 +51,11 @@ function schema(input) {
|
|
|
46
51
|
return input;
|
|
47
52
|
}
|
|
48
53
|
exports.schema = schema;
|
|
54
|
+
schema.collection = collection;
|
|
55
|
+
schema.fields = fieldHelpers_js_1.fields;
|
|
56
|
+
schema.generated = {
|
|
57
|
+
id: cuid_1.default,
|
|
58
|
+
};
|
|
49
59
|
__exportStar(require("./types.js"), exports);
|
|
50
60
|
__exportStar(require("./indexFilters.js"), exports);
|
|
51
61
|
__exportStar(require("./fields.js"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAwC;AAUxC,uDAA2C;AAC3C,gDAAwB;AAExB,SAAgB,UAAU,CAIxB,EAQD;QARC,EACD,UAAU,EACV,OAAO,OAMP,EALG,KAAK,cAHP,yBAID,CADQ;IAMR,gDAAgD;IAChD,MAAM,YAAY,mCAAQ,UAAU,GAAK,OAAO,CAAE,CAAC;IACnD,kEAAkE;IAClE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACxD,IAAI,IAAA,qBAAS,EAAC,KAAK,CAAC,EAAE;YACrB,YAAY,CAAC,GAAG,CAAC,GAAG;gBACnB,KAAK,EAAE,GAAG;aAC8B,CAAC;SAC1C;KACD;IACD,uCACI,KAAK,KACR,OAAO,EAAE,YAA0B,IAClC;AACH,CAAC;AA3BD,gCA2BC;AAED,SAAgB,MAAM,CAOpB,KAAa;IACd,OAAO,KAAK,CAAC;AACd,CAAC;AATD,wBASC;AACD,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AAC/B,MAAM,CAAC,MAAM,GAAG,wBAAM,CAAC;AACvB,MAAM,CAAC,SAAS,GAAG;IAClB,EAAE,EAAE,cAAI;CACR,CAAC;AAEF,6CAA2B;AAE3B,oDAAkC;AAClC,8CAA4B;AAC5B,kDAAgC;AAChC,gDAA8B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NestedStorageBooleanFieldSchema, NestedStorageNumberFieldSchema, NestedStorageStringFieldSchema, StorageArrayFieldSchema, StorageFieldsSchema } from './fields.js';
|
|
2
2
|
import { DirectIndexableFieldName, StorageSyntheticIndices } from './synthetics.js';
|
|
3
3
|
declare type PrimitiveArrayFields<Fields extends StorageFieldsSchema> = {
|
|
4
|
-
[K in keyof Fields as Fields[K] extends StorageArrayFieldSchema ?
|
|
4
|
+
[K in keyof Fields as Fields[K] extends StorageArrayFieldSchema<infer U> ? U extends NestedStorageStringFieldSchema | NestedStorageNumberFieldSchema | NestedStorageBooleanFieldSchema ? K : never : never]: Fields[K];
|
|
5
5
|
};
|
|
6
6
|
declare type PrimitiveArrayFieldName<Fields extends StorageFieldsSchema> = Extract<keyof PrimitiveArrayFields<Fields>, string>;
|
|
7
7
|
export declare type CollectionCompoundIndex<Fields extends StorageFieldsSchema, Synthetics extends StorageSyntheticIndices<Fields>> = {
|
|
@@ -21,19 +21,20 @@ export declare type StorageBooleanFieldSchema = {
|
|
|
21
21
|
/** @deprecated - add an index to indexes with this field name. */
|
|
22
22
|
indexed?: boolean;
|
|
23
23
|
};
|
|
24
|
-
export declare type StorageArrayFieldSchema = {
|
|
24
|
+
export declare type StorageArrayFieldSchema<TItems extends NestedStorageFieldSchema> = {
|
|
25
25
|
type: 'array';
|
|
26
|
-
items:
|
|
26
|
+
items: TItems;
|
|
27
27
|
nullable?: boolean;
|
|
28
28
|
};
|
|
29
|
-
export declare type StorageObjectFieldSchema = {
|
|
29
|
+
export declare type StorageObjectFieldSchema<Props extends NestedStorageFieldsSchema> = {
|
|
30
30
|
type: 'object';
|
|
31
|
-
properties:
|
|
31
|
+
properties: Props;
|
|
32
32
|
nullable?: boolean;
|
|
33
|
+
default?: Record<string, any> | (() => Record<string, any>);
|
|
33
34
|
};
|
|
34
|
-
export declare type StorageAnyFieldSchema = {
|
|
35
|
+
export declare type StorageAnyFieldSchema<TShape = any> = {
|
|
35
36
|
type: 'any';
|
|
36
|
-
default?:
|
|
37
|
+
default?: TShape;
|
|
37
38
|
};
|
|
38
39
|
export declare type StorageMapFieldSchema<V extends NestedStorageFieldSchema> = {
|
|
39
40
|
type: 'map';
|
|
@@ -49,7 +50,7 @@ export declare type StorageFileFieldSchema = {
|
|
|
49
50
|
*/
|
|
50
51
|
downloadRemote?: boolean;
|
|
51
52
|
};
|
|
52
|
-
export declare type StorageFieldSchema = StorageStringFieldSchema | StorageNumberFieldSchema | StorageBooleanFieldSchema | StorageArrayFieldSchema | StorageObjectFieldSchema | StorageAnyFieldSchema | StorageMapFieldSchema<any> | StorageFileFieldSchema;
|
|
53
|
+
export declare type StorageFieldSchema = StorageStringFieldSchema | StorageNumberFieldSchema | StorageBooleanFieldSchema | StorageArrayFieldSchema<any> | StorageObjectFieldSchema<any> | StorageAnyFieldSchema | StorageMapFieldSchema<any> | StorageFileFieldSchema;
|
|
53
54
|
export declare type NestedStorageStringFieldSchema = {
|
|
54
55
|
type: 'string';
|
|
55
56
|
nullable?: boolean;
|
|
@@ -65,7 +66,7 @@ export declare type NestedStorageBooleanFieldSchema = {
|
|
|
65
66
|
nullable?: boolean;
|
|
66
67
|
default: boolean | (() => boolean);
|
|
67
68
|
};
|
|
68
|
-
export declare type NestedStorageFieldSchema = NestedStorageStringFieldSchema | NestedStorageNumberFieldSchema | NestedStorageBooleanFieldSchema | StorageArrayFieldSchema | StorageObjectFieldSchema | StorageAnyFieldSchema | StorageMapFieldSchema<any> | StorageFileFieldSchema;
|
|
69
|
+
export declare type NestedStorageFieldSchema = NestedStorageStringFieldSchema | NestedStorageNumberFieldSchema | NestedStorageBooleanFieldSchema | StorageArrayFieldSchema<any> | StorageObjectFieldSchema<any> | StorageAnyFieldSchema | StorageMapFieldSchema<any> | StorageFileFieldSchema;
|
|
69
70
|
export declare type StorageFieldsSchema = {
|
|
70
71
|
[key: string]: StorageFieldSchema;
|
|
71
72
|
};
|
|
@@ -3,7 +3,7 @@ import { NestedStorageFieldsSchema, StorageArrayFieldSchema, StorageFieldSchema,
|
|
|
3
3
|
declare type StoragePropertyIsNullable<T extends StorageFieldSchema> = T extends {
|
|
4
4
|
nullable?: boolean;
|
|
5
5
|
} ? T['nullable'] extends boolean ? true : false : T['type'] extends 'any' ? true : false;
|
|
6
|
-
export declare type BaseShapeFromProperty<T extends StorageFieldSchema> = T['type'] extends 'string' ? string : T['type'] extends 'number' ? number : T['type'] extends 'boolean' ? boolean : T extends StorageArrayFieldSchema ? ShapeFromProperty<
|
|
6
|
+
export declare type BaseShapeFromProperty<T extends StorageFieldSchema> = T['type'] extends 'string' ? string : T['type'] extends 'number' ? number : T['type'] extends 'boolean' ? boolean : T extends StorageArrayFieldSchema<infer U> ? ShapeFromProperty<U>[] : T extends StorageObjectFieldSchema<infer U> ? ShapeFromFields<U> : T extends StorageMapFieldSchema<any> ? Record<string, ShapeFromProperty<T['values']>> : T['type'] extends 'any' ? any : T['type'] extends 'file' ? File : never;
|
|
7
7
|
export declare type ShapeFromProperty<T extends StorageFieldSchema> = StoragePropertyIsNullable<T> extends true ? BaseShapeFromProperty<T> | null : BaseShapeFromProperty<T>;
|
|
8
8
|
export declare type ShapeFromFields<T extends StorageFieldsSchema | NestedStorageFieldsSchema> = {
|
|
9
9
|
[K in keyof T]: ShapeFromProperty<T[K]>;
|
|
@@ -12,10 +12,13 @@ export declare type StorageDocument<Collection extends StorageCollectionSchema<a
|
|
|
12
12
|
declare type StoragePropertyIsOptional<T extends StorageFieldSchema> = StoragePropertyIsNullable<T> extends true ? true : T extends {
|
|
13
13
|
default?: any;
|
|
14
14
|
} ? true : T['type'] extends 'any' ? true : T['type'] extends 'array' ? true : T['type'] extends 'map' ? true : false;
|
|
15
|
-
declare type ShapeFromFieldsWithDefaults<T extends StorageFieldsSchema | NestedStorageFieldsSchema> = {
|
|
15
|
+
export declare type ShapeFromFieldsWithDefaults<T extends StorageFieldsSchema | NestedStorageFieldsSchema> = {
|
|
16
16
|
[K in keyof T as StoragePropertyIsOptional<T[K]> extends true ? K : never]?: ShapeFromProperty<T[K]>;
|
|
17
17
|
} & {
|
|
18
18
|
[K in keyof T as StoragePropertyIsOptional<T[K]> extends true ? never : K]: ShapeFromProperty<T[K]>;
|
|
19
19
|
};
|
|
20
20
|
export declare type StorageDocumentInit<Collection extends StorageCollectionSchema<any, any, any>> = ShapeFromFieldsWithDefaults<Collection['fields']>;
|
|
21
|
+
export declare type FieldsFromShape<Shape extends Record<string, unknown>> = {
|
|
22
|
+
[K in keyof Shape]: StorageFieldSchema;
|
|
23
|
+
};
|
|
21
24
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/schema/validation.ts"],"names":[],"mappings":";;;AAAA,wCAAqC;AACrC,0CAAuC;AACvC,2CAAqD;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/schema/validation.ts"],"names":[],"mappings":";;;AAAA,wCAAqC;AACrC,0CAAuC;AACvC,2CAAqD;AAOrD,SAAgB,cAAc,CAC7B,MAA2B,EAC3B,MAAW;IAEX,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAClD,gEAAgE;QAChE,IAAI,GAAG,KAAK,iBAAO;YAAE,SAAS;QAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACjB,OAAO;gBACN,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,CAAC,GAAG,CAAC;gBAChB,OAAO,EAAE,kBAAkB,GAAG,GAAG;aACjC,CAAC;SACF;QACD,IAAI,KAAK,EAAE;YACV,MAAM,GAAG,GAAG,mBAAmB,CAAC;gBAC/B,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;gBAClB,KAAK;gBACL,SAAS,EAAE,CAAC,GAAG,CAAC;aAChB,CAAC,CAAC;YACH,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;SACpB;KACD;IACD,OAAO;AACR,CAAC;AAxBD,wCAwBC;AAaD,SAAgB,mBAAmB,CAAC,EACnC,KAAK,EACL,KAAK,EACL,SAAS,GAAG,EAAE,EACd,KAAK,EACL,eAAe,GAOf;IACA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO;IAE9C,IAAI,IAAA,sBAAU,EAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO;IAChD,IAAI,KAAK,KAAK,IAAI,EAAE;QACnB,IAAI,eAAe,IAAI,CAAC,IAAA,sBAAU,EAAC,KAAK,CAAC,EAAE;YAC1C,OAAO;gBACN,IAAI,EAAE,YAAY;gBAClB,SAAS;gBACT,OAAO,EAAE,gCAAgC,WAAW,CAAC,SAAS,CAAC,EAAE;aACjE,CAAC;SACF;KACD;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC5B,IAAI,CAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,EAAE;YACrB,OAAO;gBACN,IAAI,EAAE,cAAc;gBACpB,SAAS;gBACT,OAAO,EAAE,kBACR,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAC/B,cAAc,WAAW,CAAC,SAAS,CAAC,SAAS,KAAK,EAAE;aACpD,CAAC;SACF;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAC3C,KAAK,CAAC,UAAuC,CAC7C,EAAE;YACF,gEAAgE;YAChE,IAAI,GAAG,KAAK,iBAAO;gBAAE,SAAS;YAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;gBACf,mBAAmB,CAAC;oBACnB,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;oBACjB,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC;oBAC9B,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;iBAClD,CAAC,CAAC;aACH;SACD;QACD,4BAA4B;QAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC3B,OAAO;oBACN,IAAI,EAAE,aAAa;oBACnB,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC;oBAC9B,OAAO,EAAE,6BAA6B,GAAG,cAAc,WAAW,CACjE,SAAS,CACT,EAAE;iBACH,CAAC;aACF;SACD;KACD;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC1B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ;gBAAE,OAAO;YAC7C,OAAO;gBACN,IAAI,EAAE,eAAe;gBACrB,SAAS;gBACT,OAAO,EAAE,iBACR,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAC/B,cAAc,WAAW,CAAC,SAAS,CAAC,SAAS,KAAK,EAAE;aACpD,CAAC;SACF;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACzB,mBAAmB,CAAC;gBACnB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC;gBAC/B,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;aAClD,CAAC,CAAC;SACH;KACD;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;QAChC,IAAI,CAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,EAAE;YACrB,OAAO;gBACN,IAAI,EAAE,cAAc;gBACpB,SAAS;gBACT,OAAO,EAAE,0BAA0B,WAAW,CAC7C,SAAS,CACT,SAAS,KAAK,EAAE;aACjB,CAAC;SACF;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChD,mBAAmB,CAAC;gBACnB,KAAK,EAAE,KAAK,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC;gBAC9B,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;aAClD,CAAC,CAAC;SACH;KACD;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;QACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC9B,OAAO;gBACN,IAAI,EAAE,cAAc;gBACpB,SAAS;gBACT,OAAO,EAAE,mBACR,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAC/B,cAAc,WAAW,CAAC,SAAS,CAAC,SAAS,KAAK,EAAE;aACpD,CAAC;SACF;QACD,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACpD,OAAO;gBACN,IAAI,EAAE,eAAe;gBACrB,SAAS;gBACT,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,CAAC,IAAI,CAC7C,IAAI,CACJ,cAAc,WAAW,CAAC,SAAS,CAAC,SAAS,KAAK,EAAE;aACrD,CAAC;SACF;KACD;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;QACpC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;YAC/B,OAAO;gBACN,IAAI,EAAE,cAAc;gBACpB,SAAS;gBACT,OAAO,EAAE,oBACR,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAC/B,cAAc,WAAW,CAAC,SAAS,CAAC,SAAS,KAAK,EAAE;aACpD,CAAC;SACF;KACD;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;QACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC9B,OAAO;gBACN,IAAI,EAAE,cAAc;gBACpB,SAAS;gBACT,OAAO,EAAE,mBACR,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAC/B,cAAc,WAAW,CAAC,SAAS,CAAC,SAAS,KAAK,EAAE;aACpD,CAAC;SACF;KACD;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;QACjC,aAAa;KACb;AACF,CAAC;AA7ID,kDA6IC;AAED,SAAS,WAAW,CAAC,SAA8B;IAClD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1C,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC"}
|
package/dist/esm/presence.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export interface UserInfo<Profile, Presence> {
|
|
2
2
|
/**
|
|
3
|
+
* @deprecated - include the ID in your Profile data instead.
|
|
4
|
+
*
|
|
3
5
|
* This is the ID representing the user who is utilizing a
|
|
4
6
|
* replica client to connect to the storage network.
|
|
5
7
|
* One user may have multiple replica clients active at once,
|
|
@@ -1,19 +1,32 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
2
|
import { getFieldDefault } from './fields.js';
|
|
3
3
|
import { assignOid, createOid, maybeGetOid } from '../oids.js';
|
|
4
|
+
import { fields } from './fieldHelpers.js';
|
|
4
5
|
describe('getting field defaults', () => {
|
|
5
6
|
it('does not apply the same oid from the previous application', () => {
|
|
6
|
-
const field = {
|
|
7
|
-
type: 'any',
|
|
7
|
+
const field = fields.any({
|
|
8
8
|
default: {
|
|
9
9
|
id: '123',
|
|
10
10
|
name: 'test',
|
|
11
11
|
},
|
|
12
|
-
};
|
|
12
|
+
});
|
|
13
13
|
const first = getFieldDefault(field);
|
|
14
14
|
assignOid(first, createOid('test', '1'));
|
|
15
15
|
const second = getFieldDefault(field);
|
|
16
16
|
expect(maybeGetOid(second)).toBe(undefined);
|
|
17
17
|
});
|
|
18
|
+
it('defaults nested fields', () => {
|
|
19
|
+
const field = fields.object({
|
|
20
|
+
default: {},
|
|
21
|
+
properties: {
|
|
22
|
+
foo: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
default: 'bar',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
const defaults = getFieldDefault(field);
|
|
29
|
+
expect(defaults).toEqual({ foo: 'bar' });
|
|
30
|
+
});
|
|
18
31
|
});
|
|
19
32
|
//# sourceMappingURL=defaults.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.test.js","sourceRoot":"","sources":["../../../src/schema/defaults.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"defaults.test.js","sourceRoot":"","sources":["../../../src/schema/defaults.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACpE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;YACxB,OAAO,EAAE;gBACR,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,MAAM;aACZ;SACD,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACrC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACX,GAAG,EAAE;oBACJ,IAAI,EAAE,QAAiB;oBACvB,OAAO,EAAE,KAAK;iBACd;aACD;SACD,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { NestedStorageFieldSchema, NestedStorageFieldsSchema, ShapeFromFieldsWithDefaults, StorageAnyFieldSchema, StorageArrayFieldSchema, StorageBooleanFieldSchema, StorageFileFieldSchema, StorageMapFieldSchema, StorageNumberFieldSchema, StorageObjectFieldSchema, StorageStringFieldSchema } from './types.js';
|
|
2
|
+
export declare const fields: {
|
|
3
|
+
object: <Props extends NestedStorageFieldsSchema>(args: {
|
|
4
|
+
properties: Props;
|
|
5
|
+
nullable?: boolean | undefined;
|
|
6
|
+
default?: ShapeFromFieldsWithDefaults<Props> | (() => ShapeFromFieldsWithDefaults<Props>) | undefined;
|
|
7
|
+
}) => StorageObjectFieldSchema<Props>;
|
|
8
|
+
array: <T extends NestedStorageFieldSchema>(args: {
|
|
9
|
+
items: T;
|
|
10
|
+
nullable?: boolean | undefined;
|
|
11
|
+
}) => StorageArrayFieldSchema<T>;
|
|
12
|
+
string: (args?: {
|
|
13
|
+
nullable?: boolean;
|
|
14
|
+
default?: string | (() => string);
|
|
15
|
+
options?: string[];
|
|
16
|
+
}) => StorageStringFieldSchema;
|
|
17
|
+
number: (args?: {
|
|
18
|
+
nullable?: boolean;
|
|
19
|
+
default?: number | (() => number);
|
|
20
|
+
}) => StorageNumberFieldSchema;
|
|
21
|
+
boolean: (args?: {
|
|
22
|
+
nullable?: boolean;
|
|
23
|
+
default?: boolean | (() => boolean);
|
|
24
|
+
}) => StorageBooleanFieldSchema;
|
|
25
|
+
any: <TShape>(args?: {
|
|
26
|
+
default?: TShape | undefined;
|
|
27
|
+
} | undefined) => StorageAnyFieldSchema<TShape>;
|
|
28
|
+
map: <T_1 extends NestedStorageFieldSchema>(args: {
|
|
29
|
+
values: T_1;
|
|
30
|
+
}) => StorageMapFieldSchema<T_1>;
|
|
31
|
+
file: (args?: {
|
|
32
|
+
nullable?: boolean;
|
|
33
|
+
downloadRemote?: boolean;
|
|
34
|
+
}) => StorageFileFieldSchema;
|
|
35
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const objectField = (args) => {
|
|
2
|
+
return Object.assign({ type: 'object' }, args);
|
|
3
|
+
};
|
|
4
|
+
const arrayField = (args) => {
|
|
5
|
+
return Object.assign({ type: 'array' }, args);
|
|
6
|
+
};
|
|
7
|
+
const stringField = (args) => {
|
|
8
|
+
return Object.assign({ type: 'string' }, args);
|
|
9
|
+
};
|
|
10
|
+
const numberField = (args) => {
|
|
11
|
+
return Object.assign({ type: 'number' }, args);
|
|
12
|
+
};
|
|
13
|
+
const booleanField = (args) => {
|
|
14
|
+
return Object.assign({ type: 'boolean' }, args);
|
|
15
|
+
};
|
|
16
|
+
const anyField = (args) => {
|
|
17
|
+
return Object.assign({ type: 'any' }, args);
|
|
18
|
+
};
|
|
19
|
+
const mapField = (args) => {
|
|
20
|
+
return Object.assign({ type: 'map' }, args);
|
|
21
|
+
};
|
|
22
|
+
const fileField = (args) => {
|
|
23
|
+
return Object.assign({ type: 'file' }, args);
|
|
24
|
+
};
|
|
25
|
+
export const fields = {
|
|
26
|
+
object: objectField,
|
|
27
|
+
array: arrayField,
|
|
28
|
+
string: stringField,
|
|
29
|
+
number: numberField,
|
|
30
|
+
boolean: booleanField,
|
|
31
|
+
any: anyField,
|
|
32
|
+
map: mapField,
|
|
33
|
+
file: fileField,
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=fieldHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldHelpers.js","sourceRoot":"","sources":["../../../src/schema/fieldHelpers.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,GAAG,CAA0C,IAM7D,EAAmC,EAAE;IACrC,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAqC,IAGvD,EAA8B,EAAE;IAChC,uBACC,IAAI,EAAE,OAAO,IACV,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAIpB,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAGpB,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAGrB,EAA6B,EAAE;IAC/B,uBACC,IAAI,EAAE,SAAS,IACZ,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAS,IAEzB,EAAiC,EAAE;IACnC,uBACC,IAAI,EAAE,KAAK,IACR,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAqC,IAErD,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,KAAK,IACR,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAGlB,EAA0B,EAAE;IAC5B,uBACC,IAAI,EAAE,MAAM,IACT,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;IACrB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;CACf,CAAC"}
|
|
@@ -16,8 +16,6 @@ export function hasDefault(field) {
|
|
|
16
16
|
return true;
|
|
17
17
|
if (field.type === 'file')
|
|
18
18
|
return false;
|
|
19
|
-
if (field.type === 'object')
|
|
20
|
-
return false;
|
|
21
19
|
return field.default !== undefined;
|
|
22
20
|
}
|
|
23
21
|
export function getDefault(field) {
|
|
@@ -127,6 +125,19 @@ export function getFieldDefault(field) {
|
|
|
127
125
|
if (field.type !== 'any' && field.nullable) {
|
|
128
126
|
return null;
|
|
129
127
|
}
|
|
128
|
+
if (field.type === 'object' && field.default) {
|
|
129
|
+
const defaultValue =
|
|
130
|
+
// @ts-ignore
|
|
131
|
+
typeof field.default === 'function'
|
|
132
|
+
? field.default()
|
|
133
|
+
: JSON.parse(JSON.stringify(field.default));
|
|
134
|
+
for (const [key, property] of Object.entries(field.properties)) {
|
|
135
|
+
if (defaultValue[key] === undefined) {
|
|
136
|
+
defaultValue[key] = getFieldDefault(property);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return defaultValue;
|
|
140
|
+
}
|
|
130
141
|
return undefined;
|
|
131
142
|
}
|
|
132
143
|
export function removeExtraProperties(collection, value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/schema/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/schema/fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,50 @@ export declare function collection<Fields extends StorageFieldsSchema, Synthetic
|
|
|
3
3
|
export declare function schema<Schema extends StorageSchema<{
|
|
4
4
|
[key: string]: StorageCollectionSchema<any, any, any>;
|
|
5
5
|
}>>(input: Schema): StorageSchema;
|
|
6
|
+
export declare namespace schema {
|
|
7
|
+
var collection: typeof import("./index.js").collection;
|
|
8
|
+
var fields: {
|
|
9
|
+
object: <Props extends import("./types.js").NestedStorageFieldsSchema>(args: {
|
|
10
|
+
properties: Props;
|
|
11
|
+
nullable?: boolean | undefined;
|
|
12
|
+
default?: import("./types.js").ShapeFromFieldsWithDefaults<Props> | (() => import("./types.js").ShapeFromFieldsWithDefaults<Props>) | undefined;
|
|
13
|
+
}) => import("./types.js").StorageObjectFieldSchema<Props>;
|
|
14
|
+
array: <T extends import("./types.js").NestedStorageFieldSchema>(args: {
|
|
15
|
+
items: T;
|
|
16
|
+
nullable?: boolean | undefined;
|
|
17
|
+
}) => import("./types.js").StorageArrayFieldSchema<T>;
|
|
18
|
+
string: (args?: {
|
|
19
|
+
nullable?: boolean | undefined;
|
|
20
|
+
default?: string | (() => string) | undefined;
|
|
21
|
+
options?: string[] | undefined;
|
|
22
|
+
} | undefined) => import("./types.js").StorageStringFieldSchema;
|
|
23
|
+
number: (args?: {
|
|
24
|
+
nullable?: boolean | undefined;
|
|
25
|
+
default?: number | (() => number) | undefined;
|
|
26
|
+
} | undefined) => import("./types.js").StorageNumberFieldSchema;
|
|
27
|
+
boolean: (args?: {
|
|
28
|
+
nullable?: boolean | undefined;
|
|
29
|
+
default?: boolean | (() => boolean) | undefined;
|
|
30
|
+
} | undefined) => import("./types.js").StorageBooleanFieldSchema;
|
|
31
|
+
any: <TShape>(args?: {
|
|
32
|
+
default?: TShape | undefined;
|
|
33
|
+
} | undefined) => import("./types.js").StorageAnyFieldSchema<TShape>;
|
|
34
|
+
map: <T_1 extends import("./types.js").NestedStorageFieldSchema>(args: {
|
|
35
|
+
values: T_1;
|
|
36
|
+
}) => import("./types.js").StorageMapFieldSchema<T_1>;
|
|
37
|
+
file: (args?: {
|
|
38
|
+
nullable?: boolean | undefined;
|
|
39
|
+
downloadRemote?: boolean | undefined;
|
|
40
|
+
} | undefined) => import("./types.js").StorageFileFieldSchema;
|
|
41
|
+
};
|
|
42
|
+
var generated: {
|
|
43
|
+
id: (() => string) & {
|
|
44
|
+
slug: () => string;
|
|
45
|
+
isCuid: (cuid: string) => boolean;
|
|
46
|
+
isSlug: (slug: string) => boolean;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
}
|
|
6
50
|
export * from './types.js';
|
|
7
51
|
export * from './indexFilters.js';
|
|
8
52
|
export * from './fields.js';
|