@dxos/echo-generator 0.8.1 → 0.8.2-main.2f9c567

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,17 +1,18 @@
1
1
  import "@dxos/node-std/globals";
2
2
 
3
3
  // packages/core/echo/echo-generator/src/data.ts
4
+ import { Schema } from "effect";
4
5
  import { next as A } from "@dxos/automerge/automerge";
5
6
  import { createDocAccessor } from "@dxos/client/echo";
6
- import { Ref, S } from "@dxos/echo-schema";
7
- import { createEchoSchema, makeRef } from "@dxos/live-object";
7
+ import { Ref } from "@dxos/echo-schema";
8
+ import { createEchoSchema } from "@dxos/live-object";
8
9
  import { faker as faker2 } from "@dxos/random";
9
10
 
10
11
  // packages/core/echo/echo-generator/src/generator.ts
11
12
  import { Filter } from "@dxos/client/echo";
12
- import { getTypeAnnotation, EchoSchema } from "@dxos/echo-schema";
13
+ import { getTypeAnnotation, EchoSchema, getSchema } from "@dxos/echo-schema";
13
14
  import { invariant } from "@dxos/invariant";
14
- import { create, getSchema, isReactiveObject } from "@dxos/live-object";
15
+ import { live, isLiveObject } from "@dxos/live-object";
15
16
  import { faker } from "@dxos/random";
16
17
  import { range } from "@dxos/util";
