@dxos/echo-generator 0.8.4-main.72ec0f3 → 0.8.4-main.765dc60934
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/{browser → neutral}/index.mjs +66 -82
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- 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 +13 -13
- package/dist/types/src/generator.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +5 -8
- 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 +21 -21
- package/src/data.ts +31 -30
- package/src/generator.test.ts +23 -18
- package/src/generator.ts +35 -36
- package/src/types.ts +5 -9
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/node-esm/index.mjs +0 -306
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -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
|
|
@@ -3,17 +3,16 @@ import "@dxos/node-std/globals";
|
|
|
3
3
|
// src/data.ts
|
|
4
4
|
import { next as A } from "@automerge/automerge";
|
|
5
5
|
import * as Schema from "effect/Schema";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { Ref, Type } from "@dxos/echo";
|
|
7
|
+
import { createDocAccessor } from "@dxos/echo-db";
|
|
8
|
+
import { random as random2 } from "@dxos/random";
|
|
9
9
|
|
|
10
10
|
// src/generator.ts
|
|
11
|
-
import { Filter } from "@dxos/
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
11
|
+
import { Filter, Obj } from "@dxos/echo";
|
|
12
|
+
import { EchoSchema, getTypeAnnotation } from "@dxos/echo/internal";
|
|
13
|
+
import { isProxy } from "@dxos/echo/internal";
|
|
14
14
|
import { invariant } from "@dxos/invariant";
|
|
15
|
-
import {
|
|
16
|
-
import { faker } from "@dxos/random";
|
|
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,13 +35,14 @@ 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
|
-
if (
|
|
40
|
+
if (isProxy(data)) {
|
|
42
41
|
return data;
|
|
43
42
|
}
|
|
44
43
|
const schema = this.getSchema(type);
|
|
45
|
-
|
|
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.`"] });
|
|
45
|
+
return Obj.make(schema, data);
|
|
46
46
|
}
|
|
47
47
|
// TODO(burdon): Based on dependencies (e.g., organization before contact).
|
|
48
48
|
async createObjects(map) {
|
|
@@ -70,7 +70,7 @@ var SpaceObjectGenerator = class extends TestObjectGenerator {
|
|
|
70
70
|
constructor(_space, schemaMap, generators, _mutations) {
|
|
71
71
|
super(schemaMap, generators, async (type) => {
|
|
72
72
|
const schema = this.getSchema(type);
|
|
73
|
-
const
|
|
73
|
+
const objects = await this._space.db.query(schema ? Filter.type(schema) : Filter.nothing()).run();
|
|
74
74
|
return objects;
|
|
75
75
|
}), this._space = _space, this._mutations = _mutations;
|
|
76
76
|
}
|
|
@@ -90,45 +90,29 @@ var SpaceObjectGenerator = class extends TestObjectGenerator {
|
|
|
90
90
|
}
|
|
91
91
|
async _maybeRegisterSchema(typename, schema) {
|
|
92
92
|
if (schema instanceof EchoSchema) {
|
|
93
|
-
const existingSchema = this._space.db.schemaRegistry.getSchema(typename);
|
|
93
|
+
const existingSchema = this._space.internal.db.schemaRegistry.getSchema(typename);
|
|
94
94
|
if (existingSchema != null) {
|
|
95
95
|
return existingSchema;
|
|
96
96
|
}
|
|
97
|
-
const [registeredSchema] = await this._space.db.schemaRegistry.register([
|
|
97
|
+
const [registeredSchema] = await this._space.internal.db.schemaRegistry.register([
|
|
98
98
|
schema
|
|
99
99
|
]);
|
|
100
100
|
return registeredSchema;
|
|
101
101
|
} else {
|
|
102
|
-
const existingSchema = this._space.db.graph.schemaRegistry.getSchema(typename);
|
|
102
|
+
const existingSchema = this._space.internal.db.graph.schemaRegistry.getSchema(typename);
|
|
103
103
|
if (existingSchema != null) {
|
|
104
104
|
return existingSchema;
|
|
105
105
|
}
|
|
106
|
-
this._space.db.graph.schemaRegistry.
|
|
106
|
+
await this._space.internal.db.graph.schemaRegistry.register([
|
|
107
107
|
schema
|
|
108
108
|
]);
|
|
109
109
|
return schema;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
async mutateObject(object, params) {
|
|
113
|
-
invariant(this._mutations, "Mutations not defined.", {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
S: this,
|
|
117
|
-
A: [
|
|
118
|
-
"this._mutations",
|
|
119
|
-
"'Mutations not defined.'"
|
|
120
|
-
]
|
|
121
|
-
});
|
|
122
|
-
const type = getTypeAnnotation(getSchema(object)).typename;
|
|
123
|
-
invariant(type && this._mutations?.[type], "Invalid object type.", {
|
|
124
|
-
F: __dxlog_file,
|
|
125
|
-
L: 133,
|
|
126
|
-
S: this,
|
|
127
|
-
A: [
|
|
128
|
-
"type && this._mutations?.[type]",
|
|
129
|
-
"'Invalid object type.'"
|
|
130
|
-
]
|
|
131
|
-
});
|
|
113
|
+
invariant(this._mutations, "Mutations not defined.", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 110, S: this, A: ["this._mutations", "'Mutations not defined.'"] });
|
|
114
|
+
const type = getTypeAnnotation(Obj.getSchema(object)).typename;
|
|
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.'"] });
|
|
132
116
|
await this._mutations[type](object, params);
|
|
133
117
|
}
|
|
134
118
|
async mutateObjects(objects, params) {
|
|
@@ -163,10 +147,10 @@ var Priority = [
|
|
|
163
147
|
5
|
|
164
148
|
];
|
|
165
149
|
var TestSchemaType = /* @__PURE__ */ (function(TestSchemaType2) {
|
|
166
|
-
TestSchemaType2["document"] = "example.
|
|
167
|
-
TestSchemaType2["organization"] = "example.
|
|
168
|
-
TestSchemaType2["contact"] = "example.
|
|
169
|
-
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";
|
|
170
154
|
return TestSchemaType2;
|
|
171
155
|
})({});
|
|
172
156
|
var testSchemas = () => {
|
|
@@ -175,8 +159,8 @@ var testSchemas = () => {
|
|
|
175
159
|
description: "title of the document"
|
|
176
160
|
}),
|
|
177
161
|
content: Schema.String
|
|
178
|
-
}).pipe(
|
|
179
|
-
typename: "example.
|
|
162
|
+
}).pipe(Type.object({
|
|
163
|
+
typename: "com.example.type.document",
|
|
180
164
|
version: "0.1.0"
|
|
181
165
|
}));
|
|
182
166
|
const organization = Schema.Struct({
|
|
@@ -189,8 +173,8 @@ var testSchemas = () => {
|
|
|
189
173
|
description: Schema.String.annotations({
|
|
190
174
|
description: "short summary of the company"
|
|
191
175
|
})
|
|
192
|
-
}).pipe(
|
|
193
|
-
typename: "example.
|
|
176
|
+
}).pipe(Type.object({
|
|
177
|
+
typename: "com.example.type.organization",
|
|
194
178
|
version: "0.1.0"
|
|
195
179
|
}));
|
|
196
180
|
const contact = Schema.Struct({
|
|
@@ -198,11 +182,11 @@ var testSchemas = () => {
|
|
|
198
182
|
description: "name of the person"
|
|
199
183
|
}),
|
|
200
184
|
email: Schema.optional(Schema.String),
|
|
201
|
-
org: Schema.optional(Ref(organization)),
|
|
185
|
+
org: Schema.optional(Ref.Ref(organization)),
|
|
202
186
|
lat: Schema.optional(Schema.Number),
|
|
203
187
|
lng: Schema.optional(Schema.Number)
|
|
204
|
-
}).pipe(
|
|
205
|
-
typename: "example.
|
|
188
|
+
}).pipe(Type.object({
|
|
189
|
+
typename: "com.example.type.person",
|
|
206
190
|
version: "0.1.0"
|
|
207
191
|
}));
|
|
208
192
|
const project = Schema.Struct({
|
|
@@ -215,62 +199,62 @@ var testSchemas = () => {
|
|
|
215
199
|
status: Schema.String,
|
|
216
200
|
priority: Schema.Number,
|
|
217
201
|
active: Schema.Boolean,
|
|
218
|
-
org: Schema.optional(Ref(organization))
|
|
219
|
-
}).pipe(
|
|
220
|
-
typename: "example.
|
|
202
|
+
org: Schema.optional(Ref.Ref(organization))
|
|
203
|
+
}).pipe(Type.object({
|
|
204
|
+
typename: "com.example.type.project",
|
|
221
205
|
version: "0.1.0"
|
|
222
206
|
}));
|
|
223
207
|
return {
|
|
224
|
-
["example.
|
|
225
|
-
["example.
|
|
226
|
-
["example.
|
|
227
|
-
["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
|
|
228
212
|
};
|
|
229
213
|
};
|
|
230
214
|
var testObjectGenerators = {
|
|
231
|
-
["example.
|
|
232
|
-
title:
|
|
233
|
-
content:
|
|
215
|
+
["com.example.type.document"]: async () => ({
|
|
216
|
+
title: random2.lorem.sentence(3),
|
|
217
|
+
content: random2.lorem.sentences({
|
|
234
218
|
min: 1,
|
|
235
|
-
max:
|
|
219
|
+
max: random2.number.int({
|
|
236
220
|
min: 1,
|
|
237
221
|
max: 3
|
|
238
222
|
})
|
|
239
223
|
})
|
|
240
224
|
}),
|
|
241
|
-
["example.
|
|
242
|
-
name:
|
|
243
|
-
website:
|
|
225
|
+
["com.example.type.organization"]: async () => ({
|
|
226
|
+
name: random2.company.name(),
|
|
227
|
+
website: random2.datatype.boolean({
|
|
244
228
|
probability: 0.3
|
|
245
|
-
}) ?
|
|
246
|
-
description:
|
|
229
|
+
}) ? random2.internet.url() : void 0,
|
|
230
|
+
description: random2.lorem.sentences()
|
|
247
231
|
}),
|
|
248
|
-
["example.
|
|
249
|
-
const organizations = await provider?.("example.
|
|
250
|
-
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() : {};
|
|
251
235
|
return {
|
|
252
|
-
name:
|
|
253
|
-
email:
|
|
236
|
+
name: random2.person.fullName(),
|
|
237
|
+
email: random2.datatype.boolean({
|
|
254
238
|
probability: 0.5
|
|
255
|
-
}) ?
|
|
256
|
-
org: organizations?.length &&
|
|
239
|
+
}) ? random2.internet.email() : void 0,
|
|
240
|
+
org: organizations?.length && random2.datatype.boolean({
|
|
257
241
|
probability: 0.8
|
|
258
|
-
}) ? Ref.make(
|
|
242
|
+
}) ? Ref.make(random2.helpers.arrayElement(organizations)) : void 0,
|
|
259
243
|
...location
|
|
260
244
|
};
|
|
261
245
|
},
|
|
262
|
-
["example.
|
|
263
|
-
name:
|
|
264
|
-
repo:
|
|
265
|
-
status:
|
|
266
|
-
description:
|
|
267
|
-
website:
|
|
268
|
-
priority:
|
|
269
|
-
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()
|
|
270
254
|
})
|
|
271
255
|
};
|
|
272
256
|
var testObjectMutators = {
|
|
273
|
-
["example.
|
|
257
|
+
["com.example.type.document"]: async (object, params) => {
|
|
274
258
|
const accessor = createDocAccessor(object, [
|
|
275
259
|
"content"
|
|
276
260
|
]);
|
|
@@ -281,13 +265,13 @@ var testObjectMutators = {
|
|
|
281
265
|
});
|
|
282
266
|
}
|
|
283
267
|
},
|
|
284
|
-
["example.
|
|
268
|
+
["com.example.type.organization"]: async () => {
|
|
285
269
|
throw new Error("Method not implemented.");
|
|
286
270
|
},
|
|
287
|
-
["example.
|
|
271
|
+
["com.example.type.person"]: async () => {
|
|
288
272
|
throw new Error("Method not implemented.");
|
|
289
273
|
},
|
|
290
|
-
["example.
|
|
274
|
+
["com.example.type.project"]: async () => {
|
|
291
275
|
throw new Error("Method not implemented.");
|
|
292
276
|
}
|
|
293
277
|
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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 { 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
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
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,
|
|
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"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import type * as Schema from 'effect/Schema';
|
|
2
1
|
import { type Space } from '@dxos/client/echo';
|
|
3
|
-
import {
|
|
4
|
-
import { type AnyLiveObject } from '@dxos/echo-db';
|
|
5
|
-
import { type Live } from '@dxos/live-object';
|
|
2
|
+
import { Obj, type Type } from '@dxos/echo';
|
|
6
3
|
import { type TestSchemaType } from './data';
|
|
7
|
-
import { type
|
|
4
|
+
import { type MutationsProviderProps, type TestGeneratorMap, type TestMutationsMap, type TestObjectProvider, type TestSchemaMap } from './types';
|
|
8
5
|
/**
|
|
9
6
|
* Typed object generator.
|
|
10
7
|
* @deprecated
|
|
@@ -14,12 +11,12 @@ export declare class TestObjectGenerator<T extends string = TestSchemaType> {
|
|
|
14
11
|
private readonly _generators;
|
|
15
12
|
private readonly _provider?;
|
|
16
13
|
constructor(_schemas: TestSchemaMap<T>, _generators: TestGeneratorMap<T>, _provider?: TestObjectProvider<T> | undefined);
|
|
17
|
-
get schemas():
|
|
18
|
-
getSchema(type: T):
|
|
19
|
-
protected setSchema(type: T, schema:
|
|
14
|
+
get schemas(): Type.AnyObj[];
|
|
15
|
+
getSchema(type: T): Type.AnyObj | undefined;
|
|
16
|
+
protected setSchema(type: T, schema: Type.AnyObj): void;
|
|
20
17
|
createObject({ types }?: {
|
|
21
18
|
types?: T[];
|
|
22
|
-
}): Promise<
|
|
19
|
+
}): Promise<any>;
|
|
23
20
|
createObjects(map: Partial<Record<T, number>>): Promise<any[]>;
|
|
24
21
|
}
|
|
25
22
|
/**
|
|
@@ -29,12 +26,15 @@ export declare class SpaceObjectGenerator<T extends string> extends TestObjectGe
|
|
|
29
26
|
private readonly _space;
|
|
30
27
|
private readonly _mutations?;
|
|
31
28
|
constructor(_space: Space, schemaMap: TestSchemaMap<T>, generators: TestGeneratorMap<T>, _mutations?: TestMutationsMap<T> | undefined);
|
|
32
|
-
addSchemas(): Promise<(Schema.Schema.AnyNoContext
|
|
29
|
+
addSchemas(): Promise<(import("effect/Schema").Schema.AnyNoContext & {
|
|
30
|
+
readonly typename: string;
|
|
31
|
+
readonly version: string;
|
|
32
|
+
})[]>;
|
|
33
33
|
createObject({ types }?: {
|
|
34
34
|
types?: T[];
|
|
35
|
-
}): Promise<
|
|
35
|
+
}): Promise<Obj.Any>;
|
|
36
36
|
private _maybeRegisterSchema;
|
|
37
|
-
mutateObject(object:
|
|
38
|
-
mutateObjects(objects:
|
|
37
|
+
mutateObject(object: Obj.Any, params: MutationsProviderProps): Promise<void>;
|
|
38
|
+
mutateObjects(objects: Obj.Any[], params: MutationsProviderProps): Promise<void>;
|
|
39
39
|
}
|
|
40
40
|
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -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"}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type EchoSchema } from '@dxos/echo/internal';
|
|
3
|
-
import { type AnyLiveObject } from '@dxos/echo-db';
|
|
4
|
-
import { type Live } from '@dxos/live-object';
|
|
1
|
+
import { type Obj, type Type } from '@dxos/echo';
|
|
5
2
|
export type TestObject = {
|
|
6
3
|
id: string;
|
|
7
4
|
} & Record<string, any>;
|
|
8
|
-
export type TestSchemaMap<T extends string = string> = Record<T,
|
|
9
|
-
export type TestObjectProvider<T extends string = string> = (type: T) => Promise<
|
|
5
|
+
export type TestSchemaMap<T extends string = string> = Record<T, Type.AnyObj>;
|
|
6
|
+
export type TestObjectProvider<T extends string = string> = (type: T) => Promise<any[]>;
|
|
10
7
|
export type TestGeneratorMap<T extends string = string> = Record<T, (provider: TestObjectProvider<T> | undefined) => any>;
|
|
11
8
|
export type TestMutationsMap<T extends string = string> = Record<T, TestObjectMutators>;
|
|
12
|
-
export type
|
|
9
|
+
export type MutationsProviderProps = {
|
|
13
10
|
count: number;
|
|
14
11
|
mutationSize: number;
|
|
15
12
|
maxContentLength: number;
|
|
16
13
|
};
|
|
17
|
-
export type TestObjectMutators = (object:
|
|
14
|
+
export type TestObjectMutators = (object: Obj.Any, params: MutationsProviderProps) => Promise<void>;
|
|
18
15
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
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"}
|