@powerhousedao/connect 1.0.17-staging.0 → 1.0.18-dev.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 (34) hide show
  1. package/dist/.env +1 -1
  2. package/dist/assets/{app-L8JlWUBJ.js → app-CVMWZv87.js} +8704 -3612
  3. package/dist/assets/app-CVMWZv87.js.map +1 -0
  4. package/dist/assets/{app-CDOWlDp2.css → app-b1jkE5Vo.css} +115 -0
  5. package/dist/assets/{app-loader-DiF8OhX3.css → app-loader-B74nopv_.css} +130 -0
  6. package/dist/assets/{app-loader-NBW5MOd-.js → app-loader-CyLjWzqu.js} +514 -235
  7. package/dist/assets/app-loader-CyLjWzqu.js.map +1 -0
  8. package/dist/assets/browser-D2jO3dRM.js +27234 -0
  9. package/dist/assets/browser-D2jO3dRM.js.map +1 -0
  10. package/dist/assets/{ccip-BtE64Tl7.js → ccip-Bc4WWhaG.js} +4 -3
  11. package/dist/assets/ccip-Bc4WWhaG.js.map +1 -0
  12. package/dist/assets/{content-IqSBpnzp.js → content-BT3Hva7m.js} +1010 -372
  13. package/dist/assets/content-BT3Hva7m.js.map +1 -0
  14. package/dist/assets/{index-qcjgdIGq.js → index-CvMNHCwH.js} +4 -3
  15. package/dist/assets/index-CvMNHCwH.js.map +1 -0
  16. package/dist/assets/{index-KKn8sTpN.js → index-DGZ-jRbz.js} +23 -17
  17. package/dist/assets/index-DGZ-jRbz.js.map +1 -0
  18. package/dist/assets/{index-djZjmHb-.js → index-pNUgXTmc.js} +4 -3
  19. package/dist/assets/index-pNUgXTmc.js.map +1 -0
  20. package/dist/assets/{main.v9eAGxZO.js → main.BeBass2H.js} +2 -1
  21. package/dist/assets/main.BeBass2H.js.map +1 -0
  22. package/dist/assets/reactor-analytics-CNDoGqPi.js +15 -0
  23. package/dist/assets/reactor-analytics-CNDoGqPi.js.map +1 -0
  24. package/dist/assets/router-CHQCDqr5.js +2178 -0
  25. package/dist/assets/router-CHQCDqr5.js.map +1 -0
  26. package/dist/external-packages.js +1 -0
  27. package/dist/external-packages.js.map +1 -0
  28. package/dist/hmr.js +1 -0
  29. package/dist/hmr.js.map +1 -0
  30. package/dist/index.html +1 -1
  31. package/dist/service-worker.js +1 -0
  32. package/dist/service-worker.js.map +1 -0
  33. package/dist/vite-envs.sh +1 -1
  34. package/package.json +10 -9
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-L8JlWUBJ.js","assets/main.v9eAGxZO.js","assets/app-CDOWlDp2.css"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-CVMWZv87.js","assets/main.BeBass2H.js","assets/app-b1jkE5Vo.css"])))=>i.map(i=>d[i]);
2
2
  var __defProp = Object.defineProperty;
3
3
  var __typeError = (msg) => {
4
4
  throw TypeError(msg);
@@ -11,7 +11,7 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
11
11
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
12
12
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
13
13
  var _tags, _levelString, _errorHandler, _ConsoleLogger_instances, levelValue_get, _getDocumentModelModule, _drives, _ReadModeService_instances, parseGraphQLErrors_fn, fetchDrive_fn, _a, _ServiceWorkerManager_instances, handleServiceWorkerMessage_fn, handleServiceWorker_fn;
14
- import { _ as __vitePreload } from "./main.v9eAGxZO.js";
14
+ import { _ as __vitePreload } from "./main.BeBass2H.js";
15
15
  import { jsx, jsxs } from "react/jsx-runtime";
16
16
  import { useState, useEffect, Suspense, lazy } from "react";
17
17
  function _mergeNamespaces(n, m) {
@@ -7534,21 +7534,186 @@ function UpdateStateExampleInputSchema() {
7534
7534
  newExample: z.string()
7535
7535
  });
7536
7536
  }
