@dxos/echo-generator 0.8.4-main.ef1bc66f44 → 0.8.4-main.f466a3d56e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +102 -5
- package/README.md +1 -1
- package/dist/lib/neutral/index.mjs +50 -75
- package/dist/lib/neutral/index.mjs.map +3 -3
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/types/src/data.d.ts +4 -4
- package/dist/types/src/data.d.ts.map +1 -1
- package/dist/types/src/generator.d.ts +4 -4
- package/dist/types/src/generator.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +1 -1
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +15 -17
- package/src/data.ts +24 -24
- package/src/generator.test.ts +7 -6
- package/src/generator.ts +10 -10
- package/src/types.ts +1 -1
package/LICENSE
CHANGED
|
@@ -1,8 +1,105 @@
|
|
|
1
|
-
|
|
2
|
-
Copyright (c) 2022 DXOS
|
|
1
|
+
# Functional Source License, Version 1.1, ALv2 Future License
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
## Abbreviation
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
FSL-1.1-Apache-2.0
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
## Notice
|
|
8
|
+
|
|
9
|
+
Copyright 2026 DXOS
|
|
10
|
+
|
|
11
|
+
## Terms and Conditions
|
|
12
|
+
|
|
13
|
+
### Licensor ("We")
|
|
14
|
+
|
|
15
|
+
The party offering the Software under these Terms and Conditions.
|
|
16
|
+
|
|
17
|
+
### The Software
|
|
18
|
+
|
|
19
|
+
The "Software" is each version of the software that we make available under
|
|
20
|
+
these Terms and Conditions, as indicated by our inclusion of these Terms and
|
|
21
|
+
Conditions with the Software.
|
|
22
|
+
|
|
23
|
+
### License Grant
|
|
24
|
+
|
|
25
|
+
Subject to your compliance with this License Grant and the Patents,
|
|
26
|
+
Redistribution and Trademark clauses below, we hereby grant you the right to
|
|
27
|
+
use, copy, modify, create derivative works, publicly perform, publicly display
|
|
28
|
+
and redistribute the Software for any Permitted Purpose identified below.
|
|
29
|
+
|
|
30
|
+
### Permitted Purpose
|
|
31
|
+
|
|
32
|
+
A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
|
|
33
|
+
means making the Software available to others in a commercial product or
|
|
34
|
+
service that:
|
|
35
|
+
|
|
36
|
+
1. substitutes for the Software;
|
|
37
|
+
|
|
38
|
+
2. substitutes for any other product or service we offer using the Software
|
|
39
|
+
that exists as of the date we make the Software available; or
|
|
40
|
+
|
|
41
|
+
3. offers the same or substantially similar functionality as the Software.
|
|
42
|
+
|
|
43
|
+
Permitted Purposes specifically include using the Software:
|
|
44
|
+
|
|
45
|
+
1. for your internal use and access;
|
|
46
|
+
|
|
47
|
+
2. for non-commercial education;
|
|
48
|
+
|
|
49
|
+
3. for non-commercial research; and
|
|
50
|
+
|
|
51
|
+
4. in connection with professional services that you provide to a licensee
|
|
52
|
+
using the Software in accordance with these Terms and Conditions.
|
|
53
|
+
|
|
54
|
+
### Patents
|
|
55
|
+
|
|
56
|
+
To the extent your use for a Permitted Purpose would necessarily infringe our
|
|
57
|
+
patents, the license grant above includes a license under our patents. If you
|
|
58
|
+
make a claim against any party that the Software infringes or contributes to
|
|
59
|
+
the infringement of any patent, then your patent license to the Software ends
|
|
60
|
+
immediately.
|
|
61
|
+
|
|
62
|
+
### Redistribution
|
|
63
|
+
|
|
64
|
+
The Terms and Conditions apply to all copies, modifications and derivatives of
|
|
65
|
+
the Software.
|
|
66
|
+
|
|
67
|
+
If you redistribute any copies, modifications or derivatives of the Software,
|
|
68
|
+
you must include a copy of or a link to these Terms and Conditions and not
|
|
69
|
+
remove any copyright notices provided in or with the Software.
|
|
70
|
+
|
|
71
|
+
### Disclaimer
|
|
72
|
+
|
|
73
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
|
|
74
|
+
IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
|
|
75
|
+
PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
|
|
76
|
+
|
|
77
|
+
IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
|
|
78
|
+
SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
|
|
79
|
+
EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
|
|
80
|
+
|
|
81
|
+
### Trademarks
|
|
82
|
+
|
|
83
|
+
Except for displaying the License Details and identifying us as the origin of
|
|
84
|
+
the Software, you have no right under these Terms and Conditions to use our
|
|
85
|
+
trademarks, trade names, service marks or product names.
|
|
86
|
+
|
|
87
|
+
## Grant of Future License
|
|
88
|
+
|
|
89
|
+
We hereby irrevocably grant you an additional license to use the Software under
|
|
90
|
+
the Apache License, Version 2.0 that is effective on the second anniversary of
|
|
91
|
+
the date we make the Software available. On or after that date, you may use the
|
|
92
|
+
Software under the Apache License, Version 2.0, in which case the following
|
|
93
|
+
will apply:
|
|
94
|
+
|
|
95
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
96
|
+
this file except in compliance with the License.
|
|
97
|
+
|
|
98
|
+
You may obtain a copy of the License at
|
|
99
|
+
|
|
100
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
101
|
+
|
|
102
|
+
Unless required by applicable law or agreed to in writing, software distributed
|
|
103
|
+
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
104
|
+
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
|
105
|
+
specific language governing permissions and limitations under the License.
|
package/README.md
CHANGED
|
@@ -18,4 +18,4 @@ pnpm i @dxos/echo-generator
|
|
|
18
18
|
|
|
19
19
|
Your ideas, issues, and code are most welcome. Please take a look at our [community code of conduct](https://github.com/dxos/dxos/blob/main/CODE_OF_CONDUCT.md), the [issue guide](https://github.com/dxos/dxos/blob/main/CONTRIBUTING.md#submitting-issues), and the [PR contribution guide](https://github.com/dxos/dxos/blob/main/CONTRIBUTING.md#submitting-prs).
|
|
20
20
|
|
|
21
|
-
License: [
|
|
21
|
+
License: [FSL-1.1-Apache-2.0](./LICENSE) Copyright 2022 © DXOS
|
|
@@ -5,15 +5,14 @@ import { next as A } from "@automerge/automerge";
|
|
|
5
5
|
import * as Schema from "effect/Schema";
|
|
6
6
|
import { Ref, Type } from "@dxos/echo";
|
|
7
7
|
import { createDocAccessor } from "@dxos/echo-db";
|
|
8
|
-
import {
|
|
8
|
+
import { random as random2 } from "@dxos/random";
|
|
9
9
|
|
|
10
10
|
// src/generator.ts
|
|
11
|
-
import { Filter } from "@dxos/
|
|
12
|
-
import { Obj } from "@dxos/echo";
|
|
11
|
+
import { Filter, Obj } from "@dxos/echo";
|
|
13
12
|
import { EchoSchema, getTypeAnnotation } from "@dxos/echo/internal";
|
|
14
13
|
import { isProxy } from "@dxos/echo/internal";
|
|
15
14
|
import { invariant } from "@dxos/invariant";
|
|
16
|
-
import {
|
|
15
|
+
import { random } from "@dxos/random";
|
|
17
16
|
import { entries, range } from "@dxos/util";
|
|
18
17
|
var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo-generator/src/generator.ts";
|
|
19
18
|
var TestObjectGenerator = class {
|
|
@@ -36,21 +35,13 @@ var TestObjectGenerator = class {
|
|
|
36
35
|
this._schemas[type] = schema;
|
|
37
36
|
}
|
|
38
37
|
async createObject({ types } = {}) {
|
|
39
|
-
const type =
|
|
38
|
+
const type = random.helpers.arrayElement(types ?? Object.keys(this._schemas));
|
|
40
39
|
const data = await this._generators[type](this._provider);
|
|
41
40
|
if (isProxy(data)) {
|
|
42
41
|
return data;
|
|
43
42
|
}
|
|
44
43
|
const schema = this.getSchema(type);
|
|
45
|
-
invariant(schema, `Schema is required for type: ${type}. Register a schema for this type.`, {
|
|
46
|
-
F: __dxlog_file,
|
|
47
|
-
L: 54,
|
|
48
|
-
S: this,
|
|
49
|
-
A: [
|
|
50
|
-
"schema",
|
|
51
|
-
"`Schema is required for type: ${type}. Register a schema for this type.`"
|
|
52
|
-
]
|
|
53
|
-
});
|
|
44
|
+
invariant(schema, `Schema is required for type: ${type}. Register a schema for this type.`, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 39, S: this, A: ["schema", "`Schema is required for type: ${type}. Register a schema for this type.`"] });
|
|
54
45
|
return Obj.make(schema, data);
|
|
55
46
|
}
|
|
56
47
|
// TODO(burdon): Based on dependencies (e.g., organization before contact).
|
|
@@ -119,25 +110,9 @@ var SpaceObjectGenerator = class extends TestObjectGenerator {
|
|
|
119
110
|
}
|
|
120
111
|
}
|
|
121
112
|
async mutateObject(object, params) {
|
|
122
|
-
invariant(this._mutations, "Mutations not defined.", {
|
|
123
|
-
F: __dxlog_file,
|
|
124
|
-
L: 130,
|
|
125
|
-
S: this,
|
|
126
|
-
A: [
|
|
127
|
-
"this._mutations",
|
|
128
|
-
"'Mutations not defined.'"
|
|
129
|
-
]
|
|
130
|
-
});
|
|
113
|
+
invariant(this._mutations, "Mutations not defined.", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 110, S: this, A: ["this._mutations", "'Mutations not defined.'"] });
|
|
131
114
|
const type = getTypeAnnotation(Obj.getSchema(object)).typename;
|
|
132
|
-
invariant(type && this._mutations?.[type], "Invalid object type.", {
|
|
133
|
-
F: __dxlog_file,
|
|
134
|
-
L: 132,
|
|
135
|
-
S: this,
|
|
136
|
-
A: [
|
|
137
|
-
"type && this._mutations?.[type]",
|
|
138
|
-
"'Invalid object type.'"
|
|
139
|
-
]
|
|
140
|
-
});
|
|
115
|
+
invariant(type && this._mutations?.[type], "Invalid object type.", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 112, S: this, A: ["type && this._mutations?.[type]", "'Invalid object type.'"] });
|
|
141
116
|
await this._mutations[type](object, params);
|
|
142
117
|
}
|
|
143
118
|
async mutateObjects(objects, params) {
|
|
@@ -172,10 +147,10 @@ var Priority = [
|
|
|
172
147
|
5
|
|
173
148
|
];
|
|
174
149
|
var TestSchemaType = /* @__PURE__ */ (function(TestSchemaType2) {
|
|
175
|
-
TestSchemaType2["document"] = "example.
|
|
176
|
-
TestSchemaType2["organization"] = "example.
|
|
177
|
-
TestSchemaType2["contact"] = "example.
|
|
178
|
-
TestSchemaType2["project"] = "example.
|
|
150
|
+
TestSchemaType2["document"] = "com.example.type.document";
|
|
151
|
+
TestSchemaType2["organization"] = "com.example.type.organization";
|
|
152
|
+
TestSchemaType2["contact"] = "com.example.type.person";
|
|
153
|
+
TestSchemaType2["project"] = "com.example.type.project";
|
|
179
154
|
return TestSchemaType2;
|
|
180
155
|
})({});
|
|
181
156
|
var testSchemas = () => {
|
|
@@ -185,7 +160,7 @@ var testSchemas = () => {
|
|
|
185
160
|
}),
|
|
186
161
|
content: Schema.String
|
|
187
162
|
}).pipe(Type.object({
|
|
188
|
-
typename: "example.
|
|
163
|
+
typename: "com.example.type.document",
|
|
189
164
|
version: "0.1.0"
|
|
190
165
|
}));
|
|
191
166
|
const organization = Schema.Struct({
|
|
@@ -199,7 +174,7 @@ var testSchemas = () => {
|
|
|
199
174
|
description: "short summary of the company"
|
|
200
175
|
})
|
|
201
176
|
}).pipe(Type.object({
|
|
202
|
-
typename: "example.
|
|
177
|
+
typename: "com.example.type.organization",
|
|
203
178
|
version: "0.1.0"
|
|
204
179
|
}));
|
|
205
180
|
const contact = Schema.Struct({
|
|
@@ -207,11 +182,11 @@ var testSchemas = () => {
|
|
|
207
182
|
description: "name of the person"
|
|
208
183
|
}),
|
|
209
184
|
email: Schema.optional(Schema.String),
|
|
210
|
-
org: Schema.optional(
|
|
185
|
+
org: Schema.optional(Ref.Ref(organization)),
|
|
211
186
|
lat: Schema.optional(Schema.Number),
|
|
212
187
|
lng: Schema.optional(Schema.Number)
|
|
213
188
|
}).pipe(Type.object({
|
|
214
|
-
typename: "example.
|
|
189
|
+
typename: "com.example.type.person",
|
|
215
190
|
version: "0.1.0"
|
|
216
191
|
}));
|
|
217
192
|
const project = Schema.Struct({
|
|
@@ -224,62 +199,62 @@ var testSchemas = () => {
|
|
|
224
199
|
status: Schema.String,
|
|
225
200
|
priority: Schema.Number,
|
|
226
201
|
active: Schema.Boolean,
|
|
227
|
-
org: Schema.optional(
|
|
202
|
+
org: Schema.optional(Ref.Ref(organization))
|
|
228
203
|
}).pipe(Type.object({
|
|
229
|
-
typename: "example.
|
|
204
|
+
typename: "com.example.type.project",
|
|
230
205
|
version: "0.1.0"
|
|
231
206
|
}));
|
|
232
207
|
return {
|
|
233
|
-
["example.
|
|
234
|
-
["example.
|
|
235
|
-
["example.
|
|
236
|
-
["example.
|
|
208
|
+
["com.example.type.document"]: document,
|
|
209
|
+
["com.example.type.organization"]: organization,
|
|
210
|
+
["com.example.type.person"]: contact,
|
|
211
|
+
["com.example.type.project"]: project
|
|
237
212
|
};
|
|
238
213
|
};
|
|
239
214
|
var testObjectGenerators = {
|
|
240
|
-
["example.
|
|
241
|
-
title:
|
|
242
|
-
content:
|
|
215
|
+
["com.example.type.document"]: async () => ({
|
|
216
|
+
title: random2.lorem.sentence(3),
|
|
217
|
+
content: random2.lorem.sentences({
|
|
243
218
|
min: 1,
|
|
244
|
-
max:
|
|
219
|
+
max: random2.number.int({
|
|
245
220
|
min: 1,
|
|
246
221
|
max: 3
|
|
247
222
|
})
|
|
248
223
|
})
|
|
249
224
|
}),
|
|
250
|
-
["example.
|
|
251
|
-
name:
|
|
252
|
-
website:
|
|
225
|
+
["com.example.type.organization"]: async () => ({
|
|
226
|
+
name: random2.company.name(),
|
|
227
|
+
website: random2.datatype.boolean({
|
|
253
228
|
probability: 0.3
|
|
254
|
-
}) ?
|
|
255
|
-
description:
|
|
229
|
+
}) ? random2.internet.url() : void 0,
|
|
230
|
+
description: random2.lorem.sentences()
|
|
256
231
|
}),
|
|
257
|
-
["example.
|
|
258
|
-
const organizations = await provider?.("example.
|
|
259
|
-
const location =
|
|
232
|
+
["com.example.type.person"]: async (provider) => {
|
|
233
|
+
const organizations = await provider?.("com.example.type.organization");
|
|
234
|
+
const location = random2.datatype.boolean() ? random2.geo.airport() : {};
|
|
260
235
|
return {
|
|
261
|
-
name:
|
|
262
|
-
email:
|
|
236
|
+
name: random2.person.fullName(),
|
|
237
|
+
email: random2.datatype.boolean({
|
|
263
238
|
probability: 0.5
|
|
264
|
-
}) ?
|
|
265
|
-
org: organizations?.length &&
|
|
239
|
+
}) ? random2.internet.email() : void 0,
|
|
240
|
+
org: organizations?.length && random2.datatype.boolean({
|
|
266
241
|
probability: 0.8
|
|
267
|
-
}) ? Ref.make(
|
|
242
|
+
}) ? Ref.make(random2.helpers.arrayElement(organizations)) : void 0,
|
|
268
243
|
...location
|
|
269
244
|
};
|
|
270
245
|
},
|
|
271
|
-
["example.
|
|
272
|
-
name:
|
|
273
|
-
repo:
|
|
274
|
-
status:
|
|
275
|
-
description:
|
|
276
|
-
website:
|
|
277
|
-
priority:
|
|
278
|
-
active:
|
|
246
|
+
["com.example.type.project"]: async () => ({
|
|
247
|
+
name: random2.commerce.productName(),
|
|
248
|
+
repo: random2.internet.url(),
|
|
249
|
+
status: random2.helpers.arrayElement(Status),
|
|
250
|
+
description: random2.lorem.sentences(),
|
|
251
|
+
website: random2.internet.url(),
|
|
252
|
+
priority: random2.helpers.arrayElement(Priority),
|
|
253
|
+
active: random2.datatype.boolean()
|
|
279
254
|
})
|
|
280
255
|
};
|
|
281
256
|
var testObjectMutators = {
|
|
282
|
-
["example.
|
|
257
|
+
["com.example.type.document"]: async (object, params) => {
|
|
283
258
|
const accessor = createDocAccessor(object, [
|
|
284
259
|
"content"
|
|
285
260
|
]);
|
|
@@ -290,13 +265,13 @@ var testObjectMutators = {
|
|
|
290
265
|
});
|
|
291
266
|
}
|
|
292
267
|
},
|
|
293
|
-
["example.
|
|
268
|
+
["com.example.type.organization"]: async () => {
|
|
294
269
|
throw new Error("Method not implemented.");
|
|
295
270
|
},
|
|
296
|
-
["example.
|
|
271
|
+
["com.example.type.person"]: async () => {
|
|
297
272
|
throw new Error("Method not implemented.");
|
|
298
273
|
},
|
|
299
|
-
["example.
|
|
274
|
+
["com.example.type.project"]: async () => {
|
|
300
275
|
throw new Error("Method not implemented.");
|
|
301
276
|
}
|
|
302
277
|
};
|
|
@@ -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 '@automerge/automerge';\nimport * as Schema from 'effect/Schema';\n\nimport { type Space } from '@dxos/client/echo';\nimport { Ref, Type } from '@dxos/echo';\nimport { createDocAccessor } from '@dxos/echo-db';\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\n/**\n * @deprecated\n */\nexport enum TestSchemaType {\n document = 'example.com/type/Document',\n organization = 'example.com/type/Organization',\n contact = 'example.com/type/Person',\n project = 'example.com/type/Project',\n}\n\n/**\n * @deprecated\n */\nconst testSchemas = (): TestSchemaMap<TestSchemaType> => {\n const document = Schema.Struct({\n title: Schema.String.annotations({ description: 'title of the document' }),\n content: Schema.String,\n }).pipe(Type.object({ typename: TestSchemaType.document, version: '0.1.0' }));\n\n const organization = Schema.Struct({\n name: Schema.String.annotations({ description: 'name of the company or organization' }),\n website: Schema.optional(Schema.String.annotations({ description: 'public website URL' })),\n description: Schema.String.annotations({ description: 'short summary of the company' }),\n }).pipe(Type.object({ typename: TestSchemaType.organization, version: '0.1.0' }));\n\n const contact = Schema.Struct({\n name: Schema.String.annotations({ description: 'name of the person' }),\n email: Schema.optional(Schema.String),\n org: Schema.optional(Type.Ref(organization)),\n lat: Schema.optional(Schema.Number),\n lng: Schema.optional(Schema.Number),\n }).pipe(Type.object({ typename: TestSchemaType.contact, version: '0.1.0' }));\n\n const project = Schema.Struct({\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: Schema.optional(Type.Ref(organization)),\n }).pipe(Type.object({ typename: TestSchemaType.project, version: '0.1.0' }));\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\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.8 })\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.internet.url(),\n status: faker.helpers.arrayElement(Status),\n description: faker.lorem.sentences(),\n website: faker.internet.url(),\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\n/**\n * @deprecated Use generators in schema package.\n */\nexport const createTestObjectGenerator = () => new TestObjectGenerator(testSchemas(), testObjectGenerators);\n\n/**\n * @deprecated Use generators in schema package.\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 { Obj, type Type } from '@dxos/echo';\nimport { EchoSchema, getTypeAnnotation } from '@dxos/echo/internal';\nimport { isProxy } from '@dxos/echo/internal';\nimport { invariant } from '@dxos/invariant';\nimport { faker } from '@dxos/random';\nimport { entries, range } from '@dxos/util';\n\nimport { type TestSchemaType } from './data';\nimport {\n type MutationsProviderProps,\n type TestGeneratorMap,\n type TestMutationsMap,\n type TestObjectProvider,\n type TestSchemaMap,\n} from './types';\n\n/**\n * Typed object generator.\n * @deprecated\n */\nexport class TestObjectGenerator<T extends string = TestSchemaType> {\n // prettier-ignore\n constructor(\n\t\tprotected readonly _schemas: TestSchemaMap<T>,\n\t\tprivate readonly _generators: TestGeneratorMap<T>,\n\t\tprivate readonly _provider?: TestObjectProvider<T>,\n\t) {}\n\n get schemas(): Type.Obj.Any[] {\n return Object.values(this._schemas);\n }\n\n getSchema(type: T): Type.Obj.Any | undefined {\n return this.schemas.find((schema) => getTypeAnnotation(schema)!.typename === type);\n }\n\n protected setSchema(type: T, schema: Type.Obj.Any): void {\n this._schemas[type] = schema;\n }\n\n async createObject({ types }: { types?: T[] } = {}): Promise<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 (isProxy(data)) {\n return data;\n }\n\n const schema = this.getSchema(type);\n invariant(schema, `Schema is required for type: ${type}. Register a schema for this type.`);\n return Obj.make(schema, data);\n }\n\n // TODO(burdon): Based on dependencies (e.g., organization before contact).\n async createObjects(map: Partial<Record<T, number>>) {\n const results: any[] = [];\n for (const [type, count] of entries(map)) {\n results.push(...(await Promise.all(range(count ?? 0, () => this.createObject({ types: [type as T] })))));\n }\n\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 const objects = await this._space.db.query(schema ? Filter.type(schema) : Filter.nothing()).run();\n return objects;\n });\n }\n\n async addSchemas() {\n const result: Type.Obj.Any[] = [];\n for (const [typename, schema] of Object.entries(this._schemas)) {\n const echoSchema = await this._maybeRegisterSchema(typename, schema as Type.Obj.Any);\n this.setSchema(typename as T, echoSchema);\n result.push(echoSchema);\n }\n\n return result;\n }\n\n override async createObject({\n types,\n }: {\n types?: T[];\n } = {}): Promise<Obj.Any> {\n return this._space.db.add(await super.createObject({ types }));\n }\n\n private async _maybeRegisterSchema(typename: string, schema: Type.Obj.Any): Promise<Type.Obj.Any> {\n if (schema instanceof EchoSchema) {\n const existingSchema = this._space.internal.db.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n const [registeredSchema] = await this._space.internal.db.schemaRegistry.register([schema]);\n return registeredSchema;\n } else {\n const existingSchema = this._space.internal.db.graph.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n await this._space.internal.db.graph.schemaRegistry.register([schema]);\n return schema;\n }\n }\n\n async mutateObject(object: Obj.Any, params: MutationsProviderProps): Promise<void> {\n invariant(this._mutations, 'Mutations not defined.');\n const type = getTypeAnnotation(Obj.getSchema(object)!)!.typename as T;\n invariant(type && this._mutations?.[type], 'Invalid object type.');\n\n await this._mutations;\n }\n\n async mutateObjects(objects: Obj.Any[], params: MutationsProviderProps): Promise<void> {\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": ";;;AAIA,SAASA,QAAQC,SAAS;AAC1B,YAAYC,YAAY;AAGxB,SAASC,KAAKC,YAAY;AAC1B,SAASC,yBAAyB;AAClC,SAASC,
|
|
6
|
-
"names": ["next", "A", "Schema", "Ref", "Type", "createDocAccessor", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { next as A } from '@automerge/automerge';\nimport * as Schema from 'effect/Schema';\n\nimport { type Space } from '@dxos/client/echo';\nimport { Ref, Type } from '@dxos/echo';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { random } 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\n/**\n * @deprecated\n */\nexport enum TestSchemaType {\n document = 'com.example.type.document',\n organization = 'com.example.type.organization',\n contact = 'com.example.type.person',\n project = 'com.example.type.project',\n}\n\n/**\n * @deprecated\n */\nconst testSchemas = (): TestSchemaMap<TestSchemaType> => {\n const document = Schema.Struct({\n title: Schema.String.annotations({ description: 'title of the document' }),\n content: Schema.String,\n }).pipe(Type.object({ typename: TestSchemaType.document, version: '0.1.0' }));\n\n const organization = Schema.Struct({\n name: Schema.String.annotations({ description: 'name of the company or organization' }),\n website: Schema.optional(Schema.String.annotations({ description: 'public website URL' })),\n description: Schema.String.annotations({ description: 'short summary of the company' }),\n }).pipe(Type.object({ typename: TestSchemaType.organization, version: '0.1.0' }));\n\n const contact = Schema.Struct({\n name: Schema.String.annotations({ description: 'name of the person' }),\n email: Schema.optional(Schema.String),\n org: Schema.optional(Ref.Ref(organization)),\n lat: Schema.optional(Schema.Number),\n lng: Schema.optional(Schema.Number),\n }).pipe(Type.object({ typename: TestSchemaType.contact, version: '0.1.0' }));\n\n const project = Schema.Struct({\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: Schema.optional(Ref.Ref(organization)),\n }).pipe(Type.object({ typename: TestSchemaType.project, version: '0.1.0' }));\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: random.lorem.sentence(3),\n content: random.lorem.sentences({ min: 1, max: random.number.int({ min: 1, max: 3 }) }),\n }),\n\n [TestSchemaType.organization]: async () => ({\n name: random.company.name(),\n website: random.datatype.boolean({ probability: 0.3 }) ? random.internet.url() : undefined,\n description: random.lorem.sentences(),\n }),\n\n [TestSchemaType.contact]: async (provider) => {\n const organizations = await provider?.(TestSchemaType.organization);\n const location = random.datatype.boolean() ? random.geo.airport() : {};\n\n return {\n name: random.person.fullName(),\n email: random.datatype.boolean({ probability: 0.5 }) ? random.internet.email() : undefined,\n org:\n organizations?.length && random.datatype.boolean({ probability: 0.8 })\n ? Ref.make(random.helpers.arrayElement(organizations))\n : undefined,\n ...location,\n };\n },\n\n [TestSchemaType.project]: async () => ({\n name: random.commerce.productName(),\n repo: random.internet.url(),\n status: random.helpers.arrayElement(Status),\n description: random.lorem.sentences(),\n website: random.internet.url(),\n priority: random.helpers.arrayElement(Priority),\n active: random.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\n/**\n * @deprecated Use generators in schema package.\n */\nexport const createTestObjectGenerator = () => new TestObjectGenerator(testSchemas(), testObjectGenerators);\n\n/**\n * @deprecated Use generators in schema package.\n */\nexport const createSpaceObjectGenerator = (space: Space) =>\n new SpaceObjectGenerator(space, testSchemas(), testObjectGenerators, testObjectMutators);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj, type Type } from '@dxos/echo';\nimport { EchoSchema, getTypeAnnotation } from '@dxos/echo/internal';\nimport { isProxy } from '@dxos/echo/internal';\nimport { invariant } from '@dxos/invariant';\nimport { random } from '@dxos/random';\nimport { entries, range } from '@dxos/util';\n\nimport { type TestSchemaType } from './data';\nimport {\n type MutationsProviderProps,\n type TestGeneratorMap,\n type TestMutationsMap,\n type TestObjectProvider,\n type TestSchemaMap,\n} from './types';\n\n/**\n * Typed object generator.\n * @deprecated\n */\nexport class TestObjectGenerator<T extends string = TestSchemaType> {\n // prettier-ignore\n constructor(\n\t\tprotected readonly _schemas: TestSchemaMap<T>,\n\t\tprivate readonly _generators: TestGeneratorMap<T>,\n\t\tprivate readonly _provider?: TestObjectProvider<T>,\n\t) {}\n\n get schemas(): Type.AnyObj[] {\n return Object.values(this._schemas);\n }\n\n getSchema(type: T): Type.AnyObj | undefined {\n return this.schemas.find((schema) => getTypeAnnotation(schema)!.typename === type);\n }\n\n protected setSchema(type: T, schema: Type.AnyObj): void {\n this._schemas[type] = schema;\n }\n\n async createObject({ types }: { types?: T[] } = {}): Promise<any> {\n const type = random.helpers.arrayElement(types ?? (Object.keys(this._schemas) as T[]));\n const data = await this._generators[type](this._provider);\n if (isProxy(data)) {\n return data;\n }\n\n const schema = this.getSchema(type);\n invariant(schema, `Schema is required for type: ${type}. Register a schema for this type.`);\n return Obj.make(schema, data);\n }\n\n // TODO(burdon): Based on dependencies (e.g., organization before contact).\n async createObjects(map: Partial<Record<T, number>>) {\n const results: any[] = [];\n for (const [type, count] of entries(map)) {\n results.push(...(await Promise.all(range(count ?? 0, () => this.createObject({ types: [type as T] })))));\n }\n\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 const objects = await this._space.db.query(schema ? Filter.type(schema) : Filter.nothing()).run();\n return objects;\n });\n }\n\n async addSchemas() {\n const result: Type.AnyObj[] = [];\n for (const [typename, schema] of Object.entries(this._schemas)) {\n const echoSchema = await this._maybeRegisterSchema(typename, schema as Type.AnyObj);\n this.setSchema(typename as T, echoSchema);\n result.push(echoSchema);\n }\n\n return result;\n }\n\n override async createObject({\n types,\n }: {\n types?: T[];\n } = {}): Promise<Obj.Any> {\n return this._space.db.add(await super.createObject({ types }));\n }\n\n private async _maybeRegisterSchema(typename: string, schema: Type.AnyObj): Promise<Type.AnyObj> {\n if (schema instanceof EchoSchema) {\n const existingSchema = this._space.internal.db.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n const [registeredSchema] = await this._space.internal.db.schemaRegistry.register([schema]);\n return registeredSchema;\n } else {\n const existingSchema = this._space.internal.db.graph.schemaRegistry.getSchema(typename);\n if (existingSchema != null) {\n return existingSchema;\n }\n await this._space.internal.db.graph.schemaRegistry.register([schema]);\n return schema;\n }\n }\n\n async mutateObject(object: Obj.Any, params: MutationsProviderProps): Promise<void> {\n invariant(this._mutations, 'Mutations not defined.');\n const type = getTypeAnnotation(Obj.getSchema(object)!)!.typename as T;\n invariant(type && this._mutations?.[type], 'Invalid object type.');\n\n await this._mutations;\n }\n\n async mutateObjects(objects: Obj.Any[], params: MutationsProviderProps): Promise<void> {\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", "Schema", "Ref", "Type", "createDocAccessor", "random", "Filter", "Obj", "EchoSchema", "getTypeAnnotation", "isProxy", "invariant", "random", "entries", "range", "_generators", "_provider", "schemas", "getSchema", "type", "setSchema", "schema", "createObject", "types", "data", "count", "results", "tasks", "t", "Promise", "objects", "_space", "query", "_mutations", "addSchemas", "typename", "echoSchema", "result", "_maybeRegisterSchema", "existingSchema", "internal", "registeredSchema", "object", "params", "mutateObjects", "mutateObject", "randomText", "length", "result", "characters", "charactersLength", "index", "charAt", "Math", "floor", "random", "Status", "Priority", "TestSchemaType", "testSchemas", "document", "Struct", "title", "String", "annotations", "description", "content", "pipe", "Type", "object", "typename", "version", "organization", "name", "website", "optional", "contact", "email", "org", "Ref", "lat", "Number", "lng", "project", "repo", "status", "priority", "active", "Boolean", "testObjectGenerators", "random", "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", "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":{"src/generator.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/generator.ts":{"bytes":16456,"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/util.ts":{"bytes":1484,"imports":[],"format":"esm"},"src/data.ts":{"bytes":19564,"imports":[{"path":"@automerge/automerge","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"src/index.ts":{"bytes":577,"imports":[{"path":"src/data.ts","kind":"import-statement","original":"./data"},{"path":"src/generator.ts","kind":"import-statement","original":"./generator"},{"path":"src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"dist/lib/neutral/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":18258},"dist/lib/neutral/index.mjs":{"imports":[{"path":"@automerge/automerge","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/invariant","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":"src/index.ts","inputs":{"src/data.ts":{"bytesInOutput":4834},"src/generator.ts":{"bytesInOutput":4204},"src/util.ts":{"bytesInOutput":299},"src/index.ts":{"bytesInOutput":0}},"bytes":9645}}}
|
package/dist/types/src/data.d.ts
CHANGED
|
@@ -6,10 +6,10 @@ export declare const Priority: number[];
|
|
|
6
6
|
* @deprecated
|
|
7
7
|
*/
|
|
8
8
|
export declare enum TestSchemaType {
|
|
9
|
-
document = "example.
|
|
10
|
-
organization = "example.
|
|
11
|
-
contact = "example.
|
|
12
|
-
project = "example.
|
|
9
|
+
document = "com.example.type.document",
|
|
10
|
+
organization = "com.example.type.organization",
|
|
11
|
+
contact = "com.example.type.person",
|
|
12
|
+
project = "com.example.type.project"
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* @deprecated Use generators in schema package.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/data.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK/C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAQxE,eAAO,MAAM,MAAM,UAAgC,CAAC;AACpD,eAAO,MAAM,QAAQ,UAAkB,CAAC;AAExC;;GAEG;AACH,oBAAY,cAAc;IACxB,QAAQ,8BAA8B;IACtC,YAAY,kCAAkC;IAC9C,OAAO,4BAA4B;IACnC,OAAO,6BAA6B;CACrC;AA6GD;;GAEG;AACH,eAAO,MAAM,yBAAyB,2CAAqE,CAAC;AAE5G;;GAEG;AACH,eAAO,MAAM,0BAA0B,
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/data.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK/C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAQxE,eAAO,MAAM,MAAM,UAAgC,CAAC;AACpD,eAAO,MAAM,QAAQ,UAAkB,CAAC;AAExC;;GAEG;AACH,oBAAY,cAAc;IACxB,QAAQ,8BAA8B;IACtC,YAAY,kCAAkC;IAC9C,OAAO,4BAA4B;IACnC,OAAO,6BAA6B;CACrC;AA6GD;;GAEG;AACH,eAAO,MAAM,yBAAyB,2CAAqE,CAAC;AAE5G;;GAEG;AACH,eAAO,MAAM,0BAA0B,UAAW,KAAK,yCACmC,CAAC"}
|
|
@@ -11,9 +11,9 @@ export declare class TestObjectGenerator<T extends string = TestSchemaType> {
|
|
|
11
11
|
private readonly _generators;
|
|
12
12
|
private readonly _provider?;
|
|
13
13
|
constructor(_schemas: TestSchemaMap<T>, _generators: TestGeneratorMap<T>, _provider?: TestObjectProvider<T> | undefined);
|
|
14
|
-
get schemas(): Type.
|
|
15
|
-
getSchema(type: T): Type.
|
|
16
|
-
protected setSchema(type: T, schema: Type.
|
|
14
|
+
get schemas(): Type.AnyObj[];
|
|
15
|
+
getSchema(type: T): Type.AnyObj | undefined;
|
|
16
|
+
protected setSchema(type: T, schema: Type.AnyObj): void;
|
|
17
17
|
createObject({ types }?: {
|
|
18
18
|
types?: T[];
|
|
19
19
|
}): Promise<any>;
|
|
@@ -30,7 +30,7 @@ export declare class SpaceObjectGenerator<T extends string> extends TestObjectGe
|
|
|
30
30
|
readonly typename: string;
|
|
31
31
|
readonly version: string;
|
|
32
32
|
})[]>;
|
|
33
|
-
createObject({ types
|
|
33
|
+
createObject({ types }?: {
|
|
34
34
|
types?: T[];
|
|
35
35
|
}): Promise<Obj.Any>;
|
|
36
36
|
private _maybeRegisterSchema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/generator.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/generator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAU,GAAG,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAOpD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc;IAGhE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAH3B,YACmB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC5B,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAChC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,YAAA,EAC/C;IAEH,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAE3B;IAED,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAE1C;IAED,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAEtD;IAEK,YAAY,CAAC,EAAE,KAAK,EAAE,GAAE;QAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA;KAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAUhE;IAGK,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,kBAalD;CACF;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;IAJ9B,YACmB,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,EAOlD;IAEK,UAAU;;;UASf;IAEc,YAAY,CAAC,EAC1B,KAAK,EACN,GAAE;QACD,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;KACR,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAExB;YAEa,oBAAoB;IAkB5B,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMjF;IAEK,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIrF;CACF"}
|
|
@@ -2,7 +2,7 @@ import { type Obj, type Type } from '@dxos/echo';
|
|
|
2
2
|
export type TestObject = {
|
|
3
3
|
id: string;
|
|
4
4
|
} & Record<string, any>;
|
|
5
|
-
export type TestSchemaMap<T extends string = string> = Record<T, Type.
|
|
5
|
+
export type TestSchemaMap<T extends string = string> = Record<T, Type.AnyObj>;
|
|
6
6
|
export type TestObjectProvider<T extends string = string> = (type: T) => Promise<any[]>;
|
|
7
7
|
export type TestGeneratorMap<T extends string = string> = Record<T, (provider: TestObjectProvider<T> | undefined) => any>;
|
|
8
8
|
export type TestMutationsMap<T extends string = string> = Record<T, TestObjectMutators>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAGjD,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,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAGjD,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,IAAI,CAAC,MAAM,CAAC,CAAC;AAE9E,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAExF,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,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,WAAY,MAAM,WASxC,CAAC"}
|