@dzbot/dzstudio-mcp 0.0.0-stage → 0.1.0

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.
Files changed (49) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +162 -2
  3. package/dist/config/config.js +172 -0
  4. package/dist/config/config.js.map +1 -0
  5. package/dist/config/sessions.js +67 -0
  6. package/dist/config/sessions.js.map +1 -0
  7. package/dist/index.js +16 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/mcp/agent.js +1148 -0
  10. package/dist/mcp/agent.js.map +1 -0
  11. package/dist/mcp/server.js +263 -0
  12. package/dist/mcp/server.js.map +1 -0
  13. package/dist/protocol/client.js +134 -0
  14. package/dist/protocol/client.js.map +1 -0
  15. package/dist/protocol/session.js +837 -0
  16. package/dist/protocol/session.js.map +1 -0
  17. package/dist/protocol/transport.js +66 -0
  18. package/dist/protocol/transport.js.map +1 -0
  19. package/dist/scene/chunks.js +30 -0
  20. package/dist/scene/chunks.js.map +1 -0
  21. package/dist/scene/edits.js +183 -0
  22. package/dist/scene/edits.js.map +1 -0
  23. package/dist/scene/float32.js +167 -0
  24. package/dist/scene/float32.js.map +1 -0
  25. package/dist/scene/ids.js +43 -0
  26. package/dist/scene/ids.js.map +1 -0
  27. package/dist/scene/index.js +9 -0
  28. package/dist/scene/index.js.map +1 -0
  29. package/dist/scene/json.js +294 -0
  30. package/dist/scene/json.js.map +1 -0
  31. package/dist/scene/projectload.js +652 -0
  32. package/dist/scene/projectload.js.map +1 -0
  33. package/dist/scene/scene.js +506 -0
  34. package/dist/scene/scene.js.map +1 -0
  35. package/dist/scene/srcjson.js +297 -0
  36. package/dist/scene/srcjson.js.map +1 -0
  37. package/dist/scene/textform.js +257 -0
  38. package/dist/scene/textform.js.map +1 -0
  39. package/dist/scene/types.js +35 -0
  40. package/dist/scene/types.js.map +1 -0
  41. package/dist/world/data.js +604 -0
  42. package/dist/world/data.js.map +1 -0
  43. package/dist/world/format.js +205 -0
  44. package/dist/world/format.js.map +1 -0
  45. package/dist/world/source.js +267 -0
  46. package/dist/world/source.js.map +1 -0
  47. package/dist/world/tools.js +530 -0
  48. package/dist/world/tools.js.map +1 -0
  49. package/package.json +48 -4