7537
+ var dist = {};
7538
+ var hasRequiredDist;
7539
+ function requireDist() {
7540
+ if (hasRequiredDist) return dist;
7541
+ hasRequiredDist = 1;
7542
+ (function(exports) {
7543
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
7544
+ function getDefaultExportFromCjs2(x) {
7545
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
7546
+ }
7547
+ var browser = { exports: {} };
7548
+ var process2 = browser.exports = {};
7549
+ var cachedSetTimeout;
7550
+ var cachedClearTimeout;
7551
+ function defaultSetTimout() {
7552
+ throw new Error("setTimeout has not been defined");
7553
+ }
7554
+ function defaultClearTimeout() {
7555
+ throw new Error("clearTimeout has not been defined");
7556
+ }
7557
+ (function() {
7558
+ try {
7559
+ if (typeof setTimeout === "function") {
7560
+ cachedSetTimeout = setTimeout;
7561
+ } else {
7562
+ cachedSetTimeout = defaultSetTimout;
7563
+ }
7564
+ } catch (e) {
7565
+ cachedSetTimeout = defaultSetTimout;
7566
+ }
7567
+ try {
7568
+ if (typeof clearTimeout === "function") {
7569
+ cachedClearTimeout = clearTimeout;
7570
+ } else {
7571
+ cachedClearTimeout = defaultClearTimeout;
7572
+ }
7573
+ } catch (e) {
7574
+ cachedClearTimeout = defaultClearTimeout;
7575
+ }
7576
+ })();
7577
+ function runTimeout(fun) {
7578
+ if (cachedSetTimeout === setTimeout) {
7579
+ return setTimeout(fun, 0);
7580
+ }
7581
+ if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
7582
+ cachedSetTimeout = setTimeout;
7583
+ return setTimeout(fun, 0);
7584
+ }
7585
+ try {
7586
+ return cachedSetTimeout(fun, 0);
7587
+ } catch (e) {
7588
+ try {
7589
+ return cachedSetTimeout.call(null, fun, 0);
7590
+ } catch (e2) {
7591
+ return cachedSetTimeout.call(this, fun, 0);
7592
+ }
7593
+ }
7594
+ }
7595
+ function runClearTimeout(marker) {
7596
+ if (cachedClearTimeout === clearTimeout) {
7597
+ return clearTimeout(marker);
7598
+ }
7599
+ if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
7600
+ cachedClearTimeout = clearTimeout;
7601
+ return clearTimeout(marker);
7602
+ }
7603
+ try {
7604
+ return cachedClearTimeout(marker);
7605
+ } catch (e) {
7606
+ try {
7607
+ return cachedClearTimeout.call(null, marker);
7608
+ } catch (e2) {
7609
+ return cachedClearTimeout.call(this, marker);
7610
+ }
7611
+ }
7612
+ }
7613
+ var queue = [];
7614
+ var draining = false;
7615
+ var currentQueue;
7616
+ var queueIndex = -1;
7617
+ function cleanUpNextTick() {
7618
+ if (!draining || !currentQueue) {
7619
+ return;
7620
+ }
7621
+ draining = false;
7622
+ if (currentQueue.length) {
7623
+ queue = currentQueue.concat(queue);
7624
+ } else {
7625
+ queueIndex = -1;
7626
+ }
7627
+ if (queue.length) {
7628
+ drainQueue();
7629
+ }
7630
+ }
7631
+ function drainQueue() {
7632
+ if (draining) {
7633
+ return;
7634
+ }
7635
+ var timeout = runTimeout(cleanUpNextTick);
7636
+ draining = true;
7637
+ var len = queue.length;
7638
+ while (len) {
7639
+ currentQueue = queue;
7640
+ queue = [];
7641
+ while (++queueIndex < len) {
7642
+ if (currentQueue) {
7643
+ currentQueue[queueIndex].run();
7644
+ }
7645
+ }
7646
+ queueIndex = -1;
7647
+ len = queue.length;
7648
+ }
7649
+ currentQueue = null;
7650
+ draining = false;
7651
+ runClearTimeout(timeout);
7652
+ }
7653
+ process2.nextTick = function(fun) {
7654
+ var args = new Array(arguments.length - 1);
7655
+ if (arguments.length > 1) {
7656
+ for (var i = 1; i < arguments.length; i++) {
7657
+ args[i - 1] = arguments[i];
7658
+ }
7659
+ }
7660
+ queue.push(new Item(fun, args));
7661
+ if (queue.length === 1 && !draining) {
7662
+ runTimeout(drainQueue);
7663
+ }
7664
+ };
7665
+ function Item(fun, array) {
7666
+ this.fun = fun;
7667
+ this.array = array;
7668
+ }
7669
+ Item.prototype.run = function() {
7670
+ this.fun.apply(null, this.array);
7671
+ };
7672
+ process2.title = "browser";
7673
+ process2.browser = true;
7674
+ process2.env = {};
7675
+ process2.argv = [];
7676
+ process2.version = "";
7677
+ process2.versions = {};
7678
+ function noop2() {
7679
+ }
7680
+ process2.on = noop2;
7681
+ process2.addListener = noop2;
7682
+ process2.once = noop2;
7683
+ process2.off = noop2;
7684
+ process2.removeListener = noop2;
7685
+ process2.removeAllListeners = noop2;
7686
+ process2.emit = noop2;
7687
+ process2.prependListener = noop2;
7688
+ process2.prependOnceListener = noop2;
7689
+ process2.listeners = function(name2) {
7690
+ return [];
7691
+ };
7692
+ process2.binding = function(name2) {
7693
+ throw new Error("process.binding is not supported");
7694
+ };
7695
+ process2.cwd = function() {
7696
+ return "/";
7697
+ };
7698
+ process2.chdir = function(dir) {
7699
+ throw new Error("process.chdir is not supported");
7700
+ };
7701
+ process2.umask = function() {
7702
+ return 0;
7703
+ };
7704
+ var browserExports = browser.exports;
7705
+ const process$1 = /* @__PURE__ */ getDefaultExportFromCjs2(browserExports);
7706
+ exports.default = process$1;
7707
+ exports.process = process$1;
7708
+ })(dist);
7709
+ return dist;
7710
+ }
7711
+ var distExports = requireDist();
7712
+ const process = /* @__PURE__ */ getDefaultExportFromCjs(distExports);
7537
7713
  function commonjsRequire(path) {
7538
7714
  throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
7539
7715
  }
7540
7716
  var jszip_min = { exports: {} };
7541
- /*!
7542
-
7543
- JSZip v3.10.1 - A JavaScript class for generating and reading zip files
7544
- <http://stuartk.com/jszip>
7545
-
7546
- (c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
7547
- Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.
7548
-
7549
- JSZip uses the library pako released under the MIT license :
7550
- https://github.com/nodeca/pako/blob/main/LICENSE
7551
- */
7552
7717
  var hasRequiredJszip_min;
