@dxos/echo-generator 0.7.1-staging.8709ba7 → 0.7.2-staging.6d26b2a
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/lib/browser/index.mjs +21 -428
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +19 -426
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +21 -428
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/data.d.ts.map +1 -1
- package/dist/types/src/generator.d.ts +4 -4
- package/dist/types/src/generator.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +6 -6
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/package.json +10 -9
- package/src/data.ts +55 -155
- package/src/generator.test.ts +18 -18
- package/src/generator.ts +6 -7
- package/src/types.ts +10 -6
- package/src/util.ts +1 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Space } from '@dxos/client/echo';
|
|
2
|
-
import { type
|
|
2
|
+
import { type ReactiveEchoObject } from '@dxos/echo-db';
|
|
3
3
|
import { MutableSchema, type ReactiveObject, type S } from '@dxos/echo-schema';
|
|
4
4
|
import { type TestSchemaType } from './data';
|
|
5
5
|
import { type MutationsProviderParams, type TestGeneratorMap, type TestMutationsMap, type TestObjectProvider, type TestSchemaMap } from './types';
|
|
@@ -29,9 +29,9 @@ export declare class SpaceObjectGenerator<T extends string> extends TestObjectGe
|
|
|
29
29
|
addSchemas(): (MutableSchema | S.Schema<any, any, never>)[];
|
|
30
30
|
createObject({ types }?: {
|
|
31
31
|
types?: T[];
|
|
32
|
-
}): Promise<
|
|
32
|
+
}): Promise<ReactiveEchoObject<any>>;
|
|
33
33
|
private _maybeRegisterSchema;
|
|
34
|
-
mutateObject(object:
|
|
35
|
-
mutateObjects(objects:
|
|
34
|
+
mutateObject(object: ReactiveEchoObject<any>, params: MutationsProviderParams): Promise<void>;
|
|
35
|
+
mutateObjects(objects: ReactiveEchoObject<any>[], params: MutationsProviderParams): Promise<void>;
|
|
36
36
|
}
|
|
37
37
|
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/generator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAU,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/generator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAU,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAKL,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,CAAC,EACP,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,qBAAa,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc;IAG9D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAFR,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC5B,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAChC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,YAAA;IAGpD,IAAI,OAAO,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAE/C;IAED,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS;IAI7D,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAI5D,YAAY,CAAC,EAAE,KAAK,EAAE,GAAE;QAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAY3E,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;CASpD;AAED;;GAEG;AACH,qBAAa,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAE9E,OAAO,CAAC,QAAQ,CAAC,MAAM;IAGvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAHX,MAAM,EAAE,KAAK,EAC9B,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,EAC3B,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACd,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,YAAA;IAenD,UAAU;IASK,YAAY,CAAC,EAAE,KAAK,EAAE,GAAE;QAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA;KAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAI9F,OAAO,CAAC,oBAAoB;IAkBtB,YAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,uBAAuB;IAQ7E,aAAa,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,uBAAuB;CAKxF"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ReactiveEchoObject } from '@dxos/echo-db';
|
|
2
2
|
import { type MutableSchema, type ReactiveObject, type S } from '@dxos/echo-schema';
|
|
3
3
|
export type TestObject = {
|
|
4
4
|
id: string;
|
|
5
5
|
} & Record<string, any>;
|
|
6
|
-
export type TestSchemaMap<T extends string> = Record<T, MutableSchema | S.Schema<any>>;
|
|
7
|
-
export type
|
|
8
|
-
export type
|
|
9
|
-
export type TestMutationsMap<T extends string> = Record<T, TestObjectMutators>;
|
|
6
|
+
export type TestSchemaMap<T extends string = string> = Record<T, MutableSchema | S.Schema<any>>;
|
|
7
|
+
export type TestObjectProvider<T extends string = string> = (type: T) => Promise<ReactiveObject<any>[]>;
|
|
8
|
+
export type TestGeneratorMap<T extends string = string> = Record<T, (provider: TestObjectProvider<T> | undefined) => any>;
|
|
9
|
+
export type TestMutationsMap<T extends string = string> = Record<T, TestObjectMutators>;
|
|
10
10
|
export type MutationsProviderParams = {
|
|
11
11
|
count: number;
|
|
12
12
|
mutationSize: number;
|
|
13
13
|
maxContentLength: number;
|
|
14
14
|
};
|
|
15
|
-
export type TestObjectMutators = (object:
|
|
15
|
+
export type TestObjectMutators = (object: ReactiveEchoObject<any>, params: MutationsProviderParams) => Promise<void>;
|
|
16
16
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAGpF,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE9D,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhG,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAExG,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAC9D,CAAC,EACD,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,GAAG,CACrD,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAExF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK,GAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,UAAU,MAAM,KAAG,CAAC,EAGlD,CAAC;AAE5B,eAAO,MAAM,UAAU,WAAY,MAAM,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK,GAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,UAAU,MAAM,KAAG,CAAC,EAGlD,CAAC;AAE5B,eAAO,MAAM,UAAU,WAAY,MAAM,WASxC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/echo-generator",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.2-staging.6d26b2a",
|
|
4
4
|
"description": "ECHO data generator for testing.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -23,18 +23,19 @@
|
|
|
23
23
|
"src"
|
|
24
24
|
],
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@dxos/automerge": "0.7.
|
|
27
|
-
"@dxos/client": "0.7.
|
|
28
|
-
"@dxos/echo-db": "0.7.
|
|
29
|
-
"@dxos/
|
|
30
|
-
"@dxos/
|
|
31
|
-
"@dxos/node-std": "0.7.
|
|
26
|
+
"@dxos/automerge": "0.7.2-staging.6d26b2a",
|
|
27
|
+
"@dxos/client": "0.7.2-staging.6d26b2a",
|
|
28
|
+
"@dxos/echo-db": "0.7.2-staging.6d26b2a",
|
|
29
|
+
"@dxos/echo-schema": "0.7.2-staging.6d26b2a",
|
|
30
|
+
"@dxos/invariant": "0.7.2-staging.6d26b2a",
|
|
31
|
+
"@dxos/node-std": "0.7.2-staging.6d26b2a",
|
|
32
|
+
"@dxos/schema": "0.7.2-staging.6d26b2a"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {
|
|
34
|
-
"@dxos/random": "0.7.
|
|
35
|
+
"@dxos/random": "0.7.2-staging.6d26b2a"
|
|
35
36
|
},
|
|
36
37
|
"peerDependencies": {
|
|
37
|
-
"@dxos/random": "0.7.
|
|
38
|
+
"@dxos/random": "0.7.2-staging.6d26b2a"
|
|
38
39
|
},
|
|
39
40
|
"publishConfig": {
|
|
40
41
|
"access": "public"
|
package/src/data.ts
CHANGED
|
@@ -4,16 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { next as A } from '@dxos/automerge/automerge';
|
|
6
6
|
import { createDocAccessor, type Space } from '@dxos/client/echo';
|
|
7
|
-
import {
|
|
8
|
-
createStoredSchema,
|
|
9
|
-
getObjectAnnotation,
|
|
10
|
-
ref,
|
|
11
|
-
toJsonSchema,
|
|
12
|
-
EchoObject,
|
|
13
|
-
MutableSchema,
|
|
14
|
-
ObjectAnnotationId,
|
|
15
|
-
S,
|
|
16
|
-
} from '@dxos/echo-schema';
|
|
7
|
+
import { createMutableSchema, ref, S } from '@dxos/echo-schema';
|
|
17
8
|
import { faker } from '@dxos/random';
|
|
18
9
|
|
|
19
10
|
import { SpaceObjectGenerator, TestObjectGenerator } from './generator';
|
|
@@ -34,47 +25,60 @@ export enum TestSchemaType {
|
|
|
34
25
|
project = 'example.com/type/project',
|
|
35
26
|
}
|
|
36
27
|
|
|
37
|
-
const createDynamicSchema = (typename: string, fields: S.Struct.Fields): MutableSchema => {
|
|
38
|
-
const typeSchema = S.partial(S.Struct(fields)).pipe(EchoObject(typename, '1.0.0'));
|
|
39
|
-
const typeAnnotation = getObjectAnnotation(typeSchema);
|
|
40
|
-
const schemaToStore = createStoredSchema({ typename, version: '0.1.0' });
|
|
41
|
-
const updatedSchema = typeSchema.annotations({
|
|
42
|
-
[ObjectAnnotationId]: { ...typeAnnotation, schemaId: schemaToStore.id },
|
|
43
|
-
});
|
|
44
|
-
schemaToStore.jsonSchema = toJsonSchema(updatedSchema);
|
|
45
|
-
return new MutableSchema(schemaToStore);
|
|
46
|
-
};
|
|
47
|
-
|
|
48
28
|
const testSchemas = (): TestSchemaMap<TestSchemaType> => {
|
|
49
|
-
const document =
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
29
|
+
const document = createMutableSchema(
|
|
30
|
+
{
|
|
31
|
+
typename: TestSchemaType.document,
|
|
32
|
+
version: '0.1.0',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
title: S.String.annotations({ description: 'title of the document' }),
|
|
36
|
+
content: S.String,
|
|
37
|
+
},
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
const organization = createMutableSchema(
|
|
41
|
+
{
|
|
42
|
+
typename: TestSchemaType.organization,
|
|
43
|
+
version: '0.1.0',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: S.String.annotations({ description: 'name of the company or organization' }),
|
|
47
|
+
website: S.String.annotations({ description: 'public website URL' }),
|
|
48
|
+
description: S.String.annotations({ description: 'short summary of the company' }),
|
|
49
|
+
},
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
const contact = createMutableSchema(
|
|
53
|
+
{
|
|
54
|
+
typename: TestSchemaType.contact,
|
|
55
|
+
version: '0.1.0',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: S.String.annotations({ description: 'name of the person' }),
|
|
59
|
+
email: S.String,
|
|
60
|
+
org: ref(organization),
|
|
61
|
+
lat: S.Number,
|
|
62
|
+
lng: S.Number,
|
|
63
|
+
},
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
const project = createMutableSchema(
|
|
67
|
+
{
|
|
68
|
+
typename: TestSchemaType.project,
|
|
69
|
+
version: '0.1.0',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: S.String.annotations({ description: 'name of the project' }),
|
|
73
|
+
description: S.String,
|
|
74
|
+
website: S.String,
|
|
75
|
+
repo: S.String,
|
|
76
|
+
status: S.String,
|
|
77
|
+
priority: S.Number,
|
|
78
|
+
active: S.Boolean,
|
|
79
|
+
org: ref(organization),
|
|
80
|
+
},
|
|
81
|
+
);
|
|
78
82
|
|
|
79
83
|
return {
|
|
80
84
|
[TestSchemaType.document]: document,
|
|
@@ -98,7 +102,7 @@ const testObjectGenerators: TestGeneratorMap<TestSchemaType> = {
|
|
|
98
102
|
|
|
99
103
|
[TestSchemaType.contact]: async (provider) => {
|
|
100
104
|
const organizations = await provider?.(TestSchemaType.organization);
|
|
101
|
-
const location = faker.datatype.boolean() ? faker.
|
|
105
|
+
const { location } = faker.datatype.boolean() ? faker.geo.airport() : {};
|
|
102
106
|
return {
|
|
103
107
|
name: faker.person.fullName(),
|
|
104
108
|
email: faker.datatype.boolean({ probability: 0.5 }) ? faker.internet.email() : undefined,
|
|
@@ -150,107 +154,3 @@ export const createTestObjectGenerator = () => new TestObjectGenerator(testSchem
|
|
|
150
154
|
|
|
151
155
|
export const createSpaceObjectGenerator = (space: Space) =>
|
|
152
156
|
new SpaceObjectGenerator(space, testSchemas(), testObjectGenerators, testObjectMutators);
|
|
153
|
-
|
|
154
|
-
// TODO(burdon): Move to @dxos/random.
|
|
155
|
-
const locations = [
|
|
156
|
-
{ lat: 139.74946157054467, lng: 35.686962764371174 },
|
|
157
|
-
{ lat: -73.98196278740681, lng: 40.75192492259464 },
|
|
158
|
-
{ lat: -99.1329340602939, lng: 19.444388301415472 },
|
|
159
|
-
{ lat: 72.85504343876647, lng: 19.0189362343566 },
|
|
160
|
-
{ lat: -46.62696583905523, lng: -23.55673372837896 },
|
|
161
|
-
{ lat: 77.22805816860182, lng: 28.671938757181522 },
|
|
162
|
-
{ lat: 121.43455881982015, lng: 31.218398311228327 },
|
|
163
|
-
{ lat: 88.32272979950551, lng: 22.49691515689642 },
|
|
164
|
-
{ lat: 90.40663360810754, lng: 23.725005570312817 },
|
|
165
|
-
{ lat: -58.399477232331435, lng: -34.600555749907414 },
|
|
166
|
-
{ lat: -118.18192636994041, lng: 33.99192410876543 },
|
|
167
|
-
{ lat: 66.98806305137339, lng: 24.87193814681484 },
|
|
168
|
-
{ lat: 31.248022361126118, lng: 30.051906205103705 },
|
|
169
|
-
{ lat: -43.22696665284366, lng: -22.923077315615956 },
|
|
170
|
-
{ lat: 135.4581989565952, lng: 34.75198107491417 },
|
|
171
|
-
{ lat: 116.38633982565943, lng: 39.93083808990906 },
|
|
172
|
-
{ lat: 120.9802713035424, lng: 14.606104813440538 },
|
|
173
|
-
{ lat: 37.6135769672714, lng: 55.75410998124818 },
|
|
174
|
-
{ lat: 29.008055727002613, lng: 41.10694201243979 },
|
|
175
|
-
{ lat: 2.33138946713035, lng: 48.86863878981461 },
|
|
176
|
-
{ lat: 126.99778513820195, lng: 37.56829495838895 },
|
|
177
|
-
{ lat: 3.3895852125984334, lng: 6.445207512093191 },
|
|
178
|
-
{ lat: 106.82749176247012, lng: -6.172471846798885 },
|
|
179
|
-
{ lat: -87.75200083270931, lng: 41.83193651927843 },
|
|
180
|
-
{ lat: 113.32306427226172, lng: 23.14692716047989 },
|
|
181
|
-
{ lat: -0.11866770247593195, lng: 51.5019405883275 },
|
|
182
|
-
{ lat: -77.05200795343472, lng: -12.04606681752557 },
|
|
183
|
-
{ lat: 51.42239817500899, lng: 35.673888627001304 },
|
|
184
|
-
{ lat: 15.313026023171744, lng: -4.327778243275986 },
|
|
185
|
-
{ lat: -74.08528981377441, lng: 4.598369421147822 },
|
|
186
|
-
{ lat: 114.1201772298325, lng: 22.554316369677963 },
|
|
187
|
-
{ lat: 114.26807118958311, lng: 30.581977209337822 },
|
|
188
|
-
{ lat: 114.18306345846304, lng: 22.30692675357551 },
|
|
189
|
-
{ lat: 117.19807322410043, lng: 39.13197212310894 },
|
|
190
|
-
{ lat: 80.27805287890033, lng: 13.091933670856292 },
|
|
191
|
-
{ lat: 121.568333333333, lng: 25.0358333333333 },
|
|
192
|
-
{ lat: 77.55806386521755, lng: 12.97194099507442 },
|
|
193
|
-
{ lat: 100.51469879369489, lng: 13.751945064087977 },
|
|
194
|
-
{ lat: 74.34807892054346, lng: 31.56191739488844 },
|
|
195
|
-
{ lat: 106.59303578916195, lng: 29.566922888044644 },
|
|
196
|
-
{ lat: 78.47800771287751, lng: 17.401928991511454 },
|
|
197
|
-
{ lat: -70.66898671317483, lng: -33.448067956934096 },
|
|
198
|
-
{ lat: -80.22605193945003, lng: 25.789556555021534 },
|
|
199
|
-
{ lat: -43.916950376804834, lng: -19.91308016391116 },
|
|
200
|
-
{ lat: -3.6852975446125242, lng: 40.40197212311381 },
|
|
201
|
-
{ lat: -75.17194183200792, lng: 40.001919022526465 },
|
|
202
|
-
{ lat: 72.57805776168215, lng: 23.031998775062675 },
|
|
203
|
-
{ lat: 106.69308136207889, lng: 10.781971309193409 },
|
|
204
|
-
{ lat: -79.42196665298843, lng: 43.70192573640844 },
|
|
205
|
-
{ lat: 103.85387481909902, lng: 1.2949793251059418 },
|
|
206
|
-
{ lat: 13.23248118266855, lng: -8.836340255012658 },
|
|
207
|
-
{ lat: 44.391922914564134, lng: 33.34059435615865 },
|
|
208
|
-
{ lat: 2.181424460619155, lng: 41.385245438547486 },
|
|
209
|
-
{ lat: 88.32994665421205, lng: 22.580390440861947 },
|
|
210
|
-
{ lat: -96.84196278749818, lng: 32.82196968167733 },
|
|
211
|
-
{ lat: 123.44802765120869, lng: 41.80692512604918 },
|
|
212
|
-
{ lat: 32.532233380011576, lng: 15.590024084277673 },
|
|
213
|
-
{ lat: 73.84805776168719, lng: 18.531963374654026 },
|
|
214
|
-
{ lat: 151.1832339501475, lng: -33.91806510862875 },
|
|
215
|
-
{ lat: 30.314074200315076, lng: 59.94096036375191 },
|
|
216
|
-
{ lat: 91.79802154756635, lng: 22.33193814680459 },
|
|
217
|
-
{ lat: 113.74277634138707, lng: 23.050834758613007 },
|
|
218
|
-
{ lat: -84.40189524187565, lng: 33.83195971260585 },
|
|
219
|
-
{ lat: -71.07195953218684, lng: 42.33190600170229 },
|
|
220
|
-
{ lat: 46.770795798688255, lng: 24.642779007816443 },
|
|
221
|
-
{ lat: -95.341925149146, lng: 29.821920243188856 },
|
|
222
|
-
{ lat: 105.8480683412422, lng: 21.035273107737055 },
|
|
223
|
-
{ lat: -77.01136443943716, lng: 38.901495235087054 },
|
|
224
|
-
{ lat: -103.33198008081848, lng: 20.671961950508944 },
|
|
225
|
-
{ lat: 144.97307037590406, lng: -37.81808545369631 },
|
|
226
|
-
{ lat: 29.948050030391755, lng: 31.201965205759393 },
|
|
227
|
-
{ lat: 104.06807363094873, lng: 30.671945877957796 },
|
|
228
|
-
{ lat: -83.0820016464927, lng: 42.33190600170229 },
|
|
229
|
-
{ lat: 96.16473175266185, lng: 16.785299963188777 },
|
|
230
|
-
{ lat: 108.89305043760862, lng: 34.27697130928732 },
|
|
231
|
-
{ lat: -51.20195790450316, lng: -30.048068770722466 },
|
|
232
|
-
{ lat: 121.465, lng: 25.0127777777778 },
|
|
233
|
-
{ lat: 72.83809356897484, lng: 21.20192960187819 },
|
|
234
|
-
{ lat: 109.60911291406296, lng: 23.09653464659317 },
|
|
235
|
-
{ lat: -4.041994118507091, lng: 5.321942826098564 },
|
|
236
|
-
{ lat: -47.91799814700306, lng: -15.781394372878992 },
|
|
237
|
-
{ lat: 32.862445782356644, lng: 39.929184444075474 },
|
|
238
|
-
{ lat: -100.33193064232995, lng: 25.671940995125283 },
|
|
239
|
-
{ lat: 139.60202098994017, lng: 35.43065615270891 },
|
|
240
|
-
{ lat: 118.77802846499208, lng: 32.05196500231233 },
|
|
241
|
-
{ lat: -73.58524281670213, lng: 45.50194506421502 },
|
|
242
|
-
{ lat: 106.7180927553083, lng: 26.581988806001448 },
|
|
243
|
-
{ lat: -34.91755136960728, lng: -8.073699467249241 },
|
|
244
|
-
{ lat: 126.64803904445057, lng: 45.75192980542715 },
|
|
245
|
-
{ lat: -38.58192718342411, lng: -3.7480720258257634 },
|
|
246
|
-
{ lat: -112.07193755969467, lng: 33.5419257363676 },
|
|
247
|
-
{ lat: 117.67001623440774, lng: 24.520375385531167 },
|
|
248
|
-
{ lat: -38.48193328693924, lng: -12.968026046044827 },
|
|
249
|
-
{ lat: 129.00810170722048, lng: 35.09699877511093 },
|
|
250
|
-
{ lat: -122.41716877355225, lng: 37.76919562968743 },
|
|
251
|
-
{ lat: 28.028063865019476, lng: -26.16809888138414 },
|
|
252
|
-
{ lat: 13.399602764700546, lng: 52.523764522251156 },
|
|
253
|
-
{ lat: 3.048606670909237, lng: 36.765010656628135 },
|
|
254
|
-
{ lat: 125.75274485499392, lng: 39.02138455800434 },
|
|
255
|
-
{ lat: 12.481312562873995, lng: 41.89790148509894 },
|
|
256
|
-
];
|
package/src/generator.test.ts
CHANGED
|
@@ -16,6 +16,16 @@ import { SpaceObjectGenerator } from './generator';
|
|
|
16
16
|
faker.seed(3);
|
|
17
17
|
|
|
18
18
|
describe('TestObjectGenerator', () => {
|
|
19
|
+
// TODO(burdon): Use TestBuilder.
|
|
20
|
+
const setupTest = async () => {
|
|
21
|
+
const client = new Client();
|
|
22
|
+
await client.initialize();
|
|
23
|
+
onTestFinished(async () => await client.destroy());
|
|
24
|
+
await client.halo.createIdentity();
|
|
25
|
+
const space = await client.spaces.create();
|
|
26
|
+
return { client, space };
|
|
27
|
+
};
|
|
28
|
+
|
|
19
29
|
test('basic', async () => {
|
|
20
30
|
const generator = createTestObjectGenerator();
|
|
21
31
|
|
|
@@ -81,44 +91,34 @@ describe('TestObjectGenerator', () => {
|
|
|
81
91
|
});
|
|
82
92
|
|
|
83
93
|
test('create object with in memory schema', async () => {
|
|
84
|
-
class
|
|
85
|
-
typename: 'example.org/type/
|
|
94
|
+
class Task extends TypedObject({
|
|
95
|
+
typename: 'example.org/type/Task',
|
|
86
96
|
version: '0.1.0',
|
|
87
97
|
})({
|
|
88
98
|
name: S.optional(S.String),
|
|
89
99
|
}) {}
|
|
90
100
|
|
|
91
101
|
enum Types {
|
|
92
|
-
|
|
102
|
+
task = 'example.org/type/Task',
|
|
93
103
|
}
|
|
94
104
|
|
|
95
105
|
const { space } = await setupTest();
|
|
96
106
|
const generator = new SpaceObjectGenerator<Types>(
|
|
97
107
|
space,
|
|
98
|
-
{ [Types.
|
|
108
|
+
{ [Types.task]: Task },
|
|
99
109
|
{
|
|
100
|
-
[Types.
|
|
110
|
+
[Types.task]: () => ({ name: 'Default' }),
|
|
101
111
|
},
|
|
102
112
|
{
|
|
103
|
-
[Types.
|
|
113
|
+
[Types.task]: async (task, params) => {
|
|
104
114
|
for (const _ in Array.from({ length: params.count })) {
|
|
105
|
-
|
|
115
|
+
task.name = faker.lorem.sentence();
|
|
106
116
|
}
|
|
107
117
|
},
|
|
108
118
|
},
|
|
109
119
|
);
|
|
110
120
|
|
|
111
|
-
const todo = await generator.createObject({ types: [Types.
|
|
112
|
-
|
|
121
|
+
const todo = await generator.createObject({ types: [Types.task] });
|
|
113
122
|
expect(getType(todo)).to.exist;
|
|
114
123
|
});
|
|
115
|
-
|
|
116
|
-
const setupTest = async () => {
|
|
117
|
-
const client = new Client();
|
|
118
|
-
await client.initialize();
|
|
119
|
-
onTestFinished(async () => await client.destroy());
|
|
120
|
-
await client.halo.createIdentity();
|
|
121
|
-
const space = await client.spaces.create();
|
|
122
|
-
return { client, space };
|
|
123
|
-
};
|
|
124
124
|
});
|
package/src/generator.ts
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { type Space, Filter } from '@dxos/client/echo';
|
|
6
|
-
import { type
|
|
6
|
+
import { type ReactiveEchoObject } from '@dxos/echo-db';
|
|
7
7
|
import {
|
|
8
8
|
create,
|
|
9
|
-
MutableSchema,
|
|
10
|
-
type ReactiveObject,
|
|
11
9
|
getObjectAnnotation,
|
|
12
10
|
getSchema,
|
|
13
11
|
isReactiveObject,
|
|
12
|
+
MutableSchema,
|
|
13
|
+
type ReactiveObject,
|
|
14
14
|
type S,
|
|
15
15
|
} from '@dxos/echo-schema';
|
|
16
16
|
import { invariant } from '@dxos/invariant';
|
|
@@ -60,7 +60,6 @@ export class TestObjectGenerator<T extends string = TestSchemaType> {
|
|
|
60
60
|
return schema ? create(schema, data) : create(data);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
// TODO(burdon): Create batch.
|
|
64
63
|
// TODO(burdon): Based on dependencies (e.g., organization before contact).
|
|
65
64
|
async createObjects(map: Partial<Record<T, number>>) {
|
|
66
65
|
const tasks = Object.entries<number>(map as any)
|
|
@@ -105,7 +104,7 @@ export class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<
|
|
|
105
104
|
return result;
|
|
106
105
|
}
|
|
107
106
|
|
|
108
|
-
override async createObject({ types }: { types?: T[] } = {}): Promise<
|
|
107
|
+
override async createObject({ types }: { types?: T[] } = {}): Promise<ReactiveEchoObject<any>> {
|
|
109
108
|
return this._space.db.add(await super.createObject({ types }));
|
|
110
109
|
}
|
|
111
110
|
|
|
@@ -127,7 +126,7 @@ export class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<
|
|
|
127
126
|
}
|
|
128
127
|
}
|
|
129
128
|
|
|
130
|
-
async mutateObject(object:
|
|
129
|
+
async mutateObject(object: ReactiveEchoObject<any>, params: MutationsProviderParams) {
|
|
131
130
|
invariant(this._mutations, 'Mutations not defined.');
|
|
132
131
|
const type = getObjectAnnotation(getSchema(object)!)!.typename as T;
|
|
133
132
|
invariant(type && this._mutations?.[type], 'Invalid object type.');
|
|
@@ -135,7 +134,7 @@ export class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<
|
|
|
135
134
|
await this._mutations;
|
|
136
135
|
}
|
|
137
136
|
|
|
138
|
-
async mutateObjects(objects:
|
|
137
|
+
async mutateObjects(objects: ReactiveEchoObject<any>[], params: MutationsProviderParams) {
|
|
139
138
|
for (const object of objects) {
|
|
140
139
|
await this.mutateObject(object, params);
|
|
141
140
|
}
|
package/src/types.ts
CHANGED
|
@@ -2,18 +2,22 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { type
|
|
5
|
+
import { type ReactiveEchoObject } from '@dxos/echo-db';
|
|
6
6
|
import { type MutableSchema, type ReactiveObject, type S } from '@dxos/echo-schema';
|
|
7
7
|
|
|
8
|
+
// TODO(burdon): Use echo-schema types.
|
|
8
9
|
export type TestObject = { id: string } & Record<string, any>;
|
|
9
10
|
|
|
10
|
-
export type TestSchemaMap<T extends string> = Record<T, MutableSchema | S.Schema<any>>;
|
|
11
|
+
export type TestSchemaMap<T extends string = string> = Record<T, MutableSchema | S.Schema<any>>;
|
|
11
12
|
|
|
12
|
-
export type
|
|
13
|
+
export type TestObjectProvider<T extends string = string> = (type: T) => Promise<ReactiveObject<any>[]>;
|
|
13
14
|
|
|
14
|
-
export type
|
|
15
|
+
export type TestGeneratorMap<T extends string = string> = Record<
|
|
16
|
+
T,
|
|
17
|
+
(provider: TestObjectProvider<T> | undefined) => any
|
|
18
|
+
>;
|
|
15
19
|
|
|
16
|
-
export type TestMutationsMap<T extends string> = Record<T, TestObjectMutators>;
|
|
20
|
+
export type TestMutationsMap<T extends string = string> = Record<T, TestObjectMutators>;
|
|
17
21
|
|
|
18
22
|
export type MutationsProviderParams = {
|
|
19
23
|
count: number;
|
|
@@ -21,4 +25,4 @@ export type MutationsProviderParams = {
|
|
|
21
25
|
maxContentLength: number;
|
|
22
26
|
};
|
|
23
27
|
|
|
24
|
-
export type TestObjectMutators = (object:
|
|
28
|
+
export type TestObjectMutators = (object: ReactiveEchoObject<any>, params: MutationsProviderParams) => Promise<void>;
|