@powerhousedao/connect 1.0.17-dev.1 → 1.0.17-dev.3

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-CySbX590.js → app-BdUxze73.js} +8703 -3611
  3. package/dist/assets/app-BdUxze73.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-cqvNNM8Y.js → app-loader-BVN3aSFC.js} +487 -217
  7. package/dist/assets/app-loader-BVN3aSFC.js.map +1 -0
  8. package/dist/assets/browser-CzAjKVis.js +27234 -0
  9. package/dist/assets/browser-CzAjKVis.js.map +1 -0
  10. package/dist/assets/{ccip-Da4Q-CTl.js → ccip-CbFWJKu1.js} +4 -3
  11. package/dist/assets/ccip-CbFWJKu1.js.map +1 -0
  12. package/dist/assets/{content-Bh_hCjls.js → content-C1JKApwb.js} +1010 -372
  13. package/dist/assets/content-C1JKApwb.js.map +1 -0
  14. package/dist/assets/{index-DrP8_N4_.js → index-D1myKexe.js} +4 -3
  15. package/dist/assets/index-D1myKexe.js.map +1 -0
  16. package/dist/assets/{index-CQTP2hD2.js → index-DtwSBKZB.js} +23 -17
  17. package/dist/assets/index-DtwSBKZB.js.map +1 -0
  18. package/dist/assets/{index-5oH-QGI2.js → index-qIrGoURI.js} +4 -3
  19. package/dist/assets/index-qIrGoURI.js.map +1 -0
  20. package/dist/assets/{main.NENY9z_J.js → main.DCtGjfg0.js} +2 -1
  21. package/dist/assets/main.DCtGjfg0.js.map +1 -0
  22. package/dist/assets/reactor-analytics-BUR_Njds.js +15 -0
  23. package/dist/assets/reactor-analytics-BUR_Njds.js.map +1 -0
  24. package/dist/assets/router-LLmzUc4B.js +2178 -0
  25. package/dist/assets/router-LLmzUc4B.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 +8 -7
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-CySbX590.js","assets/main.NENY9z_J.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-BdUxze73.js","assets/main.DCtGjfg0.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.NENY9z_J.js";
14
+ import { _ as __vitePreload } from "./main.DCtGjfg0.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
  }
@@ -11549,7 +11714,7 @@ class ConflictOperationError extends OperationError {
11549
11714
  }
11550
11715
  class DocumentAlreadyExistsError extends Error {
11551
11716
  constructor(documentId) {
11552
- super(`Document with id ${documentId} already exists`);
11717
+ super(`Document with id ${documentId} uses id or slug that already exists`);
11553
11718
  __publicField(this, "documentId");
11554
11719
  this.documentId = documentId;
11555
11720
  }
@@ -23376,17 +23541,13 @@ class BaseDocumentDriveServer {
23376
23541
  if (!id) {
23377
23542
  throw new Error("Invalid Drive Id");
23378
23543
  }
23379
- const drives = await this.legacyStorage.getDrives();
23380
- if (drives.includes(id)) {
23381
- throw new DocumentAlreadyExistsError(id);
23382
- }
23383
23544
  const document = createDocument({
23384
23545
  state: input
23385
23546
  });
23386
23547
  document.meta = {
23387
23548
  preferredEditor
23388
23549
  };
23389
- await this.legacyStorage.createDrive(id, document);
23550
+ await this.documentStorage.create(id, document);
23390
23551
  if (input.global.slug) {
23391
23552
  await this.cache.deleteDriveBySlug(input.global.slug);
23392
23553
  }
@@ -23429,8 +23590,16 @@ class BaseDocumentDriveServer {
23429
23590
  }
23430
23591
  });
23431
23592
  }
23432
- getDrives() {
23433
- 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;
23434
23603
  }