7553
7718
  function requireJszip_min() {
7554
7719
  if (hasRequiredJszip_min) return jszip_min.exports;
@@ -11495,7 +11660,7 @@ _errorHandler = new WeakMap();
11495
11660
  _ConsoleLogger_instances = new WeakSet();
11496
11661
  levelValue_get = function() {
11497
11662
  if (__privateGet(this, _levelString) === "env") {
11498
- const envLevel = typeof process !== "undefined" ? define_process_env_default.LOG_LEVEL : void 0;
11663
+ const envLevel = typeof process !== "undefined" && "env" in process ? define_process_env_default.LOG_LEVEL : void 0;
11499
11664
  if (!envLevel) {
11500
11665
  return LEVELS.debug;
11501
11666
  }
@@ -11547,11 +11712,18 @@ class ConflictOperationError extends OperationError {
11547
11712
  super("CONFLICT", newOperation, `Conflicting operation on index ${newOperation.index}`, { existingOperation, newOperation });
11548
11713
  }
11549
11714
  }
11550
- class DriveAlreadyExistsError extends Error {
11551
- constructor(driveId) {
11552
- super(`Drive already exists. ID: ${driveId}`);
11553
- __publicField(this, "driveId");
11554
- this.driveId = driveId;
11715
+ class DocumentAlreadyExistsError extends Error {
11716
+ constructor(documentId) {
11717
+ super(`Document with id ${documentId} uses id or slug that already exists`);
11718
+ __publicField(this, "documentId");
11719
+ this.documentId = documentId;
11720
+ }
11721
+ }
11722
+ class DocumentNotFoundError extends Error {
11723
+ constructor(documentId) {
11724
+ super(`Document with id ${documentId} not found`);
11725
+ __publicField(this, "documentId");
11726
+ this.documentId = documentId;
11555
11727
  }
11556
11728
  }
11557
11729
  class SynchronizationUnitNotFoundError extends Error {
@@ -23369,17 +23541,13 @@ class BaseDocumentDriveServer {
23369
23541
  if (!id) {
23370
23542
  throw new Error("Invalid Drive Id");
23371
23543
  }
23372
- const drives = await this.legacyStorage.getDrives();
23373
- if (drives.includes(id)) {
23374
- throw new DriveAlreadyExistsError(id);
23375
- }
23376
23544
  const document = createDocument({
23377
23545
  state: input
23378
23546
  });
23379
23547
  document.meta = {
23380
23548
  preferredEditor
23381
23549
  };
23382
- await this.legacyStorage.createDrive(id, document);
23550
+ await this.documentStorage.create(id, document);
23383
23551
  if (input.global.slug) {
23384
23552
  await this.cache.deleteDriveBySlug(input.global.slug);
23385
23553
  }
@@ -23422,8 +23590,16 @@ class BaseDocumentDriveServer {
23422
23590
  }
23423
23591
  });
23424
23592
  }
23425
- getDrives() {
23426
- return this.legacyStorage.getDrives();
23593
+ // TODO: paginate
23594
+ async getDrives() {
23595
+ const drives = [];
23596
+ let cursor;
23597
+ do {
23598
+ const { documents, nextCursor } = await this.documentStorage.findByType("powerhouse/document-drive", 100, cursor);
23599
+ drives.push(...documents);
23600
+ cursor = nextCursor;
23601
+ } while (cursor);
23602
+ return drives;
23427
23603
  }
23428
23604
  async getDrive(driveId, options) {
23429
23605
  let document;
@@ -24190,33 +24366,73 @@ class MemoryStorage {
24190
24366
  exists(documentId) {
24191
24367
  return Promise.resolve(!!this.documents[documentId]);
24192
24368
  }
24193
- // TODO: this should throw an error if the document already exists.
24194
24369
  create(documentId, document) {
24195
24370
  var _a2;
24371
+ if (this.documents[documentId]) {
24372
+ throw new DocumentAlreadyExistsError(documentId);
24373
+ }
24374
+ const slug = ((_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug) ?? documentId;
24375
+ if (slug && this.slugToDocumentId[slug]) {
24376
+ throw new DocumentAlreadyExistsError(documentId);
24377
+ }
24196
24378
  this.documents[documentId] = document;
24197
- const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
24198
24379
  if (slug) {
24199
24380
  if (this.slugToDocumentId[slug]) {
24200
- throw new Error(`Document with slug ${slug} already exists`);
24381
+ throw new DocumentAlreadyExistsError(documentId);
24201
24382
  }
24202
24383
  this.slugToDocumentId[slug] = documentId;
24203
24384
  }
24385
+ if (document.documentType === "powerhouse/document-drive") {
24386
+ this.updateDriveManifest(documentId, { documentIds: /* @__PURE__ */ new Set() });
24387
+ }
24204
24388
  return Promise.resolve();
24205
24389
  }
24206
24390
  get(documentId) {
24207
24391
  const document = this.documents[documentId];
24208
24392
  if (!document) {
24209
- throw new Error(`Document with id ${documentId} not found`);
24393
+ return Promise.reject(new DocumentNotFoundError(documentId));
24210
24394
  }
24211
24395
  return Promise.resolve(document);
24212
24396
  }
24213
24397
  getBySlug(slug) {
24214
24398
  const documentId = this.slugToDocumentId[slug];
24215
24399
  if (!documentId) {
24216
- throw new Error(`Document with slug ${slug} not found`);
24400
+ return Promise.reject(new DocumentNotFoundError(slug));
24217
24401
  }
24218
24402
  return this.get(documentId);
24219
24403
  }
24404
+ async findByType(documentModelType, limit = 100, cursor) {
24405
+ const documentsAndIds = Object.entries(this.documents).filter(([_, doc]) => doc.documentType === documentModelType).map(([id, doc]) => ({
24406
+ id,
24407
+ document: doc
24408
+ }));
24409
+ documentsAndIds.sort((a, b) => {
24410
+ const aDate = new Date(a.document.created);
24411
+ const bDate = new Date(b.document.created);
24412
+ if (aDate.getTime() === bDate.getTime()) {
24413
+ const aId = a.id;
24414
+ const bId = b.id;
24415
+ return aId.localeCompare(bId);
24416
+ }
24417
+ return aDate.getTime() - bDate.getTime();
24418
+ });
24419
+ let startIndex = 0;
24420
+ if (cursor) {
24421
+ const index = documentsAndIds.findIndex(({ id }) => id === cursor);
24422
+ if (index !== -1) {
24423
+ startIndex = index;
24424
+ }
24425
+ }
24426
+ const endIndex = Math.min(startIndex + limit, documentsAndIds.length);
24427
+ let nextCursor;
24428
+ if (endIndex < documentsAndIds.length) {
24429
+ nextCursor = documentsAndIds[endIndex].id;
24430
+ }
24431
+ return {
24432
+ documents: documentsAndIds.slice(startIndex, endIndex).map(({ id }) => id),
24433
+ nextCursor
24434
+ };
24435
+ }
24220
24436
  async delete(documentId) {
24221
24437
  var _a2;
24222
24438
  const document = this.documents[documentId];
@@ -24226,12 +24442,17 @@ class MemoryStorage {
24226
24442
  delete this.slugToDocumentId[slug];
24227
24443
  }
24228
24444
  }
24229
- const drives = await this.getDrives();
24230
- for (const driveId of drives) {
24231
- if (driveId === documentId)
24232
- continue;
24233
- await this.removeChild(driveId, documentId);
24234
- }
24445
+ let cursor;
24446
+ do {
24447
+ const { documents, nextCursor } = await this.findByType("powerhouse/document-drive", 100, cursor);
24448
+ for (const driveId of documents) {
24449
+ if (driveId === documentId) {
24450
+ continue;
24451
+ }
24452
+ await this.removeChild(driveId, documentId);
24453
+ }
24454
+ cursor = nextCursor;
24455
+ } while (cursor);
24235
24456
  delete this.driveManifests[documentId];
24236
24457
  if (this.documents[documentId]) {
24237
24458
  delete this.documents[documentId];
@@ -24241,23 +24462,24 @@ class MemoryStorage {
24241
24462
  }
24242
24463
  async addChild(parentId, childId) {
24243
24464
  if (parentId === childId) {
24244
- throw new Error("Cannot associate a document with itself");
24465
+ return Promise.reject(new Error("Cannot associate a document with itself"));
24245
24466
  }
24246
24467
  const children = await this.getChildren(childId);
24247
24468
  if (children.includes(parentId)) {
24248
- throw new Error("Cannot associate a document with its child");
24469
+ return Promise.reject(new Error("Cannot associate a document with its child"));
24249
24470
  }
24250
24471
  const manifest = this.getManifest(parentId);
24251
24472
  manifest.documentIds.add(childId);
24252
24473
  this.updateDriveManifest(parentId, manifest);
24474
+ return Promise.resolve();
24253
24475
  }
24254
24476
  async removeChild(parentId, childId) {
24255
24477
  const manifest = this.getManifest(parentId);
24256
24478
  if (manifest.documentIds.delete(childId)) {
24257
24479
  this.updateDriveManifest(parentId, manifest);
24258
- return true;
24480
+ return Promise.resolve(true);
24259
24481
  }
24260
- return false;
24482
+ return Promise.resolve(false);
24261
24483
  }
24262
24484
  async getChildren(parentId) {
24263
24485
  const manifest = this.getManifest(parentId);
@@ -24274,7 +24496,7 @@ class MemoryStorage {
24274
24496
  async addDocumentOperations(drive, id, operations, header) {
24275
24497
  const document = await this.get(id);
24276
24498
  if (!document) {
24277
- throw new Error(`Document with id ${id} not found`);
24499
+ return Promise.reject(new DocumentNotFoundError(id));
24278
24500
  }
24279
24501
  const mergedOperations = mergeOperations(document.operations, operations);
24280
24502
  this.documents[id] = {
@@ -24283,13 +24505,6 @@ class MemoryStorage {
24283
24505
  operations: mergedOperations
24284
24506
  };
24285
24507
  }
24286
- async getDrives() {
24287
- return Object.keys(this.driveManifests);
24288
- }
24289
- async createDrive(id, drive) {
24290
- await this.create(id, drive);
24291
- this.updateDriveManifest(id, { documentIds: /* @__PURE__ */ new Set() });
24292
- }
24293
24508
  async addDriveOperations(id, operations, header) {
24294
24509
  const drive = await this.get(id);
24295
24510
  const mergedOperations = mergeOperations(drive.operations, operations);
@@ -24301,27 +24516,31 @@ class MemoryStorage {
24301
24516
  }
24302
24517
  async deleteDrive(id) {
24303
24518
  const manifest = this.getManifest(id);
24304
- const drives = await this.getDrives();
24305
- await Promise.all([...manifest.documentIds].map((docId) => {
24306
- var _a2;
24307
- for (const driveId of drives) {
24308
- if (driveId === id) {
24309
- continue;
24310
- }
24311
- const manifest2 = this.getManifest(driveId);
24312
- if (manifest2.documentIds.has(docId)) {
24313
- return;
24519
+ let cursor;
24520
+ do {
24521
+ const { documents: drives, nextCursor } = await this.findByType("powerhouse/document-drive", 100, cursor);
24522
+ await Promise.all([...manifest.documentIds].map((docId) => {
24523
+ var _a2;
24524
+ for (const driveId of drives) {
24525
+ if (driveId === id) {
24526
+ continue;
24527
+ }
24528
+ const manifest2 = this.getManifest(driveId);
24529
+ if (manifest2.documentIds.has(docId)) {
24530
+ return;
24531
+ }
24314
24532
  }
24315
- }
24316
- const document = this.documents[docId];
24317
- if (document) {
24318
- const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
24319
- if (slug && this.slugToDocumentId[slug] === docId) {
24320
- delete this.slugToDocumentId[slug];
24533
+ const document = this.documents[docId];
24534
+ if (document) {
24535
+ const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
24536
+ if (slug && this.slugToDocumentId[slug] === docId) {
24537
+ delete this.slugToDocumentId[slug];
24538
+ }
24321
24539
  }
24322
- }
24323
- delete this.documents[docId];
24324
- }));
24540
+ delete this.documents[docId];
24541
+ }));
24542
+ cursor = nextCursor;
24543
+ } while (cursor);
24325
24544
  delete this.driveManifests[id];
24326
24545
  delete this.documents[id];
24327
24546
  }
@@ -25527,6 +25746,9 @@ function Syncing(props) {
25527
25746
  function Tabler(props) {
25528
25747
  return jsxs("svg", { ...props, width: "18", height: "18", viewBox: "0 0 18 18", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("path", { d: "M4.5 9V7.5C4.5 6.30653 4.97411 5.16193 5.81802 4.31802C6.66193 3.47411 7.80653 3 9 3C10.1935 3 11.3381 3.47411 12.182 4.31802C13.0259 5.16193 13.5 6.30653 13.5 7.5V9M3 13.5C3 13.8978 3.15804 14.2794 3.43934 14.5607C3.72064 14.842 4.10218 15 4.5 15C4.89782 15 5.27936 14.842 5.56066 14.5607C5.84196 14.2794 6 13.8978 6 13.5C6 13.1022 5.84196 12.7206 5.56066 12.4393C5.27936 12.158 4.89782 12 4.5 12C4.10218 12 3.72064 12.158 3.43934 12.4393C3.15804 12.7206 3 13.1022 3 13.5ZM12 13.5C12 13.8978 12.158 14.2794 12.4393 14.5607C12.7206 14.842 13.1022 15 13.5 15C13.8978 15 14.2794 14.842 14.5607 14.5607C14.842 14.2794 15 13.8978 15 13.5C15 13.1022 14.842 12.7206 14.5607 12.4393C14.2794 12.158 13.8978 12 13.5 12C13.1022 12 12.7206 12.158 12.4393 12.4393C12.158 12.7206 12 13.1022 12 13.5Z", stroke: "currentcolor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M11.25 6.75L13.5 9L15.75 6.75", stroke: "currentcolor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })] });
25529
25748
  }
25749
+ function TimelineCaret(props) {
25750
+ return jsx("svg", { ...props, width: "10", height: "7", viewBox: "0 0 10 7", fill: "currentcolor", children: jsx("path", { d: "M0.539174 0.830403L0.539396 0.830693L4.81717 6.41675L0.539174 0.830403ZM0.539174 0.830403C0.492941 0.770121 0.486776 0.69618 0.524599 0.622069C0.562768 0.547277 0.632849 0.5 0.721373 0.5L9.27711 0.5C9.36895 0.5 9.44336 0.552912 9.47789 0.620069C9.51177 0.686686 9.50789 0.767089 9.45938 0.830307L9.45889 0.83095M0.539174 0.830403L9.45889 0.83095M9.45889 0.83095C9.05222 1.36269 7.09357 3.91999 5.94678 5.41729C5.588 5.88573 5.30868 6.25042 5.18122 6.41687M9.45889 0.83095L5.18122 6.41687M5.18122 6.41687C5.1428 6.46691 5.07824 6.5 4.99924 6.5M5.18122 6.41687L4.99924 6.5M4.99924 6.5C4.92023 6.5 4.85567 6.46691 4.81726 6.41687L4.99924 6.5Z", fill: "currentcolor", stroke: "currentcolor" }) });
25751
+ }
25530
25752
  function Timeline(props) {
25531
25753
  return jsxs("svg", { ...props, width: "16", height: "16", viewBox: "0 0 16 16", fill: "currentcolor", children: [jsx("rect", { width: "16", height: "16", fill: "url(#pattern0_1256_1508)" }), jsxs("defs", { children: [jsx("pattern", { id: "pattern0_1256_1508", patternContentUnits: "objectBoundingBox", width: "1", height: "1", children: jsx("use", { href: "#image0_1256_1508", transform: "scale(0.00195312)" }) }), jsx("image", { id: "image0_1256_1508", width: "512", height: "512", preserveAspectRatio: "none", href: "data:image/png;base64,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" })] })] });
25532
25754
  }
@@ -25667,6 +25889,7 @@ const iconComponents = {
25667
25889
  Synced,
25668
25890
  Syncing,
25669
25891
  Tabler,
25892
+ TimelineCaret,
25670
25893
  Timeline,
25671
25894
  TrashFill,
25672
25895
  Trash,
@@ -25729,7 +25952,12 @@ const ADD_TRIGGER = "ADD_TRIGGER";
25729
25952
  const ADD_INVALID_TRIGGER = "ADD_INVALID_TRIGGER";
25730
25953
  const defaultDriveOptions = [NEW_FOLDER, RENAME, SETTINGS];
25731
25954
  const defaultFileOptions = [RENAME, DELETE, DUPLICATE];
25732
- const defaultFolderOptions = [RENAME, DELETE, DUPLICATE];
25955
+ const defaultFolderOptions = [
25956
+ NEW_FOLDER,
25957
+ RENAME,
25958
+ DELETE,
25959
+ DUPLICATE
25960
+ ];
25733
25961
  const debugNodeOptions = [
25734
25962
  ADD_TRIGGER,
25735
25963
  REMOVE_TRIGGER,
@@ -25789,10 +26017,6 @@ const normalNodeOptionsMap = {
25789
26017
  label: "Duplicate",
25790
26018
  icon: jsx(Icon, { name: "FilesEarmark" })
25791
26019
  },
25792
- [NEW_FOLDER]: {
25793
- label: "New Folder",
25794
- icon: jsx(Icon, { name: "FolderPlus" })
25795
- },
25796
26020
  [RENAME]: {
25797
26021
  label: "Rename",
25798
26022
  icon: jsx(Icon, { name: "Pencil" })
@@ -25813,7 +26037,7 @@ const nodeOptionsMap = {
25813
26037
  };
25814
26038
  const name = "@powerhousedao/connect";
25815
26039
  const productName = "Powerhouse-Connect";
25816
- const version$1 = "1.0.17-staging.0";
26040
+ const version$1 = "1.0.18-dev.0";
25817
26041
  const description = "Powerhouse Connect";
25818
26042
  const main = "./dist/index.html";
25819
26043
  const type = "module";
@@ -25825,7 +26049,7 @@ const repository = { "type": "git", "url": "git+https://github.com/powerhouse-in
25825
26049
  const bugs = { "url": "https://github.com/powerhouse-inc/document-model-electron/issues" };
25826
26050
  const homepage = "https://github.com/powerhouse-inc/document-model-electron#readme";
25827
26051
  const scripts = { "build:tsc": "tsc --build", "start": "electron-forge start", "package": "electron-forge package", "make": "PH_CONNECT_BASE_HREF=./ electron-forge make", "make:mac": "PH_CONNECT_BASE_HREF=./ electron-forge make -p darwin", "make:linux": "PH_CONNECT_BASE_HREF=./ electron-forge make -p linux", "make:windows": "PH_CONNECT_BASE_HREF=./ electron-forge make -p win32", "publish:electron": "electron-forge publish", "prepublishOnly": "npm run build", "lint": "eslint .", "lint:fix": "eslint --fix .", "lint:nx": "eslint --quiet --fix .", "format": 'prettier --write "**/*.+(js|ts|jsx|tsx|json)"', "dev": "vite -c vite.renderer.config.mts", "dev:nocache": "rm -rf node_modules/.vite && rm -rf node_modules/.cache && npm run dev", "prebuild": "tsc --build --noEmit", "build": "NODE_OPTIONS=--max-old-space-size=6144 vite build -c vite.renderer.config.mts", "preview:web": "vite preview -c vite.renderer.config.mts", "e2e": "playwright test", "cy:open": "cypress open", "build:service-worker": "tsc --build ./tsconfig.sw.json", "clean": "rimraf dist", "clean:node_modules": "rimraf node_modules" };
25828
- const devDependencies = { "@electron-forge/cli": "^6.1.1", "@electron-forge/maker-deb": "^6.1.1", "@electron-forge/maker-rpm": "^6.1.1", "@electron-forge/maker-squirrel": "^6.1.1", "@electron-forge/maker-zip": "^6.1.1", "@electron-forge/plugin-vite": "^6.1.1", "@electron-forge/publisher-electron-release-server": "^6.2.1", "@electron-forge/publisher-github": "^7.2.0", "@electron-forge/shared-types": "^7.7.0", "@playwright/test": "^1.41.2", "@powerhousedao/builder-tools": "workspace:*", "@powerhousedao/common": "workspace:*", "@powerhousedao/config": "workspace:*", "@powerhousedao/design-system": "workspace:*", "@powerhousedao/reactor-browser": "workspace:*", "@powerhousedao/scalars": "workspace:*", "@rollup/plugin-node-resolve": "^15.2.3", "@sentry/browser": "^9.1.0", "@sentry/react": "^7.109.0", "@sentry/vite-plugin": "^2.22.2", "@tailwindcss/vite": "^4.0.9", "@tanstack/react-virtual": "^3.8.1", "@types/node": "^22.13.10", "@types/react": "^18.2.79", "@types/react-dom": "^18.2.18", "@types/uuid": "^9.0.7", "@types/wicg-file-system-access": "^2020.9.6", "@vitejs/plugin-basic-ssl": "^1.2.0", "@vitejs/plugin-react": "^4.2.1", "asar": "^3.2.0", "did-key-creator": "^1.2.0", "document-drive": "workspace:*", "document-model": "workspace:*", "electron": "30.0.0", "electron-is-dev": "^3.0.1", "electron-playwright-helpers": "^1.7.1", "electron-squirrel-startup": "^1.0.0", "electron-store": "^8.1.0", "esbuild": "^0.24.0", "graphql": "^16.8.1", "graphql-request": "^6.1.0", "i18next": "^23.7.6", "jotai": "^2.1.0", "jotai-effect": "^1.1.6", "localforage": "^1.10.0", "lz-string": "^1.5.0", "playwright": "^1.41.2", "playwright-core": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-error-boundary": "^4.0.11", "react-hotkeys-hook": "^4.5.0", "react-i18next": "^13.5.0", "react-router-dom": "^6.11.2", "tailwind-merge": "^3.0.2", "tailwindcss": "^4.0.9", "uuid": "^9.0.1", "viem": "^2.8.13", "vite": "^6.2.2", "vite-envs": "^4.4.11", "vite-plugin-html": "^3.2.2", "vite-plugin-node-polyfills": "^0.23.0", "vite-plugin-svgr": "^4.2.0", "vite-tsconfig-paths": "^4.3.2", "xvfb-maybe": "^0.2.1" };
26052
+ const devDependencies = { "@electron-forge/cli": "^6.1.1", "@electron-forge/maker-deb": "^6.1.1", "@electron-forge/maker-rpm": "^6.1.1", "@electron-forge/maker-squirrel": "^6.1.1", "@electron-forge/maker-zip": "^6.1.1", "@electron-forge/plugin-vite": "^6.1.1", "@electron-forge/publisher-electron-release-server": "^6.2.1", "@electron-forge/publisher-github": "^7.2.0", "@electron-forge/shared-types": "^7.7.0", "@playwright/test": "^1.41.2", "@powerhousedao/builder-tools": "workspace:*", "@powerhousedao/common": "workspace:*", "@powerhousedao/config": "workspace:*", "@powerhousedao/design-system": "workspace:*", "@powerhousedao/diff-analyzer": "^0.0.0-dev.3", "@powerhousedao/reactor-browser": "workspace:*", "@powerhousedao/scalars": "workspace:*", "@rollup/plugin-node-resolve": "^15.2.3", "@sentry/browser": "^9.1.0", "@sentry/react": "^7.109.0", "@sentry/vite-plugin": "^2.22.2", "@tailwindcss/vite": "^4.0.9", "@tanstack/react-virtual": "^3.8.1", "@types/node": "^22.13.10", "@types/react": "^18.2.79", "@types/react-dom": "^18.2.18", "@types/uuid": "^9.0.7", "@types/wicg-file-system-access": "^2020.9.6", "@vitejs/plugin-basic-ssl": "^1.2.0", "@vitejs/plugin-react": "^4.2.1", "asar": "^3.2.0", "did-key-creator": "^1.2.0", "document-drive": "workspace:*", "document-model": "workspace:*", "electron": "30.0.0", "electron-is-dev": "^3.0.1", "electron-playwright-helpers": "^1.7.1", "electron-squirrel-startup": "^1.0.0", "electron-store": "^8.1.0", "esbuild": "^0.24.0", "graphql": "^16.8.1", "graphql-request": "^6.1.0", "i18next": "^23.7.6", "jotai": "^2.1.0", "jotai-effect": "^1.1.6", "localforage": "^1.10.0", "lz-string": "^1.5.0", "playwright": "^1.41.2", "playwright-core": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-error-boundary": "^4.0.11", "react-hotkeys-hook": "^4.5.0", "react-i18next": "^13.5.0", "react-router-dom": "^6.11.2", "tailwind-merge": "^3.0.2", "tailwindcss": "^4.0.9", "uuid": "^9.0.1", "viem": "^2.8.13", "vite": "^6.2.2", "vite-envs": "^4.4.11", "vite-plugin-html": "^3.2.2", "vite-plugin-node-polyfills": "^0.23.0", "vite-plugin-svgr": "^4.2.0", "vite-tsconfig-paths": "^4.3.2", "xvfb-maybe": "^0.2.1" };
25829
26053
  const optionalDependencies = { "@esbuild/linux-x64": "^0.21.4", "@rollup/rollup-linux-x64-musl": "4.14.3" };
25830
26054
  const packageJson = {
25831
26055
  name,
@@ -28618,12 +28842,20 @@ const _BrowserStorage = class _BrowserStorage {
28618
28842
  const document = await db.getItem(this.buildDocumentKey(documentId));
28619
28843
  return !!document;
28620
28844
  }
28621
- // TODO: this should throw an error if the document already exists.
28622
28845
  async create(documentId, document) {
28623
28846
  var _a2;
28624
28847
  const db = await this.db;
28625
- await db.setItem(this.buildDocumentKey(documentId), document);
28848
+ if (await this.exists(documentId)) {
28849
+ throw new DocumentAlreadyExistsError(documentId);
28850
+ }
28626
28851
  const slug = ((_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug) ?? documentId;
28852
+ if (slug) {
28853
+ const slugManifest = await this.getSlugManifest();
28854
+ if (slugManifest.slugToId[slug]) {
28855
+ throw new DocumentAlreadyExistsError(documentId);
28856
+ }
28857
+ }
28858
+ await db.setItem(this.buildDocumentKey(documentId), document);
28627
28859
  if (slug) {
28628
28860
  const slugManifest = await this.getSlugManifest();
28629
28861
  if (slugManifest.slugToId[slug]) {
@@ -28632,12 +28864,15 @@ const _BrowserStorage = class _BrowserStorage {
28632
28864
  slugManifest.slugToId[slug] = documentId;
28633
28865
  await this.updateSlugManifest(slugManifest);
28634
28866
  }
28867
+ if (document.documentType === "powerhouse/document-drive") {
28868
+ this.updateDriveManifest(documentId, { documentIds: [] });
28869
+ }
28635
28870
  }
28636
28871
  async get(documentId) {
28637
28872
  const db = await this.db;
28638
28873
  const document = await db.getItem(this.buildDocumentKey(documentId));
28639
28874
  if (!document) {
28640
- throw new Error(`Document with id ${documentId} not found`);
28875
+ return Promise.reject(new DocumentNotFoundError(documentId));
28641
28876
  }
28642
28877
  return document;
28643
28878
  }
@@ -28645,10 +28880,52 @@ const _BrowserStorage = class _BrowserStorage {
28645
28880
  const slugManifest = await this.getSlugManifest();
28646
28881
  const documentId = slugManifest.slugToId[slug];
28647
28882
  if (!documentId) {
28648
- throw new Error(`Document with slug ${slug} not found`);
28883
+ return Promise.reject(new DocumentNotFoundError(slug));
28649
28884
  }
28650
28885
  return this.get(documentId);
28651
28886
  }
28887
+ async findByType(documentModelType, limit = 100, cursor) {
28888
+ const db = await this.db;
28889
+ const keys = await db.keys();
28890
+ const documentKeys = keys.filter((key) => key.startsWith(`${_BrowserStorage.DOCUMENT_KEY}${_BrowserStorage.SEP}`));
28891
+ const documentsAndIds = [];
28892
+ for (const key of documentKeys) {
28893
+ const documentId = key.slice(_BrowserStorage.DOCUMENT_KEY.length + _BrowserStorage.SEP.length);
28894
+ try {
28895
+ const document = await db.getItem(key);
28896
+ if (!document || document.documentType !== documentModelType) {
28897
+ continue;
28898
+ }
28899
+ documentsAndIds.push({ id: documentId, document });
28900
+ } catch (error) {
28901
+ continue;
28902
+ }
28903
+ }
28904
+ documentsAndIds.sort((a, b) => {
28905
+ const aDate = new Date(a.document.created);
28906
+ const bDate = new Date(b.document.created);
28907
+ if (aDate.getTime() === bDate.getTime()) {
28908
+ return a.id.localeCompare(b.id);
28909
+ }
28910
+ return aDate.getTime() - bDate.getTime();
28911
+ });
28912
+ let startIndex = 0;
28913
+ if (cursor) {
28914
+ const index = documentsAndIds.findIndex(({ id }) => id === cursor);
28915
+ if (index !== -1) {
28916
+ startIndex = index;
28917
+ }
28918
+ }
28919
+ const endIndex = Math.min(startIndex + limit, documentsAndIds.length);
28920
+ let nextCursor;
28921
+ if (endIndex < documentsAndIds.length) {
28922
+ nextCursor = documentsAndIds[endIndex].id;
28923
+ }
28924
+ return {
28925
+ documents: documentsAndIds.slice(startIndex, endIndex).map(({ id }) => id),
28926
+ nextCursor
28927
+ };
28928
+ }
28652
28929
  async delete(documentId) {
28653
28930
  var _a2;
28654
28931
  const db = await this.db;
@@ -28667,12 +28944,17 @@ const _BrowserStorage = class _BrowserStorage {
28667
28944
  }
28668
28945
  } catch (error) {
28669
28946
  }
28670
- const drives = await this.getDrives();
28671
- for (const driveId of drives) {
28672
- if (driveId === documentId)
28673
- continue;
28674
- await this.removeChild(driveId, documentId);
28675
- }
28947
+ let cursor;
28948
+ do {
28949
+ const { documents: drives, nextCursor } = await this.findByType("powerhouse/document-drive", 100, cursor);
28950
+ for (const driveId of drives) {
28951
+ if (driveId === documentId) {
28952
+ continue;
28953
+ }
28954
+ await this.removeChild(driveId, documentId);
28955
+ }
28956
+ cursor = nextCursor;
28957
+ } while (cursor);
28676
28958
  await db.removeItem(this.buildManifestKey(documentId));
28677
28959
  await db.removeItem(this.buildDocumentKey(documentId));
28678
28960
  return true;
@@ -28742,15 +29024,6 @@ const _BrowserStorage = class _BrowserStorage {
28742
29024
  operations: mergedOperations
28743
29025
  });
28744
29026
  }
28745
- async getDrives() {
28746
- const db = await this.db;
28747
- const keys = await db.keys();
28748
- return keys.filter((key) => key.startsWith(_BrowserStorage.MANIFEST_KEY)).map((key) => key.slice(_BrowserStorage.MANIFEST_KEY.length + _BrowserStorage.SEP.length));
28749
- }
28750
- async createDrive(id, drive) {
28751
- await this.create(id, drive);
28752
- await this.updateDriveManifest(id, { documentIds: [] });
28753
- }
28754
29027
  async deleteDrive(id) {
28755
29028
  const documents = await this.getChildren(id);
28756
29029
  await Promise.all(documents.map((doc) => this.delete(doc)));
@@ -28798,12 +29071,16 @@ const _BrowserStorage = class _BrowserStorage {
28798
29071
  }
28799
29072
  // migrates all stored operations from legacy signature to signatures array
28800
29073
  async migrateOperationSignatures() {
28801
- const drives = await this.getDrives();
28802
- for (const drive of drives) {
28803
- await this.migrateDrive(drive);
28804
- const documents = await this.getChildren(drive);
28805
- await Promise.all(documents.map(async (docId) => this.migrateDocument(drive, docId)));
28806
- }
29074
+ let cursor;
29075
+ do {
29076
+ const { documents: drives, nextCursor } = await this.findByType("powerhouse/document-drive", 100, cursor);
29077
+ for (const drive of drives) {
29078
+ await this.migrateDrive(drive);
29079
+ const documents = await this.getChildren(drive);
29080
+ await Promise.all(documents.map(async (docId) => this.migrateDocument(drive, docId)));
29081
+ }
29082
+ cursor = nextCursor;
29083
+ } while (cursor);
28807
29084
  }
28808
29085
  async migrateDrive(driveId) {
28809
29086
  const drive = await this.get(driveId);
@@ -31437,14 +31714,14 @@ if (window.__VITE_ENVS.MODE === "development") {
31437
31714
  } else {
31438
31715
  serviceWorkerManager.registerServiceWorker(false);
31439
31716
  }
31440
- const App = lazy(() => __vitePreload(() => import("./app-L8JlWUBJ.js").then((n) => n.aY), true ? __vite__mapDeps([0,1,2]) : void 0));
31717
+ const App = lazy(() => __vitePreload(() => import("./app-CVMWZv87.js").then((n) => n.bG), true ? __vite__mapDeps([0,1,2]) : void 0));
31441
31718
  const AppLoader = /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(App, {}) });
31442
31719
  const appLoader = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
31443
31720
  __proto__: null,
31444
31721
  default: AppLoader
31445
31722
  }, Symbol.toStringTag, { value: "Module" }));
31446
31723
  export {
31447
- getDefaultExportFromCjs as $,
31724
+ Icon as $,
31448
31725
  AddStateExampleInputSchema as A,
31449
31726
  SetModuleDescriptionInputSchema as B,
31450
31727
  SetModuleNameInputSchema as C,
@@ -31471,49 +31748,49 @@ export {
31471
31748
  baseLoadFromFile as X,
31472
31749
  baseLoadFromInput as Y,
31473
31750
  pascalCase as Z,
31474
- Icon as _,
31751
+ logger$1 as _,
31475
31752
  createReducer as a,
31476
- DELETE as a$,
31477
- LOCAL as a0,
31478
- commonjsGlobal as a1,
31479
- PUBLIC as a2,
31480
- SWITCHBOARD as a3,
31481
- locationInfoByLocation as a4,
31482
- sharingTypeOptions as a5,
31483
- objectType as a6,
31484
- recordType as a7,
31485
- stringType as a8,
31486
- capitalCase as a9,
31487
- moveNode as aA,
31488
- generateNodesCopy as aB,
31489
- copyNode as aC,
31490
- createState as aD,
31491
- setDriveName as aE,
31492
- setAvailableOffline as aF,
31493
- setSharingType as aG,
31494
- SynchronizationUnitNotFoundError as aH,
31495
- removeTrigger as aI,
31496
- generateUUID as aJ,
31497
- PullResponderTransmitter as aK,
31498
- addTrigger as aL,
31499
- ReadDriveNotFoundError as aM,
31500
- openUrl as aN,
31501
- getNodeOptions as aO,
31502
- DRIVE as aP,
31503
- FOLDER as aQ,
31504
- requestPublicDrive as aR,
31505
- serviceWorkerManager as aS,
31506
- packageJson as aT,
31507
- t as aU,
31508
- gql as aV,
31509
- request as aW,
31510
- getDimensions as aX,
31511
- READ as aY,
31512
- nodeOptionsMap as aZ,
31513
- defaultFileOptions as a_,
31514
- CLOUD as aa,
31515
- createZip as ab,
31516
- logger$1 as ac,
31753
+ getNamedType as a$,
31754
+ getDefaultExportFromCjs as a0,
31755
+ LOCAL as a1,
31756
+ commonjsGlobal as a2,
31757
+ PUBLIC as a3,
31758
+ SWITCHBOARD as a4,
31759
+ locationInfoByLocation as a5,
31760
+ sharingTypeOptions as a6,
31761
+ objectType as a7,
31762
+ recordType as a8,
31763
+ stringType as a9,
31764
+ FILE as aA,
31765
+ moveNode as aB,
31766
+ generateNodesCopy as aC,
31767
+ copyNode as aD,
31768
+ createState as aE,
31769
+ setDriveName as aF,
31770
+ setAvailableOffline as aG,
31771
+ setSharingType as aH,
31772
+ SynchronizationUnitNotFoundError as aI,
31773
+ removeTrigger as aJ,
31774
+ generateUUID as aK,
31775
+ PullResponderTransmitter as aL,
31776
+ addTrigger as aM,
31777
+ ReadDriveNotFoundError as aN,
31778
+ openUrl as aO,
31779
+ getNodeOptions as aP,
31780
+ DRIVE as aQ,
31781
+ FOLDER as aR,
31782
+ requestPublicDrive as aS,
31783
+ serviceWorkerManager as aT,
31784
+ packageJson as aU,
31785
+ t as aV,
31786
+ generateId as aW,
31787
+ gql as aX,
31788
+ request as aY,
31789
+ inspect as aZ,
31790
+ GraphQLError as a_,
31791
+ capitalCase as aa,
31792
+ CLOUD as ab,
31793
+ createZip as ac,
31517
31794
  LZString as ad,
31518
31795
  buildSignedOperation as ae,
31519
31796
  getI18n as af,
@@ -31521,99 +31798,100 @@ export {
31521
31798
  connectConfig as ah,
31522
31799
  hashDocumentStateForScope as ai,
31523
31800
  getAugmentedNamespace as aj,
31524
- setErrorHandler as ak,
31525
- driveDocumentModelModule as al,
31526
- createBrowserDocumentDriveServer as am,
31527
- hashKey as an,
31528
- childLogger as ao,
31529
- reducer as ap,
31530
- isDocumentDrive as aq,
31531
- generateAddNodeAction as ar,
31532
- isFileNode as as,
31533
- uploadDocumentOperations as at,
31534
- updateFile as au,
31535
- addFolder as av,
31536
- isFolderNode as aw,
31537
- deleteNode as ax,
31538
- updateNode as ay,
31539
- FILE as az,
31801
+ process as ak,
31802
+ setErrorHandler as al,
31803
+ driveDocumentModelModule as am,
31804
+ createBrowserDocumentDriveServer as an,
31805
+ hashKey as ao,
31806
+ childLogger as ap,
31807
+ reducer as aq,
31808
+ isDocumentDrive as ar,
31809
+ generateAddNodeAction as as,
31810
+ isFileNode as at,
31811
+ uploadDocumentOperations as au,
31812
+ updateFile as av,
31813
+ addFolder as aw,
31814
+ isFolderNode as ax,
31815
+ deleteNode as ay,
31816
+ updateNode as az,
31540
31817
  SetStateSchemaInputSchema as b,
31541
- GraphQLFloat as b$,
31542
- RENAME as b0,
31543
- WRITE as b1,
31544
- DUPLICATE as b2,
31545
- defaultFolderOptions as b3,
31546
- garbageCollect as b4,
31547
- sortOperations as b5,
31548
- UI_NODE as b6,
31549
- generateId as b7,
31550
- undo as b8,
31551
- redo as b9,
31552
- isListType as bA,
31553
- snakeCase as bB,
31554
- constantCase as bC,
31555
- isAbstractType as bD,
31556
- BREAK as bE,
31557
- GraphQLInputObjectType as bF,
31558
- GraphQLList as bG,
31559
- GraphQLEnumType as bH,
31560
- GraphQLObjectType as bI,
31561
- GraphQLInterfaceType as bJ,
31562
- SchemaMetaFieldDef as bK,
31563
- TypeMetaFieldDef as bL,
31564
- TypeNameMetaFieldDef as bM,
31565
- isCompositeType as bN,
31566
- isOutputType as bO,
31567
- isInputType as bP,
31568
- GraphQLBoolean as bQ,
31569
- assertAbstractType as bR,
31570
- doTypesOverlap as bS,
31571
- DirectiveLocation as bT,
31572
- specifiedRules as bU,
31573
- NoUnusedFragmentsRule as bV,
31574
- ExecutableDefinitionsRule as bW,
31575
- validate as bX,
31576
- validateSchema as bY,
31577
- GraphQLID as bZ,
31578
- GraphQLString as b_,
31579
- useDocumentDispatch as ba,
31580
- inspect as bb,
31581
- GraphQLError as bc,
31582
- getNamedType as bd,
31583
- invariant as be,
31584
- isInputObjectType as bf,
31585
- isScalarType as bg,
31586
- isObjectType as bh,
31587
- isInterfaceType as bi,
31588
- isUnionType as bj,
31589
- isEnumType as bk,
31590
- print as bl,
31591
- isPrintableAsBlockString as bm,
31592
- Kind as bn,
31593
- astFromValue as bo,
31594
- DEFAULT_DEPRECATION_REASON as bp,
31595
- isSpecifiedDirective as bq,
31596
- isSpecifiedScalarType as br,
31597
- isIntrospectionType as bs,
31598
- z as bt,
31599
- GraphQLScalarType as bu,
31600
- parse as bv,
31601
- visit as bw,
31602
- buildASTSchema as bx,
31603
- extendSchema as by,
31604
- getNullableType as bz,
31818
+ defaultFileOptions as b$,
31819
+ invariant as b0,
31820
+ isInputObjectType as b1,
31821
+ isScalarType as b2,
31822
+ isObjectType as b3,
31823
+ isInterfaceType as b4,
31824
+ isUnionType as b5,
31825
+ isEnumType as b6,
31826
+ print as b7,
31827
+ isPrintableAsBlockString as b8,
31828
+ Kind as b9,
31829
+ isOutputType as bA,
31830
+ isInputType as bB,
31831
+ GraphQLBoolean as bC,
31832
+ assertAbstractType as bD,
31833
+ doTypesOverlap as bE,
31834
+ DirectiveLocation as bF,
31835
+ specifiedRules as bG,
31836
+ NoUnusedFragmentsRule as bH,
31837
+ ExecutableDefinitionsRule as bI,
31838
+ validate as bJ,
31839
+ validateSchema as bK,
31840
+ GraphQLID as bL,
31841
+ GraphQLString as bM,
31842
+ GraphQLFloat as bN,
31843
+ GraphQLInt as bO,
31844
+ GraphQLDirective as bP,
31845
+ GraphQLUnionType as bQ,
31846
+ isNonNullType as bR,
31847
+ GraphQLNonNull as bS,
31848
+ isNamedType as bT,
31849
+ isLeafType as bU,
31850
+ GraphQLSchema as bV,
31851
+ buildSchema as bW,
31852
+ sentenceCase as bX,
31853
+ getDimensions as bY,
31854
+ READ as bZ,
31855
+ nodeOptionsMap as b_,
31856
+ astFromValue as ba,
31857
+ DEFAULT_DEPRECATION_REASON as bb,
31858
+ isSpecifiedDirective as bc,
31859
+ isSpecifiedScalarType as bd,
31860
+ isIntrospectionType as be,
31861
+ z as bf,
31862
+ GraphQLScalarType as bg,
31863
+ parse as bh,
31864
+ visit as bi,
31865
+ buildASTSchema as bj,
31866
+ extendSchema as bk,
31867
+ getNullableType as bl,
31868
+ isListType as bm,
31869
+ snakeCase as bn,
31870
+ constantCase as bo,
31871
+ isAbstractType as bp,
31872
+ BREAK as bq,
31873
+ GraphQLInputObjectType as br,
31874
+ GraphQLList as bs,
31875
+ GraphQLEnumType as bt,
31876
+ GraphQLObjectType as bu,
31877
+ GraphQLInterfaceType as bv,
31878
+ SchemaMetaFieldDef as bw,
31879
+ TypeMetaFieldDef as bx,
31880
+ TypeNameMetaFieldDef as by,
31881
+ isCompositeType as bz,
31605
31882
  createAction as c,
31606
- GraphQLInt as c0,
31607
- GraphQLDirective as c1,
31608
- GraphQLUnionType as c2,
31609
- isNonNullType as c3,
31610
- GraphQLNonNull as c4,
31611
- isNamedType as c5,
31612
- isLeafType as c6,
31613
- GraphQLSchema as c7,
31614
- buildSchema as c8,
31615
- sentenceCase as c9,
31616
- appLoader as ca,
31883
+ DELETE as c0,
31884
+ RENAME as c1,
31885
+ WRITE as c2,
31886
+ DUPLICATE as c3,
31887
+ defaultFolderOptions as c4,
31888
+ garbageCollect as c5,
31889
+ sortOperations as c6,
31890
+ UI_NODE as c7,
31891
+ undo as c8,
31892
+ redo as c9,
31893
+ useDocumentDispatch as ca,
31894
+ appLoader as cb,
31617
31895
  ReorderModuleOperationsInputSchema as d,
31618
31896
  DeleteOperationInputSchema as e,
31619
31897
  SetOperationReducerInputSchema as f,
@@ -31638,3 +31916,4 @@ export {
31638
31916
  ReorderModulesInputSchema as y,
31639
31917
  DeleteModuleInputSchema as z
31640
31918
  };
31919
+ //# sourceMappingURL=app-loader-CyLjWzqu.js.map