@@ -0,0 +1,297 @@
1
+ /**
2
+ * The strict JSON reader dzStudio uses for project files: it keeps the exact source text of every value and key,
3
+ * duplicate keys in their order (the last one counts), and numbers as their source text. Reading a file the way the
4
+ * editor does needs exactly its notion of what is valid, so this is not the lenient text-form reader in json.ts.
5
+ */
6
+ export class SrcNode {
7
+ type;
8
+ str = '';
9
+ bool = false;
10
+ start = 0;
11
+ end = 0;
12
+ keyStart = -1;
13
+ keyEnd = -1;
14
+ items = [];
15
+ keys = [];
16
+ constructor(type) {
17
+ this.type = type;
18
+ }
19
+ /** The last occurrence of a key. */
20
+ get(key) {
21
+ if (this.type !== 'obj')
22
+ return undefined;
23
+ for (let i = this.keys.length - 1; i >= 0; i--)
24
+ if (this.keys[i] === key)
25
+ return this.items[i];
26
+ return undefined;
27
+ }
28
+ countKey(key) {
29
+ return this.type === 'obj' ? this.keys.filter((k) => k === key).length : 0;
30
+ }
31
+ }
32
+ /** Text the editor would read differently from any JSON reader (a null character, a broken surrogate escape). */
33
+ export class SrcUnsupported extends Error {
34
+ }
35
+ const MAX_DEPTH = 200;
36
+ class Fail extends Error {
37
+ }
38
+ class Reader {
39
+ s;
40
+ i = 0;
41
+ constructor(s) {
42
+ this.s = s;
43
+ }
44
+ code() {
45
+ return this.i < this.s.length ? this.s.charCodeAt(this.i) : -1;
46
+ }
47
+ fail(msg) {
48
+ throw new Fail(msg);
49
+ }
50
+ ws() {
51
+ for (;;) {
52
+ const c = this.code();
53
+ if (c === 32 || c === 9 || c === 10 || c === 13)
54
+ this.i++;
55
+ else
56
+ return;
57
+ }
58
+ }
59
+ value(depth) {
60
+ if (depth > MAX_DEPTH)
61
+ this.fail('nested too deeply');
62
+ this.ws();
63
+ if (this.i >= this.s.length)
64
+ this.fail('unexpected end of file');
65
+ const start = this.i;
66
+ const c = this.code();
67
+ let n;
68
+ if (c === 0x7b) {
69
+ n = new SrcNode('obj');
70
+ this.i++;
71
+ this.ws();
72
+ if (this.code() === 0x7d)
73
+ this.i++;
74
+ else {
75
+ for (;;) {
76
+ this.ws();
77
+ if (this.code() !== 0x22)
78
+ this.fail('field name expected');
79
+ const keyStart = this.i;
80
+ const key = this.string();
81
+ const keyEnd = this.i;
82
+ this.ws();
83
+ if (this.code() !== 0x3a)
84
+ this.fail('":" expected');
85
+ this.i++;
86
+ const v = this.value(depth + 1);
87
+ v.keyStart = keyStart;
88
+ v.keyEnd = keyEnd;
89
+ n.keys.push(key);
90
+ n.items.push(v);
91
+ this.ws();
92
+ const sep = this.code();
93
+ this.i++;
94
+ if (sep === 0x2c)
95
+ continue;
96
+ if (sep === 0x7d)
97
+ break;
98
+ this.i--;
99
+ this.fail('"," or "}" expected');
100
+ }
101
+ }
102
+ }
103
+ else if (c === 0x5b) {
104
+ n = new SrcNode('arr');
105
+ this.i++;
106
+ this.ws();
107
+ if (this.code() === 0x5d)
108
+ this.i++;
109
+ else {
110
+ for (;;) {
111
+ n.items.push(this.value(depth + 1));
112
+ this.ws();
113
+ const sep = this.code();
114
+ this.i++;
115
+ if (sep === 0x2c)
116
+ continue;
117
+ if (sep === 0x5d)
118
+ break;
119
+ this.i--;
120
+ this.fail('"," or "]" expected');
121
+ }
122
+ }
123
+ }
124
+ else if (c === 0x22) {
125
+ n = new SrcNode('str');
126
+ n.str = this.string();
127
+ }
128
+ else if (c === 0x74 || c === 0x66 || c === 0x6e) {
129
+ let word = '';
130
+ for (let b = this.code(); b >= 97 && b <= 122; b = this.code()) {
131
+ word += this.s[this.i];
132
+ this.i++;
133
+ }
134
+ if (word === 'true') {
135
+ n = new SrcNode('bool');
136
+ n.bool = true;
137
+ }
138
+ else if (word === 'false')
139
+ n = new SrcNode('bool');
140
+ else if (word === 'null')
141
+ n = new SrcNode('null');
142
+ else
143
+ this.fail(`unknown word ${word}`);
144
+ }
145
+ else if (c === 0x2d || (c >= 0x30 && c <= 0x39)) {
146
+ n = new SrcNode('num');
147
+ n.str = this.number();
148
+ }
149
+ else
150
+ this.fail('unexpected character');
151
+ n.start = start;
152
+ n.end = this.i;
153
+ return n;
154
+ }
155
+ digits() {
156
+ const from = this.i;
157
+ while (this.code() >= 0x30 && this.code() <= 0x39)
158
+ this.i++;
159
+ return this.s.slice(from, this.i);
160
+ }
161
+ number() {
162
+ const from = this.i;
163
+ if (this.code() === 0x2d)
164
+ this.i++;
165
+ if (this.code() === 0x30) {
166
+ this.i++;
167
+ const nb = this.code();
168
+ if (nb >= 0x30 && nb <= 0x39)
169
+ this.fail('leading zero');
170
+ }
171
+ else if (!this.digits())
172
+ this.fail('number expected');
173
+ if (this.code() === 0x2e) {
174
+ this.i++;
175
+ if (!this.digits())
176
+ this.fail('digit after "." expected');
177
+ }
178
+ if (this.code() === 0x65 || this.code() === 0x45) {
179
+ this.i++;
180
+ if (this.code() === 0x2b || this.code() === 0x2d)
181
+ this.i++;
182
+ if (!this.digits())
183
+ this.fail('digit in the exponent expected');
184
+ }
185
+ const after = this.code();
186
+ if ((after >= 97 && after <= 122) || (after >= 65 && after <= 90))
187
+ this.fail('invalid number');
188
+ return this.s.slice(from, this.i);
189
+ }
190
+ hex4() {
191
+ const h = this.s.slice(this.i, this.i + 4);
192
+ if (!/^[0-9a-fA-F]{4}$/.test(h))
193
+ this.fail('invalid \\u sequence');
194
+ this.i += 4;
195
+ return parseInt(h, 16);
196
+ }
197
+ string() {
198
+ this.i++;
199
+ let out = '';
200
+ for (;;) {
201
+ if (this.i >= this.s.length)
202
+ this.fail('text without end');
203
+ const from = this.i;
204
+ let c = this.code();
205
+ while (c !== -1 && c !== 0x22 && c !== 0x5c && c >= 0x20) {
206
+ this.i++;
207
+ c = this.code();
208
+ }
209
+ out += this.s.slice(from, this.i);
210
+ if (c === -1)
211
+ continue;
212
+ if (c === 0x22) {
213
+ this.i++;
214
+ return out;
215
+ }
216
+ if (c < 0x20)
217
+ this.fail('control character in text');
218
+ this.i++;
219
+ const e = this.code();
220
+ this.i++;
221
+ switch (e) {
222
+ case 0x22:
223
+ out += '"';
224
+ break;
225
+ case 0x5c:
226
+ out += '\\';
227
+ break;
228
+ case 0x2f:
229
+ out += '/';
230
+ break;
231
+ case 0x62:
232
+ out += '\b';
233
+ break;
234
+ case 0x66:
235
+ out += '\f';
236
+ break;
237
+ case 0x6e:
238
+ out += '\n';
239
+ break;
240
+ case 0x72:
241
+ out += '\r';
242
+ break;
243
+ case 0x74:
244
+ out += '\t';
245
+ break;
246
+ case 0x75: {
247
+ let cp = this.hex4();
248
+ if (cp >= 0xd800 && cp <= 0xdbff && this.code() === 0x5c && this.s.charCodeAt(this.i + 1) === 0x75) {
249
+ this.i += 2;
250
+ const lo = this.hex4();
251
+ if (lo < 0xdc00 || lo > 0xdfff)
252
+ throw new SrcUnsupported('a \\u escape with a broken surrogate pair');
253
+ cp = 0x10000 + ((cp - 0xd800) << 10) + (lo - 0xdc00);
254
+ }
255
+ if (cp === 0)
256
+ throw new SrcUnsupported('a \\u0000 escape');
257
+ if (cp >= 0xd800 && cp <= 0xdfff)
258
+ throw new SrcUnsupported('a \\u escape with a lone surrogate');
259
+ out += String.fromCodePoint(cp);
260
+ break;
261
+ }
262
+ default:
263
+ this.i--;
264
+ this.fail('invalid escape sequence');
265
+ }
266
+ }
267
+ }
268
+ }
269
+ /**
270
+ * Reads a whole file. A byte order mark at the start is skipped. Throws SrcUnsupported for text the editor holds
271
+ * differently from its content (it cuts strings at a null character).
272
+ */
273
+ export function parseSrc(text) {
274
+ if (text.includes('\u0000'))
275
+ throw new SrcUnsupported('a null character');
276
+ const doc = {
277
+ slice: (a, b) => (b <= a ? '' : text.slice(a, b)),
278
+ raw: (n) => (n.end <= n.start ? '' : text.slice(n.start, n.end)),
279
+ };
280
+ const r = new Reader(text);
281
+ if (text.charCodeAt(0) === 0xfeff)
282
+ r.i = 1;
283
+ try {
284
+ const root = r.value(0);
285
+ r.ws();
286
+ if (r.i < text.length)
287
+ r.fail('characters after the end');
288
+ doc.root = root;
289
+ }
290
+ catch (e) {
291
+ if (!(e instanceof Fail))
292
+ throw e;
293
+ doc.error = e.message;
294
+ }
295
+ return doc;
296
+ }
297
+ //# sourceMappingURL=srcjson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"srcjson.js","sourceRoot":"","sources":["../../src/scene/srcjson.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,257 @@
1
+ import { isObject, parseJson, writeInt, writeString, writeStringMap, sortedKeys, } from './json.js';
2
+ import { TEXTFORM } from './types.js';
3
+ /** The text could not be read or does not have the structure of text form 1 (stages 1 and 2). */
4
+ export class TextFormError extends Error {
5
+ newerTextForm;
6
+ constructor(message, newerTextForm) {
7
+ super(message);
8
+ this.newerTextForm = newerTextForm;
9
+ }
10
+ }
11
+ // ---------------------------------------------------------------- writing
12
+ function writeComp(c) {
13
+ return `{"v":${writeInt(c.v)},"d":${writeString(c.d)}}`;
14
+ }
15
+ function writeElementBody(e) {
16
+ const comp = sortedKeys(e.comp.keys())
17
+ .map((k) => writeString(k) + ':' + writeComp(e.comp.get(k)))
18
+ .join(',');
19
+ return (`"id":${writeString(e.id)},"kind":${writeString(e.kind)},"parent":${writeString(e.parent)},` +
20
+ `"after":${writeString(e.after)},"hidden":${e.hidden},"locked":${e.locked},` +
21
+ `"fields":${writeStringMap(e.fields)},"comp":{${comp}}`);
22
+ }
23
+ export function writeElement(e) {
24
+ return '{' + writeElementBody(e) + '}';
25
+ }
26
+ export function writeChange(c) {
27
+ switch (c.k) {
28
+ case 'create':
29
+ case 'delete':
30
+ return '{' + writeElementBody(c.el) + `,"k":"${c.k}"}`;
31
+ case 'field': {
32
+ let s = `{"id":${writeString(c.id)},"k":"field","key":${writeString(c.key)}`;
33
+ if (c.old !== undefined)
34
+ s += `,"old":${writeString(c.old)}`;
35
+ if (c.new !== undefined)
36
+ s += `,"new":${writeString(c.new)}`;
37
+ return s + '}';
38
+ }
39
+ case 'hidden':
40
+ case 'locked':
41
+ return `{"id":${writeString(c.id)},"k":"${c.k}","old":${c.old},"new":${c.new}}`;
42
+ case 'move':
43
+ return (`{"id":${writeString(c.id)},"k":"move","from":${writeString(c.from)},"fromAfter":${writeString(c.fromAfter)},` +
44
+ `"to":${writeString(c.to)},"toAfter":${writeString(c.toAfter)}}`);
45
+ case 'comp': {
46
+ let s = `{"id":${writeString(c.id)},"k":"comp","type":${writeString(c.type)}`;
47
+ if (c.old !== undefined)
48
+ s += `,"old":${writeComp(c.old)}`;
49
+ if (c.new !== undefined)
50
+ s += `,"new":${writeComp(c.new)}`;
51
+ return s + '}';
52
+ }
53
+ }
54
+ }
55
+ export function writeOperation(op) {
56
+ return (`{"textform":${TEXTFORM},"op":{"id":${writeString(op.id)},"type":${writeString(op.type)},"tv":${writeInt(op.tv)},` +
57
+ `"author":${writeString(op.author)},"authorName":${writeString(op.authorName)},"origin":${writeString(op.origin)},` +
58
+ `"changes":[${op.changes.map(writeChange).join(',')}]}}`);
59
+ }
60
+ export function writeState(state) {
61
+ const kinds = sortedKeys(state.kinds.keys())
62
+ .map((k) => writeString(k) + ':' + writeInt(state.kinds.get(k)))
63
+ .join(',');
64
+ return `{"textform":${TEXTFORM},"state":{"kinds":{${kinds}},"elements":[${state.elements.map(writeElement).join(',')}]}}`;
65
+ }
66
+ // ---------------------------------------------------------------- reading
67
+ function str(v) {
68
+ return typeof v === 'string' ? v : '';
69
+ }
70
+ function bool(v) {
71
+ return typeof v === 'boolean' ? v : false;
72
+ }
73
+ function isVersion(v) {
74
+ return typeof v === 'number' && Number.isSafeInteger(v) && v >= 1;
75
+ }
76
+ /** A companion entry of an element: without a valid `v` the element is invalid. */
77
+ function readElementComp(v) {
78
+ if (!isObject(v) || !isVersion(v.get('v')))
79
+ return undefined;
80
+ return { v: v.get('v'), d: str(v.get('d')) };
81
+ }
82
+ /** `old`/`new` of a `comp` change: anything but an object with a valid `v` counts as absent. */
83
+ function readChangeComp(v) {
84
+ return readElementComp(v);
85
+ }
86
+ export function readElement(o) {
87
+ if (!o.has('id') || !o.has('kind'))
88
+ throw new TextFormError('element without id or kind');
89
+ const fields = new Map();
90
+ const f = o.get('fields');
91
+ if (isObject(f)) {
92
+ for (const [k, v] of f) {
93
+ if (typeof v !== 'string')
94
+ throw new TextFormError(`field ${k} is not a string`);
95
+ fields.set(k, v);
96
+ }
97
+ }
98
+ const comp = new Map();
99
+ const c = o.get('comp');
100
+ if (isObject(c)) {
101
+ for (const [k, v] of c) {
102
+ const entry = readElementComp(v);
103
+ if (!entry)
104
+ throw new TextFormError(`companion data ${k} without a version`);
105
+ comp.set(k, entry);
106
+ }
107
+ }
108
+ return {
109
+ id: str(o.get('id')),
110
+ kind: str(o.get('kind')),
111
+ parent: str(o.get('parent')),
112
+ after: str(o.get('after')),
113
+ hidden: bool(o.get('hidden')),
114
+ locked: bool(o.get('locked')),
115
+ fields,
116
+ comp,
117
+ };
118
+ }
119
+ export function readChange(v) {
120
+ if (!isObject(v))
121
+ throw new TextFormError('a change is not an object');
122
+ const k = v.get('k');
123
+ const id = str(v.get('id'));
124
+ switch (k) {
125
+ case 'create':
126
+ case 'delete':
127
+ return { k, el: readElement(v) };
128
+ case 'field': {
129
+ const c = { k, id, key: str(v.get('key')) };
130
+ if (v.has('old'))
131
+ c.old = str(v.get('old'));
132
+ if (v.has('new'))
133
+ c.new = str(v.get('new'));
134
+ return c;
135
+ }
136
+ case 'hidden':
137
+ case 'locked':
138
+ return { k, id, old: bool(v.get('old')), new: bool(v.get('new')) };
139
+ case 'move':
140
+ return {
141
+ k,
142
+ id,
143
+ from: str(v.get('from')),
144
+ fromAfter: str(v.get('fromAfter')),
145
+ to: str(v.get('to')),
146
+ toAfter: str(v.get('toAfter')),
147
+ };
148
+ case 'comp': {
149
+ const c = { k, id, type: str(v.get('type')) };
150
+ const o = readChangeComp(v.get('old'));
151
+ const n = readChangeComp(v.get('new'));
152
+ if (o)
153
+ c.old = o;
154
+ if (n)
155
+ c.new = n;
156
+ return c;
157
+ }
158
+ default:
159
+ throw new TextFormError(`unknown change kind ${JSON.stringify(k)}`);
160
+ }
161
+ }
162
+ function parseEnvelope(text) {
163
+ let root;
164
+ try {
165
+ root = parseJson(text);
166
+ }
167
+ catch (e) {
168
+ throw new TextFormError(`not valid JSON: ${e.message}`);
169
+ }
170
+ if (!isObject(root))
171
+ throw new TextFormError('not a JSON object');
172
+ if (!root.has('textform'))
173
+ throw new TextFormError('no textform');
174
+ const tf = root.get('textform');
175
+ if (typeof tf !== 'number' || !Number.isSafeInteger(tf) || tf < 1)
176
+ throw new TextFormError('invalid textform');
177
+ if (tf > TEXTFORM)
178
+ throw new TextFormError(`text form ${tf} is newer than ${TEXTFORM}`, tf);
179
+ return root;
180
+ }
181
+ /** Stages 1 and 2 of applying: read and check the structure. Throws TextFormError when the text is invalid. */
182
+ export function readOperation(text) {
183
+ const root = parseEnvelope(text);
184
+ const op = root.get('op');
185
+ if (!isObject(op))
186
+ throw new TextFormError('op missing or not an object');
187
+ const origin = op.get('origin');
188
+ if (origin !== 'local' && origin !== 'system' && origin !== 'remote')
189
+ throw new TextFormError('invalid origin');
190
+ const changes = op.get('changes');
191
+ if (!Array.isArray(changes))
192
+ throw new TextFormError('changes is not a list');
193
+ const tv = op.get('tv');
194
+ return {
195
+ id: str(op.get('id')),
196
+ type: str(op.get('type')),
197
+ tv: typeof tv === 'number' && Number.isSafeInteger(tv) && tv >= 1 ? tv : 1,
198
+ author: str(op.get('author')),
199
+ authorName: str(op.get('authorName')),
200
+ origin,
201
+ changes: changes.map(readChange),
202
+ };
203
+ }
204
+ export function readStateText(text) {
205
+ const root = parseEnvelope(text);
206
+ const st = root.get('state');
207
+ if (!isObject(st))
208
+ throw new TextFormError('state missing or not an object');
209
+ const kinds = new Map();
210
+ const k = st.get('kinds');
211
+ if (isObject(k))
212
+ for (const [name, v] of k)
213
+ kinds.set(name, typeof v === 'number' ? v : 0);
214
+ const list = st.get('elements');
215
+ const elements = [];
216
+ if (Array.isArray(list)) {
217
+ for (const e of list) {
218
+ if (!isObject(e))
219
+ throw new TextFormError('an element is not an object');
220
+ elements.push(readElement(e));
221
+ }
222
+ }
223
+ return { kinds, elements };
224
+ }
225
+ export function cloneElement(e) {
226
+ return { ...e, fields: new Map(e.fields), comp: new Map([...e.comp].map(([k, c]) => [k, { ...c }])) };
227
+ }
228
+ export function inverseChange(c) {
229
+ switch (c.k) {
230
+ case 'create':
231
+ return { k: 'delete', el: cloneElement(c.el) };
232
+ case 'delete':
233
+ return { k: 'create', el: cloneElement(c.el) };
234
+ case 'field': {
235
+ const r = { k: 'field', id: c.id, key: c.key };
236
+ if (c.new !== undefined)
237
+ r.old = c.new;
238
+ if (c.old !== undefined)
239
+ r.new = c.old;
240
+ return r;
241
+ }
242
+ case 'hidden':
243
+ case 'locked':
244
+ return { k: c.k, id: c.id, old: c.new, new: c.old };
245
+ case 'move':
246
+ return { k: 'move', id: c.id, from: c.to, fromAfter: c.toAfter, to: c.from, toAfter: c.fromAfter };
247
+ case 'comp': {
248
+ const r = { k: 'comp', id: c.id, type: c.type };
249
+ if (c.new)
250
+ r.old = { ...c.new };
251
+ if (c.old)
252
+ r.new = { ...c.old };
253
+ return r;
254
+ }
255
+ }
256
+ }
257
+ //# sourceMappingURL=textform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textform.js","sourceRoot":"","sources":["../../src/scene/textform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The types every participant of a session registers, in exactly these versions. A participant without the game
3
+ * knows the same list as a dzStudio build, so that all of them accept and reject the same operations.
4
+ */
5
+ export const TEXTFORM = 1;
6
+ export const ELEMENT_TYPES = new Map([
7
+ ['core:project', { version: 1, parents: [] }],
8
+ ['core:group', { version: 1, parents: ['core:project'] }],
9
+ ['core:object', { version: 1, parents: ['core:group'] }],
10
+ ['loot:entry', { version: 1, parents: ['core:project'] }],
11
+ ]);
12
+ export const OPERATION_TYPES = new Map([
13
+ ['core:load', 1],
14
+ ['core:undo', 1],
15
+ ['core:redo', 1],
16
+ ['core:revert', 1],
17
+ ['projects:edit', 1],
18
+ ['placement:edit', 1],
19
+ ['properties:edit', 1],
20
+ ['brush:edit', 1],
21
+ ['spawner:edit', 1],
22
+ ['loot:edit', 1],
23
+ ]);
24
+ export const COMPANION_TYPES = new Map([
25
+ ['projects:plugins', 1],
26
+ ['projects:entry', 1],
27
+ ['spawner:root', 1],
28
+ ['spawner:read', 1],
29
+ ['loot:setting', 1],
30
+ ]);
31
+ export function pluginOf(type) {
32
+ const i = type.indexOf(':');
33
+ return i < 0 ? type : type.slice(0, i);
34
+ }
35
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/scene/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AAO1B,MAAM,CAAC,MAAM,aAAa,GAAqC,IAAI,GAAG,CAAC;IACrE,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC7C,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;IACzD,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;IACxD,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;CAC1D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAgC,IAAI,GAAG,CAAC;IAClE,CAAC,WAAW,EAAE,CAAC,CAAC;IAChB,CAAC,WAAW,EAAE,CAAC,CAAC;IAChB,CAAC,WAAW,EAAE,CAAC,CAAC;IAChB,CAAC,aAAa,EAAE,CAAC,CAAC;IAClB,CAAC,eAAe,EAAE,CAAC,CAAC;IACpB,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACrB,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtB,CAAC,YAAY,EAAE,CAAC,CAAC;IACjB,CAAC,cAAc,EAAE,CAAC,CAAC;IACnB,CAAC,WAAW,EAAE,CAAC,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAgC,IAAI,GAAG,CAAC;IAClE,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACvB,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACrB,CAAC,cAAc,EAAE,CAAC,CAAC;IACnB,CAAC,cAAc,EAAE,CAAC,CAAC;IACnB,CAAC,cAAc,EAAE,CAAC,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}