23435
23604
  async getDrive(driveId, options) {
23436
23605
  let document;
@@ -24197,17 +24366,25 @@ class MemoryStorage {
24197
24366
  exists(documentId) {
24198
24367
  return Promise.resolve(!!this.documents[documentId]);
24199
24368
  }
24200
- // TODO: this should throw an error if the document already exists.
24201
24369
  create(documentId, document) {
24202
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
+ }
24203
24378
  this.documents[documentId] = document;
24204
- const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
24205
24379
  if (slug) {
24206
24380
  if (this.slugToDocumentId[slug]) {
24207
- throw new Error(`Document with slug ${slug} already exists`);
24381
+ throw new DocumentAlreadyExistsError(documentId);
24208
24382
  }
24209
24383
  this.slugToDocumentId[slug] = documentId;
24210
24384
  }
24385
+ if (document.documentType === "powerhouse/document-drive") {
24386
+ this.updateDriveManifest(documentId, { documentIds: /* @__PURE__ */ new Set() });
24387
+ }
24211
24388
  return Promise.resolve();
24212
24389
  }
24213
24390
  get(documentId) {
@@ -24224,6 +24401,38 @@ class MemoryStorage {
24224
24401
  }
24225
24402
  return this.get(documentId);
24226
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
+ }
24227
24436
  async delete(documentId) {
24228
24437
  var _a2;
24229
24438
  const document = this.documents[documentId];
@@ -24233,12 +24442,17 @@ class MemoryStorage {
24233
24442
  delete this.slugToDocumentId[slug];
24234
24443
  }
24235
24444
  }
24236
- const drives = await this.getDrives();
24237
- for (const driveId of drives) {
24238
- if (driveId === documentId)
24239
- continue;
24240
- await this.removeChild(driveId, documentId);
24241
- }
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);
24242
24456
  delete this.driveManifests[documentId];
24243
24457
  if (this.documents[documentId]) {
24244
24458
  delete this.documents[documentId];
@@ -24291,13 +24505,6 @@ class MemoryStorage {
24291
24505
  operations: mergedOperations
24292
24506
  };
24293
24507
  }
24294
- async getDrives() {
24295
- return Object.keys(this.driveManifests);
24296
- }
24297
- async createDrive(id, drive) {
24298
- await this.create(id, drive);
24299
- this.updateDriveManifest(id, { documentIds: /* @__PURE__ */ new Set() });
24300
- }
24301
24508
  async addDriveOperations(id, operations, header) {
24302
24509
  const drive = await this.get(id);
24303
24510
  const mergedOperations = mergeOperations(drive.operations, operations);
@@ -24309,27 +24516,31 @@ class MemoryStorage {
24309
24516
  }
24310
24517
  async deleteDrive(id) {
24311
24518
  const manifest = this.getManifest(id);
24312
- const drives = await this.getDrives();
24313
- await Promise.all([...manifest.documentIds].map((docId) => {
24314
- var _a2;
24315
- for (const driveId of drives) {
24316
- if (driveId === id) {
24317
- continue;
24318
- }
24319
- const manifest2 = this.getManifest(driveId);
24320
- if (manifest2.documentIds.has(docId)) {
24321
- 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
+ }
24322
24532
  }
24323
- }
24324
- const document = this.documents[docId];
24325
- if (document) {
24326
- const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
24327
- if (slug && this.slugToDocumentId[slug] === docId) {
24328
- 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
+ }
24329
24539
  }
24330
- }
24331
- delete this.documents[docId];
24332
- }));
24540
+ delete this.documents[docId];
24541
+ }));
24542
+ cursor = nextCursor;
24543
+ } while (cursor);
24333
24544
  delete this.driveManifests[id];
24334
24545
  delete this.documents[id];
24335
24546
  }
