@powerhousedao/reactor-api 1.29.26-dev.3 → 1.29.26-dev.5
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/dist/src/graphql/drive/index.d.ts +2 -0
- package/dist/src/graphql/drive/index.d.ts.map +1 -1
- package/dist/src/graphql/drive/index.js +47 -15
- package/dist/src/graphql/drive/index.js.map +1 -1
- package/dist/src/graphql/system/index.d.ts +12 -3
- package/dist/src/graphql/system/index.d.ts.map +1 -1
- package/dist/src/graphql/system/index.js +28 -9
- package/dist/src/graphql/system/index.js.map +1 -1
- package/dist/src/graphql/system/types.d.ts +1 -1
- package/dist/src/graphql/system/types.d.ts.map +1 -1
- package/dist/src/utils/db.d.ts.map +1 -1
- package/dist/src/utils/db.js +10 -0
- package/dist/src/utils/db.js.map +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -6,6 +6,8 @@ export declare class DriveSubgraph extends Subgraph {
|
|
|
6
6
|
constructor(args: SubgraphArgs);
|
|
7
7
|
name: string;
|
|
8
8
|
typeDefs: import("graphql").DocumentNode;
|
|
9
|
+
private getDriveIdBySlugOrId;
|
|
10
|
+
private getDriveBySlugOrId;
|
|
9
11
|
resolvers: GraphQLResolverMap<Context>;
|
|
10
12
|
}
|
|
11
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/graphql/drive/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOpE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/graphql/drive/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOpE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AA2B7F,qBAAa,aAAc,SAAQ,QAAQ;IACzC,OAAO,CAAC,MAAM,CAGX;gBAES,IAAI,EAAE,YAAY;IAS9B,IAAI,SAAc;IAClB,QAAQ,iCA8JN;YAEY,oBAAoB;YASpB,kBAAkB;IAWhC,SAAS,EAAE,kBAAkB,CAAC,OAAO,CAAC,CA6QpC;CACH"}
|
|
@@ -32,7 +32,7 @@ export class DriveSubgraph extends Subgraph {
|
|
|
32
32
|
|
|
33
33
|
type Query {
|
|
34
34
|
system: System
|
|
35
|
-
drive:
|
|
35
|
+
drive: DriveInfo
|
|
36
36
|
document(id: String!): IDocument
|
|
37
37
|
documents: [String!]!
|
|
38
38
|
}
|
|
@@ -171,7 +171,33 @@ export class DriveSubgraph extends Subgraph {
|
|
|
171
171
|
type Sync {
|
|
172
172
|
strands(listenerId: ID!, since: String): [StrandUpdate!]!
|
|
173
173
|
}
|
|
174
|
+
|
|
175
|
+
type DriveInfo {
|
|
176
|
+
id: String!
|
|
177
|
+
name: String!
|
|
178
|
+
slug: String!
|
|
179
|
+
meta: DriveMeta
|
|
180
|
+
icon: String
|
|
181
|
+
}
|
|
174
182
|
`;
|
|
183
|
+
async getDriveIdBySlugOrId(slugOrId) {
|
|
184
|
+
try {
|
|
185
|
+
return await this.reactor.getDriveIdBySlug(slugOrId);
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
const drive = await this.reactor.getDrive(slugOrId);
|
|
189
|
+
return drive.id;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
async getDriveBySlugOrId(slugOrId) {
|
|
193
|
+
try {
|
|
194
|
+
return await this.reactor.getDriveBySlug(slugOrId);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
const drive = await this.reactor.getDrive(slugOrId);
|
|
198
|
+
return drive;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
175
201
|
resolvers = {
|
|
176
202
|
Asset: {
|
|
177
203
|
__resolveType: (obj) => {
|
|
@@ -204,29 +230,31 @@ export class DriveSubgraph extends Subgraph {
|
|
|
204
230
|
this.logger.verbose(`drive()`, JSON.stringify(args));
|
|
205
231
|
if (!ctx.driveId)
|
|
206
232
|
throw new Error("Drive ID is required");
|
|
207
|
-
const drive = await this.
|
|
233
|
+
const drive = await this.getDriveBySlugOrId(ctx.driveId);
|
|
208
234
|
return {
|
|
209
235
|
id: drive.id,
|
|
210
236
|
slug: drive.slug,
|
|
211
237
|
meta: drive.meta,
|
|
212
|
-
|
|
213
|
-
|
|
238
|
+
name: drive.state.global.name,
|
|
239
|
+
icon: drive.state.global.icon ?? undefined,
|
|
214
240
|
};
|
|
215
241
|
},
|
|
216
242
|
documents: async (_, args, ctx) => {
|
|
217
243
|
this.logger.verbose(`documents(drive: ${ctx.driveId})`, args);
|
|
218
244
|
if (!ctx.driveId)
|
|
219
245
|
throw new Error("Drive ID is required");
|
|
220
|
-
const
|
|
246
|
+
const driveId = await this.getDriveIdBySlugOrId(ctx.driveId);
|
|
247
|
+
const documents = await this.reactor.getDocuments(driveId);
|
|
221
248
|
return documents;
|
|
222
249
|
},
|
|
223
250
|
document: async (_, { id }, ctx) => {
|
|
224
251
|
this.logger.verbose(`document(drive: ${ctx.driveId}, id: ${id})`);
|
|
225
252
|
if (!ctx.driveId)
|
|
226
253
|
throw new Error("Drive ID is required");
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
|
|
254
|
+
const driveId = await this.getDriveIdBySlugOrId(ctx.driveId);
|
|
255
|
+
const document = await (driveId === id
|
|
256
|
+
? this.reactor.getDrive(driveId)
|
|
257
|
+
: this.reactor.getDocument(driveId, id));
|
|
230
258
|
const dms = this.reactor.getDocumentModelModules();
|
|
231
259
|
const dm = dms.find(({ documentModel }) => documentModel.id === document.documentType);
|
|
232
260
|
const globalState = document.state.global;
|
|
@@ -258,10 +286,11 @@ export class DriveSubgraph extends Subgraph {
|
|
|
258
286
|
if (!ctx.driveId) {
|
|
259
287
|
throw new Error("Drive ID is required");
|
|
260
288
|
}
|
|
289
|
+
const driveId = await this.getDriveIdBySlugOrId(ctx.driveId);
|
|
261
290
|
// Create the listener and transmitter
|
|
262
291
|
const uuid = listenerId ?? generateId();
|
|
263
292
|
const listener = {
|
|
264
|
-
driveId:
|
|
293
|
+
driveId: driveId,
|
|
265
294
|
listenerId: uuid,
|
|
266
295
|
block: false,
|
|
267
296
|
filter,
|
|
@@ -279,7 +308,7 @@ export class DriveSubgraph extends Subgraph {
|
|
|
279
308
|
listener.transmitter = new PullResponderTransmitter(listener, listenerManager);
|
|
280
309
|
// set the listener on the manager directly (bypassing operations)
|
|
281
310
|
try {
|
|
282
|
-
await listenerManager.setListener(
|
|
311
|
+
await listenerManager.setListener(driveId, listener);
|
|
283
312
|
}
|
|
284
313
|
catch (error) {
|
|
285
314
|
this.logger.error(`Failed to register ephemeral listener: ${error}`);
|
|
@@ -299,7 +328,8 @@ export class DriveSubgraph extends Subgraph {
|
|
|
299
328
|
pushUpdates: async (_, { strands: strandsGql }, ctx) => {
|
|
300
329
|
if (!ctx.driveId)
|
|
301
330
|
throw new Error("Drive ID is required");
|
|
302
|
-
this.
|
|
331
|
+
const driveId = await this.getDriveIdBySlugOrId(ctx.driveId);
|
|
332
|
+
this.logger.verbose(`pushUpdates(drive: slug:${ctx.driveId} id:${driveId})`, strandsGql);
|
|
303
333
|
// translate data types
|
|
304
334
|
const strands = strandsGql.map((strandGql) => {
|
|
305
335
|
return {
|
|
@@ -320,11 +350,12 @@ export class DriveSubgraph extends Subgraph {
|
|
|
320
350
|
return await Promise.all(strands.map((strand) => processPushUpdate(this.reactor, strand)));
|
|
321
351
|
},
|
|
322
352
|
acknowledge: async (_, { listenerId, revisions, }, ctx) => {
|
|
323
|
-
this.logger.verbose(`acknowledge(drive: ${ctx.driveId}, listenerId: ${listenerId})`, revisions);
|
|
324
353
|
if (!listenerId || !revisions)
|
|
325
354
|
return false;
|
|
326
355
|
if (!ctx.driveId)
|
|
327
356
|
throw new Error("Drive ID is required");
|
|
357
|
+
const driveId = await this.getDriveIdBySlugOrId(ctx.driveId);
|
|
358
|
+
this.logger.verbose(`acknowledge(drive: ${ctx.driveId}/${driveId}, listenerId: ${listenerId})`, revisions);
|
|
328
359
|
// translate data types
|
|
329
360
|
const validEntries = revisions
|
|
330
361
|
.filter((r) => r !== null)
|
|
@@ -337,17 +368,18 @@ export class DriveSubgraph extends Subgraph {
|
|
|
337
368
|
status: e.status,
|
|
338
369
|
}));
|
|
339
370
|
// return a boolean indicating if the acknowledge was successful
|
|
340
|
-
return await processAcknowledge(this.reactor,
|
|
371
|
+
return await processAcknowledge(this.reactor, driveId, listenerId, validEntries);
|
|
341
372
|
},
|
|
342
373
|
},
|
|
343
374
|
System: {},
|
|
344
375
|
Sync: {
|
|
345
376
|
strands: async (_, { listenerId, since, }, ctx) => {
|
|
346
|
-
this.logger.debug(`strands(drive: ${ctx.driveId}, listenerId: ${listenerId}, since:${since})`);
|
|
347
377
|
if (!ctx.driveId)
|
|
348
378
|
throw new Error("Drive ID is required");
|
|
379
|
+
const driveId = await this.getDriveIdBySlugOrId(ctx.driveId);
|
|
380
|
+
this.logger.debug(`strands(drive: ${ctx.driveId}/${driveId}, listenerId: ${listenerId}, since:${since})`);
|
|
349
381
|
// get the requested strand updates
|
|
350
|
-
const strands = await processGetStrands(this.reactor,
|
|
382
|
+
const strands = await processGetStrands(this.reactor, driveId, listenerId, since);
|
|
351
383
|
// translate data types
|
|
352
384
|
return strands.map((update) => ({
|
|
353
385
|
driveId: update.driveId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/graphql/drive/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAEL,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/graphql/drive/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAEL,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,WAAW,EAKX,wBAAwB,GAEzB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAEL,UAAU,GAGX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,MAAM,kBAAkB,GAA2B;IACjD,IAAI,EAAE,wBAAwB;IAC9B,MAAM,EAAE,0BAA0B;CACnC,CAAC;AAEF,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACjC,MAAM,GAAG,WAAW,CAAC;QAC3B,eAAe;QACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE;KAC3C,CAAC,CAAC;IAEH,YAAY,IAAkB;QAC5B,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,mDAAmD;IACnD,IAAI,GAAG,UAAU,CAAC;IAClB,QAAQ,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8Jb,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QACjD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,QAAgB;QAEhB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,SAAS,GAAgC;QACvC,KAAK,EAAE;YACL,aAAa,EAAE,CAAC,GAAU,EAAE,EAAE;gBAC5B,OAAO,GAAG,CAAC,IAAI,CAAC;YAClB,CAAC;SACF;QACD,IAAI,EAAE;YACJ,aAAa,EAAE,CAAC,GAAa,EAAE,EAAE;gBAC/B,OAAO,GAAG,CAAC,YAAY;oBACrB,CAAC,CAAC,kBAAkB,CAAC,IAAI;oBACzB,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAChC,CAAC;SACF;QACD,kBAAkB,EAAE;YAClB,aAAa,EAAE,CAAC,GAAa,EAAE,EAAE;gBAC/B,OAAO,GAAG,CAAC,YAAY;oBACrB,CAAC,CAAC,kBAAkB,CAAC,IAAI;oBACzB,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAChC,CAAC;SACF;QACD,QAAQ,EAAE;YACR,UAAU,EAAE,KAAK,EACf,GAAe,EACf,EAAE,KAAK,EAAE,IAAI,EAAmC,EAChD,GAAY,EACZ,EAAE;gBACF,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;gBACzB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC;gBACxB,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;YAC3D,CAAC;SACF;QACD,KAAK,EAAE;YACL,KAAK,EAAE,KAAK,EACV,CAAU,EACV,IAAa,EACb,GAAY,EACQ,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAErD,IAAI,CAAC,GAAG,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBAC1D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAEzD,OAAO;oBACL,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;oBAC7B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS;iBAC3C,CAAC;YACJ,CAAC;YACD,SAAS,EAAE,KAAK,EAAE,CAAU,EAAE,IAAa,EAAE,GAAY,EAAE,EAAE;gBAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,GAAG,CAAC,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC9D,IAAI,CAAC,GAAG,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC3D,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,QAAQ,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE,EAAE,EAAkB,EAAE,GAAY,EAAE,EAAE;gBACnE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,GAAG,CAAC,OAAO,SAAS,EAAE,GAAG,CAAC,CAAC;gBAClE,IAAI,CAAC,GAAG,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,KAAK,EAAE;oBACpC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAChC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;gBAE3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;gBACnD,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CACjB,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,QAAQ,CAAC,YAAY,CAClE,CAAC;gBACF,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC1C,IAAI,CAAC,WAAW;oBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACxD,MAAM,QAAQ,GAAG,UAAU,CACzB,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CACpD,CAAC;gBACF,MAAM,QAAQ,GAAG;oBACf,GAAG,QAAQ;oBACX,EAAE;oBACF,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;oBAClC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;oBAC5B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;oBAChC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAa,EAAE,EAAE,CAAC,CAAC;wBAC7D,GAAG,EAAE;wBACL,SAAS,EACP,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ;4BAC1B,CAAC,CAAC,EAAE,CAAC,KAAK;4BACV,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;qBAC/B,CAAC,CAAC;oBACH,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM;oBAChD,UAAU,EAAE,QAAQ;iBACrB,CAAC;gBACF,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;SAC7B;QACD,QAAQ,EAAE;YACR,6BAA6B,EAAE,KAAK,EAClC,CAAU,EACV,EAAE,MAAM,EAAE,UAAU,EAAmD,EACvE,GAAY,EACZ,EAAE;gBACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,wCAAwC,GAAG,CAAC,OAAO,GAAG,EACtD,MAAM,CACP,CAAC;gBAEF,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBAC1C,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAE7D,sCAAsC;gBACtC,MAAM,IAAI,GAAG,UAAU,IAAI,UAAU,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAa;oBACzB,OAAO,EAAE,OAAO;oBAChB,UAAU,EAAE,IAAI;oBAChB,KAAK,EAAE,KAAK;oBACZ,MAAM;oBACN,MAAM,EAAE,KAAK;oBACb,KAAK,EAAE,kBAAkB,IAAI,EAAE;oBAC/B,QAAQ,EAAE;wBACR,IAAI,EAAE,EAAE;wBACR,IAAI,EAAE,eAAe;wBACrB,eAAe,EAAE,eAAe;qBACjC;iBACF,CAAC;gBAEF,2BAA2B;gBAC3B,qDAAqD;gBACrD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC/C,QAAQ,CAAC,WAAW,GAAG,IAAI,wBAAwB,CACjD,QAAQ,EACR,eAAe,CAChB,CAAC;gBAEF,kEAAkE;gBAClE,IAAI,CAAC;oBACH,MAAM,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACvD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;oBACrE,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;gBAC/D,CAAC;gBAED,qEAAqE;gBACrE,OAAO;oBACL,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;iBAC5B,CAAC;YACJ,CAAC;YACD,WAAW,EAAE,KAAK,EAChB,CAAU,EACV,EAAE,OAAO,EAAE,UAAU,EAAsC,EAC3D,GAAY,EACZ,EAAE;gBACF,IAAI,CAAC,GAAG,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,2BAA2B,GAAG,CAAC,OAAO,OAAO,OAAO,GAAG,EACvD,UAAU,CACX,CAAC;gBAEF,uBAAuB;gBACvB,MAAM,OAAO,GAA2B,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;oBACnE,OAAO;wBACL,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;4BAC5C,GAAG,EAAE;4BACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAuB;4BACjD,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;4BAClB,KAAK,EAAE,SAAS,CAAC,KAAK;4BACtB,MAAM,EAAE,MAAM;yBACf,CAAC,CAAgB;wBAClB,UAAU,EAAE,SAAS,CAAC,UAAU;wBAChC,OAAO,EAAE,SAAS,CAAC,OAAO;wBAC1B,KAAK,EAAE,SAAS,CAAC,KAAK;wBACtB,MAAM,EAAE,SAAS,CAAC,MAAM;qBACzB,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,sCAAsC;gBACtC,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CACjE,CAAC;YACJ,CAAC;YACD,WAAW,EAAE,KAAK,EAChB,CAAU,EACV,EACE,UAAU,EACV,SAAS,GAC6C,EACxD,GAAY,EACZ,EAAE;gBACF,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS;oBAAE,OAAO,KAAK,CAAC;gBAC5C,IAAI,CAAC,GAAG,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBAE1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,sBAAsB,GAAG,CAAC,OAAO,IAAI,OAAO,iBAAiB,UAAU,GAAG,EAC1E,SAAS,CACV,CAAC;gBAEF,uBAAuB;gBACvB,MAAM,YAAY,GAAG,SAAS;qBAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;qBACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACX,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,MAAM,EAAE,CAAC,CAAC,MAAM;iBACjB,CAAC,CAAC,CAAC;gBAEN,gEAAgE;gBAChE,OAAO,MAAM,kBAAkB,CAC7B,IAAI,CAAC,OAAO,EACZ,OAAO,EACP,UAAU,EACV,YAAY,CACb,CAAC;YACJ,CAAC;SACF;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK,EACZ,CAAU,EACV,EACE,UAAU,EACV,KAAK,GAC6C,EACpD,GAAY,EACZ,EAAE;gBACF,IAAI,CAAC,GAAG,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,kBAAkB,GAAG,CAAC,OAAO,IAAI,OAAO,iBAAiB,UAAU,WAAW,KAAK,GAAG,CACvF,CAAC;gBAEF,mCAAmC;gBACnC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CACrC,IAAI,CAAC,OAAO,EACZ,OAAO,EACP,UAAU,EACV,KAAK,CACN,CAAC;gBAEF,uBAAuB;gBACvB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBACzC,KAAK,EAAE,EAAE,CAAC,KAAK;wBACf,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;wBAC/B,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,SAAS,EAAE,EAAE,CAAC,SAAS;wBACvB,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,EAAE,EAAE,EAAE,CAAC,EAAE;qBACV,CAAC,CAAC;iBACJ,CAAC,CAAC,CAAC;YACN,CAAC;SACF;KACF,CAAC;CACH"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Subgraph } from "#graphql/base/index.js";
|
|
2
|
-
import { type DriveInput } from "document-drive";
|
|
3
2
|
import { type SystemContext } from "./types.js";
|
|
4
3
|
export declare class SystemSubgraph extends Subgraph {
|
|
5
4
|
name: string;
|
|
@@ -9,9 +8,19 @@ export declare class SystemSubgraph extends Subgraph {
|
|
|
9
8
|
drives: () => Promise<string[]>;
|
|
10
9
|
};
|
|
11
10
|
Mutation: {
|
|
12
|
-
addDrive: (parent: unknown, args:
|
|
11
|
+
addDrive: (parent: unknown, args: {
|
|
12
|
+
name: string;
|
|
13
|
+
icon?: string;
|
|
14
|
+
id?: string;
|
|
15
|
+
slug?: string;
|
|
13
16
|
preferredEditor?: string;
|
|
14
|
-
}, ctx: SystemContext) => Promise<
|
|
17
|
+
}, ctx: SystemContext) => Promise<{
|
|
18
|
+
id: string;
|
|
19
|
+
slug: string;
|
|
20
|
+
name: string;
|
|
21
|
+
icon: string | null;
|
|
22
|
+
preferredEditor?: string;
|
|
23
|
+
}>;
|
|
15
24
|
};
|
|
16
25
|
};
|
|
17
26
|
onSetup(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/graphql/system/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/graphql/system/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIlD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,IAAI,SAAY;IAEhB,QAAQ,iCAgCN;IAEF,SAAS;;;;;+BAQK,OAAO,QACT;gBACJ,IAAI,EAAE,MAAM,CAAC;gBACb,IAAI,CAAC,EAAE,MAAM,CAAC;gBACd,EAAE,CAAC,EAAE,MAAM,CAAC;gBACZ,IAAI,CAAC,EAAE,MAAM,CAAC;gBACd,eAAe,CAAC,EAAE,MAAM,CAAC;aAC1B,OACI,aAAa,KACjB,OAAO,CAAC;gBACT,EAAE,EAAE,MAAM,CAAC;gBACX,IAAI,EAAE,MAAM,CAAC;gBACb,IAAI,EAAE,MAAM,CAAC;gBACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;gBACpB,eAAe,CAAC,EAAE,MAAM,CAAC;aAC1B,CAAC;;MA+BJ;IAEI,OAAO;CAgBd"}
|
|
@@ -13,13 +13,24 @@ export class SystemSubgraph extends Subgraph {
|
|
|
13
13
|
|
|
14
14
|
type Mutation {
|
|
15
15
|
addDrive(
|
|
16
|
-
|
|
16
|
+
name: String!
|
|
17
|
+
icon: String
|
|
18
|
+
id: String
|
|
19
|
+
slug: String
|
|
17
20
|
preferredEditor: String
|
|
18
|
-
):
|
|
21
|
+
): AddDriveResult
|
|
19
22
|
setDriveIcon(id: String!, icon: String!): Boolean
|
|
20
23
|
setDriveName(id: String!, name: String!): Boolean
|
|
21
24
|
}
|
|
22
25
|
|
|
26
|
+
type AddDriveResult {
|
|
27
|
+
id: String!
|
|
28
|
+
slug: String!
|
|
29
|
+
name: String!
|
|
30
|
+
icon: String
|
|
31
|
+
preferredEditor: String
|
|
32
|
+
}
|
|
33
|
+
|
|
23
34
|
input DocumentDriveStateInput {
|
|
24
35
|
name: String
|
|
25
36
|
id: String
|
|
@@ -35,22 +46,30 @@ export class SystemSubgraph extends Subgraph {
|
|
|
35
46
|
},
|
|
36
47
|
Mutation: {
|
|
37
48
|
addDrive: async (parent, args, ctx) => {
|
|
38
|
-
logger.info("addDrive", JSON.stringify(args, null, 2));
|
|
39
49
|
try {
|
|
40
50
|
const isAdmin = ctx.isAdmin(ctx);
|
|
41
51
|
if (!isAdmin) {
|
|
42
52
|
throw new GraphQLError("Unauthorized");
|
|
43
53
|
}
|
|
54
|
+
const { name, icon, ...driveInput } = args;
|
|
44
55
|
const drive = await this.reactor.addDrive({
|
|
45
|
-
...
|
|
46
|
-
global:
|
|
47
|
-
local:
|
|
48
|
-
}
|
|
49
|
-
|
|
56
|
+
...driveInput,
|
|
57
|
+
global: { name, icon },
|
|
58
|
+
local: {},
|
|
59
|
+
});
|
|
60
|
+
const driveAdded = {
|
|
61
|
+
id: drive.id,
|
|
62
|
+
slug: drive.slug,
|
|
63
|
+
name: drive.state.global.name,
|
|
64
|
+
icon: drive.state.global.icon,
|
|
65
|
+
preferredEditor: drive.meta?.preferredEditor,
|
|
66
|
+
};
|
|
67
|
+
logger.info("Drive added", driveAdded);
|
|
68
|
+
return driveAdded;
|
|
50
69
|
}
|
|
51
70
|
catch (e) {
|
|
52
71
|
logger.error(e);
|
|
53
|
-
throw new Error(e);
|
|
72
|
+
throw e instanceof Error ? e : new Error(e);
|
|
54
73
|
}
|
|
55
74
|
},
|
|
56
75
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/graphql/system/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/graphql/system/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAE3D,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,IAAI,GAAG,QAAQ,CAAC;IAEhB,QAAQ,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCb,CAAC;IAEF,SAAS,GAAG;QACV,KAAK,EAAE;YACL,MAAM,EAAE,KAAK,IAAI,EAAE;gBACjB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACxC,CAAC;SACF;QACD,QAAQ,EAAE;YACR,QAAQ,EAAE,KAAK,EACb,MAAe,EACf,IAMC,EACD,GAAkB,EAOjB,EAAE;gBACH,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjC,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,MAAM,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;oBACzC,CAAC;oBAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC;oBAE3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;wBACxC,GAAG,UAAU;wBACb,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;wBACtB,KAAK,EAAE,EAAE;qBACV,CAAC,CAAC;oBAEH,MAAM,UAAU,GAAG;wBACjB,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;wBAC7B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;wBAC7B,eAAe,EAAE,KAAK,CAAC,IAAI,EAAE,eAAe;qBAC7C,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;oBAEvC,OAAO,UAAU,CAAC;gBACpB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAW,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC;YAC7C,OAAO,EAAE,CAAC,GAAkB,EAAE,EAAE;gBAC9B,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC;qBAChC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;qBAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC3B,OAAO,CACL,UAAU,CAAC,MAAM,KAAK,CAAC;oBACvB,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO;wBAClB,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAChE,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/graphql/system/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/graphql/system/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG;IACxC,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC;CACxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/utils/db.ts"],"names":[],"mappings":"AACA,OAAa,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/utils/db.ts"],"names":[],"mappings":"AACA,OAAa,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAKvC,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC;AAStB,wBAAgB,WAAW,CACzB,gBAAgB,GAAE,MAAM,GAAG,SAAqB,GAC/C,EAAE,CAmBJ"}
|
package/dist/src/utils/db.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { PGlite } from "@electric-sql/pglite";
|
|
2
2
|
import knex from "knex";
|
|
3
3
|
import ClientPgLite from "knex-pglite";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import path from "node:path";
|
|
4
6
|
function isPG(connectionString) {
|
|
5
7
|
if (connectionString.startsWith("postgresql://")) {
|
|
6
8
|
return true;
|
|
@@ -13,6 +15,14 @@ export function getDbClient(connectionString = undefined) {
|
|
|
13
15
|
const connection = isPg
|
|
14
16
|
? { connectionString }
|
|
15
17
|
: { pglite: new PGlite(connectionString) };
|
|
18
|
+
// If path is not postgres then it is a filesystem path.
|
|
19
|
+
// Ensures parent directory is created.
|
|
20
|
+
if (connectionString && !isPg) {
|
|
21
|
+
const dirPath = path.resolve(connectionString, "..");
|
|
22
|
+
if (!fs.existsSync(dirPath)) {
|
|
23
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
16
26
|
return knex({
|
|
17
27
|
client,
|
|
18
28
|
connection,
|
package/dist/src/utils/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/utils/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,IAAmB,MAAM,MAAM,CAAC;AACvC,OAAO,YAAY,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/utils/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,IAAmB,MAAM,MAAM,CAAC;AACvC,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,SAAS,IAAI,CAAC,gBAAwB;IACpC,IAAI,gBAAgB,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,mBAAuC,SAAS;IAEhD,MAAM,IAAI,GAAG,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,YAAmC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI;QACrB,CAAC,CAAC,EAAE,gBAAgB,EAAE;QACtB,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAE7C,wDAAwD;IACxD,uCAAuC;IACvC,IAAI,gBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;QACV,MAAM;QACN,UAAU;KACX,CAAC,CAAC;AACL,CAAC"}
|