@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.
@@ -1,5 +1,5 @@
1
1
  import { type Space } from '@dxos/client/echo';
2
- import { type EchoReactiveObject } from '@dxos/echo-db';
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<EchoReactiveObject<any>>;
32
+ }): Promise<ReactiveEchoObject<any>>;
33
33
  private _maybeRegisterSchema;
34
- mutateObject(object: EchoReactiveObject<any>, params: MutationsProviderParams): Promise<void>;
35
- mutateObjects(objects: EchoReactiveObject<any>[], params: MutationsProviderParams): Promise<void>;
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,EAEL,aAAa,EACb,KAAK,cAAc,EAInB,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;IAa3E,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
+ {"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 EchoReactiveObject } from '@dxos/echo-db';
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 TestGeneratorMap<T extends string> = Record<T, (provider: TestObjectProvider<T> | undefined) => any>;
8
- export type TestObjectProvider<T extends string> = (type: T) => Promise<ReactiveObject<any>[]>;
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: EchoReactiveObject<any>, params: MutationsProviderParams) => Promise<void>;
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;AAEpF,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,IAAI,MAAM,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,GAAG,CAAC,CAAC;AAEjH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE/F,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAE/E,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
+ {"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,WAQxC,CAAC"}
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.1-staging.8709ba7",
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.1-staging.8709ba7",
27
- "@dxos/client": "0.7.1-staging.8709ba7",
28
- "@dxos/echo-db": "0.7.1-staging.8709ba7",
29
- "@dxos/invariant": "0.7.1-staging.8709ba7",
30
- "@dxos/echo-schema": "0.7.1-staging.8709ba7",
31
- "@dxos/node-std": "0.7.1-staging.8709ba7"
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.1-staging.8709ba7"
35
+ "@dxos/random": "0.7.2-staging.6d26b2a"
35
36
  },
36
37
  "peerDependencies": {
37
- "@dxos/random": "0.7.1-staging.8709ba7"
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 = createDynamicSchema(TestSchemaType.document, {
50
- title: S.String.annotations({ description: 'title of the document' }),
51
- content: S.String,
52
- });
53
-
54
- const organization = createDynamicSchema(TestSchemaType.organization, {
55
- name: S.String.annotations({ description: 'name of the company or organization' }),
56
- website: S.String.annotations({ description: 'public website URL' }),
57
- description: S.String.annotations({ description: 'short summary of the company' }),
58
- });
59
-
60
- const contact = createDynamicSchema(TestSchemaType.contact, {
61
- name: S.String.annotations({ description: 'name of the person' }),
62
- email: S.String,
63
- org: ref(organization),
64
- lat: S.Number,
65
- lng: S.Number,
66
- });
67
-
68
- const project = createDynamicSchema(TestSchemaType.project, {
69
- name: S.String.annotations({ description: 'name of the project' }),
70
- description: S.String,
71
- website: S.String,
72
- repo: S.String,
73
- status: S.String,
74
- priority: S.Number,
75
- active: S.Boolean,
76
- org: ref(organization),
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.helpers.arrayElement(locations) : undefined;
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
- ];
@@ -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 Todo extends TypedObject({
85
- typename: 'example.org/type/Todo',
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
- todo = 'example.org/type/Todo',
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.todo]: Todo },
108
+ { [Types.task]: Task },
99
109
  {
100
- [Types.todo]: () => ({ name: 'Default' }),
110
+ [Types.task]: () => ({ name: 'Default' }),
101
111
  },
102
112
  {
103
- [Types.todo]: async (todo, params) => {
113
+ [Types.task]: async (task, params) => {
104
114
  for (const _ in Array.from({ length: params.count })) {
105
- todo.name = faker.lorem.sentence();
115
+ task.name = faker.lorem.sentence();
106
116
  }
107
117
  },
108
118
  },
109
119
  );
110
120
 
111
- const todo = await generator.createObject({ types: [Types.todo] });
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 EchoReactiveObject } from '@dxos/echo-db';
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<EchoReactiveObject<any>> {
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: EchoReactiveObject<any>, params: MutationsProviderParams) {
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![type](object, params);
136
135
  }
137
136
 
138
- async mutateObjects(objects: EchoReactiveObject<any>[], params: MutationsProviderParams) {
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 EchoReactiveObject } from '@dxos/echo-db';
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 TestGeneratorMap<T extends string> = Record<T, (provider: TestObjectProvider<T> | undefined) => any>;
13
+ export type TestObjectProvider<T extends string = string> = (type: T) => Promise<ReactiveObject<any>[]>;
13
14
 
14
- export type TestObjectProvider<T extends string> = (type: T) => Promise<ReactiveObject<any>[]>;
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: EchoReactiveObject<any>, params: MutationsProviderParams) => Promise<void>;
28
+ export type TestObjectMutators = (object: ReactiveEchoObject<any>, params: MutationsProviderParams) => Promise<void>;
package/src/util.ts CHANGED
@@ -15,5 +15,6 @@ export const randomText = (length: number) => {
15
15
  for (let index = 0; index < length; index++) {
16
16
  result += characters.charAt(Math.floor(Math.random() * charactersLength));
17
17
  }
18
+
18
19
  return result;
19
20
  };