@@ -25535,6 +25746,9 @@ function Syncing(props) {
25535
25746
  function Tabler(props) {
25536
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" })] });
25537
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
+ }
25538
25752
  function Timeline(props) {
25539
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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" })] })] });
25540
25754
  }
@@ -25675,6 +25889,7 @@ const iconComponents = {
25675
25889
  Synced,
25676
25890
  Syncing,
25677
25891
  Tabler,
25892
+ TimelineCaret,
25678
25893
  Timeline,
25679
25894
  TrashFill,
25680
25895
  Trash,
@@ -25822,7 +26037,7 @@ const nodeOptionsMap = {
25822
26037
  };
25823
26038
  const name = "@powerhousedao/connect";
25824
26039
  const productName = "Powerhouse-Connect";
25825
- const version$1 = "1.0.17-dev.1";
26040
+ const version$1 = "1.0.17-dev.3";
25826
26041
  const description = "Powerhouse Connect";
25827
26042
  const main = "./dist/index.html";
25828
26043
  const type = "module";
@@ -25834,7 +26049,7 @@ const repository = { "type": "git", "url": "git+https://github.com/powerhouse-in
25834
26049
  const bugs = { "url": "https://github.com/powerhouse-inc/document-model-electron/issues" };
25835
26050
  const homepage = "https://github.com/powerhouse-inc/document-model-electron#readme";
25836
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" };
25837
- 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" };
25838
26053
  const optionalDependencies = { "@esbuild/linux-x64": "^0.21.4", "@rollup/rollup-linux-x64-musl": "4.14.3" };
25839
26054
  const packageJson = {
25840
26055
  name,
@@ -28627,12 +28842,20 @@ const _BrowserStorage = class _BrowserStorage {
28627
28842
  const document = await db.getItem(this.buildDocumentKey(documentId));
28628
28843
  return !!document;
28629
28844
  }
28630
- // TODO: this should throw an error if the document already exists.
28631
28845
  async create(documentId, document) {
28632
28846
  var _a2;
28633
28847
  const db = await this.db;
28634
- await db.setItem(this.buildDocumentKey(documentId), document);
28848
+ if (await this.exists(documentId)) {
28849
+ throw new DocumentAlreadyExistsError(documentId);
28850
+ }
28635
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);
28636
28859
  if (slug) {
28637
28860
  const slugManifest = await this.getSlugManifest();
28638
28861
  if (slugManifest.slugToId[slug]) {
@@ -28641,6 +28864,9 @@ const _BrowserStorage = class _BrowserStorage {
28641
28864
  slugManifest.slugToId[slug] = documentId;
28642
28865
  await this.updateSlugManifest(slugManifest);
28643
28866
  }
28867
+ if (document.documentType === "powerhouse/document-drive") {
28868
+ this.updateDriveManifest(documentId, { documentIds: [] });
28869
+ }
28644
28870
  }
28645
28871
  async get(documentId) {
28646
28872
  const db = await this.db;
@@ -28658,6 +28884,48 @@ const _BrowserStorage = class _BrowserStorage {
28658
28884
  }
28659
28885
  return this.get(documentId);
28660
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
+ }
28661
28929
  async delete(documentId) {
28662
28930
  var _a2;
28663
28931
  const db = await this.db;
@@ -28676,12 +28944,17 @@ const _BrowserStorage = class _BrowserStorage {
28676
28944
  }
28677
28945
  } catch (error) {
28678
28946
  }
28679
- const drives = await this.getDrives();
28680
- for (const driveId of drives) {
28681
- if (driveId === documentId)
28682
- continue;
28683
- await this.removeChild(driveId, documentId);
28684
- }
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);
28685
28958
  await db.removeItem(this.buildManifestKey(documentId));
28686
28959
  await db.removeItem(this.buildDocumentKey(documentId));
28687
28960
  return true;
@@ -28751,15 +29024,6 @@ const _BrowserStorage = class _BrowserStorage {
28751
29024
  operations: mergedOperations
28752
29025
  });
28753
29026
  }
28754
- async getDrives() {
28755
- const db = await this.db;
28756
- const keys = await db.keys();
28757
- return keys.filter((key) => key.startsWith(_BrowserStorage.MANIFEST_KEY)).map((key) => key.slice(_BrowserStorage.MANIFEST_KEY.length + _BrowserStorage.SEP.length));
28758
- }
28759
- async createDrive(id, drive) {
28760
- await this.create(id, drive);
28761
- await this.updateDriveManifest(id, { documentIds: [] });
28762
- }
28763
29027
  async deleteDrive(id) {
28764
29028
  const documents = await this.getChildren(id);
28765
29029
  await Promise.all(documents.map((doc) => this.delete(doc)));
@@ -28807,12 +29071,16 @@ const _BrowserStorage = class _BrowserStorage {
28807
29071
  }
28808
29072
  // migrates all stored operations from legacy signature to signatures array
28809
29073
  async migrateOperationSignatures() {
28810
- const drives = await this.getDrives();
28811
- for (const drive of drives) {
28812
- await this.migrateDrive(drive);
28813
- const documents = await this.getChildren(drive);
28814
- await Promise.all(documents.map(async (docId) => this.migrateDocument(drive, docId)));
28815
- }
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);
28816
29084
  }
28817
29085
  async migrateDrive(driveId) {
28818
29086
  const drive = await this.get(driveId);
@@ -31446,14 +31714,14 @@ if (window.__VITE_ENVS.MODE === "development") {
31446
31714
  } else {
31447
31715
  serviceWorkerManager.registerServiceWorker(false);
31448
31716
  }
31449
- const App = lazy(() => __vitePreload(() => import("./app-CySbX590.js").then((n) => n.aY), true ? __vite__mapDeps([0,1,2]) : void 0));
31717
+ const App = lazy(() => __vitePreload(() => import("./app-BdUxze73.js").then((n) => n.bG), true ? __vite__mapDeps([0,1,2]) : void 0));
31450
31718
  const AppLoader = /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(App, {}) });
31451
31719
  const appLoader = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
31452
31720
  __proto__: null,
31453
31721
  default: AppLoader
31454
31722
  }, Symbol.toStringTag, { value: "Module" }));