17
18
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/echo/echo-generator/src/generator.ts";
@@ -34,11 +35,11 @@ var TestObjectGenerator = class {
34
35
  async createObject({ types } = {}) {
35
36
  const type = faker.helpers.arrayElement(types ?? Object.keys(this._schemas));
36
37
  const data = await this._generators[type](this._provider);
37
- if (isReactiveObject(data)) {
38
+ if (isLiveObject(data)) {
38
39
  return data;
39
40
  }
40
41
  const schema = this.getSchema(type);
41
- return schema ? create(schema, data) : create(data);
42
+ return schema ? live(schema, data) : live(data);
42
43
  }
43
44
  // TODO(burdon): Based on dependencies (e.g., organization before contact).
44
45
  async createObjects(map) {
@@ -99,7 +100,7 @@ var SpaceObjectGenerator = class extends TestObjectGenerator {
99
100
  async mutateObject(object, params) {
100
101
  invariant(this._mutations, "Mutations not defined.", {
101
102
  F: __dxlog_file,
102
- L: 121,
103
+ L: 123,
103
104
  S: this,
104
105
  A: [
105
106
  "this._mutations",
@@ -109,7 +110,7 @@ var SpaceObjectGenerator = class extends TestObjectGenerator {
109
110
  const type = getTypeAnnotation(getSchema(object)).typename;
110
111
  invariant(type && this._mutations?.[type], "Invalid object type.", {
111
112
  F: __dxlog_file,
112
- L: 123,
113
+ L: 125,
113
114
  S: this,
114
115
  A: [
115
116
  "type && this._mutations?.[type]",
@@ -161,22 +162,22 @@ var testSchemas = () => {
161
162
  typename: "example.com/type/document",
162
163
  version: "0.1.0"
163
164
  }, {
164
- title: S.String.annotations({
165
+ title: Schema.String.annotations({
165
166
  description: "title of the document"
166
167
  }),
167
- content: S.String
168
+ content: Schema.String
168
169
  });
169
170
  const organization = createEchoSchema({
170
171
  typename: "example.com/type/organization",
171
172
  version: "0.1.0"
172
173
  }, {
173
- name: S.String.annotations({
174
+ name: Schema.String.annotations({
174
175
  description: "name of the company or organization"
175
176
  }),
176
- website: S.String.annotations({
177
+ website: Schema.String.annotations({
177
178
  description: "public website URL"
178
179
  }),
179
- description: S.String.annotations({
180
+ description: Schema.String.annotations({
180
181
  description: "short summary of the company"
181
182
  })
182
183
  });
@@ -184,27 +185,27 @@ var testSchemas = () => {
184
185
  typename: "example.com/type/contact",
185
186
  version: "0.1.0"
186
187
  }, {
187
- name: S.String.annotations({
188
+ name: Schema.String.annotations({
188
189
  description: "name of the person"
189
190
  }),
190
- email: S.String,
191
+ email: Schema.String,
191
192
  org: Ref(organization),
192
- lat: S.Number,
193
- lng: S.Number
193
+ lat: Schema.Number,
194
+ lng: Schema.Number
194
195
  });
195
196
  const project = createEchoSchema({
196
197
  typename: "example.com/type/project",
197
198
  version: "0.1.0"
198
199
  }, {
199
- name: S.String.annotations({
200
+ name: Schema.String.annotations({
200
201
  description: "name of the project"
201
202
  }),
202
- description: S.String,
203
- website: S.String,
204
- repo: S.String,
205
- status: S.String,
206
- priority: S.Number,
207
- active: S.Boolean,
203
+ description: Schema.String,
204
+ website: Schema.String,
205
+ repo: Schema.String,
206
+ status: Schema.String,
207
+ priority: Schema.Number,
208
+ active: Schema.Boolean,
208
209
  org: Ref(organization)
209
210
  });
210
211
  return {
@@ -242,7 +243,7 @@ var testObjectGenerators = {
242
243
  }) ? faker2.internet.email() : void 0,
243
244
  org: organizations?.length && faker2.datatype.boolean({
244
245
  probability: 0.3
245
- }) ? makeRef(faker2.helpers.arrayElement(organizations)) : void 0,
246
+ }) ? Ref.make(faker2.helpers.arrayElement(organizations)) : void 0,
246
247
  ...location
247
248
  };
248
249
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/data.ts", "../../../src/generator.ts", "../../../src/util.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { next as A } from '@dxos/automerge/automerge';\nimport { createDocAccessor, type Space } from '@dxos/client/echo';\nimport { Ref, S } from '@dxos/echo-schema';\nimport { createEchoSchema, makeRef } from '@dxos/live-object';\nimport { faker } from '@dxos/random';\n\nimport { SpaceObjectGenerator, TestObjectGenerator } from './generator';\nimport { type TestGeneratorMap, type TestMutationsMap, type TestSchemaMap } from './types';\nimport { randomText } from './util';\n\n// TODO(burdon): Reconcile with @dxos/plugin-debug, @dxos/aurora/testing.\n// TODO(burdon): Bug when adding stale objects to space (e.g., static objects already added in previous story invocation).\n\n// TODO(burdon): Handle restricted values.\nexport const Status = ['pending', 'active', 'done'];\nexport const Priority = [1, 2, 3, 4, 5];\n\nexport enum TestSchemaType {\n document = 'example.com/type/document',\n organization = 'example.com/type/organization',\n contact = 'example.com/type/contact',\n project = 'example.com/type/project',\n}\n\nconst testSchemas = (): TestSchemaMap<TestSchemaType> => {\n const document = createEchoSchema(\n {\n typename: TestSchemaType.document,\n version: '0.1.0',\n },\n {\n title: S.String.annotations({ description: 'title of the document' }),\n content: S.String,\n },\n );\n\n const organization = createEchoSchema(\n {\n typename: TestSchemaType.organization,\n version: '0.1.0',\n },\n {\n name: S.String.annotations({ description: 'name of the company or organization' }),\n website: S.String.annotations({ description: 'public website URL' }),\n description: S.String.annotations({ description: 'short summary of the company' }),\n },\n );\n\n const contact = createEchoSchema(\n {\n typename: TestSchemaType.contact,\n version: '0.1.0',\n },\n {\n name: S.String.annotations({ description: 'name of the person' }),\n email: S.String,\n org: Ref(organization),\n lat: S.Number,\n lng: S.Number,\n },\n );\n\n const project = createEchoSchema(\n {\n typename: TestSchemaType.project,\n version: '0.1.0',\n },\n {\n name: S.String.annotations({ description: 'name of the project' }),\n description: S.String,\n website: S.String,\n repo: S.String,\n status: S.String,\n priority: S.Number,\n active: S.Boolean,\n org: Ref(organization),\n },\n );\n\n return {\n [TestSchemaType.document]: document,\n [TestSchemaType.organization]: organization,\n [TestSchemaType.contact]: contact,\n [TestSchemaType.project]: project,\n };\n};\n\nconst testObjectGenerators: TestGeneratorMap<TestSchemaType> = {\n [TestSchemaType.document]: async () => ({\n title: faker.lorem.sentence(3),\n content: faker.lorem.sentences({ min: 1, max: faker.number.int({ min: 1, max: 3 }) }),\n }),\n\n [TestSchemaType.organization]: async () => ({\n name: faker.company.name(),\n website: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n description: faker.lorem.sentences(),\n }),\n\n [TestSchemaType.contact]: async (provider) => {\n const organizations = await provider?.(TestSchemaType.organization);\n const { location } = faker.datatype.boolean() ? faker.geo.airport() : {};\n return {\n name: faker.person.fullName(),\n email: faker.datatype.boolean({ probability: 0.5 }) ? faker.internet.email() : undefined,\n org:\n organizations?.length && faker.datatype.boolean({ probability: 0.3 })\n ? makeRef(faker.helpers.arrayElement(organizations))\n : undefined,\n ...location,\n };\n },\n\n [TestSchemaType.project]: async () => ({\n name: faker.commerce.productName(),\n repo: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n status: faker.helpers.arrayElement(Status),\n priority: faker.helpers.arrayElement(Priority),\n active: faker.datatype.boolean(),\n }),\n};\n\nconst testObjectMutators: TestMutationsMap<TestSchemaType> = {\n [TestSchemaType.document]: async (object, params) => {\n const accessor = createDocAccessor(object, ['content']);\n for (let i = 0; i < params.count; i++) {\n const length = object.content?.content?.length ?? 0;\n accessor.handle.change((doc) => {\n A.splice(\n doc,\n accessor.path.slice(),\n 0,\n params.maxContentLength >= length ? 0 : params.mutationSize,\n randomText(params.mutationSize),\n );\n });\n }\n },\n [TestSchemaType.organization]: async () => {\n throw new Error('Method not implemented.');\n },\n [TestSchemaType.contact]: async () => {\n throw new Error('Method not implemented.');\n },\n [TestSchemaType.project]: async () => {\n throw new Error('Method not implemented.');\n },\n};\n\nexport const createTestObjectGenerator = () => new TestObjectGenerator(testSchemas(), testObjectGenerators);\n\nexport const createSpaceObjectGenerator = (space: Space) =>\n new SpaceObjectGenerator(space, testSchemas(), testObjectGenerators, testObjectMutators);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { type ReactiveEchoObject } from '@dxos/echo-db';\nimport { getTypeAnnotation, EchoSchema, type S } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { create, getSchema, isReactiveObject, type ReactiveObject } from '@dxos/live-object';\nimport { faker } from '@dxos/random';\nimport { range } from '@dxos/util';\n\nimport { type TestSchemaType } from './data';\nimport {\n type MutationsProviderParams,\n type TestGeneratorMap,\n type TestMutationsMap,\n type TestObjectProvider,\n type TestSchemaMap,\n} from './types';\n\n/**\n * Typed object generator.\n */\nexport class TestObjectGenerator<T extends string = TestSchemaType> {\n // prettier-ignore\n constructor(\n protected readonly _schemas: TestSchemaMap<T>,\n private readonly _generators: TestGeneratorMap<T>,\n private readonly _provider?: TestObjectProvider<T>,\n ) {}\n\n get schemas(): (EchoSchema | S.Schema.AnyNoContext)[] {\n return Object.values(this._schemas);\n }\n\n getSchema(type: T): EchoSchema | S.Schema.AnyNoContext | undefined {\n return this.schemas.find((schema) => getTypeAnnotation(schema)!.typename === type);\n }\n\n protected setSchema(type: T, schema: EchoSchema | S.Schema.AnyNoContext) {\n this._schemas[type] = schema;\n }\n\n async createObject({ types }: { types?: T[] } = {}): Promise<ReactiveObject<any>> {\n const type = faker.helpers.arrayElement(types ?? (Object.keys(this._schemas) as T[]));\n const data = await this._generators[type](this._provider);\n if (isReactiveObject(data)) {\n return data;\n }\n\n const schema = this.getSchema(type);\n return schema ? create(schema, data) : create(data);\n }\n\n // TODO(burdon): Based on dependencies (e.g., organization before contact).\n async createObjects(map: Partial<Record<T, number>>) {\n const tasks = Object.entries<number>(map as any)\n .map(([type, count]) => {\n return range(count, () => this.createObject({ types: [type as T] }));\n })\n .flatMap((t) => t);\n\n return Promise.all(tasks);\n }\n}\n\n/**\n * Typed object generator for a space.\n */\nexport class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<T> {\n constructor(\n private readonly _space: Space,\n schemaMap: TestSchemaMap<T>,\n generators: TestGeneratorMap<T>,\n private readonly _mutations?: TestMutationsMap<T>,\n ) {\n super(schemaMap, generators, async (type: T) => {\n const schema = this.getSchema(type);\n return (schema && (await this._space.db.query(Filter.schema(schema)).run()).objects) ?? [];\n });\n }\n\n async addSchemas() {\n const result: (EchoSchema | S.Schema.AnyNoContext)[] = [];\n for (const [typename, schema] of Object.entries(this._schemas)) {\n const echoSchema = await this._maybeRegisterSchema(typename, schema as EchoSchema | S.Schema.AnyNoContext);\n this.setSchema(typename as T, echoSchema);\n result.push(echoSchema);\n }\n\n return result;\n }\n\n override async createObject({ types }: { types?: T[] } = {}): Promise<ReactiveEchoObject<any>> {\n return this._space.db.add(await super.createObject({ types }));\n }\n\n private async _maybeRegisterSchema(\n typename: string,\n schema: EchoSchema | S.Schema.AnyNoContext,\n ): Promise<EchoSchema | S.Schema.AnyNoContext> {\n if (schema instanceof EchoSchema) {\n const existingSchema = this._space.db.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n const [registeredSchema] = await this._space.db.schemaRegistry.register([schema]);\n return registeredSchema;\n } else {\n const existingSchema = this._space.db.graph.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n this._space.db.graph.schemaRegistry.addSchema([schema]);\n return schema;\n }\n }\n\n async mutateObject(object: ReactiveEchoObject<any>, params: MutationsProviderParams) {\n invariant(this._mutations, 'Mutations not defined.');\n const type = getTypeAnnotation(getSchema(object)!)!.typename as T;\n invariant(type && this._mutations?.[type], 'Invalid object type.');\n\n await this._mutations![type](object, params);\n }\n\n async mutateObjects(objects: ReactiveEchoObject<any>[], params: MutationsProviderParams) {\n for (const object of objects) {\n await this.mutateObject(object, params);\n }\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const randomText = (length: number) => {\n let result = '';\n const characters = 'abcdefghijklmnopqrstuvwxyz';\n const charactersLength = characters.length;\n for (let index = 0; index < length; index++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n};\n"],
5
- "mappings": "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",
6
- "names": ["next", "A", "createDocAccessor", "Ref", "S", "createEchoSchema", "makeRef", "faker", "Filter", "getTypeAnnotation", "EchoSchema", "invariant", "create", "getSchema", "isReactiveObject", "faker", "range", "TestObjectGenerator", "constructor", "_schemas", "_generators", "_provider", "schemas", "Object", "values", "type", "find", "schema", "typename", "setSchema", "createObject", "types", "helpers", "arrayElement", "keys", "data", "createObjects", "map", "tasks", "entries", "count", "flatMap", "t", "Promise", "all", "SpaceObjectGenerator", "_space", "schemaMap", "generators", "_mutations", "db", "query", "run", "objects", "addSchemas", "result", "echoSchema", "_maybeRegisterSchema", "push", "add", "existingSchema", "schemaRegistry", "registeredSchema", "register", "graph", "addSchema", "mutateObject", "object", "params", "mutateObjects", "randomText", "length", "result", "characters", "charactersLength", "index", "charAt", "Math", "floor", "random", "Status", "Priority", "TestSchemaType", "testSchemas", "document", "createEchoSchema", "typename", "version", "title", "S", "String", "annotations", "description", "content", "organization", "name", "website", "contact", "email", "org", "Ref", "lat", "Number", "lng", "project", "repo", "status", "priority", "active", "Boolean", "testObjectGenerators", "faker", "lorem", "sentence", "sentences", "min", "max", "number", "int", "company", "datatype", "boolean", "probability", "internet", "url", "undefined", "provider", "organizations", "location", "geo", "airport", "person", "fullName", "length", "makeRef", "helpers", "arrayElement", "commerce", "productName", "testObjectMutators", "object", "params", "accessor", "createDocAccessor", "i", "count", "handle", "change", "doc", "A", "splice", "path", "slice", "maxContentLength", "mutationSize", "randomText", "Error", "createTestObjectGenerator", "TestObjectGenerator", "createSpaceObjectGenerator", "space", "SpaceObjectGenerator"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { next as A } from '@dxos/automerge/automerge';\nimport { createDocAccessor, type Space } from '@dxos/client/echo';\nimport { Ref } from '@dxos/echo-schema';\nimport { createEchoSchema } from '@dxos/live-object';\nimport { faker } from '@dxos/random';\n\nimport { SpaceObjectGenerator, TestObjectGenerator } from './generator';\nimport { type TestGeneratorMap, type TestMutationsMap, type TestSchemaMap } from './types';\nimport { randomText } from './util';\n\n// TODO(burdon): Reconcile with @dxos/plugin-debug, @dxos/aurora/testing.\n// TODO(burdon): Bug when adding stale objects to space (e.g., static objects already added in previous story invocation).\n\n// TODO(burdon): Handle restricted values.\nexport const Status = ['pending', 'active', 'done'];\nexport const Priority = [1, 2, 3, 4, 5];\n\nexport enum TestSchemaType {\n document = 'example.com/type/document',\n organization = 'example.com/type/organization',\n contact = 'example.com/type/contact',\n project = 'example.com/type/project',\n}\n\nconst testSchemas = (): TestSchemaMap<TestSchemaType> => {\n const document = createEchoSchema(\n {\n typename: TestSchemaType.document,\n version: '0.1.0',\n },\n {\n title: Schema.String.annotations({ description: 'title of the document' }),\n content: Schema.String,\n },\n );\n\n const organization = createEchoSchema(\n {\n typename: TestSchemaType.organization,\n version: '0.1.0',\n },\n {\n name: Schema.String.annotations({ description: 'name of the company or organization' }),\n website: Schema.String.annotations({ description: 'public website URL' }),\n description: Schema.String.annotations({ description: 'short summary of the company' }),\n },\n );\n\n const contact = createEchoSchema(\n {\n typename: TestSchemaType.contact,\n version: '0.1.0',\n },\n {\n name: Schema.String.annotations({ description: 'name of the person' }),\n email: Schema.String,\n org: Ref(organization),\n lat: Schema.Number,\n lng: Schema.Number,\n },\n );\n\n const project = createEchoSchema(\n {\n typename: TestSchemaType.project,\n version: '0.1.0',\n },\n {\n name: Schema.String.annotations({ description: 'name of the project' }),\n description: Schema.String,\n website: Schema.String,\n repo: Schema.String,\n status: Schema.String,\n priority: Schema.Number,\n active: Schema.Boolean,\n org: Ref(organization),\n },\n );\n\n return {\n [TestSchemaType.document]: document,\n [TestSchemaType.organization]: organization,\n [TestSchemaType.contact]: contact,\n [TestSchemaType.project]: project,\n };\n};\n\nconst testObjectGenerators: TestGeneratorMap<TestSchemaType> = {\n [TestSchemaType.document]: async () => ({\n title: faker.lorem.sentence(3),\n content: faker.lorem.sentences({ min: 1, max: faker.number.int({ min: 1, max: 3 }) }),\n }),\n\n [TestSchemaType.organization]: async () => ({\n name: faker.company.name(),\n website: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n description: faker.lorem.sentences(),\n }),\n\n [TestSchemaType.contact]: async (provider) => {\n const organizations = await provider?.(TestSchemaType.organization);\n const { location } = faker.datatype.boolean() ? faker.geo.airport() : {};\n return {\n name: faker.person.fullName(),\n email: faker.datatype.boolean({ probability: 0.5 }) ? faker.internet.email() : undefined,\n org:\n organizations?.length && faker.datatype.boolean({ probability: 0.3 })\n ? Ref.make(faker.helpers.arrayElement(organizations))\n : undefined,\n ...location,\n };\n },\n\n [TestSchemaType.project]: async () => ({\n name: faker.commerce.productName(),\n repo: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n status: faker.helpers.arrayElement(Status),\n priority: faker.helpers.arrayElement(Priority),\n active: faker.datatype.boolean(),\n }),\n};\n\nconst testObjectMutators: TestMutationsMap<TestSchemaType> = {\n [TestSchemaType.document]: async (object, params) => {\n const accessor = createDocAccessor(object, ['content']);\n for (let i = 0; i < params.count; i++) {\n const length = object.content?.content?.length ?? 0;\n accessor.handle.change((doc) => {\n A.splice(\n doc,\n accessor.path.slice(),\n 0,\n params.maxContentLength >= length ? 0 : params.mutationSize,\n randomText(params.mutationSize),\n );\n });\n }\n },\n [TestSchemaType.organization]: async () => {\n throw new Error('Method not implemented.');\n },\n [TestSchemaType.contact]: async () => {\n throw new Error('Method not implemented.');\n },\n [TestSchemaType.project]: async () => {\n throw new Error('Method not implemented.');\n },\n};\n\nexport const createTestObjectGenerator = () => new TestObjectGenerator(testSchemas(), testObjectGenerators);\n\nexport const createSpaceObjectGenerator = (space: Space) =>\n new SpaceObjectGenerator(space, testSchemas(), testObjectGenerators, testObjectMutators);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema } from 'effect';\n\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { type AnyLiveObject } from '@dxos/echo-db';\nimport { getTypeAnnotation, EchoSchema, getSchema } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { live, isLiveObject, type Live } from '@dxos/live-object';\nimport { faker } from '@dxos/random';\nimport { range } from '@dxos/util';\n\nimport { type TestSchemaType } from './data';\nimport {\n type MutationsProviderParams,\n type TestGeneratorMap,\n type TestMutationsMap,\n type TestObjectProvider,\n type TestSchemaMap,\n} from './types';\n\n/**\n * Typed object generator.\n */\nexport class TestObjectGenerator<T extends string = TestSchemaType> {\n // prettier-ignore\n constructor(\n protected readonly _schemas: TestSchemaMap<T>,\n private readonly _generators: TestGeneratorMap<T>,\n private readonly _provider?: TestObjectProvider<T>,\n ) {}\n\n get schemas(): (EchoSchema | Schema.Schema.AnyNoContext)[] {\n return Object.values(this._schemas);\n }\n\n getSchema(type: T): EchoSchema | Schema.Schema.AnyNoContext | undefined {\n return this.schemas.find((schema) => getTypeAnnotation(schema)!.typename === type);\n }\n\n protected setSchema(type: T, schema: EchoSchema | Schema.Schema.AnyNoContext) {\n this._schemas[type] = schema;\n }\n\n async createObject({ types }: { types?: T[] } = {}): Promise<Live<any>> {\n const type = faker.helpers.arrayElement(types ?? (Object.keys(this._schemas) as T[]));\n const data = await this._generators[type](this._provider);\n if (isLiveObject(data)) {\n return data;\n }\n\n const schema = this.getSchema(type);\n return schema ? live(schema, data) : live(data);\n }\n\n // TODO(burdon): Based on dependencies (e.g., organization before contact).\n async createObjects(map: Partial<Record<T, number>>) {\n const tasks = Object.entries<number>(map as any)\n .map(([type, count]) => {\n return range(count, () => this.createObject({ types: [type as T] }));\n })\n .flatMap((t) => t);\n\n return Promise.all(tasks);\n }\n}\n\n/**\n * Typed object generator for a space.\n */\nexport class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<T> {\n constructor(\n private readonly _space: Space,\n schemaMap: TestSchemaMap<T>,\n generators: TestGeneratorMap<T>,\n private readonly _mutations?: TestMutationsMap<T>,\n ) {\n super(schemaMap, generators, async (type: T) => {\n const schema = this.getSchema(type);\n return (schema && (await this._space.db.query(Filter.schema(schema)).run()).objects) ?? [];\n });\n }\n\n async addSchemas() {\n const result: (EchoSchema | Schema.Schema.AnyNoContext)[] = [];\n for (const [typename, schema] of Object.entries(this._schemas)) {\n const echoSchema = await this._maybeRegisterSchema(typename, schema as EchoSchema | Schema.Schema.AnyNoContext);\n this.setSchema(typename as T, echoSchema);\n result.push(echoSchema);\n }\n\n return result;\n }\n\n override async createObject({ types }: { types?: T[] } = {}): Promise<AnyLiveObject<any>> {\n return this._space.db.add(await super.createObject({ types }));\n }\n\n private async _maybeRegisterSchema(\n typename: string,\n schema: EchoSchema | Schema.Schema.AnyNoContext,\n ): Promise<EchoSchema | Schema.Schema.AnyNoContext> {\n if (schema instanceof EchoSchema) {\n const existingSchema = this._space.db.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n const [registeredSchema] = await this._space.db.schemaRegistry.register([schema]);\n return registeredSchema;\n } else {\n const existingSchema = this._space.db.graph.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n this._space.db.graph.schemaRegistry.addSchema([schema]);\n return schema;\n }\n }\n\n async mutateObject(object: AnyLiveObject<any>, params: MutationsProviderParams) {\n invariant(this._mutations, 'Mutations not defined.');\n const type = getTypeAnnotation(getSchema(object)!)!.typename as T;\n invariant(type && this._mutations?.[type], 'Invalid object type.');\n\n await this._mutations![type](object, params);\n }\n\n async mutateObjects(objects: AnyLiveObject<any>[], params: MutationsProviderParams) {\n for (const object of objects) {\n await this.mutateObject(object, params);\n }\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const randomText = (length: number) => {\n let result = '';\n const characters = 'abcdefghijklmnopqrstuvwxyz';\n const charactersLength = characters.length;\n for (let index = 0; index < length; index++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "next", "A", "createDocAccessor", "Ref", "createEchoSchema", "faker", "Filter", "getTypeAnnotation", "EchoSchema", "getSchema", "invariant", "live", "isLiveObject", "faker", "range", "TestObjectGenerator", "constructor", "_schemas", "_generators", "_provider", "schemas", "Object", "values", "type", "find", "schema", "typename", "setSchema", "createObject", "types", "helpers", "arrayElement", "keys", "data", "createObjects", "map", "tasks", "entries", "count", "flatMap", "t", "Promise", "all", "SpaceObjectGenerator", "_space", "schemaMap", "generators", "_mutations", "db", "query", "run", "objects", "addSchemas", "result", "echoSchema", "_maybeRegisterSchema", "push", "add", "existingSchema", "schemaRegistry", "registeredSchema", "register", "graph", "addSchema", "mutateObject", "object", "params", "mutateObjects", "randomText", "length", "result", "characters", "charactersLength", "index", "charAt", "Math", "floor", "random", "Status", "Priority", "TestSchemaType", "testSchemas", "document", "createEchoSchema", "typename", "version", "title", "Schema", "String", "annotations", "description", "content", "organization", "name", "website", "contact", "email", "org", "Ref", "lat", "Number", "lng", "project", "repo", "status", "priority", "active", "Boolean", "testObjectGenerators", "faker", "lorem", "sentence", "sentences", "min", "max", "number", "int", "company", "datatype", "boolean", "probability", "internet", "url", "undefined", "provider", "organizations", "location", "geo", "airport", "person", "fullName", "length", "make", "helpers", "arrayElement", "commerce", "productName", "testObjectMutators", "object", "params", "accessor", "createDocAccessor", "i", "count", "handle", "change", "doc", "A", "splice", "path", "slice", "maxContentLength", "mutationSize", "randomText", "Error", "createTestObjectGenerator", "TestObjectGenerator", "createSpaceObjectGenerator", "space", "SpaceObjectGenerator"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/core/echo/echo-generator/src/generator.ts":{"bytes":15779,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-generator/src/util.ts":{"bytes":1624,"imports":[],"format":"esm"},"packages/core/echo/echo-generator/src/data.ts":{"bytes":18602,"imports":[{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-generator/src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/core/echo/echo-generator/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/core/echo/echo-generator/src/types.ts":{"bytes":1733,"imports":[],"format":"esm"},"packages/core/echo/echo-generator/src/index.ts":{"bytes":751,"imports":[{"path":"packages/core/echo/echo-generator/src/data.ts","kind":"import-statement","original":"./data"},{"path":"packages/core/echo/echo-generator/src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/core/echo/echo-generator/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/core/echo/echo-generator/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/core/echo/echo-generator/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":17899},"packages/core/echo/echo-generator/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["Priority","SpaceObjectGenerator","Status","TestObjectGenerator","TestSchemaType","createSpaceObjectGenerator","createTestObjectGenerator","randomText"],"entryPoint":"packages/core/echo/echo-generator/src/index.ts","inputs":{"packages/core/echo/echo-generator/src/data.ts":{"bytesInOutput":4586},"packages/core/echo/echo-generator/src/generator.ts":{"bytesInOutput":3723},"packages/core/echo/echo-generator/src/util.ts":{"bytesInOutput":299},"packages/core/echo/echo-generator/src/index.ts":{"bytesInOutput":0}},"bytes":9052}}}
1
+ {"inputs":{"packages/core/echo/echo-generator/src/generator.ts":{"bytes":15773,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-generator/src/util.ts":{"bytes":1624,"imports":[],"format":"esm"},"packages/core/echo/echo-generator/src/data.ts":{"bytes":18896,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-generator/src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/core/echo/echo-generator/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/core/echo/echo-generator/src/types.ts":{"bytes":1745,"imports":[],"format":"esm"},"packages/core/echo/echo-generator/src/index.ts":{"bytes":751,"imports":[{"path":"packages/core/echo/echo-generator/src/data.ts","kind":"import-statement","original":"./data"},{"path":"packages/core/echo/echo-generator/src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/core/echo/echo-generator/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/core/echo/echo-generator/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/core/echo/echo-generator/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":18027},"packages/core/echo/echo-generator/dist/lib/browser/index.mjs":{"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["Priority","SpaceObjectGenerator","Status","TestObjectGenerator","TestSchemaType","createSpaceObjectGenerator","createTestObjectGenerator","randomText"],"entryPoint":"packages/core/echo/echo-generator/src/index.ts","inputs":{"packages/core/echo/echo-generator/src/data.ts":{"bytesInOutput":4688},"packages/core/echo/echo-generator/src/generator.ts":{"bytesInOutput":3709},"packages/core/echo/echo-generator/src/util.ts":{"bytesInOutput":299},"packages/core/echo/echo-generator/src/index.ts":{"bytesInOutput":0}},"bytes":9140}}}
@@ -28,6 +28,7 @@ __export(node_exports, {
28
28
  randomText: () => randomText
29
29
  });
30
30
  module.exports = __toCommonJS(node_exports);
31
+ var import_effect = require("effect");
31
32
  var import_automerge = require("@dxos/automerge/automerge");
32
33
  var import_echo = require("@dxos/client/echo");
33
34
  var import_echo_schema = require("@dxos/echo-schema");
@@ -59,11 +60,11 @@ var TestObjectGenerator = class {
59
60
  async createObject({ types } = {}) {
60
61
  const type = import_random2.faker.helpers.arrayElement(types ?? Object.keys(this._schemas));
61
62
  const data = await this._generators[type](this._provider);
62
- if ((0, import_live_object2.isReactiveObject)(data)) {
63
+ if ((0, import_live_object2.isLiveObject)(data)) {
63
64
  return data;
64
65
  }
65
66
  const schema = this.getSchema(type);
66
- return schema ? (0, import_live_object2.create)(schema, data) : (0, import_live_object2.create)(data);
67
+ return schema ? (0, import_live_object2.live)(schema, data) : (0, import_live_object2.live)(data);
67
68
  }
68
69
  // TODO(burdon): Based on dependencies (e.g., organization before contact).
69
70
  async createObjects(map) {
@@ -124,17 +125,17 @@ var SpaceObjectGenerator = class extends TestObjectGenerator {
124
125
  async mutateObject(object, params) {
125
126
  (0, import_invariant.invariant)(this._mutations, "Mutations not defined.", {
126
127
  F: __dxlog_file,
127
- L: 121,
128
+ L: 123,
128
129
  S: this,
129
130
  A: [
130
131
  "this._mutations",
131
132
  "'Mutations not defined.'"
132
133
  ]
133
134
  });
134
- const type = (0, import_echo_schema2.getTypeAnnotation)((0, import_live_object2.getSchema)(object)).typename;
135
+ const type = (0, import_echo_schema2.getTypeAnnotation)((0, import_echo_schema2.getSchema)(object)).typename;
135
136
  (0, import_invariant.invariant)(type && this._mutations?.[type], "Invalid object type.", {
136
137
  F: __dxlog_file,
137
- L: 123,
138
+ L: 125,
138
139
  S: this,
139
140
  A: [
140
141
  "type && this._mutations?.[type]",
@@ -182,22 +183,22 @@ var testSchemas = () => {
182
183
  typename: "example.com/type/document",
183
184
  version: "0.1.0"
184
185
  }, {
185
- title: import_echo_schema.S.String.annotations({
186
+ title: import_effect.Schema.String.annotations({
186
187
  description: "title of the document"
187
188
  }),
188
- content: import_echo_schema.S.String
189
+ content: import_effect.Schema.String
189
190
  });
190
191
  const organization = (0, import_live_object.createEchoSchema)({
191
192
  typename: "example.com/type/organization",
192
193
  version: "0.1.0"
193
194
  }, {
194
- name: import_echo_schema.S.String.annotations({
195
+ name: import_effect.Schema.String.annotations({
195
196
  description: "name of the company or organization"
196
197
  }),
197
- website: import_echo_schema.S.String.annotations({
198
+ website: import_effect.Schema.String.annotations({
198
199
  description: "public website URL"
199
200
  }),
200
- description: import_echo_schema.S.String.annotations({
201
+ description: import_effect.Schema.String.annotations({
201
202
  description: "short summary of the company"
202
203
  })
203
204
  });
@@ -205,27 +206,27 @@ var testSchemas = () => {
205
206
  typename: "example.com/type/contact",
206
207
  version: "0.1.0"
207
208
  }, {
208
- name: import_echo_schema.S.String.annotations({
209
+ name: import_effect.Schema.String.annotations({
209
210
  description: "name of the person"
210
211
  }),
211
- email: import_echo_schema.S.String,
212
+ email: import_effect.Schema.String,
212
213
  org: (0, import_echo_schema.Ref)(organization),
213
- lat: import_echo_schema.S.Number,
214
- lng: import_echo_schema.S.Number
214
+ lat: import_effect.Schema.Number,
215
+ lng: import_effect.Schema.Number
215
216
  });
216
217
  const project = (0, import_live_object.createEchoSchema)({
217
218
  typename: "example.com/type/project",
218
219
  version: "0.1.0"
219
220
  }, {
220
- name: import_echo_schema.S.String.annotations({
221
+ name: import_effect.Schema.String.annotations({
221
222
  description: "name of the project"
222
223
  }),
223
- description: import_echo_schema.S.String,
224
- website: import_echo_schema.S.String,
225
- repo: import_echo_schema.S.String,
226
- status: import_echo_schema.S.String,
227
- priority: import_echo_schema.S.Number,
228
- active: import_echo_schema.S.Boolean,
224
+ description: import_effect.Schema.String,
225
+ website: import_effect.Schema.String,
226
+ repo: import_effect.Schema.String,
227
+ status: import_effect.Schema.String,
228
+ priority: import_effect.Schema.Number,
229
+ active: import_effect.Schema.Boolean,
229
230
  org: (0, import_echo_schema.Ref)(organization)
230
231
  });
231
232
  return {
@@ -263,7 +264,7 @@ var testObjectGenerators = {
263
264
  }) ? import_random.faker.internet.email() : void 0,
264
265
  org: organizations?.length && import_random.faker.datatype.boolean({
265
266
  probability: 0.3
266
- }) ? (0, import_live_object.makeRef)(import_random.faker.helpers.arrayElement(organizations)) : void 0,
267
+ }) ? import_echo_schema.Ref.make(import_random.faker.helpers.arrayElement(organizations)) : void 0,
267
268
  ...location
268
269
  };
269
270
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/data.ts", "../../../src/generator.ts", "../../../src/util.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { next as A } from '@dxos/automerge/automerge';\nimport { createDocAccessor, type Space } from '@dxos/client/echo';\nimport { Ref, S } from '@dxos/echo-schema';\nimport { createEchoSchema, makeRef } from '@dxos/live-object';\nimport { faker } from '@dxos/random';\n\nimport { SpaceObjectGenerator, TestObjectGenerator } from './generator';\nimport { type TestGeneratorMap, type TestMutationsMap, type TestSchemaMap } from './types';\nimport { randomText } from './util';\n\n// TODO(burdon): Reconcile with @dxos/plugin-debug, @dxos/aurora/testing.\n// TODO(burdon): Bug when adding stale objects to space (e.g., static objects already added in previous story invocation).\n\n// TODO(burdon): Handle restricted values.\nexport const Status = ['pending', 'active', 'done'];\nexport const Priority = [1, 2, 3, 4, 5];\n\nexport enum TestSchemaType {\n document = 'example.com/type/document',\n organization = 'example.com/type/organization',\n contact = 'example.com/type/contact',\n project = 'example.com/type/project',\n}\n\nconst testSchemas = (): TestSchemaMap<TestSchemaType> => {\n const document = createEchoSchema(\n {\n typename: TestSchemaType.document,\n version: '0.1.0',\n },\n {\n title: S.String.annotations({ description: 'title of the document' }),\n content: S.String,\n },\n );\n\n const organization = createEchoSchema(\n {\n typename: TestSchemaType.organization,\n version: '0.1.0',\n },\n {\n name: S.String.annotations({ description: 'name of the company or organization' }),\n website: S.String.annotations({ description: 'public website URL' }),\n description: S.String.annotations({ description: 'short summary of the company' }),\n },\n );\n\n const contact = createEchoSchema(\n {\n typename: TestSchemaType.contact,\n version: '0.1.0',\n },\n {\n name: S.String.annotations({ description: 'name of the person' }),\n email: S.String,\n org: Ref(organization),\n lat: S.Number,\n lng: S.Number,\n },\n );\n\n const project = createEchoSchema(\n {\n typename: TestSchemaType.project,\n version: '0.1.0',\n },\n {\n name: S.String.annotations({ description: 'name of the project' }),\n description: S.String,\n website: S.String,\n repo: S.String,\n status: S.String,\n priority: S.Number,\n active: S.Boolean,\n org: Ref(organization),\n },\n );\n\n return {\n [TestSchemaType.document]: document,\n [TestSchemaType.organization]: organization,\n [TestSchemaType.contact]: contact,\n [TestSchemaType.project]: project,\n };\n};\n\nconst testObjectGenerators: TestGeneratorMap<TestSchemaType> = {\n [TestSchemaType.document]: async () => ({\n title: faker.lorem.sentence(3),\n content: faker.lorem.sentences({ min: 1, max: faker.number.int({ min: 1, max: 3 }) }),\n }),\n\n [TestSchemaType.organization]: async () => ({\n name: faker.company.name(),\n website: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n description: faker.lorem.sentences(),\n }),\n\n [TestSchemaType.contact]: async (provider) => {\n const organizations = await provider?.(TestSchemaType.organization);\n const { location } = faker.datatype.boolean() ? faker.geo.airport() : {};\n return {\n name: faker.person.fullName(),\n email: faker.datatype.boolean({ probability: 0.5 }) ? faker.internet.email() : undefined,\n org:\n organizations?.length && faker.datatype.boolean({ probability: 0.3 })\n ? makeRef(faker.helpers.arrayElement(organizations))\n : undefined,\n ...location,\n };\n },\n\n [TestSchemaType.project]: async () => ({\n name: faker.commerce.productName(),\n repo: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n status: faker.helpers.arrayElement(Status),\n priority: faker.helpers.arrayElement(Priority),\n active: faker.datatype.boolean(),\n }),\n};\n\nconst testObjectMutators: TestMutationsMap<TestSchemaType> = {\n [TestSchemaType.document]: async (object, params) => {\n const accessor = createDocAccessor(object, ['content']);\n for (let i = 0; i < params.count; i++) {\n const length = object.content?.content?.length ?? 0;\n accessor.handle.change((doc) => {\n A.splice(\n doc,\n accessor.path.slice(),\n 0,\n params.maxContentLength >= length ? 0 : params.mutationSize,\n randomText(params.mutationSize),\n );\n });\n }\n },\n [TestSchemaType.organization]: async () => {\n throw new Error('Method not implemented.');\n },\n [TestSchemaType.contact]: async () => {\n throw new Error('Method not implemented.');\n },\n [TestSchemaType.project]: async () => {\n throw new Error('Method not implemented.');\n },\n};\n\nexport const createTestObjectGenerator = () => new TestObjectGenerator(testSchemas(), testObjectGenerators);\n\nexport const createSpaceObjectGenerator = (space: Space) =>\n new SpaceObjectGenerator(space, testSchemas(), testObjectGenerators, testObjectMutators);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { type ReactiveEchoObject } from '@dxos/echo-db';\nimport { getTypeAnnotation, EchoSchema, type S } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { create, getSchema, isReactiveObject, type ReactiveObject } from '@dxos/live-object';\nimport { faker } from '@dxos/random';\nimport { range } from '@dxos/util';\n\nimport { type TestSchemaType } from './data';\nimport {\n type MutationsProviderParams,\n type TestGeneratorMap,\n type TestMutationsMap,\n type TestObjectProvider,\n type TestSchemaMap,\n} from './types';\n\n/**\n * Typed object generator.\n */\nexport class TestObjectGenerator<T extends string = TestSchemaType> {\n // prettier-ignore\n constructor(\n protected readonly _schemas: TestSchemaMap<T>,\n private readonly _generators: TestGeneratorMap<T>,\n private readonly _provider?: TestObjectProvider<T>,\n ) {}\n\n get schemas(): (EchoSchema | S.Schema.AnyNoContext)[] {\n return Object.values(this._schemas);\n }\n\n getSchema(type: T): EchoSchema | S.Schema.AnyNoContext | undefined {\n return this.schemas.find((schema) => getTypeAnnotation(schema)!.typename === type);\n }\n\n protected setSchema(type: T, schema: EchoSchema | S.Schema.AnyNoContext) {\n this._schemas[type] = schema;\n }\n\n async createObject({ types }: { types?: T[] } = {}): Promise<ReactiveObject<any>> {\n const type = faker.helpers.arrayElement(types ?? (Object.keys(this._schemas) as T[]));\n const data = await this._generators[type](this._provider);\n if (isReactiveObject(data)) {\n return data;\n }\n\n const schema = this.getSchema(type);\n return schema ? create(schema, data) : create(data);\n }\n\n // TODO(burdon): Based on dependencies (e.g., organization before contact).\n async createObjects(map: Partial<Record<T, number>>) {\n const tasks = Object.entries<number>(map as any)\n .map(([type, count]) => {\n return range(count, () => this.createObject({ types: [type as T] }));\n })\n .flatMap((t) => t);\n\n return Promise.all(tasks);\n }\n}\n\n/**\n * Typed object generator for a space.\n */\nexport class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<T> {\n constructor(\n private readonly _space: Space,\n schemaMap: TestSchemaMap<T>,\n generators: TestGeneratorMap<T>,\n private readonly _mutations?: TestMutationsMap<T>,\n ) {\n super(schemaMap, generators, async (type: T) => {\n const schema = this.getSchema(type);\n return (schema && (await this._space.db.query(Filter.schema(schema)).run()).objects) ?? [];\n });\n }\n\n async addSchemas() {\n const result: (EchoSchema | S.Schema.AnyNoContext)[] = [];\n for (const [typename, schema] of Object.entries(this._schemas)) {\n const echoSchema = await this._maybeRegisterSchema(typename, schema as EchoSchema | S.Schema.AnyNoContext);\n this.setSchema(typename as T, echoSchema);\n result.push(echoSchema);\n }\n\n return result;\n }\n\n override async createObject({ types }: { types?: T[] } = {}): Promise<ReactiveEchoObject<any>> {\n return this._space.db.add(await super.createObject({ types }));\n }\n\n private async _maybeRegisterSchema(\n typename: string,\n schema: EchoSchema | S.Schema.AnyNoContext,\n ): Promise<EchoSchema | S.Schema.AnyNoContext> {\n if (schema instanceof EchoSchema) {\n const existingSchema = this._space.db.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n const [registeredSchema] = await this._space.db.schemaRegistry.register([schema]);\n return registeredSchema;\n } else {\n const existingSchema = this._space.db.graph.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n this._space.db.graph.schemaRegistry.addSchema([schema]);\n return schema;\n }\n }\n\n async mutateObject(object: ReactiveEchoObject<any>, params: MutationsProviderParams) {\n invariant(this._mutations, 'Mutations not defined.');\n const type = getTypeAnnotation(getSchema(object)!)!.typename as T;\n invariant(type && this._mutations?.[type], 'Invalid object type.');\n\n await this._mutations![type](object, params);\n }\n\n async mutateObjects(objects: ReactiveEchoObject<any>[], params: MutationsProviderParams) {\n for (const object of objects) {\n await this.mutateObject(object, params);\n }\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const randomText = (length: number) => {\n let result = '';\n const characters = 'abcdefghijklmnopqrstuvwxyz';\n const charactersLength = characters.length;\n for (let index = 0; index < length; index++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n};\n"],
5
- "mappings": "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",
6
- "names": ["import_echo", "import_echo_schema", "import_live_object", "import_random", "TestObjectGenerator", "constructor", "_schemas", "_generators", "_provider", "schemas", "Object", "values", "getSchema", "type", "find", "schema", "getTypeAnnotation", "typename", "setSchema", "createObject", "types", "faker", "helpers", "arrayElement", "keys", "data", "isReactiveObject", "create", "createObjects", "map", "tasks", "entries", "count", "range", "flatMap", "t", "Promise", "all", "SpaceObjectGenerator", "_space", "schemaMap", "generators", "_mutations", "db", "query", "Filter", "run", "objects", "addSchemas", "result", "echoSchema", "_maybeRegisterSchema", "push", "add", "EchoSchema", "existingSchema", "schemaRegistry", "registeredSchema", "register", "graph", "addSchema", "mutateObject", "object", "params", "invariant", "mutateObjects", "randomText", "length", "characters", "charactersLength", "index", "charAt", "Math", "floor", "random", "Status", "Priority", "TestSchemaType", "testSchemas", "document", "createEchoSchema", "version", "title", "S", "String", "annotations", "description", "content", "organization", "name", "website", "contact", "email", "org", "Ref", "lat", "Number", "lng", "project", "repo", "status", "priority", "active", "Boolean", "testObjectGenerators", "lorem", "sentence", "sentences", "min", "max", "number", "int", "company", "datatype", "boolean", "probability", "internet", "url", "undefined", "provider", "organizations", "location", "geo", "airport", "person", "fullName", "makeRef", "commerce", "productName", "testObjectMutators", "accessor", "createDocAccessor", "i", "handle", "change", "doc", "A", "splice", "path", "slice", "maxContentLength", "mutationSize", "Error", "createTestObjectGenerator", "createSpaceObjectGenerator", "space"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { next as A } from '@dxos/automerge/automerge';\nimport { createDocAccessor, type Space } from '@dxos/client/echo';\nimport { Ref } from '@dxos/echo-schema';\nimport { createEchoSchema } from '@dxos/live-object';\nimport { faker } from '@dxos/random';\n\nimport { SpaceObjectGenerator, TestObjectGenerator } from './generator';\nimport { type TestGeneratorMap, type TestMutationsMap, type TestSchemaMap } from './types';\nimport { randomText } from './util';\n\n// TODO(burdon): Reconcile with @dxos/plugin-debug, @dxos/aurora/testing.\n// TODO(burdon): Bug when adding stale objects to space (e.g., static objects already added in previous story invocation).\n\n// TODO(burdon): Handle restricted values.\nexport const Status = ['pending', 'active', 'done'];\nexport const Priority = [1, 2, 3, 4, 5];\n\nexport enum TestSchemaType {\n document = 'example.com/type/document',\n organization = 'example.com/type/organization',\n contact = 'example.com/type/contact',\n project = 'example.com/type/project',\n}\n\nconst testSchemas = (): TestSchemaMap<TestSchemaType> => {\n const document = createEchoSchema(\n {\n typename: TestSchemaType.document,\n version: '0.1.0',\n },\n {\n title: Schema.String.annotations({ description: 'title of the document' }),\n content: Schema.String,\n },\n );\n\n const organization = createEchoSchema(\n {\n typename: TestSchemaType.organization,\n version: '0.1.0',\n },\n {\n name: Schema.String.annotations({ description: 'name of the company or organization' }),\n website: Schema.String.annotations({ description: 'public website URL' }),\n description: Schema.String.annotations({ description: 'short summary of the company' }),\n },\n );\n\n const contact = createEchoSchema(\n {\n typename: TestSchemaType.contact,\n version: '0.1.0',\n },\n {\n name: Schema.String.annotations({ description: 'name of the person' }),\n email: Schema.String,\n org: Ref(organization),\n lat: Schema.Number,\n lng: Schema.Number,\n },\n );\n\n const project = createEchoSchema(\n {\n typename: TestSchemaType.project,\n version: '0.1.0',\n },\n {\n name: Schema.String.annotations({ description: 'name of the project' }),\n description: Schema.String,\n website: Schema.String,\n repo: Schema.String,\n status: Schema.String,\n priority: Schema.Number,\n active: Schema.Boolean,\n org: Ref(organization),\n },\n );\n\n return {\n [TestSchemaType.document]: document,\n [TestSchemaType.organization]: organization,\n [TestSchemaType.contact]: contact,\n [TestSchemaType.project]: project,\n };\n};\n\nconst testObjectGenerators: TestGeneratorMap<TestSchemaType> = {\n [TestSchemaType.document]: async () => ({\n title: faker.lorem.sentence(3),\n content: faker.lorem.sentences({ min: 1, max: faker.number.int({ min: 1, max: 3 }) }),\n }),\n\n [TestSchemaType.organization]: async () => ({\n name: faker.company.name(),\n website: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n description: faker.lorem.sentences(),\n }),\n\n [TestSchemaType.contact]: async (provider) => {\n const organizations = await provider?.(TestSchemaType.organization);\n const { location } = faker.datatype.boolean() ? faker.geo.airport() : {};\n return {\n name: faker.person.fullName(),\n email: faker.datatype.boolean({ probability: 0.5 }) ? faker.internet.email() : undefined,\n org:\n organizations?.length && faker.datatype.boolean({ probability: 0.3 })\n ? Ref.make(faker.helpers.arrayElement(organizations))\n : undefined,\n ...location,\n };\n },\n\n [TestSchemaType.project]: async () => ({\n name: faker.commerce.productName(),\n repo: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n status: faker.helpers.arrayElement(Status),\n priority: faker.helpers.arrayElement(Priority),\n active: faker.datatype.boolean(),\n }),\n};\n\nconst testObjectMutators: TestMutationsMap<TestSchemaType> = {\n [TestSchemaType.document]: async (object, params) => {\n const accessor = createDocAccessor(object, ['content']);\n for (let i = 0; i < params.count; i++) {\n const length = object.content?.content?.length ?? 0;\n accessor.handle.change((doc) => {\n A.splice(\n doc,\n accessor.path.slice(),\n 0,\n params.maxContentLength >= length ? 0 : params.mutationSize,\n randomText(params.mutationSize),\n );\n });\n }\n },\n [TestSchemaType.organization]: async () => {\n throw new Error('Method not implemented.');\n },\n [TestSchemaType.contact]: async () => {\n throw new Error('Method not implemented.');\n },\n [TestSchemaType.project]: async () => {\n throw new Error('Method not implemented.');\n },\n};\n\nexport const createTestObjectGenerator = () => new TestObjectGenerator(testSchemas(), testObjectGenerators);\n\nexport const createSpaceObjectGenerator = (space: Space) =>\n new SpaceObjectGenerator(space, testSchemas(), testObjectGenerators, testObjectMutators);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema } from 'effect';\n\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { type AnyLiveObject } from '@dxos/echo-db';\nimport { getTypeAnnotation, EchoSchema, getSchema } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { live, isLiveObject, type Live } from '@dxos/live-object';\nimport { faker } from '@dxos/random';\nimport { range } from '@dxos/util';\n\nimport { type TestSchemaType } from './data';\nimport {\n type MutationsProviderParams,\n type TestGeneratorMap,\n type TestMutationsMap,\n type TestObjectProvider,\n type TestSchemaMap,\n} from './types';\n\n/**\n * Typed object generator.\n */\nexport class TestObjectGenerator<T extends string = TestSchemaType> {\n // prettier-ignore\n constructor(\n protected readonly _schemas: TestSchemaMap<T>,\n private readonly _generators: TestGeneratorMap<T>,\n private readonly _provider?: TestObjectProvider<T>,\n ) {}\n\n get schemas(): (EchoSchema | Schema.Schema.AnyNoContext)[] {\n return Object.values(this._schemas);\n }\n\n getSchema(type: T): EchoSchema | Schema.Schema.AnyNoContext | undefined {\n return this.schemas.find((schema) => getTypeAnnotation(schema)!.typename === type);\n }\n\n protected setSchema(type: T, schema: EchoSchema | Schema.Schema.AnyNoContext) {\n this._schemas[type] = schema;\n }\n\n async createObject({ types }: { types?: T[] } = {}): Promise<Live<any>> {\n const type = faker.helpers.arrayElement(types ?? (Object.keys(this._schemas) as T[]));\n const data = await this._generators[type](this._provider);\n if (isLiveObject(data)) {\n return data;\n }\n\n const schema = this.getSchema(type);\n return schema ? live(schema, data) : live(data);\n }\n\n // TODO(burdon): Based on dependencies (e.g., organization before contact).\n async createObjects(map: Partial<Record<T, number>>) {\n const tasks = Object.entries<number>(map as any)\n .map(([type, count]) => {\n return range(count, () => this.createObject({ types: [type as T] }));\n })\n .flatMap((t) => t);\n\n return Promise.all(tasks);\n }\n}\n\n/**\n * Typed object generator for a space.\n */\nexport class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<T> {\n constructor(\n private readonly _space: Space,\n schemaMap: TestSchemaMap<T>,\n generators: TestGeneratorMap<T>,\n private readonly _mutations?: TestMutationsMap<T>,\n ) {\n super(schemaMap, generators, async (type: T) => {\n const schema = this.getSchema(type);\n return (schema && (await this._space.db.query(Filter.schema(schema)).run()).objects) ?? [];\n });\n }\n\n async addSchemas() {\n const result: (EchoSchema | Schema.Schema.AnyNoContext)[] = [];\n for (const [typename, schema] of Object.entries(this._schemas)) {\n const echoSchema = await this._maybeRegisterSchema(typename, schema as EchoSchema | Schema.Schema.AnyNoContext);\n this.setSchema(typename as T, echoSchema);\n result.push(echoSchema);\n }\n\n return result;\n }\n\n override async createObject({ types }: { types?: T[] } = {}): Promise<AnyLiveObject<any>> {\n return this._space.db.add(await super.createObject({ types }));\n }\n\n private async _maybeRegisterSchema(\n typename: string,\n schema: EchoSchema | Schema.Schema.AnyNoContext,\n ): Promise<EchoSchema | Schema.Schema.AnyNoContext> {\n if (schema instanceof EchoSchema) {\n const existingSchema = this._space.db.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n const [registeredSchema] = await this._space.db.schemaRegistry.register([schema]);\n return registeredSchema;\n } else {\n const existingSchema = this._space.db.graph.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n this._space.db.graph.schemaRegistry.addSchema([schema]);\n return schema;\n }\n }\n\n async mutateObject(object: AnyLiveObject<any>, params: MutationsProviderParams) {\n invariant(this._mutations, 'Mutations not defined.');\n const type = getTypeAnnotation(getSchema(object)!)!.typename as T;\n invariant(type && this._mutations?.[type], 'Invalid object type.');\n\n await this._mutations![type](object, params);\n }\n\n async mutateObjects(objects: AnyLiveObject<any>[], params: MutationsProviderParams) {\n for (const object of objects) {\n await this.mutateObject(object, params);\n }\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const randomText = (length: number) => {\n let result = '';\n const characters = 'abcdefghijklmnopqrstuvwxyz';\n const charactersLength = characters.length;\n for (let index = 0; index < length; index++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_echo", "import_echo_schema", "import_live_object", "import_random", "TestObjectGenerator", "constructor", "_schemas", "_generators", "_provider", "schemas", "Object", "values", "getSchema", "type", "find", "schema", "getTypeAnnotation", "typename", "setSchema", "createObject", "types", "faker", "helpers", "arrayElement", "keys", "data", "isLiveObject", "live", "createObjects", "map", "tasks", "entries", "count", "range", "flatMap", "t", "Promise", "all", "SpaceObjectGenerator", "_space", "schemaMap", "generators", "_mutations", "db", "query", "Filter", "run", "objects", "addSchemas", "result", "echoSchema", "_maybeRegisterSchema", "push", "add", "EchoSchema", "existingSchema", "schemaRegistry", "registeredSchema", "register", "graph", "addSchema", "mutateObject", "object", "params", "invariant", "mutateObjects", "randomText", "length", "characters", "charactersLength", "index", "charAt", "Math", "floor", "random", "Status", "Priority", "TestSchemaType", "testSchemas", "document", "createEchoSchema", "version", "title", "Schema", "String", "annotations", "description", "content", "organization", "name", "website", "contact", "email", "org", "Ref", "lat", "Number", "lng", "project", "repo", "status", "priority", "active", "Boolean", "testObjectGenerators", "lorem", "sentence", "sentences", "min", "max", "number", "int", "company", "datatype", "boolean", "probability", "internet", "url", "undefined", "provider", "organizations", "location", "geo", "airport", "person", "fullName", "make", "commerce", "productName", "testObjectMutators", "accessor", "createDocAccessor", "i", "handle", "change", "doc", "A", "splice", "path", "slice", "maxContentLength", "mutationSize", "Error", "createTestObjectGenerator", "createSpaceObjectGenerator", "space"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/core/echo/echo-generator/src/generator.ts":{"bytes":15779,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-generator/src/util.ts":{"bytes":1624,"imports":[],"format":"esm"},"packages/core/echo/echo-generator/src/data.ts":{"bytes":18602,"imports":[{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-generator/src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/core/echo/echo-generator/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/core/echo/echo-generator/src/types.ts":{"bytes":1733,"imports":[],"format":"esm"},"packages/core/echo/echo-generator/src/index.ts":{"bytes":751,"imports":[{"path":"packages/core/echo/echo-generator/src/data.ts","kind":"import-statement","original":"./data"},{"path":"packages/core/echo/echo-generator/src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/core/echo/echo-generator/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/core/echo/echo-generator/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/core/echo/echo-generator/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":17897},"packages/core/echo/echo-generator/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["Priority","SpaceObjectGenerator","Status","TestObjectGenerator","TestSchemaType","createSpaceObjectGenerator","createTestObjectGenerator","randomText"],"entryPoint":"packages/core/echo/echo-generator/src/index.ts","inputs":{"packages/core/echo/echo-generator/src/data.ts":{"bytesInOutput":4586},"packages/core/echo/echo-generator/src/generator.ts":{"bytesInOutput":3723},"packages/core/echo/echo-generator/src/util.ts":{"bytesInOutput":299},"packages/core/echo/echo-generator/src/index.ts":{"bytesInOutput":0}},"bytes":9018}}}
1
+ {"inputs":{"packages/core/echo/echo-generator/src/generator.ts":{"bytes":15773,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-generator/src/util.ts":{"bytes":1624,"imports":[],"format":"esm"},"packages/core/echo/echo-generator/src/data.ts":{"bytes":18896,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-generator/src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/core/echo/echo-generator/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/core/echo/echo-generator/src/types.ts":{"bytes":1745,"imports":[],"format":"esm"},"packages/core/echo/echo-generator/src/index.ts":{"bytes":751,"imports":[{"path":"packages/core/echo/echo-generator/src/data.ts","kind":"import-statement","original":"./data"},{"path":"packages/core/echo/echo-generator/src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/core/echo/echo-generator/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/core/echo/echo-generator/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/core/echo/echo-generator/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":18025},"packages/core/echo/echo-generator/dist/lib/node/index.cjs":{"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["Priority","SpaceObjectGenerator","Status","TestObjectGenerator","TestSchemaType","createSpaceObjectGenerator","createTestObjectGenerator","randomText"],"entryPoint":"packages/core/echo/echo-generator/src/index.ts","inputs":{"packages/core/echo/echo-generator/src/data.ts":{"bytesInOutput":4688},"packages/core/echo/echo-generator/src/generator.ts":{"bytesInOutput":3709},"packages/core/echo/echo-generator/src/util.ts":{"bytesInOutput":299},"packages/core/echo/echo-generator/src/index.ts":{"bytesInOutput":0}},"bytes":9106}}}
@@ -1,17 +1,18 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
3
  // packages/core/echo/echo-generator/src/data.ts
4
+ import { Schema } from "effect";
4
5
  import { next as A } from "@dxos/automerge/automerge";
5
6
  import { createDocAccessor } from "@dxos/client/echo";
6
- import { Ref, S } from "@dxos/echo-schema";
7
- import { createEchoSchema, makeRef } from "@dxos/live-object";
7
+ import { Ref } from "@dxos/echo-schema";
8
+ import { createEchoSchema } from "@dxos/live-object";
8
9
  import { faker as faker2 } from "@dxos/random";
9
10
 
10
11
  // packages/core/echo/echo-generator/src/generator.ts
11
12
  import { Filter } from "@dxos/client/echo";
12
- import { getTypeAnnotation, EchoSchema } from "@dxos/echo-schema";
13
+ import { getTypeAnnotation, EchoSchema, getSchema } from "@dxos/echo-schema";
13
14
  import { invariant } from "@dxos/invariant";
14
- import { create, getSchema, isReactiveObject } from "@dxos/live-object";
15
+ import { live, isLiveObject } from "@dxos/live-object";
15
16
  import { faker } from "@dxos/random";
16
17
  import { range } from "@dxos/util";
17
18
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/echo/echo-generator/src/generator.ts";
@@ -34,11 +35,11 @@ var TestObjectGenerator = class {
34
35
  async createObject({ types } = {}) {
35
36
  const type = faker.helpers.arrayElement(types ?? Object.keys(this._schemas));
36
37
  const data = await this._generators[type](this._provider);
37
- if (isReactiveObject(data)) {
38
+ if (isLiveObject(data)) {
38
39
  return data;
39
40
  }
40
41
  const schema = this.getSchema(type);
41
- return schema ? create(schema, data) : create(data);
42
+ return schema ? live(schema, data) : live(data);
42
43
  }
43
44
  // TODO(burdon): Based on dependencies (e.g., organization before contact).
44
45
  async createObjects(map) {
@@ -99,7 +100,7 @@ var SpaceObjectGenerator = class extends TestObjectGenerator {
99
100
  async mutateObject(object, params) {
100
101
  invariant(this._mutations, "Mutations not defined.", {
101
102
  F: __dxlog_file,
102
- L: 121,
103
+ L: 123,
103
104
  S: this,
104
105
  A: [
105
106
  "this._mutations",
@@ -109,7 +110,7 @@ var SpaceObjectGenerator = class extends TestObjectGenerator {
109
110
  const type = getTypeAnnotation(getSchema(object)).typename;
110
111
  invariant(type && this._mutations?.[type], "Invalid object type.", {
111
112
  F: __dxlog_file,
112
- L: 123,
113
+ L: 125,
113
114
  S: this,
114
115
  A: [
115
116
  "type && this._mutations?.[type]",
@@ -161,22 +162,22 @@ var testSchemas = () => {
161
162
  typename: "example.com/type/document",
162
163
  version: "0.1.0"
163
164
  }, {
164
- title: S.String.annotations({
165
+ title: Schema.String.annotations({
165
166
  description: "title of the document"
166
167
  }),
167
- content: S.String
168
+ content: Schema.String
168
169
  });
169
170
  const organization = createEchoSchema({
170
171
  typename: "example.com/type/organization",
171
172
  version: "0.1.0"
172
173
  }, {
173
- name: S.String.annotations({
174
+ name: Schema.String.annotations({
174
175
  description: "name of the company or organization"
175
176
  }),
176
- website: S.String.annotations({
177
+ website: Schema.String.annotations({
177
178
  description: "public website URL"
178
179
  }),
179
- description: S.String.annotations({
180
+ description: Schema.String.annotations({
180
181
  description: "short summary of the company"
181
182
  })
182
183
  });
@@ -184,27 +185,27 @@ var testSchemas = () => {
184
185
  typename: "example.com/type/contact",
185
186
  version: "0.1.0"
186
187
  }, {
187
- name: S.String.annotations({
188
+ name: Schema.String.annotations({
188
189
  description: "name of the person"
189
190
  }),
190
- email: S.String,
191
+ email: Schema.String,
191
192
  org: Ref(organization),
192
- lat: S.Number,
193
- lng: S.Number
193
+ lat: Schema.Number,
194
+ lng: Schema.Number
194
195
  });
195
196
  const project = createEchoSchema({
196
197
  typename: "example.com/type/project",
197
198
  version: "0.1.0"
198
199
  }, {
199
- name: S.String.annotations({
200
+ name: Schema.String.annotations({
200
201
  description: "name of the project"
201
202
  }),
202
- description: S.String,
203
- website: S.String,
204
- repo: S.String,
205
- status: S.String,
206
- priority: S.Number,
207
- active: S.Boolean,
203
+ description: Schema.String,
204
+ website: Schema.String,
205
+ repo: Schema.String,
206
+ status: Schema.String,
207
+ priority: Schema.Number,
208
+ active: Schema.Boolean,
208
209
  org: Ref(organization)
209
210
  });
210
211
  return {
@@ -242,7 +243,7 @@ var testObjectGenerators = {
242
243
  }) ? faker2.internet.email() : void 0,
243
244
  org: organizations?.length && faker2.datatype.boolean({
244
245
  probability: 0.3
245
- }) ? makeRef(faker2.helpers.arrayElement(organizations)) : void 0,
246
+ }) ? Ref.make(faker2.helpers.arrayElement(organizations)) : void 0,
246
247
  ...location
247
248
  };
248
249
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/data.ts", "../../../src/generator.ts", "../../../src/util.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { next as A } from '@dxos/automerge/automerge';\nimport { createDocAccessor, type Space } from '@dxos/client/echo';\nimport { Ref, S } from '@dxos/echo-schema';\nimport { createEchoSchema, makeRef } from '@dxos/live-object';\nimport { faker } from '@dxos/random';\n\nimport { SpaceObjectGenerator, TestObjectGenerator } from './generator';\nimport { type TestGeneratorMap, type TestMutationsMap, type TestSchemaMap } from './types';\nimport { randomText } from './util';\n\n// TODO(burdon): Reconcile with @dxos/plugin-debug, @dxos/aurora/testing.\n// TODO(burdon): Bug when adding stale objects to space (e.g., static objects already added in previous story invocation).\n\n// TODO(burdon): Handle restricted values.\nexport const Status = ['pending', 'active', 'done'];\nexport const Priority = [1, 2, 3, 4, 5];\n\nexport enum TestSchemaType {\n document = 'example.com/type/document',\n organization = 'example.com/type/organization',\n contact = 'example.com/type/contact',\n project = 'example.com/type/project',\n}\n\nconst testSchemas = (): TestSchemaMap<TestSchemaType> => {\n const document = createEchoSchema(\n {\n typename: TestSchemaType.document,\n version: '0.1.0',\n },\n {\n title: S.String.annotations({ description: 'title of the document' }),\n content: S.String,\n },\n );\n\n const organization = createEchoSchema(\n {\n typename: TestSchemaType.organization,\n version: '0.1.0',\n },\n {\n name: S.String.annotations({ description: 'name of the company or organization' }),\n website: S.String.annotations({ description: 'public website URL' }),\n description: S.String.annotations({ description: 'short summary of the company' }),\n },\n );\n\n const contact = createEchoSchema(\n {\n typename: TestSchemaType.contact,\n version: '0.1.0',\n },\n {\n name: S.String.annotations({ description: 'name of the person' }),\n email: S.String,\n org: Ref(organization),\n lat: S.Number,\n lng: S.Number,\n },\n );\n\n const project = createEchoSchema(\n {\n typename: TestSchemaType.project,\n version: '0.1.0',\n },\n {\n name: S.String.annotations({ description: 'name of the project' }),\n description: S.String,\n website: S.String,\n repo: S.String,\n status: S.String,\n priority: S.Number,\n active: S.Boolean,\n org: Ref(organization),\n },\n );\n\n return {\n [TestSchemaType.document]: document,\n [TestSchemaType.organization]: organization,\n [TestSchemaType.contact]: contact,\n [TestSchemaType.project]: project,\n };\n};\n\nconst testObjectGenerators: TestGeneratorMap<TestSchemaType> = {\n [TestSchemaType.document]: async () => ({\n title: faker.lorem.sentence(3),\n content: faker.lorem.sentences({ min: 1, max: faker.number.int({ min: 1, max: 3 }) }),\n }),\n\n [TestSchemaType.organization]: async () => ({\n name: faker.company.name(),\n website: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n description: faker.lorem.sentences(),\n }),\n\n [TestSchemaType.contact]: async (provider) => {\n const organizations = await provider?.(TestSchemaType.organization);\n const { location } = faker.datatype.boolean() ? faker.geo.airport() : {};\n return {\n name: faker.person.fullName(),\n email: faker.datatype.boolean({ probability: 0.5 }) ? faker.internet.email() : undefined,\n org:\n organizations?.length && faker.datatype.boolean({ probability: 0.3 })\n ? makeRef(faker.helpers.arrayElement(organizations))\n : undefined,\n ...location,\n };\n },\n\n [TestSchemaType.project]: async () => ({\n name: faker.commerce.productName(),\n repo: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n status: faker.helpers.arrayElement(Status),\n priority: faker.helpers.arrayElement(Priority),\n active: faker.datatype.boolean(),\n }),\n};\n\nconst testObjectMutators: TestMutationsMap<TestSchemaType> = {\n [TestSchemaType.document]: async (object, params) => {\n const accessor = createDocAccessor(object, ['content']);\n for (let i = 0; i < params.count; i++) {\n const length = object.content?.content?.length ?? 0;\n accessor.handle.change((doc) => {\n A.splice(\n doc,\n accessor.path.slice(),\n 0,\n params.maxContentLength >= length ? 0 : params.mutationSize,\n randomText(params.mutationSize),\n );\n });\n }\n },\n [TestSchemaType.organization]: async () => {\n throw new Error('Method not implemented.');\n },\n [TestSchemaType.contact]: async () => {\n throw new Error('Method not implemented.');\n },\n [TestSchemaType.project]: async () => {\n throw new Error('Method not implemented.');\n },\n};\n\nexport const createTestObjectGenerator = () => new TestObjectGenerator(testSchemas(), testObjectGenerators);\n\nexport const createSpaceObjectGenerator = (space: Space) =>\n new SpaceObjectGenerator(space, testSchemas(), testObjectGenerators, testObjectMutators);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { type ReactiveEchoObject } from '@dxos/echo-db';\nimport { getTypeAnnotation, EchoSchema, type S } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { create, getSchema, isReactiveObject, type ReactiveObject } from '@dxos/live-object';\nimport { faker } from '@dxos/random';\nimport { range } from '@dxos/util';\n\nimport { type TestSchemaType } from './data';\nimport {\n type MutationsProviderParams,\n type TestGeneratorMap,\n type TestMutationsMap,\n type TestObjectProvider,\n type TestSchemaMap,\n} from './types';\n\n/**\n * Typed object generator.\n */\nexport class TestObjectGenerator<T extends string = TestSchemaType> {\n // prettier-ignore\n constructor(\n protected readonly _schemas: TestSchemaMap<T>,\n private readonly _generators: TestGeneratorMap<T>,\n private readonly _provider?: TestObjectProvider<T>,\n ) {}\n\n get schemas(): (EchoSchema | S.Schema.AnyNoContext)[] {\n return Object.values(this._schemas);\n }\n\n getSchema(type: T): EchoSchema | S.Schema.AnyNoContext | undefined {\n return this.schemas.find((schema) => getTypeAnnotation(schema)!.typename === type);\n }\n\n protected setSchema(type: T, schema: EchoSchema | S.Schema.AnyNoContext) {\n this._schemas[type] = schema;\n }\n\n async createObject({ types }: { types?: T[] } = {}): Promise<ReactiveObject<any>> {\n const type = faker.helpers.arrayElement(types ?? (Object.keys(this._schemas) as T[]));\n const data = await this._generators[type](this._provider);\n if (isReactiveObject(data)) {\n return data;\n }\n\n const schema = this.getSchema(type);\n return schema ? create(schema, data) : create(data);\n }\n\n // TODO(burdon): Based on dependencies (e.g., organization before contact).\n async createObjects(map: Partial<Record<T, number>>) {\n const tasks = Object.entries<number>(map as any)\n .map(([type, count]) => {\n return range(count, () => this.createObject({ types: [type as T] }));\n })\n .flatMap((t) => t);\n\n return Promise.all(tasks);\n }\n}\n\n/**\n * Typed object generator for a space.\n */\nexport class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<T> {\n constructor(\n private readonly _space: Space,\n schemaMap: TestSchemaMap<T>,\n generators: TestGeneratorMap<T>,\n private readonly _mutations?: TestMutationsMap<T>,\n ) {\n super(schemaMap, generators, async (type: T) => {\n const schema = this.getSchema(type);\n return (schema && (await this._space.db.query(Filter.schema(schema)).run()).objects) ?? [];\n });\n }\n\n async addSchemas() {\n const result: (EchoSchema | S.Schema.AnyNoContext)[] = [];\n for (const [typename, schema] of Object.entries(this._schemas)) {\n const echoSchema = await this._maybeRegisterSchema(typename, schema as EchoSchema | S.Schema.AnyNoContext);\n this.setSchema(typename as T, echoSchema);\n result.push(echoSchema);\n }\n\n return result;\n }\n\n override async createObject({ types }: { types?: T[] } = {}): Promise<ReactiveEchoObject<any>> {\n return this._space.db.add(await super.createObject({ types }));\n }\n\n private async _maybeRegisterSchema(\n typename: string,\n schema: EchoSchema | S.Schema.AnyNoContext,\n ): Promise<EchoSchema | S.Schema.AnyNoContext> {\n if (schema instanceof EchoSchema) {\n const existingSchema = this._space.db.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n const [registeredSchema] = await this._space.db.schemaRegistry.register([schema]);\n return registeredSchema;\n } else {\n const existingSchema = this._space.db.graph.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n this._space.db.graph.schemaRegistry.addSchema([schema]);\n return schema;\n }\n }\n\n async mutateObject(object: ReactiveEchoObject<any>, params: MutationsProviderParams) {\n invariant(this._mutations, 'Mutations not defined.');\n const type = getTypeAnnotation(getSchema(object)!)!.typename as T;\n invariant(type && this._mutations?.[type], 'Invalid object type.');\n\n await this._mutations![type](object, params);\n }\n\n async mutateObjects(objects: ReactiveEchoObject<any>[], params: MutationsProviderParams) {\n for (const object of objects) {\n await this.mutateObject(object, params);\n }\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const randomText = (length: number) => {\n let result = '';\n const characters = 'abcdefghijklmnopqrstuvwxyz';\n const charactersLength = characters.length;\n for (let index = 0; index < length; index++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n};\n"],
5
- "mappings": "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",
6
- "names": ["next", "A", "createDocAccessor", "Ref", "S", "createEchoSchema", "makeRef", "faker", "Filter", "getTypeAnnotation", "EchoSchema", "invariant", "create", "getSchema", "isReactiveObject", "faker", "range", "TestObjectGenerator", "constructor", "_schemas", "_generators", "_provider", "schemas", "Object", "values", "type", "find", "schema", "typename", "setSchema", "createObject", "types", "helpers", "arrayElement", "keys", "data", "createObjects", "map", "tasks", "entries", "count", "flatMap", "t", "Promise", "all", "SpaceObjectGenerator", "_space", "schemaMap", "generators", "_mutations", "db", "query", "run", "objects", "addSchemas", "result", "echoSchema", "_maybeRegisterSchema", "push", "add", "existingSchema", "schemaRegistry", "registeredSchema", "register", "graph", "addSchema", "mutateObject", "object", "params", "mutateObjects", "randomText", "length", "result", "characters", "charactersLength", "index", "charAt", "Math", "floor", "random", "Status", "Priority", "TestSchemaType", "testSchemas", "document", "createEchoSchema", "typename", "version", "title", "S", "String", "annotations", "description", "content", "organization", "name", "website", "contact", "email", "org", "Ref", "lat", "Number", "lng", "project", "repo", "status", "priority", "active", "Boolean", "testObjectGenerators", "faker", "lorem", "sentence", "sentences", "min", "max", "number", "int", "company", "datatype", "boolean", "probability", "internet", "url", "undefined", "provider", "organizations", "location", "geo", "airport", "person", "fullName", "length", "makeRef", "helpers", "arrayElement", "commerce", "productName", "testObjectMutators", "object", "params", "accessor", "createDocAccessor", "i", "count", "handle", "change", "doc", "A", "splice", "path", "slice", "maxContentLength", "mutationSize", "randomText", "Error", "createTestObjectGenerator", "TestObjectGenerator", "createSpaceObjectGenerator", "space", "SpaceObjectGenerator"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { next as A } from '@dxos/automerge/automerge';\nimport { createDocAccessor, type Space } from '@dxos/client/echo';\nimport { Ref } from '@dxos/echo-schema';\nimport { createEchoSchema } from '@dxos/live-object';\nimport { faker } from '@dxos/random';\n\nimport { SpaceObjectGenerator, TestObjectGenerator } from './generator';\nimport { type TestGeneratorMap, type TestMutationsMap, type TestSchemaMap } from './types';\nimport { randomText } from './util';\n\n// TODO(burdon): Reconcile with @dxos/plugin-debug, @dxos/aurora/testing.\n// TODO(burdon): Bug when adding stale objects to space (e.g., static objects already added in previous story invocation).\n\n// TODO(burdon): Handle restricted values.\nexport const Status = ['pending', 'active', 'done'];\nexport const Priority = [1, 2, 3, 4, 5];\n\nexport enum TestSchemaType {\n document = 'example.com/type/document',\n organization = 'example.com/type/organization',\n contact = 'example.com/type/contact',\n project = 'example.com/type/project',\n}\n\nconst testSchemas = (): TestSchemaMap<TestSchemaType> => {\n const document = createEchoSchema(\n {\n typename: TestSchemaType.document,\n version: '0.1.0',\n },\n {\n title: Schema.String.annotations({ description: 'title of the document' }),\n content: Schema.String,\n },\n );\n\n const organization = createEchoSchema(\n {\n typename: TestSchemaType.organization,\n version: '0.1.0',\n },\n {\n name: Schema.String.annotations({ description: 'name of the company or organization' }),\n website: Schema.String.annotations({ description: 'public website URL' }),\n description: Schema.String.annotations({ description: 'short summary of the company' }),\n },\n );\n\n const contact = createEchoSchema(\n {\n typename: TestSchemaType.contact,\n version: '0.1.0',\n },\n {\n name: Schema.String.annotations({ description: 'name of the person' }),\n email: Schema.String,\n org: Ref(organization),\n lat: Schema.Number,\n lng: Schema.Number,\n },\n );\n\n const project = createEchoSchema(\n {\n typename: TestSchemaType.project,\n version: '0.1.0',\n },\n {\n name: Schema.String.annotations({ description: 'name of the project' }),\n description: Schema.String,\n website: Schema.String,\n repo: Schema.String,\n status: Schema.String,\n priority: Schema.Number,\n active: Schema.Boolean,\n org: Ref(organization),\n },\n );\n\n return {\n [TestSchemaType.document]: document,\n [TestSchemaType.organization]: organization,\n [TestSchemaType.contact]: contact,\n [TestSchemaType.project]: project,\n };\n};\n\nconst testObjectGenerators: TestGeneratorMap<TestSchemaType> = {\n [TestSchemaType.document]: async () => ({\n title: faker.lorem.sentence(3),\n content: faker.lorem.sentences({ min: 1, max: faker.number.int({ min: 1, max: 3 }) }),\n }),\n\n [TestSchemaType.organization]: async () => ({\n name: faker.company.name(),\n website: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n description: faker.lorem.sentences(),\n }),\n\n [TestSchemaType.contact]: async (provider) => {\n const organizations = await provider?.(TestSchemaType.organization);\n const { location } = faker.datatype.boolean() ? faker.geo.airport() : {};\n return {\n name: faker.person.fullName(),\n email: faker.datatype.boolean({ probability: 0.5 }) ? faker.internet.email() : undefined,\n org:\n organizations?.length && faker.datatype.boolean({ probability: 0.3 })\n ? Ref.make(faker.helpers.arrayElement(organizations))\n : undefined,\n ...location,\n };\n },\n\n [TestSchemaType.project]: async () => ({\n name: faker.commerce.productName(),\n repo: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n status: faker.helpers.arrayElement(Status),\n priority: faker.helpers.arrayElement(Priority),\n active: faker.datatype.boolean(),\n }),\n};\n\nconst testObjectMutators: TestMutationsMap<TestSchemaType> = {\n [TestSchemaType.document]: async (object, params) => {\n const accessor = createDocAccessor(object, ['content']);\n for (let i = 0; i < params.count; i++) {\n const length = object.content?.content?.length ?? 0;\n accessor.handle.change((doc) => {\n A.splice(\n doc,\n accessor.path.slice(),\n 0,\n params.maxContentLength >= length ? 0 : params.mutationSize,\n randomText(params.mutationSize),\n );\n });\n }\n },\n [TestSchemaType.organization]: async () => {\n throw new Error('Method not implemented.');\n },\n [TestSchemaType.contact]: async () => {\n throw new Error('Method not implemented.');\n },\n [TestSchemaType.project]: async () => {\n throw new Error('Method not implemented.');\n },\n};\n\nexport const createTestObjectGenerator = () => new TestObjectGenerator(testSchemas(), testObjectGenerators);\n\nexport const createSpaceObjectGenerator = (space: Space) =>\n new SpaceObjectGenerator(space, testSchemas(), testObjectGenerators, testObjectMutators);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema } from 'effect';\n\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { type AnyLiveObject } from '@dxos/echo-db';\nimport { getTypeAnnotation, EchoSchema, getSchema } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { live, isLiveObject, type Live } from '@dxos/live-object';\nimport { faker } from '@dxos/random';\nimport { range } from '@dxos/util';\n\nimport { type TestSchemaType } from './data';\nimport {\n type MutationsProviderParams,\n type TestGeneratorMap,\n type TestMutationsMap,\n type TestObjectProvider,\n type TestSchemaMap,\n} from './types';\n\n/**\n * Typed object generator.\n */\nexport class TestObjectGenerator<T extends string = TestSchemaType> {\n // prettier-ignore\n constructor(\n protected readonly _schemas: TestSchemaMap<T>,\n private readonly _generators: TestGeneratorMap<T>,\n private readonly _provider?: TestObjectProvider<T>,\n ) {}\n\n get schemas(): (EchoSchema | Schema.Schema.AnyNoContext)[] {\n return Object.values(this._schemas);\n }\n\n getSchema(type: T): EchoSchema | Schema.Schema.AnyNoContext | undefined {\n return this.schemas.find((schema) => getTypeAnnotation(schema)!.typename === type);\n }\n\n protected setSchema(type: T, schema: EchoSchema | Schema.Schema.AnyNoContext) {\n this._schemas[type] = schema;\n }\n\n async createObject({ types }: { types?: T[] } = {}): Promise<Live<any>> {\n const type = faker.helpers.arrayElement(types ?? (Object.keys(this._schemas) as T[]));\n const data = await this._generators[type](this._provider);\n if (isLiveObject(data)) {\n return data;\n }\n\n const schema = this.getSchema(type);\n return schema ? live(schema, data) : live(data);\n }\n\n // TODO(burdon): Based on dependencies (e.g., organization before contact).\n async createObjects(map: Partial<Record<T, number>>) {\n const tasks = Object.entries<number>(map as any)\n .map(([type, count]) => {\n return range(count, () => this.createObject({ types: [type as T] }));\n })\n .flatMap((t) => t);\n\n return Promise.all(tasks);\n }\n}\n\n/**\n * Typed object generator for a space.\n */\nexport class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<T> {\n constructor(\n private readonly _space: Space,\n schemaMap: TestSchemaMap<T>,\n generators: TestGeneratorMap<T>,\n private readonly _mutations?: TestMutationsMap<T>,\n ) {\n super(schemaMap, generators, async (type: T) => {\n const schema = this.getSchema(type);\n return (schema && (await this._space.db.query(Filter.schema(schema)).run()).objects) ?? [];\n });\n }\n\n async addSchemas() {\n const result: (EchoSchema | Schema.Schema.AnyNoContext)[] = [];\n for (const [typename, schema] of Object.entries(this._schemas)) {\n const echoSchema = await this._maybeRegisterSchema(typename, schema as EchoSchema | Schema.Schema.AnyNoContext);\n this.setSchema(typename as T, echoSchema);\n result.push(echoSchema);\n }\n\n return result;\n }\n\n override async createObject({ types }: { types?: T[] } = {}): Promise<AnyLiveObject<any>> {\n return this._space.db.add(await super.createObject({ types }));\n }\n\n private async _maybeRegisterSchema(\n typename: string,\n schema: EchoSchema | Schema.Schema.AnyNoContext,\n ): Promise<EchoSchema | Schema.Schema.AnyNoContext> {\n if (schema instanceof EchoSchema) {\n const existingSchema = this._space.db.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n const [registeredSchema] = await this._space.db.schemaRegistry.register([schema]);\n return registeredSchema;\n } else {\n const existingSchema = this._space.db.graph.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n this._space.db.graph.schemaRegistry.addSchema([schema]);\n return schema;\n }\n }\n\n async mutateObject(object: AnyLiveObject<any>, params: MutationsProviderParams) {\n invariant(this._mutations, 'Mutations not defined.');\n const type = getTypeAnnotation(getSchema(object)!)!.typename as T;\n invariant(type && this._mutations?.[type], 'Invalid object type.');\n\n await this._mutations![type](object, params);\n }\n\n async mutateObjects(objects: AnyLiveObject<any>[], params: MutationsProviderParams) {\n for (const object of objects) {\n await this.mutateObject(object, params);\n }\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const randomText = (length: number) => {\n let result = '';\n const characters = 'abcdefghijklmnopqrstuvwxyz';\n const charactersLength = characters.length;\n for (let index = 0; index < length; index++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "next", "A", "createDocAccessor", "Ref", "createEchoSchema", "faker", "Filter", "getTypeAnnotation", "EchoSchema", "getSchema", "invariant", "live", "isLiveObject", "faker", "range", "TestObjectGenerator", "constructor", "_schemas", "_generators", "_provider", "schemas", "Object", "values", "type", "find", "schema", "typename", "setSchema", "createObject", "types", "helpers", "arrayElement", "keys", "data", "createObjects", "map", "tasks", "entries", "count", "flatMap", "t", "Promise", "all", "SpaceObjectGenerator", "_space", "schemaMap", "generators", "_mutations", "db", "query", "run", "objects", "addSchemas", "result", "echoSchema", "_maybeRegisterSchema", "push", "add", "existingSchema", "schemaRegistry", "registeredSchema", "register", "graph", "addSchema", "mutateObject", "object", "params", "mutateObjects", "randomText", "length", "result", "characters", "charactersLength", "index", "charAt", "Math", "floor", "random", "Status", "Priority", "TestSchemaType", "testSchemas", "document", "createEchoSchema", "typename", "version", "title", "Schema", "String", "annotations", "description", "content", "organization", "name", "website", "contact", "email", "org", "Ref", "lat", "Number", "lng", "project", "repo", "status", "priority", "active", "Boolean", "testObjectGenerators", "faker", "lorem", "sentence", "sentences", "min", "max", "number", "int", "company", "datatype", "boolean", "probability", "internet", "url", "undefined", "provider", "organizations", "location", "geo", "airport", "person", "fullName", "length", "make", "helpers", "arrayElement", "commerce", "productName", "testObjectMutators", "object", "params", "accessor", "createDocAccessor", "i", "count", "handle", "change", "doc", "A", "splice", "path", "slice", "maxContentLength", "mutationSize", "randomText", "Error", "createTestObjectGenerator", "TestObjectGenerator", "createSpaceObjectGenerator", "space", "SpaceObjectGenerator"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/core/echo/echo-generator/src/generator.ts":{"bytes":15779,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-generator/src/util.ts":{"bytes":1624,"imports":[],"format":"esm"},"packages/core/echo/echo-generator/src/data.ts":{"bytes":18602,"imports":[{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-generator/src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/core/echo/echo-generator/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/core/echo/echo-generator/src/types.ts":{"bytes":1733,"imports":[],"format":"esm"},"packages/core/echo/echo-generator/src/index.ts":{"bytes":751,"imports":[{"path":"packages/core/echo/echo-generator/src/data.ts","kind":"import-statement","original":"./data"},{"path":"packages/core/echo/echo-generator/src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/core/echo/echo-generator/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/core/echo/echo-generator/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/core/echo/echo-generator/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":17899},"packages/core/echo/echo-generator/dist/lib/node-esm/index.mjs":{"imports":[{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["Priority","SpaceObjectGenerator","Status","TestObjectGenerator","TestSchemaType","createSpaceObjectGenerator","createTestObjectGenerator","randomText"],"entryPoint":"packages/core/echo/echo-generator/src/index.ts","inputs":{"packages/core/echo/echo-generator/src/data.ts":{"bytesInOutput":4586},"packages/core/echo/echo-generator/src/generator.ts":{"bytesInOutput":3723},"packages/core/echo/echo-generator/src/util.ts":{"bytesInOutput":299},"packages/core/echo/echo-generator/src/index.ts":{"bytesInOutput":0}},"bytes":9111}}}
1
+ {"inputs":{"packages/core/echo/echo-generator/src/generator.ts":{"bytes":15773,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/echo/echo-generator/src/util.ts":{"bytes":1624,"imports":[],"format":"esm"},"packages/core/echo/echo-generator/src/data.ts":{"bytes":18896,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"packages/core/echo/echo-generator/src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/core/echo/echo-generator/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/core/echo/echo-generator/src/types.ts":{"bytes":1745,"imports":[],"format":"esm"},"packages/core/echo/echo-generator/src/index.ts":{"bytes":751,"imports":[{"path":"packages/core/echo/echo-generator/src/data.ts","kind":"import-statement","original":"./data"},{"path":"packages/core/echo/echo-generator/src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/core/echo/echo-generator/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/core/echo/echo-generator/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/core/echo/echo-generator/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":18027},"packages/core/echo/echo-generator/dist/lib/node-esm/index.mjs":{"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/automerge/automerge","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["Priority","SpaceObjectGenerator","Status","TestObjectGenerator","TestSchemaType","createSpaceObjectGenerator","createTestObjectGenerator","randomText"],"entryPoint":"packages/core/echo/echo-generator/src/index.ts","inputs":{"packages/core/echo/echo-generator/src/data.ts":{"bytesInOutput":4688},"packages/core/echo/echo-generator/src/generator.ts":{"bytesInOutput":3709},"packages/core/echo/echo-generator/src/util.ts":{"bytesInOutput":299},"packages/core/echo/echo-generator/src/index.ts":{"bytesInOutput":0}},"bytes":9199}}}
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/data.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAKlE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAQxE,eAAO,MAAM,MAAM,UAAgC,CAAC;AACpD,eAAO,MAAM,QAAQ,UAAkB,CAAC;AAExC,oBAAY,cAAc;IACxB,QAAQ,8BAA8B;IACtC,YAAY,kCAAkC;IAC9C,OAAO,6BAA6B;IACpC,OAAO,6BAA6B;CACrC;AA+HD,eAAO,MAAM,yBAAyB,2CAAqE,CAAC;AAE5G,eAAO,MAAM,0BAA0B,UAAW,KAAK,yCACmC,CAAC"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/data.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqB,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAKlE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAQxE,eAAO,MAAM,MAAM,UAAgC,CAAC;AACpD,eAAO,MAAM,QAAQ,UAAkB,CAAC;AAExC,oBAAY,cAAc;IACxB,QAAQ,8BAA8B;IACtC,YAAY,kCAAkC;IAC9C,OAAO,6BAA6B;IACpC,OAAO,6BAA6B;CACrC;AA+HD,eAAO,MAAM,yBAAyB,2CAAqE,CAAC;AAE5G,eAAO,MAAM,0BAA0B,UAAW,KAAK,yCACmC,CAAC"}
@@ -1,7 +1,8 @@
1
+ import { type Schema } from 'effect';
1
2
  import { type Space } from '@dxos/client/echo';
2
- import { type ReactiveEchoObject } from '@dxos/echo-db';
3
- import { EchoSchema, type S } from '@dxos/echo-schema';
4
- import { type ReactiveObject } from '@dxos/live-object';
3
+ import { type AnyLiveObject } from '@dxos/echo-db';
4
+ import { EchoSchema } from '@dxos/echo-schema';
5
+ import { type Live } from '@dxos/live-object';
5
6
  import { type TestSchemaType } from './data';
6
7
  import { type MutationsProviderParams, type TestGeneratorMap, type TestMutationsMap, type TestObjectProvider, type TestSchemaMap } from './types';
7
8
  /**
@@ -12,13 +13,13 @@ export declare class TestObjectGenerator<T extends string = TestSchemaType> {
12
13
  private readonly _generators;
13
14
  private readonly _provider?;
14
15
  constructor(_schemas: TestSchemaMap<T>, _generators: TestGeneratorMap<T>, _provider?: TestObjectProvider<T> | undefined);
15
- get schemas(): (EchoSchema | S.Schema.AnyNoContext)[];
16
- getSchema(type: T): EchoSchema | S.Schema.AnyNoContext | undefined;
17
- protected setSchema(type: T, schema: EchoSchema | S.Schema.AnyNoContext): void;
16
+ get schemas(): (EchoSchema | Schema.Schema.AnyNoContext)[];
17
+ getSchema(type: T): EchoSchema | Schema.Schema.AnyNoContext | undefined;
18
+ protected setSchema(type: T, schema: EchoSchema | Schema.Schema.AnyNoContext): void;
18
19
  createObject({ types }?: {
19
20
  types?: T[];
20
- }): Promise<ReactiveObject<any>>;
21
- createObjects(map: Partial<Record<T, number>>): Promise<ReactiveObject<any>[]>;
21
+ }): Promise<Live<any>>;
22
+ createObjects(map: Partial<Record<T, number>>): Promise<any[]>;
22
23
  }
23
24
  /**
24
25
  * Typed object generator for a space.
@@ -27,12 +28,12 @@ export declare class SpaceObjectGenerator<T extends string> extends TestObjectGe
27
28
  private readonly _space;
28
29
  private readonly _mutations?;
29
30
  constructor(_space: Space, schemaMap: TestSchemaMap<T>, generators: TestGeneratorMap<T>, _mutations?: TestMutationsMap<T> | undefined);
30
- addSchemas(): Promise<(S.Schema.AnyNoContext | EchoSchema<any, any>)[]>;
31
+ addSchemas(): Promise<(Schema.Schema.AnyNoContext | EchoSchema<any, any>)[]>;
31
32
  createObject({ types }?: {
32
33
  types?: T[];
33
- }): Promise<ReactiveEchoObject<any>>;
34
+ }): Promise<AnyLiveObject<any>>;
34
35
  private _maybeRegisterSchema;
35
- mutateObject(object: ReactiveEchoObject<any>, params: MutationsProviderParams): Promise<void>;
36
- mutateObjects(objects: ReactiveEchoObject<any>[], params: MutationsProviderParams): Promise<void>;
36
+ mutateObject(object: AnyLiveObject<any>, params: MutationsProviderParams): Promise<void>;
37
+ mutateObjects(objects: AnyLiveObject<any>[], params: MutationsProviderParams): Promise<void>;
37
38
  }
38
39
  //# sourceMappingURL=generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/generator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAU,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAqB,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAuC,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAI7F,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;AAEjB;;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,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAEpD;IAED,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,GAAG,SAAS;IAIlE,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY;IAIjE,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;IAQ7C,UAAU;IAWD,YAAY,CAAC,EAAE,KAAK,EAAE,GAAE;QAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA;KAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAIhF,oBAAoB;IAqB5B,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,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAU,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAqB,UAAU,EAAa,MAAM,mBAAmB,CAAC;AAE7E,OAAO,EAAsB,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAIlE,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;AAEjB;;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,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAEzD;IAED,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,SAAS;IAIvE,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY;IAItE,YAAY,CAAC,EAAE,KAAK,EAAE,GAAE;QAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAYjE,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;IAQ7C,UAAU;IAWD,YAAY,CAAC,EAAE,KAAK,EAAE,GAAE;QAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAI3E,oBAAoB;IAqB5B,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,uBAAuB;IAQxE,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,uBAAuB;CAKnF"}
@@ -1,11 +1,12 @@
1
- import { type ReactiveEchoObject } from '@dxos/echo-db';
2
- import { type EchoSchema, type S } from '@dxos/echo-schema';
3
- import { type ReactiveObject } from '@dxos/live-object';
1
+ import { type Schema } from 'effect';
2
+ import { type AnyLiveObject } from '@dxos/echo-db';
3
+ import { type EchoSchema } from '@dxos/echo-schema';
4
+ import { type Live } from '@dxos/live-object';
4
5
  export type TestObject = {
5
6
  id: string;
6
7
  } & Record<string, any>;
7
- export type TestSchemaMap<T extends string = string> = Record<T, EchoSchema | S.Schema.AnyNoContext>;
8
- export type TestObjectProvider<T extends string = string> = (type: T) => Promise<ReactiveObject<any>[]>;
8
+ export type TestSchemaMap<T extends string = string> = Record<T, EchoSchema | Schema.Schema.AnyNoContext>;
9
+ export type TestObjectProvider<T extends string = string> = (type: T) => Promise<Live<any>[]>;
9
10
  export type TestGeneratorMap<T extends string = string> = Record<T, (provider: TestObjectProvider<T> | undefined) => any>;
10
11
  export type TestMutationsMap<T extends string = string> = Record<T, TestObjectMutators>;
11
12
  export type MutationsProviderParams = {
@@ -13,5 +14,5 @@ export type MutationsProviderParams = {
13
14
  mutationSize: number;
14
15
  maxContentLength: number;
15
16
  };
16
- export type TestObjectMutators = (object: ReactiveEchoObject<any>, params: MutationsProviderParams) => Promise<void>;
17
+ export type TestObjectMutators = (object: AnyLiveObject<any>, params: MutationsProviderParams) => Promise<void>;
17
18
  //# 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,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,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,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAErG,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
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAG9C,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,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAE1G,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE9F,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,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/echo-generator",
3
- "version": "0.8.1",
3
+ "version": "0.8.2-main.2f9c567",
4
4
  "description": "ECHO data generator for testing.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -24,21 +24,23 @@
24
24
  "src"
25
25
  ],
26
26
  "dependencies": {
27
- "@dxos/automerge": "0.8.1",
28
- "@dxos/client": "0.8.1",
29
- "@dxos/echo-db": "0.8.1",
30
- "@dxos/invariant": "0.8.1",
31
- "@dxos/echo-schema": "0.8.1",
32
- "@dxos/live-object": "0.8.1",
33
- "@dxos/node-std": "0.8.1",
34
- "@dxos/schema": "0.8.1",
35
- "@dxos/util": "0.8.1"
27
+ "effect": "3.14.21",
28
+ "@dxos/automerge": "0.8.2-main.2f9c567",
29
+ "@dxos/client": "0.8.2-main.2f9c567",
30
+ "@dxos/echo-db": "0.8.2-main.2f9c567",
31
+ "@dxos/echo-schema": "0.8.2-main.2f9c567",
32
+ "@dxos/live-object": "0.8.2-main.2f9c567",
33
+ "@dxos/invariant": "0.8.2-main.2f9c567",
34
+ "@dxos/node-std": "0.8.2-main.2f9c567",
35
+ "@dxos/schema": "0.8.2-main.2f9c567",
36
+ "@dxos/util": "0.8.2-main.2f9c567"
36
37
  },
37
38
  "devDependencies": {
38
- "@dxos/random": "0.8.1"
39
+ "@dxos/random": "0.8.2-main.2f9c567"
39
40
  },
40
41
  "peerDependencies": {
41
- "@dxos/random": "0.8.1"
42
+ "effect": "^3.13.3",
43
+ "@dxos/random": "0.8.2-main.2f9c567"
42
44
  },
43
45
  "publishConfig": {
44
46
  "access": "public"
package/src/data.ts CHANGED
@@ -2,10 +2,12 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { Schema } from 'effect';
6
+
5
7
  import { next as A } from '@dxos/automerge/automerge';
6
8
  import { createDocAccessor, type Space } from '@dxos/client/echo';
7
- import { Ref, S } from '@dxos/echo-schema';
8
- import { createEchoSchema, makeRef } from '@dxos/live-object';
9
+ import { Ref } from '@dxos/echo-schema';
10
+ import { createEchoSchema } from '@dxos/live-object';
9
11
  import { faker } from '@dxos/random';
10
12
 
11
13
  import { SpaceObjectGenerator, TestObjectGenerator } from './generator';
@@ -33,8 +35,8 @@ const testSchemas = (): TestSchemaMap<TestSchemaType> => {
33
35
  version: '0.1.0',
34
36
  },
35
37
  {
36
- title: S.String.annotations({ description: 'title of the document' }),
37
- content: S.String,
38
+ title: Schema.String.annotations({ description: 'title of the document' }),
39
+ content: Schema.String,
38
40
  },
39
41
  );
40
42
 
@@ -44,9 +46,9 @@ const testSchemas = (): TestSchemaMap<TestSchemaType> => {
44
46
  version: '0.1.0',
45
47
  },
46
48
  {
47
- name: S.String.annotations({ description: 'name of the company or organization' }),
48
- website: S.String.annotations({ description: 'public website URL' }),
49
- description: S.String.annotations({ description: 'short summary of the company' }),
49
+ name: Schema.String.annotations({ description: 'name of the company or organization' }),
50
+ website: Schema.String.annotations({ description: 'public website URL' }),
51
+ description: Schema.String.annotations({ description: 'short summary of the company' }),
50
52
  },
51
53
  );
52
54
 
@@ -56,11 +58,11 @@ const testSchemas = (): TestSchemaMap<TestSchemaType> => {
56
58
  version: '0.1.0',
57
59
  },
58
60
  {
59
- name: S.String.annotations({ description: 'name of the person' }),
60
- email: S.String,
61
+ name: Schema.String.annotations({ description: 'name of the person' }),
62
+ email: Schema.String,
61
63
  org: Ref(organization),
62
- lat: S.Number,
63
- lng: S.Number,
64
+ lat: Schema.Number,
65
+ lng: Schema.Number,
64
66
  },
65
67
  );
66
68
 
@@ -70,13 +72,13 @@ const testSchemas = (): TestSchemaMap<TestSchemaType> => {
70
72
  version: '0.1.0',
71
73
  },
72
74
  {
73
- name: S.String.annotations({ description: 'name of the project' }),
74
- description: S.String,
75
- website: S.String,
76
- repo: S.String,
77
- status: S.String,
78
- priority: S.Number,
79
- active: S.Boolean,
75
+ name: Schema.String.annotations({ description: 'name of the project' }),
76
+ description: Schema.String,
77
+ website: Schema.String,
78
+ repo: Schema.String,
79
+ status: Schema.String,
80
+ priority: Schema.Number,
81
+ active: Schema.Boolean,
80
82
  org: Ref(organization),
81
83
  },
82
84
  );
@@ -109,7 +111,7 @@ const testObjectGenerators: TestGeneratorMap<TestSchemaType> = {
109
111
  email: faker.datatype.boolean({ probability: 0.5 }) ? faker.internet.email() : undefined,
110
112
  org:
111
113
  organizations?.length && faker.datatype.boolean({ probability: 0.3 })
112
- ? makeRef(faker.helpers.arrayElement(organizations))
114
+ ? Ref.make(faker.helpers.arrayElement(organizations))
113
115
  : undefined,
114
116
  ...location,
115
117
  };
@@ -2,12 +2,13 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { Schema } from 'effect';
5
6
  import { describe, expect, onTestFinished, test } from 'vitest';
6
7
 
7
8
  import { next as A } from '@dxos/automerge/automerge';
8
9
  import { Client } from '@dxos/client';
9
10
  import { getObjectCore } from '@dxos/echo-db';
10
- import { S, TypedObject } from '@dxos/echo-schema';
11
+ import { TypedObject } from '@dxos/echo-schema';
11
12
  import { getType } from '@dxos/live-object';
12
13
  import { faker } from '@dxos/random';
13
14
 
@@ -59,14 +60,14 @@ describe('TestObjectGenerator', () => {
59
60
  const generator = createSpaceObjectGenerator(space);
60
61
  await generator.addSchemas();
61
62
  const organization = await generator.createObject({ types: [TestSchemaType.organization] });
62
- schemaId.push(getType(organization)!.objectId);
63
+ schemaId.push(getType(organization)!.asEchoDXN()!.echoId!);
63
64
  }
64
65
 
65
66
  {
66
67
  const generator = createSpaceObjectGenerator(space);
67
68
  await generator.addSchemas();
68
69
  const organization = await generator.createObject({ types: [TestSchemaType.organization] });
69
- schemaId.push(getType(organization)!.objectId);
70
+ schemaId.push(getType(organization)!.asEchoDXN()!.echoId!);
70
71
  }
71
72
 
72
73
  expect(schemaId[0]).not.to.be.undefined;
@@ -96,7 +97,7 @@ describe('TestObjectGenerator', () => {
96
97
  typename: 'example.org/type/Task',
97
98
  version: '0.1.0',
98
99
  })({
99
- name: S.optional(S.String),
100
+ name: Schema.optional(Schema.String),
100
101
  }) {}
101
102
 
102
103
  enum Types {
package/src/generator.ts CHANGED
@@ -2,11 +2,13 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { type Schema } from 'effect';
6
+
5
7
  import { Filter, type Space } from '@dxos/client/echo';
6
- import { type ReactiveEchoObject } from '@dxos/echo-db';
7
- import { getTypeAnnotation, EchoSchema, type S } from '@dxos/echo-schema';
8
+ import { type AnyLiveObject } from '@dxos/echo-db';
9
+ import { getTypeAnnotation, EchoSchema, getSchema } from '@dxos/echo-schema';
8
10
  import { invariant } from '@dxos/invariant';
9
- import { create, getSchema, isReactiveObject, type ReactiveObject } from '@dxos/live-object';
11
+ import { live, isLiveObject, type Live } from '@dxos/live-object';
10
12
  import { faker } from '@dxos/random';
11
13
  import { range } from '@dxos/util';
12
14
 
@@ -30,27 +32,27 @@ export class TestObjectGenerator<T extends string = TestSchemaType> {
30
32
  private readonly _provider?: TestObjectProvider<T>,
31
33
  ) {}
32
34
 
33
- get schemas(): (EchoSchema | S.Schema.AnyNoContext)[] {
35
+ get schemas(): (EchoSchema | Schema.Schema.AnyNoContext)[] {
34
36
  return Object.values(this._schemas);
35
37
  }
36
38
 
37
- getSchema(type: T): EchoSchema | S.Schema.AnyNoContext | undefined {
39
+ getSchema(type: T): EchoSchema | Schema.Schema.AnyNoContext | undefined {
38
40
  return this.schemas.find((schema) => getTypeAnnotation(schema)!.typename === type);
39
41
  }
40
42
 
41
- protected setSchema(type: T, schema: EchoSchema | S.Schema.AnyNoContext) {
43
+ protected setSchema(type: T, schema: EchoSchema | Schema.Schema.AnyNoContext) {
42
44
  this._schemas[type] = schema;
43
45
  }
44
46
 
45
- async createObject({ types }: { types?: T[] } = {}): Promise<ReactiveObject<any>> {
47
+ async createObject({ types }: { types?: T[] } = {}): Promise<Live<any>> {
46
48
  const type = faker.helpers.arrayElement(types ?? (Object.keys(this._schemas) as T[]));
47
49
  const data = await this._generators[type](this._provider);
48
- if (isReactiveObject(data)) {
50
+ if (isLiveObject(data)) {
49
51
  return data;
50
52
  }
51
53
 
52
54
  const schema = this.getSchema(type);
53
- return schema ? create(schema, data) : create(data);
55
+ return schema ? live(schema, data) : live(data);
54
56
  }
55
57
 
56
58
  // TODO(burdon): Based on dependencies (e.g., organization before contact).
@@ -82,9 +84,9 @@ export class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<
82
84
  }
83
85
 
84
86
  async addSchemas() {
85
- const result: (EchoSchema | S.Schema.AnyNoContext)[] = [];
87
+ const result: (EchoSchema | Schema.Schema.AnyNoContext)[] = [];
86
88
  for (const [typename, schema] of Object.entries(this._schemas)) {
87
- const echoSchema = await this._maybeRegisterSchema(typename, schema as EchoSchema | S.Schema.AnyNoContext);
89
+ const echoSchema = await this._maybeRegisterSchema(typename, schema as EchoSchema | Schema.Schema.AnyNoContext);
88
90
  this.setSchema(typename as T, echoSchema);
89
91
  result.push(echoSchema);
90
92
  }
@@ -92,14 +94,14 @@ export class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<
92
94
  return result;
93
95
  }
94
96
 
95
- override async createObject({ types }: { types?: T[] } = {}): Promise<ReactiveEchoObject<any>> {
97
+ override async createObject({ types }: { types?: T[] } = {}): Promise<AnyLiveObject<any>> {
96
98
  return this._space.db.add(await super.createObject({ types }));
97
99
  }
98
100
 
99
101
  private async _maybeRegisterSchema(
100
102
  typename: string,
101
- schema: EchoSchema | S.Schema.AnyNoContext,
102
- ): Promise<EchoSchema | S.Schema.AnyNoContext> {
103
+ schema: EchoSchema | Schema.Schema.AnyNoContext,
104
+ ): Promise<EchoSchema | Schema.Schema.AnyNoContext> {
103
105
  if (schema instanceof EchoSchema) {
104
106
  const existingSchema = this._space.db.schemaRegistry.getSchema(typename);
105
107
  if (existingSchema != null) {
@@ -117,7 +119,7 @@ export class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<
117
119
  }
118
120
  }
119
121
 
120
- async mutateObject(object: ReactiveEchoObject<any>, params: MutationsProviderParams) {
122
+ async mutateObject(object: AnyLiveObject<any>, params: MutationsProviderParams) {
121
123
  invariant(this._mutations, 'Mutations not defined.');
122
124
  const type = getTypeAnnotation(getSchema(object)!)!.typename as T;
123
125
  invariant(type && this._mutations?.[type], 'Invalid object type.');
@@ -125,7 +127,7 @@ export class SpaceObjectGenerator<T extends string> extends TestObjectGenerator<
125
127
  await this._mutations![type](object, params);
126
128
  }
127
129
 
128
- async mutateObjects(objects: ReactiveEchoObject<any>[], params: MutationsProviderParams) {
130
+ async mutateObjects(objects: AnyLiveObject<any>[], params: MutationsProviderParams) {
129
131
  for (const object of objects) {
130
132
  await this.mutateObject(object, params);
131
133
  }
package/src/types.ts CHANGED
@@ -2,16 +2,18 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type ReactiveEchoObject } from '@dxos/echo-db';
6
- import { type EchoSchema, type S } from '@dxos/echo-schema';
7
- import { type ReactiveObject } from '@dxos/live-object';
5
+ import { type Schema } from 'effect';
6
+
7
+ import { type AnyLiveObject } from '@dxos/echo-db';
8
+ import { type EchoSchema } from '@dxos/echo-schema';
9
+ import { type Live } from '@dxos/live-object';
8
10
 
9
11
  // TODO(burdon): Use echo-schema types.
10
12
  export type TestObject = { id: string } & Record<string, any>;
11
13
 
12
- export type TestSchemaMap<T extends string = string> = Record<T, EchoSchema | S.Schema.AnyNoContext>;
14
+ export type TestSchemaMap<T extends string = string> = Record<T, EchoSchema | Schema.Schema.AnyNoContext>;
13
15
 
14
- export type TestObjectProvider<T extends string = string> = (type: T) => Promise<ReactiveObject<any>[]>;
16
+ export type TestObjectProvider<T extends string = string> = (type: T) => Promise<Live<any>[]>;
15
17
 
16
18
  export type TestGeneratorMap<T extends string = string> = Record<
17
19
  T,
@@ -26,4 +28,4 @@ export type MutationsProviderParams = {
26
28
  maxContentLength: number;
27
29
  };
28
30
 
29
- export type TestObjectMutators = (object: ReactiveEchoObject<any>, params: MutationsProviderParams) => Promise<void>;
31
+ export type TestObjectMutators = (object: AnyLiveObject<any>, params: MutationsProviderParams) => Promise<void>;