31455
31723
  export {
31456
- getDefaultExportFromCjs as $,
31724
+ Icon as $,
31457
31725
  AddStateExampleInputSchema as A,
31458
31726
  SetModuleDescriptionInputSchema as B,
31459
31727
  SetModuleNameInputSchema as C,
@@ -31480,49 +31748,49 @@ export {
31480
31748
  baseLoadFromFile as X,
31481
31749
  baseLoadFromInput as Y,
31482
31750
  pascalCase as Z,
31483
- Icon as _,
31751
+ logger$1 as _,
31484
31752
  createReducer as a,
31485
- DELETE as a$,
31486
- LOCAL as a0,
31487
- commonjsGlobal as a1,
31488
- PUBLIC as a2,
31489
- SWITCHBOARD as a3,
31490
- locationInfoByLocation as a4,
31491
- sharingTypeOptions as a5,
31492
- objectType as a6,
31493
- recordType as a7,
31494
- stringType as a8,
31495
- capitalCase as a9,
31496
- moveNode as aA,
31497
- generateNodesCopy as aB,
31498
- copyNode as aC,
31499
- createState as aD,
31500
- setDriveName as aE,
31501
- setAvailableOffline as aF,
31502
- setSharingType as aG,
31503
- SynchronizationUnitNotFoundError as aH,
31504
- removeTrigger as aI,
31505
- generateUUID as aJ,
31506
- PullResponderTransmitter as aK,
31507
- addTrigger as aL,
31508
- ReadDriveNotFoundError as aM,
31509
- openUrl as aN,
31510
- getNodeOptions as aO,
31511
- DRIVE as aP,
31512
- FOLDER as aQ,
31513
- requestPublicDrive as aR,
31514
- serviceWorkerManager as aS,
31515
- packageJson as aT,
31516
- t as aU,
31517
- gql as aV,
31518
- request as aW,
31519
- getDimensions as aX,
31520
- READ as aY,
31521
- nodeOptionsMap as aZ,
31522
- defaultFileOptions as a_,
31523
- CLOUD as aa,
31524
- createZip as ab,
31525
- 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,
31526
31794
  LZString as ad,
31527
31795
  buildSignedOperation as ae,
31528
31796
  getI18n as af,
@@ -31530,99 +31798,100 @@ export {
31530
31798
  connectConfig as ah,
31531
31799
  hashDocumentStateForScope as ai,
31532
31800
  getAugmentedNamespace as aj,
31533
- setErrorHandler as ak,
31534
- driveDocumentModelModule as al,
31535
- createBrowserDocumentDriveServer as am,
31536
- hashKey as an,
31537
- childLogger as ao,
31538
- reducer as ap,
31539
- isDocumentDrive as aq,
31540
- generateAddNodeAction as ar,
31541
- isFileNode as as,
31542
- uploadDocumentOperations as at,
31543
- updateFile as au,
31544
- addFolder as av,
31545
- isFolderNode as aw,
31546
- deleteNode as ax,
31547
- updateNode as ay,
31548
- 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,
31549
31817
  SetStateSchemaInputSchema as b,
31550
- GraphQLFloat as b$,
31551
- RENAME as b0,
31552
- WRITE as b1,
31553
- DUPLICATE as b2,
31554
- defaultFolderOptions as b3,
31555
- garbageCollect as b4,
31556
- sortOperations as b5,
31557
- UI_NODE as b6,
31558
- generateId as b7,
31559
- undo as b8,
31560
- redo as b9,
31561
- isListType as bA,
31562
- snakeCase as bB,
31563
- constantCase as bC,
31564
- isAbstractType as bD,
31565
- BREAK as bE,
31566
- GraphQLInputObjectType as bF,
31567
- GraphQLList as bG,
31568
- GraphQLEnumType as bH,
31569
- GraphQLObjectType as bI,
31570
- GraphQLInterfaceType as bJ,
31571
- SchemaMetaFieldDef as bK,
31572
- TypeMetaFieldDef as bL,
31573
- TypeNameMetaFieldDef as bM,
31574
- isCompositeType as bN,
31575
- isOutputType as bO,
31576
- isInputType as bP,
31577
- GraphQLBoolean as bQ,
31578
- assertAbstractType as bR,
31579
- doTypesOverlap as bS,
31580
- DirectiveLocation as bT,
31581
- specifiedRules as bU,
31582
- NoUnusedFragmentsRule as bV,
31583
- ExecutableDefinitionsRule as bW,
31584
- validate as bX,
31585
- validateSchema as bY,
31586
- GraphQLID as bZ,
31587
- GraphQLString as b_,
31588
- useDocumentDispatch as ba,
31589
- inspect as bb,
31590
- GraphQLError as bc,
31591
- getNamedType as bd,
31592
- invariant as be,
31593
- isInputObjectType as bf,
31594
- isScalarType as bg,
31595
- isObjectType as bh,
31596
- isInterfaceType as bi,
31597
- isUnionType as bj,
31598
- isEnumType as bk,
31599
- print as bl,
31600
- isPrintableAsBlockString as bm,
31601
- Kind as bn,
31602
- astFromValue as bo,
31603
- DEFAULT_DEPRECATION_REASON as bp,
31604
- isSpecifiedDirective as bq,
31605
- isSpecifiedScalarType as br,
31606
- isIntrospectionType as bs,
31607
- z as bt,
31608
- GraphQLScalarType as bu,
31609
- parse as bv,
31610
- visit as bw,
31611
- buildASTSchema as bx,
31612
- extendSchema as by,
31613
- 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,
31614
31882
  createAction as c,
31615
- GraphQLInt as c0,
31616
- GraphQLDirective as c1,
31617
- GraphQLUnionType as c2,
31618
- isNonNullType as c3,
31619
- GraphQLNonNull as c4,
31620
- isNamedType as c5,
31621
- isLeafType as c6,
31622
- GraphQLSchema as c7,
31623
- buildSchema as c8,
31624
- sentenceCase as c9,
31625
- 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,
31626
31895
  ReorderModuleOperationsInputSchema as d,
31627
31896
  DeleteOperationInputSchema as e,
31628
31897
  SetOperationReducerInputSchema as f,
@@ -31647,3 +31916,4 @@ export {
31647
31916
  ReorderModulesInputSchema as y,
31648
31917
  DeleteModuleInputSchema as z
31649
31918
  };
31919
+ //# sourceMappingURL=app-loader-BVN3aSFC.js.map