@powerhousedao/connect 1.0.24-dev.0 → 1.1.1

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 (37) hide show
  1. package/dist/.env +1 -1
  2. package/dist/assets/{app-B5yYl0zv.js → app-CZSKsD-w.js} +11239 -12745
  3. package/dist/assets/{app-DWlDE8AF.css → app-W_mH4m8_.css} +182 -241
  4. package/dist/assets/{app-loader-NDVZu4bS.css → app-loader-4GyeoNTc.css} +229 -239
  5. package/dist/assets/{app-loader-CmEZOj3m.js → app-loader-CyUyHxMC.js} +436 -745
  6. package/dist/assets/{ccip-KtRjx9vh.js → ccip-BPO0EeBI.js} +8 -6
  7. package/dist/assets/{content-2lJzkjLx.js → content-fzZoyU8t.js} +466 -1103
  8. package/dist/assets/{index-BVVRVlZN.js → index-C3PlmBGF.js} +3 -4
  9. package/dist/assets/{index-dSMCpjcQ.js → index-DFiZ2Eug.js} +171 -23
  10. package/dist/assets/{index-BhHOiwFw.js → index-D_CfC9G5.js} +3702 -3517
  11. package/dist/assets/{main.DA6nl4Ov.js → main.8RNzWcZO.js} +12 -3
  12. package/dist/assets/{style-CdxGKc2g.css → style-U7Kx3_hE.css} +95 -39
  13. package/dist/external-packages.js +0 -1
  14. package/dist/hmr.js +0 -1
  15. package/dist/index.html +1 -1
  16. package/dist/service-worker.js +0 -1
  17. package/dist/vite-envs.sh +1 -1
  18. package/package.json +20 -21
  19. package/dist/assets/app-B5yYl0zv.js.map +0 -1
  20. package/dist/assets/app-loader-CmEZOj3m.js.map +0 -1
  21. package/dist/assets/browser-D5LEpLBa.js +0 -27224
  22. package/dist/assets/browser-D5LEpLBa.js.map +0 -1
  23. package/dist/assets/ccip-KtRjx9vh.js.map +0 -1
  24. package/dist/assets/content-2lJzkjLx.js.map +0 -1
  25. package/dist/assets/index-BVVRVlZN.js.map +0 -1
  26. package/dist/assets/index-BhHOiwFw.js.map +0 -1
  27. package/dist/assets/index-DZiF5od7.js +0 -208
  28. package/dist/assets/index-DZiF5od7.js.map +0 -1
  29. package/dist/assets/index-dSMCpjcQ.js.map +0 -1
  30. package/dist/assets/main.DA6nl4Ov.js.map +0 -1
  31. package/dist/assets/reactor-analytics-CF_JKt8H.js +0 -42
  32. package/dist/assets/reactor-analytics-CF_JKt8H.js.map +0 -1
  33. package/dist/assets/router-Ch1WZD-6.js +0 -1585
  34. package/dist/assets/router-Ch1WZD-6.js.map +0 -1
  35. package/dist/external-packages.js.map +0 -1
  36. package/dist/hmr.js.map +0 -1
  37. package/dist/service-worker.js.map +0 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-B5yYl0zv.js","assets/main.DA6nl4Ov.js","assets/app-DWlDE8AF.css"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-CZSKsD-w.js","assets/main.8RNzWcZO.js","assets/app-W_mH4m8_.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.DA6nl4Ov.js";
14
+ import { _ as __vitePreload } from "./main.8RNzWcZO.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) {
@@ -97,51 +97,14 @@ const trimResultingState = (document) => {
97
97
  });
98
98
  return { ...document, operations: { global: global2, local } };
99
99
  };
100
- class CacheStorageManager {
101
- constructor(cache) {
102
- __publicField(this, "index", 0);
103
- __publicField(this, "cache");
104
- this.cache = cache;
105
- }
106
- createStorage() {
107
- const index = this.index;
108
- this.index += 1;
109
- function buildKey(key) {
110
- return `${index}-${key}`;
111
- }
112
- const storage = {
113
- get: (key) => {
114
- return this.cache.get(buildKey(key));
115
- },
116
- set: (key, value) => {
117
- this.cache.set(buildKey(key), value);
118
- return storage;
119
- },
120
- delete: (key) => {
121
- return this.cache.delete(buildKey(key));
122
- },
123
- clear: () => {
124
- this.cache.clear();
125
- }
126
- };
127
- return storage;
128
- }
129
- }
130
100
  class InMemoryCache {
131
- constructor(cache = /* @__PURE__ */ new Map()) {
132
- __publicField(this, "cache");
133
- __publicField(this, "cacheStorageManager");
134
- __publicField(this, "idToDocument");
135
- __publicField(this, "idToDrive");
136
- __publicField(this, "slugToDriveId");
137
- this.cache = cache;
138
- this.cacheStorageManager = new CacheStorageManager(cache);
139
- this.idToDocument = this.cacheStorageManager.createStorage();
140
- this.idToDrive = this.cacheStorageManager.createStorage();
141
- this.slugToDriveId = this.cacheStorageManager.createStorage();
101
+ constructor() {
102
+ __publicField(this, "idTodocument", /* @__PURE__ */ new Map());
103
+ __publicField(this, "idToDrive", /* @__PURE__ */ new Map());
104
+ __publicField(this, "slugToDriveId", /* @__PURE__ */ new Map());
142
105
  }
143
106
  clear() {
144
- this.idToDocument.clear();
107
+ this.idTodocument.clear();
145
108
  this.idToDrive.clear();
146
109
  this.slugToDriveId.clear();
147
110
  }
@@ -150,13 +113,13 @@ class InMemoryCache {
150
113
  /////////////////////////////////////////////////////////////////////////////
151
114
  async setDocument(documentId, document) {
152
115
  const doc = trimResultingState(document);
153
- this.idToDocument.set(documentId, doc);
116
+ this.idTodocument.set(documentId, doc);
154
117
  }
155
118
  async getDocument(documentId) {
156
- return this.idToDocument.get(documentId);
119
+ return this.idTodocument.get(documentId);
157
120
  }
158
121
  async deleteDocument(documentId) {
159
- return this.idToDocument.delete(documentId);
122
+ return this.idTodocument.delete(documentId);
160
123
  }
161
124
  async setDrive(driveId, drive) {
162
125
  const doc = trimResultingState(drive);
@@ -170,14 +133,14 @@ class InMemoryCache {
170
133
  if (!drive) {
171
134
  return false;
172
135
  }
173
- const slug = drive.slug.length > 0 ? drive.slug : driveId;
136
+ const slug = drive.state.global.slug;
174
137
  if (slug) {
175
138
  this.slugToDriveId.delete(slug);
176
139
  }
177
140
  return this.idToDrive.delete(driveId);
178
141
  }
179
142
  async setDriveBySlug(slug, drive) {
180
- const driveId = drive.id;
143
+ const driveId = drive.state.global.id;
181
144
  this.slugToDriveId.set(slug, driveId);
182
145
  this.setDrive(driveId, drive);
183
146
  }
@@ -425,8 +388,8 @@ function isBE() {
425
388
  return buf[0] === 254;
426
389
  }
427
390
  const FileSystemError = new Error("File system not available.");
428
- function generateUUID() {
429
- if (typeof crypto === "undefined" || !crypto.randomUUID) {
391
+ function generateUUID$1() {
392
+ if (!crypto.randomUUID) {
430
393
  throw new Error("generateUUID is not available in unsecure contexts.");
431
394
  }
432
395
  return crypto.randomUUID();
@@ -1930,13 +1893,14 @@ const base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z
1930
1893
  const dateRegexSource = `((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`;
1931
1894
  const dateRegex = new RegExp(`^${dateRegexSource}$`);
1932
1895
  function timeRegexSource(args) {
1933
- let regex = `([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d`;
1896
+ let secondsRegexSource = `[0-5]\\d`;
1934
1897
  if (args.precision) {
1935
- regex = `${regex}\\.\\d{${args.precision}}`;
1898
+ secondsRegexSource = `${secondsRegexSource}\\.\\d{${args.precision}}`;
1936
1899
  } else if (args.precision == null) {
1937
- regex = `${regex}(\\.\\d+)?`;
1900
+ secondsRegexSource = `${secondsRegexSource}(\\.\\d+)?`;
1938
1901
  }
1939
- return regex;
1902
+ const secondsQuantifier = args.precision ? "+" : "?";
1903
+ return `([01]\\d|2[0-3]):[0-5]\\d(:${secondsRegexSource})${secondsQuantifier}`;
1940
1904
  }
1941
1905
  function timeRegex(args) {
1942
1906
  return new RegExp(`^${timeRegexSource(args)}$`);
@@ -6814,7 +6778,7 @@ function loadStateOperation(oldDocument, newDocument) {
6814
6778
  };
6815
6779
  }
6816
6780
  function generateId(method) {
6817
- return generateUUID();
6781
+ return generateUUID$1();
6818
6782
  }
6819
6783
  function getUnixTimestamp(date) {
6820
6784
  return (new Date(date).getTime() / 1e3).toFixed(0);
@@ -6977,7 +6941,6 @@ function processSkipOperation(document, action, customReducer, skipValue, reuseO
6977
6941
  scopeState = resultingStateParser(lastRemainingOperation.resultingState);
6978
6942
  } else {
6979
6943
  const { state } = replayOperations(document.initialState, documentOperations, customReducer, void 0, void 0, void 0, void 0, {
6980
- reuseHash: true,
6981
6944
  reuseOperationResultingState,
6982
6945
  operationResultingStateParser: resultingStateParser
6983
6946
  });
@@ -7004,7 +6967,6 @@ function processUndoOperation(document, scope, customReducer, reuseOperationResu
7004
6967
  const clearedOperations = [...documentOperations[scope]];
7005
6968
  const diff = diffOperations(garbageCollect(sortedOperations), clearedOperations);
7006
6969
  const doc = replayOperations(document.initialState, documentOperations, customReducer, void 0, void 0, void 0, void 0, {
7007
- reuseHash: true,
7008
6970
  reuseOperationResultingState,
7009
6971
  operationResultingStateParser: resultingStateParser
7010
6972
  });
@@ -7154,7 +7116,6 @@ function createReducer(stateReducer2, documentReducer = baseReducer) {
7154
7116
  return reducer2;
7155
7117
  }
7156
7118
  function baseCreateExtendedState(initialState, createState2) {
7157
- const id = (initialState == null ? void 0 : initialState.id) ?? generateUUID();
7158
7119
  return {
7159
7120
  name: "",
7160
7121
  documentType: "",
@@ -7166,8 +7127,6 @@ function baseCreateExtendedState(initialState, createState2) {
7166
7127
  lastModified: (/* @__PURE__ */ new Date()).toISOString(),
7167
7128
  attachments: {},
7168
7129
  ...initialState,
7169
- id,
7170
- slug: (initialState == null ? void 0 : initialState.slug) ?? id,
7171
7130
  state: (createState2 == null ? void 0 : createState2(initialState == null ? void 0 : initialState.state)) ?? ((initialState == null ? void 0 : initialState.state) ?? {
7172
7131
  global: {},
7173
7132
  local: {}
@@ -7186,6 +7145,10 @@ function baseCreateDocument(initialState, createState2) {
7186
7145
  function hashDocumentStateForScope(document, scope = "global") {
7187
7146
  return hash(cjsModule(document.state[scope] || ""));
7188
7147
  }
7148
+ const hashKey = (date, randomLimit = 1e3) => {
7149
+ const random = Math.random() * randomLimit;
7150
+ return hash(`${(/* @__PURE__ */ new Date()).toISOString()}${random}`);
7151
+ };
7189
7152
  function getDocumentLastModified(document) {
7190
7153
  var _a2;
7191
7154
  const sortedOperations = sortOperations(Object.values(document.operations).flat());
@@ -7234,9 +7197,6 @@ function replayDocument(initialState, operations, reducer2, dispatch, header, sk
7234
7197
  operationsToReplay.push(...Object.values(operations).flat());
7235
7198
  }
7236
7199
  const document = baseCreateDocument(documentState);
7237
- if (header == null ? void 0 : header.slug) {
7238
- document.slug = header.slug;
7239
- }
7240
7200
  document.initialState = initialState;
7241
7201
  document.operations = initialOperations;
7242
7202
  let result = document;
@@ -7575,186 +7535,21 @@ function UpdateStateExampleInputSchema() {
7575
7535
  newExample: z.string()
7576
7536
  });
7577
7537
  }
7578
- var dist = {};
7579
- var hasRequiredDist;
7580
- function requireDist() {
7581
- if (hasRequiredDist) return dist;
7582
- hasRequiredDist = 1;
7583
- (function(exports) {
7584
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
7585
- function getDefaultExportFromCjs2(x) {
7586
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
7587
- }
7588
- var browser = { exports: {} };
7589
- var process2 = browser.exports = {};
7590
- var cachedSetTimeout;
7591
- var cachedClearTimeout;
7592
- function defaultSetTimout() {
7593
- throw new Error("setTimeout has not been defined");
7594
- }
7595
- function defaultClearTimeout() {
7596
- throw new Error("clearTimeout has not been defined");
7597
- }
7598
- (function() {
7599
- try {
7600
- if (typeof setTimeout === "function") {
7601
- cachedSetTimeout = setTimeout;
7602
- } else {
7603
- cachedSetTimeout = defaultSetTimout;
7604
- }
7605
- } catch (e) {
7606
- cachedSetTimeout = defaultSetTimout;
7607
- }
7608
- try {
7609
- if (typeof clearTimeout === "function") {
7610
- cachedClearTimeout = clearTimeout;
7611
- } else {
7612
- cachedClearTimeout = defaultClearTimeout;
7613
- }
7614
- } catch (e) {
7615
- cachedClearTimeout = defaultClearTimeout;
7616
- }
7617
- })();
7618
- function runTimeout(fun) {
7619
- if (cachedSetTimeout === setTimeout) {
7620
- return setTimeout(fun, 0);
7621
- }
7622
- if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
7623
- cachedSetTimeout = setTimeout;
7624
- return setTimeout(fun, 0);
7625
- }
7626
- try {
7627
- return cachedSetTimeout(fun, 0);
7628
- } catch (e) {
7629
- try {
7630
- return cachedSetTimeout.call(null, fun, 0);
7631
- } catch (e2) {
7632
- return cachedSetTimeout.call(this, fun, 0);
7633
- }
7634
- }
7635
- }
7636
- function runClearTimeout(marker) {
7637
- if (cachedClearTimeout === clearTimeout) {
7638
- return clearTimeout(marker);
7639
- }
7640
- if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
7641
- cachedClearTimeout = clearTimeout;
7642
- return clearTimeout(marker);
7643
- }
7644
- try {
7645
- return cachedClearTimeout(marker);
7646
- } catch (e) {
7647
- try {
7648
- return cachedClearTimeout.call(null, marker);
7649
- } catch (e2) {
7650
- return cachedClearTimeout.call(this, marker);
7651
- }
7652
- }
7653
- }
7654
- var queue = [];
7655
- var draining = false;
7656
- var currentQueue;
7657
- var queueIndex = -1;
7658
- function cleanUpNextTick() {
7659
- if (!draining || !currentQueue) {
7660
- return;
7661
- }
7662
- draining = false;
7663
- if (currentQueue.length) {
7664
- queue = currentQueue.concat(queue);
7665
- } else {
7666
- queueIndex = -1;
7667
- }
7668
- if (queue.length) {
7669
- drainQueue();
7670
- }
7671
- }
7672
- function drainQueue() {
7673
- if (draining) {
7674
- return;
7675
- }
7676
- var timeout = runTimeout(cleanUpNextTick);
7677
- draining = true;
7678
- var len = queue.length;
7679
- while (len) {
7680
- currentQueue = queue;
7681
- queue = [];
7682
- while (++queueIndex < len) {
7683
- if (currentQueue) {
7684
- currentQueue[queueIndex].run();
7685
- }
7686
- }
7687
- queueIndex = -1;
7688
- len = queue.length;
7689
- }
7690
- currentQueue = null;
7691
- draining = false;
7692
- runClearTimeout(timeout);
7693
- }
7694
- process2.nextTick = function(fun) {
7695
- var args = new Array(arguments.length - 1);
7696
- if (arguments.length > 1) {
7697
- for (var i = 1; i < arguments.length; i++) {
7698
- args[i - 1] = arguments[i];
7699
- }
7700
- }
7701
- queue.push(new Item(fun, args));
7702
- if (queue.length === 1 && !draining) {
7703
- runTimeout(drainQueue);
7704
- }
7705
- };
7706
- function Item(fun, array) {
7707
- this.fun = fun;
7708
- this.array = array;
7709
- }
7710
- Item.prototype.run = function() {
7711
- this.fun.apply(null, this.array);
7712
- };
7713
- process2.title = "browser";
7714
- process2.browser = true;
7715
- process2.env = {};
7716
- process2.argv = [];
7717
- process2.version = "";
7718
- process2.versions = {};
7719
- function noop2() {
7720
- }
7721
- process2.on = noop2;
7722
- process2.addListener = noop2;
7723
- process2.once = noop2;
7724
- process2.off = noop2;
7725
- process2.removeListener = noop2;
7726
- process2.removeAllListeners = noop2;
7727
- process2.emit = noop2;
7728
- process2.prependListener = noop2;
7729
- process2.prependOnceListener = noop2;
7730
- process2.listeners = function(name2) {
7731
- return [];
7732
- };
7733
- process2.binding = function(name2) {
7734
- throw new Error("process.binding is not supported");
7735
- };
7736
- process2.cwd = function() {
7737
- return "/";
7738
- };
7739
- process2.chdir = function(dir) {
7740
- throw new Error("process.chdir is not supported");
7741
- };
7742
- process2.umask = function() {
7743
- return 0;
7744
- };
7745
- var browserExports = browser.exports;
7746
- const process$1 = /* @__PURE__ */ getDefaultExportFromCjs2(browserExports);
7747
- exports.default = process$1;
7748
- exports.process = process$1;
7749
- })(dist);
7750
- return dist;
7751
- }
7752
- var distExports = requireDist();
7753
- const process = /* @__PURE__ */ getDefaultExportFromCjs(distExports);
7754
7538
  function commonjsRequire(path) {
7755
7539
  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.');
7756
7540
  }
7757
7541
  var jszip_min = { exports: {} };
7542
+ /*!
7543
+
7544
+ JSZip v3.10.1 - A JavaScript class for generating and reading zip files
7545
+ <http://stuartk.com/jszip>
7546
+
7547
+ (c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
7548
+ Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.
7549
+
7550
+ JSZip uses the library pako released under the MIT license :
7551
+ https://github.com/nodeca/pako/blob/main/LICENSE
7552
+ */
7758
7553
  var hasRequiredJszip_min;
7759
7554
  function requireJszip_min() {
7760
7555
  if (hasRequiredJszip_min) return jszip_min.exports;
@@ -10097,6 +9892,7 @@ const types = {
10097
9892
  "application/dash+xml": ["mpd"],
10098
9893
  "application/dash-patch+xml": ["mpp"],
10099
9894
  "application/davmount+xml": ["davmount"],
9895
+ "application/dicom": ["dcm"],
10100
9896
  "application/docbook+xml": ["dbk"],
10101
9897
  "application/dssc+der": ["dssc"],
10102
9898
  "application/dssc+xml": ["xdssc"],
@@ -10183,7 +9979,14 @@ const types = {
10183
9979
  "application/oebps-package+xml": ["opf"],
10184
9980
  "application/ogg": ["ogx"],
10185
9981
  "application/omdoc+xml": ["omdoc"],
10186
- "application/onenote": ["onetoc", "onetoc2", "onetmp", "onepkg"],
9982
+ "application/onenote": [
9983
+ "onetoc",
9984
+ "onetoc2",
9985
+ "onetmp",
9986
+ "onepkg",
9987
+ "one",
9988
+ "onea"
9989
+ ],
10187
9990
  "application/oxps": ["oxps"],
10188
9991
  "application/p2p-overlay+xml": ["relo"],
10189
9992
  "application/patch-ops-error+xml": ["xer"],
@@ -10279,6 +10082,7 @@ const types = {
10279
10082
  "application/yang": ["yang"],
10280
10083
  "application/yin+xml": ["yin"],
10281
10084
  "application/zip": ["zip"],
10085
+ "application/zip+dotlottie": ["lottie"],
10282
10086
  "audio/3gpp": ["*3gpp"],
10283
10087
  "audio/aac": ["adts", "aac"],
10284
10088
  "audio/adpcm": ["adp"],
@@ -10287,7 +10091,7 @@ const types = {
10287
10091
  "audio/midi": ["mid", "midi", "kar", "rmi"],
10288
10092
  "audio/mobile-xmf": ["mxmf"],
10289
10093
  "audio/mp3": ["*mp3"],
10290
- "audio/mp4": ["m4a", "mp4a"],
10094
+ "audio/mp4": ["m4a", "mp4a", "m4b"],
10291
10095
  "audio/mpeg": ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"],
10292
10096
  "audio/ogg": ["oga", "ogg", "spx", "opus"],
10293
10097
  "audio/s3m": ["s3m"],
@@ -10319,11 +10123,12 @@ const types = {
10319
10123
  "image/heif": ["heif"],
10320
10124
  "image/heif-sequence": ["heifs"],
10321
10125
  "image/hej2k": ["hej2"],
10322
- "image/hsj2": ["hsj2"],
10323
10126
  "image/ief": ["ief"],
10127
+ "image/jaii": ["jaii"],
10128
+ "image/jais": ["jais"],
10324
10129
  "image/jls": ["jls"],
10325
10130
  "image/jp2": ["jp2", "jpg2"],
10326
- "image/jpeg": ["jpeg", "jpg", "jpe"],
10131
+ "image/jpeg": ["jpg", "jpeg", "jpe"],
10327
10132
  "image/jph": ["jph"],
10328
10133
  "image/jphc": ["jhc"],
10329
10134
  "image/jpm": ["jpm", "jpgm"],
@@ -10338,6 +10143,7 @@ const types = {
10338
10143
  "image/jxss": ["jxss"],
10339
10144
  "image/ktx": ["ktx"],
10340
10145
  "image/ktx2": ["ktx2"],
10146
+ "image/pjpeg": ["jfif"],
10341
10147
  "image/png": ["png"],
10342
10148
  "image/sgi": ["sgi"],
10343
10149
  "image/svg+xml": ["svg", "svgz"],
@@ -10351,7 +10157,7 @@ const types = {
10351
10157
  "message/global-delivery-status": ["u8dsn"],
10352
10158
  "message/global-disposition-notification": ["u8mdn"],
10353
10159
  "message/global-headers": ["u8hdr"],
10354
- "message/rfc822": ["eml", "mime"],
10160
+ "message/rfc822": ["eml", "mime", "mht", "mhtml"],
10355
10161
  "model/3mf": ["3mf"],
10356
10162
  "model/gltf+json": ["gltf"],
10357
10163
  "model/gltf-binary": ["glb"],
@@ -10361,6 +10167,7 @@ const types = {
10361
10167
  "model/mtl": ["mtl"],
10362
10168
  "model/obj": ["obj"],
10363
10169
  "model/prc": ["prc"],
10170
+ "model/step": ["step", "stp", "stpnc", "p21", "210"],
10364
10171
  "model/step+xml": ["stpx"],
10365
10172
  "model/step+zip": ["stpz"],
10366
10173
  "model/step-xml+zip": ["stpxz"],
@@ -10466,8 +10273,8 @@ class Mime {
10466
10273
  getType(path) {
10467
10274
  if (typeof path !== "string")
10468
10275
  return null;
10469
- const last = path.replace(/^.*[/\\]/, "").toLowerCase();
10470
- const ext = last.replace(/^.*\./, "").toLowerCase();
10276
+ const last = path.replace(/^.*[/\\]/s, "").toLowerCase();
10277
+ const ext = last.replace(/^.*\./s, "").toLowerCase();
10471
10278
  const hasPath = last.length < path.length;
10472
10279
  const hasDot = ext.length < last.length - 1;
10473
10280
  if (!hasDot && hasPath)
@@ -10529,10 +10336,8 @@ function validateOperations(operations) {
10529
10336
  }
10530
10337
  function createZip(document) {
10531
10338
  const zip = new JSZip();
10532
- const { id, slug, name: name2, revision, documentType: documentType2, created, lastModified } = document;
10339
+ const { name: name2, revision, documentType: documentType2, created, lastModified } = document;
10533
10340
  const header = {
10534
- id,
10535
- slug,
10536
10341
  name: name2,
10537
10342
  revision,
10538
10343
  documentType: documentType2,
@@ -10948,60 +10753,40 @@ const reducer$2 = {
10948
10753
  state.triggers = state.triggers.filter((trigger) => trigger.id !== action.input.triggerId);
10949
10754
  }
10950
10755
  };
10951
- class DocumentModelNotFoundError extends Error {
10952
- constructor(id, cause) {
10953
- super(`Document model "${id}" not found`, { cause });
10954
- __publicField(this, "id");
10955
- this.id = id;
10956
- }
10756
+ const byteToHex = [];
10757
+ for (let i = 0; i < 256; ++i) {
10758
+ byteToHex.push((i + 256).toString(16).slice(1));
10957
10759
  }
10958
- class OperationError extends Error {
10959
- constructor(status, operation, message, cause) {
10960
- super(message, { cause: cause ?? operation });
10961
- __publicField(this, "status");
10962
- __publicField(this, "operation");
10963
- this.status = status;
10964
- this.operation = operation;
10965
- }
10760
+ function unsafeStringify(arr, offset = 0) {
10761
+ return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
10966
10762
  }
10967
- class ConflictOperationError extends OperationError {
10968
- constructor(existingOperation, newOperation) {
10969
- super("CONFLICT", newOperation, `Conflicting operation on index ${newOperation.index}`, { existingOperation, newOperation });
10970
- }
10971
- }
10972
- class DocumentIdValidationError extends Error {
10973
- constructor(documentId) {
10974
- super(`Invalid document id: ${documentId}`);
10975
- }
10976
- }
10977
- class DocumentSlugValidationError extends Error {
10978
- constructor(slug) {
10979
- super(`Invalid slug: ${slug}`);
10980
- }
10981
- }
10982
- class DocumentAlreadyExistsError extends Error {
10983
- constructor(documentId) {
10984
- super(`Document with id ${documentId} uses id or slug that already exists`);
10985
- __publicField(this, "documentId");
10986
- this.documentId = documentId;
10763
+ let getRandomValues;
10764
+ const rnds8 = new Uint8Array(16);
10765
+ function rng() {
10766
+ if (!getRandomValues) {
10767
+ if (typeof crypto === "undefined" || !crypto.getRandomValues) {
10768
+ throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
10769
+ }
10770
+ getRandomValues = crypto.getRandomValues.bind(crypto);
10987
10771
  }
10772
+ return getRandomValues(rnds8);
10988
10773
  }
10989
- class DocumentNotFoundError extends Error {
10990
- constructor(documentId) {
10991
- super(`Document with id ${documentId} not found`);
10992
- __publicField(this, "documentId");
10993
- this.documentId = documentId;
10774
+ const randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
10775
+ const native = { randomUUID };
10776
+ function v4(options, buf, offset) {
10777
+ var _a2;
10778
+ if (native.randomUUID && true && !options) {
10779
+ return native.randomUUID();
10994
10780
  }
10995
- }
10996
- class SynchronizationUnitNotFoundError extends Error {
10997
- constructor(message, syncUnitId) {
10998
- super(message);
10999
- __publicField(this, "syncUnitId");
11000
- this.syncUnitId = syncUnitId;
10781
+ options = options || {};
10782
+ const rnds = options.random ?? ((_a2 = options.rng) == null ? void 0 : _a2.call(options)) ?? rng();
10783
+ if (rnds.length < 16) {
10784
+ throw new Error("Random bytes length must be >= 16");
11001
10785
  }
10786
+ rnds[6] = rnds[6] & 15 | 64;
10787
+ rnds[8] = rnds[8] & 63 | 128;
10788
+ return unsafeStringify(rnds);
11002
10789
  }
11003
- const isValidDocumentId = (id) => id && id.length > 0 && /^[a-zA-Z0-9_-]+$/.test(id);
11004
- const isValidSlug = (slug) => slug && slug.length > 0 && /^[a-zA-Z0-9_-]+$/.test(slug);
11005
10790
  function isFileNode(node) {
11006
10791
  return node.kind === "file";
11007
10792
  }
@@ -11065,7 +10850,7 @@ function generateNodesCopy(src, idGenerator, nodes) {
11065
10850
  function generateSynchronizationUnitId(nodes) {
11066
10851
  let syncId = "";
11067
10852
  while (!syncId || nodes.find((node) => isFileNode(node) && node.synchronizationUnits.find((unit) => unit.syncId === syncId))) {
11068
- syncId = generateId();
10853
+ syncId = v4();
11069
10854
  }
11070
10855
  return syncId;
11071
10856
  }
@@ -11143,9 +10928,6 @@ const reducer$1 = {
11143
10928
  if (state.nodes.find((node) => node.id === action.input.id)) {
11144
10929
  throw new Error(`Node with id ${action.input.id} already exists!`);
11145
10930
  }
11146
- if (!isValidDocumentId(action.input.id)) {
11147
- throw new DocumentIdValidationError(action.input.id);
11148
- }
11149
10931
  const name2 = handleTargetNameCollisions({
11150
10932
  nodes: state.nodes,
11151
10933
  srcName: action.input.name,
@@ -11238,9 +11020,6 @@ const reducer$1 = {
11238
11020
  if (!node) {
11239
11021
  throw new Error(`Node with id ${action.input.srcId} not found`);
11240
11022
  }
11241
- if (!isValidDocumentId(action.input.targetId)) {
11242
- throw new DocumentIdValidationError(action.input.targetId);
11243
- }
11244
11023
  const duplicatedNode = state.nodes.find((node2) => node2.id === action.input.targetId);
11245
11024
  if (duplicatedNode) {
11246
11025
  throw new Error(`Node with id ${action.input.targetId} already exists`);
@@ -11252,9 +11031,8 @@ const reducer$1 = {
11252
11031
  });
11253
11032
  const newNode = {
11254
11033
  ...node,
11255
- id: action.input.targetId,
11256
- slug: action.input.targetId,
11257
11034
  name: name2,
11035
+ id: action.input.targetId,
11258
11036
  parentFolder: action.input.targetParentFolder || null
11259
11037
  };
11260
11038
  const isFile = isFileNode(newNode);
@@ -11386,9 +11164,11 @@ const fileExtension = "phdd";
11386
11164
  const documentType = "powerhouse/document-drive";
11387
11165
  const documentModelName = "DocumentDrive";
11388
11166
  const initialGlobalState = {
11167
+ id: "",
11389
11168
  name: "",
11390
11169
  nodes: [],
11391
- icon: null
11170
+ icon: null,
11171
+ slug: null
11392
11172
  };
11393
11173
  const initialLocalState = {
11394
11174
  listeners: [],
@@ -11649,7 +11429,8 @@ const driveDocumentModelModule = {
11649
11429
  actions: { ...creators, ...actions },
11650
11430
  utils: { ...documentModelUtils, ...customUtils }
11651
11431
  };
11652
- const LogLevels = {
11432
+ var define_process_env_default = {};
11433
+ const LEVELS = {
11653
11434
  verbose: 1,
11654
11435
  debug: 2,
11655
11436
  info: 3,
@@ -11657,10 +11438,6 @@ const LogLevels = {
11657
11438
  error: 5,
11658
11439
  silent: 6
11659
11440
  };
11660
- function isLogLevel(value) {
11661
- return typeof value === "string" && value in LogLevels;
11662
- }
11663
- var define_process_env_default = {};
11664
11441
  class ConsoleLogger {
11665
11442
  constructor(tags, errorHandler2) {
11666
11443
  __privateAdd(this, _ConsoleLogger_instances);
@@ -11680,10 +11457,6 @@ class ConsoleLogger {
11680
11457
  return __privateGet(this, _levelString);
11681
11458
  }
11682
11459
  set level(level) {
11683
- if (level !== "env" && !isLogLevel(level)) {
11684
- throw new Error(`Invalid log level: ${JSON.stringify(level)}.
11685
- Must be one of ${Object.keys(LogLevels).concat(["env"]).join(", ")}.`);
11686
- }
11687
11460
  __privateSet(this, _levelString, level);
11688
11461
  }
11689
11462
  get errorHandler() {
@@ -11696,31 +11469,31 @@ class ConsoleLogger {
11696
11469
  return this.debug(...data);
11697
11470
  }
11698
11471
  verbose(...data) {
11699
- if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LogLevels.verbose) {
11472
+ if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LEVELS.verbose) {
11700
11473
  return;
11701
11474
  }
11702
11475
  return this.debug(...data);
11703
11476
  }
11704
11477
  debug(...data) {
11705
- if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LogLevels.debug) {
11478
+ if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LEVELS.debug) {
11706
11479
  return;
11707
11480
  }
11708
11481
  return console.debug(...[...__privateGet(this, _tags), ...data]);
11709
11482
  }
11710
11483
  info(...data) {
11711
- if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LogLevels.info) {
11484
+ if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LEVELS.info) {
11712
11485
  return;
11713
11486
  }
11714
11487
  return console.info(...[...__privateGet(this, _tags), ...data]);
11715
11488
  }
11716
11489
  warn(...data) {
11717
- if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LogLevels.warn) {
11490
+ if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LEVELS.warn) {
11718
11491
  return;
11719
11492
  }
11720
11493
  return console.warn(...[...__privateGet(this, _tags), ...data]);
11721
11494
  }
11722
11495
  error(...data) {
11723
- if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LogLevels.error) {
11496
+ if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LEVELS.error) {
11724
11497
  return;
11725
11498
  }
11726
11499
  if (__privateGet(this, _errorHandler)) {
@@ -11735,16 +11508,16 @@ _errorHandler = new WeakMap();
11735
11508
  _ConsoleLogger_instances = new WeakSet();
11736
11509
  levelValue_get = function() {
11737
11510
  if (__privateGet(this, _levelString) === "env") {
11738
- const envLevel = typeof process !== "undefined" && "env" in process ? define_process_env_default.LOG_LEVEL : void 0;
11511
+ const envLevel = typeof process !== "undefined" ? define_process_env_default.LOG_LEVEL : void 0;
11739
11512
  if (!envLevel) {
11740
- return LogLevels.debug;
11513
+ return LEVELS.debug;
11741
11514
  }
11742
- if (!(envLevel in LogLevels)) {
11743
- return LogLevels.debug;
11515
+ if (!(envLevel in LEVELS)) {
11516
+ return LEVELS.debug;
11744
11517
  }
11745
- return LogLevels[envLevel];
11518
+ return LEVELS[envLevel];
11746
11519
  }
11747
- return LogLevels[__privateGet(this, _levelString)];
11520
+ return LEVELS[__privateGet(this, _levelString)];
11748
11521
  };
11749
11522
  const loggerInstance = new ConsoleLogger();
11750
11523
  let logLevel = "env";
@@ -11766,6 +11539,48 @@ const childLogger = (tags) => {
11766
11539
  logger2.errorHandler = errorHandler;
11767
11540
  return logger2;
11768
11541
  };
11542
+ class DocumentModelNotFoundError extends Error {
11543
+ constructor(id, cause) {
11544
+ super(`Document model "${id}" not found`, { cause });
11545
+ __publicField(this, "id");
11546
+ this.id = id;
11547
+ }
11548
+ }
11549
+ class OperationError extends Error {
11550
+ constructor(status, operation, message, cause) {
11551
+ super(message, { cause: cause ?? operation });
11552
+ __publicField(this, "status");
11553
+ __publicField(this, "operation");
11554
+ this.status = status;
11555
+ this.operation = operation;
11556
+ }
11557
+ }
11558
+ class ConflictOperationError extends OperationError {
11559
+ constructor(existingOperation, newOperation) {
11560
+ super("CONFLICT", newOperation, `Conflicting operation on index ${newOperation.index}`, { existingOperation, newOperation });
11561
+ }
11562
+ }
11563
+ class DocumentAlreadyExistsError extends Error {
11564
+ constructor(documentId) {
11565
+ super(`Document with id ${documentId} already exists`);
11566
+ __publicField(this, "documentId");
11567
+ this.documentId = documentId;
11568
+ }
11569
+ }
11570
+ class DocumentNotFoundError extends Error {
11571
+ constructor(documentId) {
11572
+ super(`Document with id ${documentId} not found`);
11573
+ __publicField(this, "documentId");
11574
+ this.documentId = documentId;
11575
+ }
11576
+ }
11577
+ class SynchronizationUnitNotFoundError extends Error {
11578
+ constructor(message, syncUnitId) {
11579
+ super(message);
11580
+ __publicField(this, "syncUnitId");
11581
+ this.syncUnitId = syncUnitId;
11582
+ }
11583
+ }
11769
11584
  var RunAsap;
11770
11585
  (function(RunAsap2) {
11771
11586
  RunAsap2.useMessageChannel = (() => {
@@ -11905,6 +11720,9 @@ function mergeOperations(currentOperations, newOperations) {
11905
11720
  return { ...acc, [curr.scope]: [...existingOperations, curr] };
11906
11721
  }, currentOperations);
11907
11722
  }
11723
+ function generateUUID() {
11724
+ return generateId();
11725
+ }
11908
11726
  function isBefore(dateA, dateB) {
11909
11727
  return new Date(dateA) < new Date(dateB);
11910
11728
  }
@@ -12005,7 +11823,7 @@ class BaseQueueManager {
12005
11823
  if (!this.delegate) {
12006
11824
  throw new Error("No server delegate defined");
12007
11825
  }
12008
- const jobId = generateId();
11826
+ const jobId = generateUUID();
12009
11827
  const queue = this.getQueue(job.driveId, job.documentId);
12010
11828
  if (await queue.isDeleted()) {
12011
11829
  throw new Error("Queue is deleted");
@@ -15111,10 +14929,7 @@ function visit(root, visitor, visitorKeys = QueryDocumentKeys) {
15111
14929
  }
15112
14930
  }
15113
14931
  } else {
15114
- node = Object.defineProperties(
15115
- {},
15116
- Object.getOwnPropertyDescriptors(node)
15117
- );
14932
+ node = { ...node };
15118
14933
  for (const [editKey, editValue] of edits) {
15119
14934
  node[editKey] = editValue;
15120
14935
  }
@@ -20454,7 +20269,7 @@ function VariablesInAllowedPositionRule(context) {
20454
20269
  },
20455
20270
  leave(operation) {
20456
20271
  const usages = context.getRecursiveVariableUsages(operation);
20457
- for (const { node, type: type2, defaultValue } of usages) {
20272
+ for (const { node, type: type2, defaultValue, parentType } of usages) {
20458
20273
  const varName = node.name.value;
20459
20274
  const varDef = varDefMap[varName];
20460
20275
  if (varDef && type2) {
@@ -20478,6 +20293,16 @@ function VariablesInAllowedPositionRule(context) {
20478
20293
  )
20479
20294
  );
20480
20295
  }
20296
+ if (isInputObjectType(parentType) && parentType.isOneOf && isNullableType(varType)) {
20297
+ context.reportError(
20298
+ new GraphQLError(
20299
+ `Variable "$${varName}" is of type "${varType}" but must be non-nullable to be used for OneOf Input Object "${parentType}".`,
20300
+ {
20301
+ nodes: [varDef, node]
20302
+ }
20303
+ )
20304
+ );
20305
+ }
20481
20306
  }
20482
20307
  }
20483
20308
  }
@@ -20661,7 +20486,8 @@ class ValidationContext extends ASTValidationContext {
20661
20486
  newUsages.push({
20662
20487
  node: variable,
20663
20488
  type: typeInfo.getInputType(),
20664
- defaultValue: typeInfo.getDefaultValue()
20489
+ defaultValue: typeInfo.getDefaultValue(),
20490
+ parentType: typeInfo.getParentInputType()
20665
20491
  });
20666
20492
  }
20667
20493
  })
@@ -22344,18 +22170,14 @@ async function fetchDocument(url, documentId, documentModelModule) {
22344
22170
  local: []
22345
22171
  },
22346
22172
  attachments: {},
22347
- initialState: {
22348
- ...utils.createExtendedState({
22349
- // TODO: getDocument should return all the initial state fields
22350
- created: result.document.created,
22351
- lastModified: result.document.created,
22352
- state: utils.createState({
22353
- global: result.document.initialState.state.global
22354
- })
22355
- }),
22356
- id: result.document.id,
22357
- slug: result.document.slug
22358
- },
22173
+ initialState: utils.createExtendedState({
22174
+ // TODO: getDocument should return all the initial state fields
22175
+ created: result.document.created,
22176
+ lastModified: result.document.created,
22177
+ state: utils.createState({
22178
+ global: result.document.initialState.state.global
22179
+ })
22180
+ }),
22359
22181
  clipboard: []
22360
22182
  } : null;
22361
22183
  return {
@@ -22410,13 +22232,7 @@ class ReadModeService {
22410
22232
  return document;
22411
22233
  }
22412
22234
  async addReadDrive(url, options) {
22413
- let id;
22414
- if (options == null ? void 0 : options.expectedDriveInfo) {
22415
- id = options.expectedDriveInfo.id;
22416
- } else {
22417
- const drive = await requestPublicDrive(url);
22418
- id = drive.id;
22419
- }
22235
+ const { id } = (options == null ? void 0 : options.expectedDriveInfo) ?? await requestPublicDrive(url);
22420
22236
  const result = await __privateMethod(this, _ReadModeService_instances, fetchDrive_fn).call(this, id, url);
22421
22237
  if (result instanceof Error) {
22422
22238
  throw result;
@@ -22439,7 +22255,7 @@ class ReadModeService {
22439
22255
  return Promise.resolve(result ? { ...result.drive, readContext: result.context } : new ReadDriveNotFoundError(id));
22440
22256
  }
22441
22257
  async getReadDriveBySlug(slug) {
22442
- const readDrive = [...__privateGet(this, _drives).values()].find(({ drive }) => drive.slug === slug);
22258
+ const readDrive = [...__privateGet(this, _drives).values()].find(({ drive }) => drive.state.global.slug === slug);
22443
22259
  return Promise.resolve(readDrive ? { ...readDrive.drive, readContext: readDrive.context } : new ReadDriveSlugNotFoundError(slug));
22444
22260
  }
22445
22261
  getReadDriveContext(id) {
@@ -22578,8 +22394,8 @@ class DefaultDrivesManager {
22578
22394
  }
22579
22395
  async preserveDrivesById(driveIdsToPreserve, drives, removeStrategy = "detach") {
22580
22396
  const getAllDrives = drives.map((driveId) => this.server.getDrive(driveId));
22581
- const drivesToRemove = (await Promise.all(getAllDrives)).filter((drive) => drive.state.local.listeners.length > 0 || drive.state.local.triggers.length > 0).filter((drive) => !driveIdsToPreserve.includes(drive.id));
22582
- const driveIds = drivesToRemove.map((drive) => drive.id);
22397
+ const drivesToRemove = (await Promise.all(getAllDrives)).filter((drive) => drive.state.local.listeners.length > 0 || drive.state.local.triggers.length > 0).filter((drive) => !driveIdsToPreserve.includes(drive.state.global.id));
22398
+ const driveIds = drivesToRemove.map((drive) => drive.state.global.id);
22583
22399
  if (removeStrategy === "detach") {
22584
22400
  await this.detachDrivesById(driveIds);
22585
22401
  } else {
@@ -22627,7 +22443,7 @@ class DefaultDrivesManager {
22627
22443
  case "remove-all": {
22628
22444
  const getDrives = driveids.map((driveId) => this.server.getDrive(driveId));
22629
22445
  const drives = await Promise.all(getDrives);
22630
- const drivesToRemove = drives.filter((drive) => drive.state.local.listeners.length > 0 || drive.state.local.triggers.length > 0).map((drive) => drive.id);
22446
+ const drivesToRemove = drives.filter((drive) => drive.state.local.listeners.length > 0 || drive.state.local.triggers.length > 0).map((drive) => drive.state.global.id);
22631
22447
  await this.removeDrivesById(drivesToRemove);
22632
22448
  break;
22633
22449
  }
@@ -22904,7 +22720,7 @@ class PullResponderTransmitter {
22904
22720
  static async executePull(driveId, trigger, onStrandUpdate, onError, onRevisions, onAcknowledge) {
22905
22721
  var _a2, _b;
22906
22722
  staticLogger().verbose(`executePull(driveId: ${driveId}), trigger:`, trigger);
22907
- staticLogger().debug(`[SYNC DEBUG] PullResponderTransmitter.executePull starting for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
22723
+ staticLogger().info(`[SYNC DEBUG] PullResponderTransmitter.executePull starting for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
22908
22724
  const { url } = trigger.data;
22909
22725
  let strands;
22910
22726
  let error;
@@ -23068,7 +22884,7 @@ class PullResponderTransmitter {
23068
22884
  };
23069
22885
  const listenerId = await PullResponderTransmitter.registerPullResponder(driveId, url, filter);
23070
22886
  const pullTrigger = {
23071
- id: generateId(),
22887
+ id: generateUUID(),
23072
22888
  type: "PullResponder",
23073
22889
  driveId,
23074
22890
  filter,
@@ -23501,7 +23317,7 @@ class BaseDocumentDriveServer {
23501
23317
  async _initializeDrive(driveId) {
23502
23318
  var _a2, _b, _c;
23503
23319
  const drive = await this.getDrive(driveId);
23504
- this.logger.verbose(`[SYNC DEBUG] Initializing drive ${driveId} with slug "${drive.slug}"`);
23320
+ this.logger.verbose(`[SYNC DEBUG] Initializing drive ${driveId} with slug "${drive.state.global.slug}"`);
23505
23321
  await this.synchronizationManager.initializeDriveSyncStatus(driveId, drive);
23506
23322
  if (this.shouldSyncRemoteDrive(drive)) {
23507
23323
  this.logger.verbose(`[SYNC DEBUG] Starting sync for remote drive ${driveId}`);
@@ -23515,7 +23331,7 @@ class BaseDocumentDriveServer {
23515
23331
  this.logger.verbose(`[SYNC DEBUG] Created SwitchboardPush transmitter with URL: ${zodListener.callInfo.data || "none"}`);
23516
23332
  await this.listenerManager.setListener(driveId, {
23517
23333
  block: zodListener.block,
23518
- driveId: drive.id,
23334
+ driveId: drive.state.global.id,
23519
23335
  filter: {
23520
23336
  branch: zodListener.filter.branch ?? [],
23521
23337
  documentId: zodListener.filter.documentId ?? [],
@@ -23577,25 +23393,25 @@ class BaseDocumentDriveServer {
23577
23393
  return [...this.documentModelModules];
23578
23394
  }
23579
23395
  async addDrive(input, preferredEditor) {
23396
+ const id = input.global.id || generateUUID();
23397
+ if (!id) {
23398
+ throw new Error("Invalid Drive Id");
23399
+ }
23400
+ const drives = await this.legacyStorage.getDrives();
23401
+ if (drives.includes(id)) {
23402
+ throw new DocumentAlreadyExistsError(id);
23403
+ }
23580
23404
  const document = createDocument({
23581
- id: input.id,
23582
- slug: input.slug,
23583
- state: {
23584
- global: {
23585
- icon: input.global.icon ?? null,
23586
- name: input.global.name
23587
- },
23588
- local: input.local
23589
- }
23405
+ state: input
23590
23406
  });
23591
23407
  document.meta = {
23592
23408
  preferredEditor
23593
23409
  };
23594
- await this.documentStorage.create(document);
23595
- if (input.slug && input.slug.length > 0) {
23596
- await this.cache.deleteDriveBySlug(input.slug);
23410
+ await this.legacyStorage.createDrive(id, document);
23411
+ if (input.global.slug) {
23412
+ await this.cache.deleteDriveBySlug(input.global.slug);
23597
23413
  }
23598
- await this._initializeDrive(document.id);
23414
+ await this._initializeDrive(id);
23599
23415
  this.eventEmitter.emit("driveAdded", document);
23600
23416
  return document;
23601
23417
  }
@@ -23607,11 +23423,11 @@ class BaseDocumentDriveServer {
23607
23423
  pullInterval
23608
23424
  });
23609
23425
  return await this.addDrive({
23610
- id,
23611
- slug,
23612
23426
  global: {
23427
+ id,
23613
23428
  name: name2,
23614
- icon
23429
+ slug,
23430
+ icon: icon ?? null
23615
23431
  },
23616
23432
  local: {
23617
23433
  triggers: [...triggers, pullTrigger],
@@ -23626,7 +23442,7 @@ class BaseDocumentDriveServer {
23626
23442
  this.stopSyncRemoteDrive(driveId),
23627
23443
  this.listenerManager.removeDrive(driveId),
23628
23444
  this.cache.deleteDrive(driveId),
23629
- this.documentStorage.delete(driveId)
23445
+ this.legacyStorage.deleteDrive(driveId)
23630
23446
  ]);
23631
23447
  this.eventEmitter.emit("driveDeleted", driveId);
23632
23448
  result.forEach((r) => {
@@ -23635,16 +23451,8 @@ class BaseDocumentDriveServer {
23635
23451
  }
23636
23452
  });
23637
23453
  }
23638
- // TODO: paginate
23639
- async getDrives() {
23640
- const drives = [];
23641
- let cursor;
23642
- do {
23643
- const { documents, nextCursor } = await this.documentStorage.findByType("powerhouse/document-drive", 100, cursor);
23644
- drives.push(...documents);
23645
- cursor = nextCursor;
23646
- } while (cursor);
23647
- return drives;
23454
+ getDrives() {
23455
+ return this.legacyStorage.getDrives();
23648
23456
  }
23649
23457
  async getDrive(driveId, options) {
23650
23458
  let document;
@@ -23718,13 +23526,8 @@ class BaseDocumentDriveServer {
23718
23526
  state = doc.state;
23719
23527
  }
23720
23528
  const document = input.document ?? this.getDocumentModelModule(input.documentType).utils.createDocument();
23721
- if (input.id && input.id.length > 0) {
23722
- document.id = input.id;
23723
- }
23724
23529
  const documentStorage = {
23725
- id: document.id,
23726
23530
  name: document.name,
23727
- slug: document.slug,
23728
23531
  revision: document.revision,
23729
23532
  documentType: document.documentType,
23730
23533
  created: document.created,
@@ -23734,7 +23537,7 @@ class BaseDocumentDriveServer {
23734
23537
  clipboard: [],
23735
23538
  state: state ?? document.state
23736
23539
  };
23737
- await this.documentStorage.create(documentStorage);
23540
+ await this.documentStorage.create(input.id, documentStorage);
23738
23541
  try {
23739
23542
  await this.documentStorage.addChild(driveId, input.id);
23740
23543
  } catch (e) {
@@ -23873,18 +23676,12 @@ class BaseDocumentDriveServer {
23873
23676
  handler = () => this.deleteDocument(driveId, signal.input.id);
23874
23677
  break;
23875
23678
  case "COPY_CHILD_DOCUMENT":
23876
- handler = () => this.getDocument(driveId, signal.input.id).then((documentToCopy) => {
23877
- const doc = {
23878
- ...documentToCopy,
23879
- slug: signal.input.newId
23880
- };
23881
- return this.createDocument(driveId, {
23882
- id: signal.input.newId,
23883
- documentType: documentToCopy.documentType,
23884
- document: doc,
23885
- synchronizationUnits: signal.input.synchronizationUnits
23886
- });
23887
- });
23679
+ handler = () => this.getDocument(driveId, signal.input.id).then((documentToCopy) => this.createDocument(driveId, {
23680
+ id: signal.input.newId,
23681
+ documentType: documentToCopy.documentType,
23682
+ document: documentToCopy,
23683
+ synchronizationUnits: signal.input.synchronizationUnits
23684
+ }));
23888
23685
  break;
23889
23686
  }
23890
23687
  if (handler) {
@@ -24141,6 +23938,13 @@ class BaseDocumentDriveServer {
24141
23938
  addDriveOperation(driveId, operation, options) {
24142
23939
  return this.addDriveOperations(driveId, [operation], options);
24143
23940
  }
23941
+ async clearStorage() {
23942
+ var _a2, _b;
23943
+ for (const drive of await this.getDrives()) {
23944
+ await this.deleteDrive(drive);
23945
+ }
23946
+ await ((_b = (_a2 = this.legacyStorage).clearStorage) == null ? void 0 : _b.call(_a2));
23947
+ }
24144
23948
  async _addDriveOperations(driveId, callback) {
24145
23949
  if (!this.legacyStorage.addDriveOperationsWithTransaction) {
24146
23950
  const documentStorage = await this.documentStorage.get(driveId);
@@ -24415,32 +24219,17 @@ class MemoryStorage {
24415
24219
  exists(documentId) {
24416
24220
  return Promise.resolve(!!this.documents[documentId]);
24417
24221
  }
24418
- create(document) {
24419
- const documentId = document.id;
24420
- if (!isValidDocumentId(documentId)) {
24421
- throw new DocumentIdValidationError(documentId);
24422
- }
24423
- if (this.documents[documentId]) {
24424
- throw new DocumentAlreadyExistsError(documentId);
24425
- }
24426
- const slug = document.slug.length > 0 ? document.slug : documentId;
24427
- if (!isValidSlug(slug)) {
24428
- throw new DocumentSlugValidationError(slug);
24429
- }
24430
- if (slug && this.slugToDocumentId[slug]) {
24431
- throw new DocumentAlreadyExistsError(documentId);
24432
- }
24433
- document.slug = slug;
24222
+ // TODO: this should throw an error if the document already exists.
24223
+ create(documentId, document) {
24224
+ var _a2;
24434
24225
  this.documents[documentId] = document;
24226
+ const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
24435
24227
  if (slug) {
24436
24228
  if (this.slugToDocumentId[slug]) {
24437
- throw new DocumentAlreadyExistsError(documentId);
24229
+ throw new Error(`Document with slug ${slug} already exists`);
24438
24230
  }
24439
24231
  this.slugToDocumentId[slug] = documentId;
24440
24232
  }
24441
- if (document.documentType === "powerhouse/document-drive") {
24442
- this.updateDriveManifest(documentId, { documentIds: /* @__PURE__ */ new Set() });
24443
- }
24444
24233
  return Promise.resolve();
24445
24234
  }
24446
24235
  get(documentId) {
@@ -24457,56 +24246,20 @@ class MemoryStorage {
24457
24246
  }
24458
24247
  return this.get(documentId);
24459
24248
  }
24460
- async findByType(documentModelType, limit = 100, cursor) {
24461
- const documentsAndIds = Object.entries(this.documents).filter(([_, doc]) => doc.documentType === documentModelType).map(([id, doc]) => ({
24462
- id,
24463
- document: doc
24464
- }));
24465
- documentsAndIds.sort((a, b) => {
24466
- const aDate = new Date(a.document.created);
24467
- const bDate = new Date(b.document.created);
24468
- if (aDate.getTime() === bDate.getTime()) {
24469
- const aId = a.id;
24470
- const bId = b.id;
24471
- return aId.localeCompare(bId);
24472
- }
24473
- return aDate.getTime() - bDate.getTime();
24474
- });
24475
- let startIndex = 0;
24476
- if (cursor) {
24477
- const index = documentsAndIds.findIndex(({ id }) => id === cursor);
24478
- if (index !== -1) {
24479
- startIndex = index;
24480
- }
24481
- }
24482
- const endIndex = Math.min(startIndex + limit, documentsAndIds.length);
24483
- let nextCursor;
24484
- if (endIndex < documentsAndIds.length) {
24485
- nextCursor = documentsAndIds[endIndex].id;
24486
- }
24487
- return {
24488
- documents: documentsAndIds.slice(startIndex, endIndex).map(({ id }) => id),
24489
- nextCursor
24490
- };
24491
- }
24492
24249
  async delete(documentId) {
24250
+ var _a2;
24493
24251
  const document = this.documents[documentId];
24494
24252
  if (document) {
24495
- const slug = document.slug.length > 0 ? document.slug : documentId;
24253
+ const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
24496
24254
  if (slug && this.slugToDocumentId[slug] === documentId) {
24497
24255
  delete this.slugToDocumentId[slug];
24498
24256
  }
24499
24257
  }
24500
- const parents = await this.getParents(documentId);
24501
- for (const parent of parents) {
24502
- await this.removeChild(parent, documentId);
24503
- }
24504
- const children = await this.getChildren(documentId);
24505
- for (const child of children) {
24506
- const childParents = await this.getParents(child);
24507
- if (childParents.length === 1) {
24508
- await this.delete(child);
24509
- }
24258
+ const drives = await this.getDrives();
24259
+ for (const driveId of drives) {
24260
+ if (driveId === documentId)
24261
+ continue;
24262
+ await this.removeChild(driveId, documentId);
24510
24263
  }
24511
24264
  delete this.driveManifests[documentId];
24512
24265
  if (this.documents[documentId]) {
@@ -24540,26 +24293,14 @@ class MemoryStorage {
24540
24293
  const manifest = this.getManifest(parentId);
24541
24294
  return [...manifest.documentIds];
24542
24295
  }
24543
- async getParents(childId) {
24544
- const parents = [];
24545
- for (const [driveId, manifest] of Object.entries(this.driveManifests)) {
24546
- if (manifest.documentIds.has(childId)) {
24547
- parents.push(driveId);
24548
- }
24549
- }
24550
- return parents;
24551
- }
24552
24296
  ////////////////////////////////
24553
- // IDocumentAdminStorage
24297
+ // IDriveStorage
24554
24298
  ////////////////////////////////
24555
- async clear() {
24299
+ async clearStorage() {
24556
24300
  this.documents = {};
24557
24301
  this.driveManifests = {};
24558
24302
  this.slugToDocumentId = {};
24559
24303
  }
24560
- ////////////////////////////////
24561
- // IDriveStorage
24562
- ////////////////////////////////
24563
24304
  async addDocumentOperations(drive, id, operations, header) {
24564
24305
  const document = await this.get(id);
24565
24306
  if (!document) {
@@ -24572,6 +24313,13 @@ class MemoryStorage {
24572
24313
  operations: mergedOperations
24573
24314
  };
24574
24315
  }
24316
+ async getDrives() {
24317
+ return Object.keys(this.driveManifests);
24318
+ }
24319
+ async createDrive(id, drive) {
24320
+ await this.create(id, drive);
24321
+ this.updateDriveManifest(id, { documentIds: /* @__PURE__ */ new Set() });
24322
+ }
24575
24323
  async addDriveOperations(id, operations, header) {
24576
24324
  const drive = await this.get(id);
24577
24325
  const mergedOperations = mergeOperations(drive.operations, operations);
@@ -24581,6 +24329,31 @@ class MemoryStorage {
24581
24329
  operations: mergedOperations
24582
24330
  };
24583
24331
  }
24332
+ async deleteDrive(id) {
24333
+ const manifest = this.getManifest(id);
24334
+ const drives = await this.getDrives();
24335
+ await Promise.all([...manifest.documentIds].map((docId) => {
24336
+ var _a2;
24337
+ for (const driveId of drives) {
24338
+ if (driveId === id) {
24339
+ continue;
24340
+ }
24341
+ const manifest2 = this.getManifest(driveId);
24342
+ if (manifest2.documentIds.has(docId)) {
24343
+ return;
24344
+ }
24345
+ }
24346
+ const document = this.documents[docId];
24347
+ if (document) {
24348
+ const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
24349
+ if (slug && this.slugToDocumentId[slug] === docId) {
24350
+ delete this.slugToDocumentId[slug];
24351
+ }
24352
+ }
24353
+ delete this.documents[docId];
24354
+ }));
24355
+ await this.delete(id);
24356
+ }
24584
24357
  async getSynchronizationUnitsRevision(units) {
24585
24358
  const results = await Promise.allSettled(units.map(async (unit) => {
24586
24359
  try {
@@ -25783,9 +25556,6 @@ function Syncing(props) {
25783
25556
  function Tabler(props) {
25784
25557
  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" })] });
25785
25558
  }
25786
- function TimelineCaret(props) {
25787
- 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" }) });
25788
- }
25789
25559
  function Timeline(props) {
25790
25560
  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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" })] })] });
25791
25561
  }
@@ -25926,7 +25696,6 @@ const iconComponents = {
25926
25696
  Synced,
25927
25697
  Syncing,
25928
25698
  Tabler,
25929
- TimelineCaret,
25930
25699
  Timeline,
25931
25700
  TrashFill,
25932
25701
  Trash,
@@ -25989,12 +25758,7 @@ const ADD_TRIGGER = "ADD_TRIGGER";
25989
25758
  const ADD_INVALID_TRIGGER = "ADD_INVALID_TRIGGER";
25990
25759
  const defaultDriveOptions = [NEW_FOLDER, RENAME, SETTINGS];
25991
25760
  const defaultFileOptions = [RENAME, DELETE, DUPLICATE];
25992
- const defaultFolderOptions = [
25993
- NEW_FOLDER,
25994
- RENAME,
25995
- DELETE,
25996
- DUPLICATE
25997
- ];
25761
+ const defaultFolderOptions = [RENAME, DELETE, DUPLICATE];
25998
25762
  const debugNodeOptions = [
25999
25763
  ADD_TRIGGER,
26000
25764
  REMOVE_TRIGGER,
@@ -26074,7 +25838,7 @@ const nodeOptionsMap = {
26074
25838
  };
26075
25839
  const name = "@powerhousedao/connect";
26076
25840
  const productName = "Powerhouse-Connect";
26077
- const version$1 = "1.0.24-dev.0";
25841
+ const version$1 = "1.1.1";
26078
25842
  const description = "Powerhouse Connect";
26079
25843
  const main = "./dist/index.html";
26080
25844
  const type = "module";
@@ -26085,8 +25849,8 @@ const author = "acaldas@powerhouse.inc";
26085
25849
  const repository = { "type": "git", "url": "git+https://github.com/powerhouse-inc/document-model-electron.git" };
26086
25850
  const bugs = { "url": "https://github.com/powerhouse-inc/document-model-electron/issues" };
26087
25851
  const homepage = "https://github.com/powerhouse-inc/document-model-electron#readme";
26088
- 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": "npm run clean && 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" };
26089
- 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.4", "@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.15.17", "@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" };
25852
+ 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" };
25853
+ 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.23.0", "@tailwindcss/vite": "^4.1.4", "@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": "^2.0.0", "@vitejs/plugin-react": "^4.4.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.1.4", "uuid": "^9.0.1", "viem": "^2.8.13", "vite": "^6.3.3", "vite-envs": "^4.6.0", "vite-plugin-html": "^3.2.2", "vite-plugin-node-polyfills": "^0.23.0", "vite-plugin-svgr": "^4.3.0", "vite-tsconfig-paths": "^5.1.4", "xvfb-maybe": "^0.2.1" };
26090
25854
  const optionalDependencies = { "@esbuild/linux-x64": "^0.21.4", "@rollup/rollup-linux-x64-musl": "4.14.3" };
26091
25855
  const packageJson = {
26092
25856
  name,
@@ -26127,15 +25891,13 @@ const PH_CONNECT_SENTRY_ENV = window.__VITE_ENVS.PH_CONNECT_SENTRY_ENV || "dev";
26127
25891
  const PH_CONNECT_SENTRY_TRACING_ENABLED = window.__VITE_ENVS.PH_CONNECT_SENTRY_TRACING_ENABLED || "false";
26128
25892
  const GA_TRACKING_ID = window.__VITE_ENVS.PH_CONNECT_GA_TRACKING_ID;
26129
25893
  const PH_CONNECT_CLI_VERSION = window.__VITE_ENVS.PH_CONNECT_CLI_VERSION || void 0;
26130
- const LOG_LEVEL = isLogLevel(window.__VITE_ENVS.LOG_LEVEL) ? window.__VITE_ENVS.LOG_LEVEL : "info";
26131
- setLogLevel(LOG_LEVEL);
26132
- logger$1.debug(`Setting log level to ${window.__VITE_ENVS.LOG_LEVEL}.`);
25894
+ setLogLevel(window.__VITE_ENVS.LOG_LEVEL);
25895
+ logger$1.info(`Setting log level to ${window.__VITE_ENVS.LOG_LEVEL}.`);
26133
25896
  const connectConfig = {
26134
25897
  appVersion: APP_VERSION,
26135
25898
  studioMode: PH_CONNECT_STUDIO_MODE.toString() === "true",
26136
25899
  warnOutdatedApp: WARN_OUTDATED_APP === "true",
26137
25900
  routerBasename: PH_CONNECT_ROUTER_BASENAME,
26138
- analyticsDatabaseName: `${PH_CONNECT_ROUTER_BASENAME}:analytics`,
26139
25901
  sentry: {
26140
25902
  dsn: PH_CONNECT_SENTRY_DSN,
26141
25903
  env: PH_CONNECT_SENTRY_ENV,
@@ -26229,7 +25991,6 @@ DriveSections.filter(
26229
25991
  };
26230
25992
  });
26231
25993
  var lzString = { exports: {} };
26232
- lzString.exports;
26233
25994
  var hasRequiredLzString;
26234
25995
  function requireLzString() {
26235
25996
  if (hasRequiredLzString) return lzString.exports;
@@ -28870,9 +28631,6 @@ const _BrowserStorage = class _BrowserStorage {
28870
28631
  name: namespace ? `${namespace}:${_BrowserStorage.DBName}` : _BrowserStorage.DBName
28871
28632
  }));
28872
28633
  }
28873
- ////////////////////////////////
28874
- // IDocumentAdminStorage
28875
- ////////////////////////////////
28876
28634
  async clear() {
28877
28635
  const db = await this.db;
28878
28636
  await db.clear();
@@ -28885,35 +28643,19 @@ const _BrowserStorage = class _BrowserStorage {
28885
28643
  const document = await db.getItem(this.buildDocumentKey(documentId));
28886
28644
  return !!document;
28887
28645
  }
28888
- async create(document) {
28889
- const documentId = document.id;
28890
- if (!isValidDocumentId(documentId)) {
28891
- throw new DocumentIdValidationError(documentId);
28892
- }
28646
+ // TODO: this should throw an error if the document already exists.
28647
+ async create(documentId, document) {
28648
+ var _a2;
28893
28649
  const db = await this.db;
28894
- if (await this.exists(documentId)) {
28895
- throw new DocumentAlreadyExistsError(documentId);
28896
- }
28897
- const slug = document.slug.length > 0 ? document.slug : documentId;
28898
- if (!isValidSlug(slug)) {
28899
- throw new DocumentSlugValidationError(slug);
28900
- }
28901
- const slugManifest = await this.getSlugManifest();
28902
- if (slugManifest.slugToId[slug]) {
28903
- throw new DocumentAlreadyExistsError(documentId);
28904
- }
28905
- document.slug = slug;
28906
28650
  await db.setItem(this.buildDocumentKey(documentId), document);
28651
+ const slug = ((_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug) ?? documentId;
28907
28652
  if (slug) {
28908
- const slugManifest2 = await this.getSlugManifest();
28909
- if (slugManifest2.slugToId[slug]) {
28653
+ const slugManifest = await this.getSlugManifest();
28654
+ if (slugManifest.slugToId[slug]) {
28910
28655
  throw new Error(`Document with slug ${slug} already exists`);
28911
28656
  }
28912
- slugManifest2.slugToId[slug] = documentId;
28913
- await this.updateSlugManifest(slugManifest2);
28914
- }
28915
- if (document.documentType === "powerhouse/document-drive") {
28916
- this.updateDriveManifest(documentId, { documentIds: [] });
28657
+ slugManifest.slugToId[slug] = documentId;
28658
+ await this.updateSlugManifest(slugManifest);
28917
28659
  }
28918
28660
  }
28919
28661
  async get(documentId) {
@@ -28932,56 +28674,15 @@ const _BrowserStorage = class _BrowserStorage {
28932
28674
  }
28933
28675
  return this.get(documentId);
28934
28676
  }
28935
- async findByType(documentModelType, limit = 100, cursor) {
28936
- const db = await this.db;
28937
- const keys = await db.keys();
28938
- const documentKeys = keys.filter((key) => key.startsWith(`${_BrowserStorage.DOCUMENT_KEY}${_BrowserStorage.SEP}`));
28939
- const documentsAndIds = [];
28940
- for (const key of documentKeys) {
28941
- const documentId = key.slice(_BrowserStorage.DOCUMENT_KEY.length + _BrowserStorage.SEP.length);
28942
- try {
28943
- const document = await db.getItem(key);
28944
- if (!document || document.documentType !== documentModelType) {
28945
- continue;
28946
- }
28947
- documentsAndIds.push({ id: documentId, document });
28948
- } catch (error) {
28949
- continue;
28950
- }
28951
- }
28952
- documentsAndIds.sort((a, b) => {
28953
- const aDate = new Date(a.document.created);
28954
- const bDate = new Date(b.document.created);
28955
- if (aDate.getTime() === bDate.getTime()) {
28956
- return a.id.localeCompare(b.id);
28957
- }
28958
- return aDate.getTime() - bDate.getTime();
28959
- });
28960
- let startIndex = 0;
28961
- if (cursor) {
28962
- const index = documentsAndIds.findIndex(({ id }) => id === cursor);
28963
- if (index !== -1) {
28964
- startIndex = index;
28965
- }
28966
- }
28967
- const endIndex = Math.min(startIndex + limit, documentsAndIds.length);
28968
- let nextCursor;
28969
- if (endIndex < documentsAndIds.length) {
28970
- nextCursor = documentsAndIds[endIndex].id;
28971
- }
28972
- return {
28973
- documents: documentsAndIds.slice(startIndex, endIndex).map(({ id }) => id),
28974
- nextCursor
28975
- };
28976
- }
28977
28677
  async delete(documentId) {
28678
+ var _a2;
28978
28679
  const db = await this.db;
28979
28680
  const document = await db.getItem(this.buildDocumentKey(documentId));
28980
28681
  if (!document) {
28981
28682
  return false;
28982
28683
  }
28983
- const slug = document.slug.length > 0 ? document.slug : documentId;
28984
28684
  try {
28685
+ const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
28985
28686
  if (slug) {
28986
28687
  const slugManifest = await this.getSlugManifest();
28987
28688
  if (slugManifest.slugToId[slug] === documentId) {
@@ -28991,16 +28692,11 @@ const _BrowserStorage = class _BrowserStorage {
28991
28692
  }
28992
28693
  } catch (error) {
28993
28694
  }
28994
- const parents = await this.getParents(documentId);
28995
- for (const parent of parents) {
28996
- await this.removeChild(parent, documentId);
28997
- }
28998
- const children = await this.getChildren(documentId);
28999
- for (const child of children) {
29000
- const childParents = await this.getParents(child);
29001
- if (childParents.length === 1 && childParents[0] === documentId) {
29002
- await this.delete(child);
29003
- }
28695
+ const drives = await this.getDrives();
28696
+ for (const driveId of drives) {
28697
+ if (driveId === documentId)
28698
+ continue;
28699
+ await this.removeChild(driveId, documentId);
29004
28700
  }
29005
28701
  await db.removeItem(this.buildManifestKey(documentId));
29006
28702
  await db.removeItem(this.buildDocumentKey(documentId));
@@ -29034,20 +28730,6 @@ const _BrowserStorage = class _BrowserStorage {
29034
28730
  const manifest = await this.getManifest(parentId);
29035
28731
  return manifest.documentIds;
29036
28732
  }
29037
- async getParents(childId) {
29038
- const db = await this.db;
29039
- const keys = await db.keys();
29040
- const parents = [];
29041
- const manifestKeys = keys.filter((key) => key.startsWith(`${_BrowserStorage.MANIFEST_KEY}${_BrowserStorage.SEP}`));
29042
- for (const key of manifestKeys) {
29043
- const driveId = key.slice(_BrowserStorage.MANIFEST_KEY.length + _BrowserStorage.SEP.length);
29044
- const manifest = await this.getManifest(driveId);
29045
- if (manifest.documentIds.includes(childId)) {
29046
- parents.push(driveId);
29047
- }
29048
- }
29049
- return parents;
29050
- }
29051
28733
  ////////////////////////////////
29052
28734
  // IDriveStorage
29053
28735
  ////////////////////////////////
@@ -29069,6 +28751,9 @@ const _BrowserStorage = class _BrowserStorage {
29069
28751
  const db = await this.db;
29070
28752
  await db.setItem(_BrowserStorage.SLUG_MANIFEST_KEY, manifest);
29071
28753
  }
28754
+ async clearStorage() {
28755
+ return (await this.db).clear();
28756
+ }
29072
28757
  async addDocumentOperations(drive, id, operations, header) {
29073
28758
  const document = await this.get(id);
29074
28759
  if (!document) {
@@ -29082,6 +28767,20 @@ const _BrowserStorage = class _BrowserStorage {
29082
28767
  operations: mergedOperations
29083
28768
  });
29084
28769
  }
28770
+ async getDrives() {
28771
+ const db = await this.db;
28772
+ const keys = await db.keys();
28773
+ return keys.filter((key) => key.startsWith(_BrowserStorage.MANIFEST_KEY)).map((key) => key.slice(_BrowserStorage.MANIFEST_KEY.length + _BrowserStorage.SEP.length));
28774
+ }
28775
+ async createDrive(id, drive) {
28776
+ await this.create(id, drive);
28777
+ await this.updateDriveManifest(id, { documentIds: [] });
28778
+ }
28779
+ async deleteDrive(id) {
28780
+ const documents = await this.getChildren(id);
28781
+ await Promise.all(documents.map((doc) => this.delete(doc)));
28782
+ await this.delete(id);
28783
+ }
29085
28784
  async addDriveOperations(id, operations, header) {
29086
28785
  const drive = await this.get(id);
29087
28786
  const mergedOperations = mergeOperations(drive.operations, operations);
@@ -29122,16 +28821,12 @@ const _BrowserStorage = class _BrowserStorage {
29122
28821
  }
29123
28822
  // migrates all stored operations from legacy signature to signatures array
29124
28823
  async migrateOperationSignatures() {
29125
- let cursor;
29126
- do {
29127
- const { documents: drives, nextCursor } = await this.findByType("powerhouse/document-drive", 100, cursor);
29128
- for (const drive of drives) {
29129
- await this.migrateDrive(drive);
29130
- const documents = await this.getChildren(drive);
29131
- await Promise.all(documents.map(async (docId) => this.migrateDocument(drive, docId)));
29132
- }
29133
- cursor = nextCursor;
29134
- } while (cursor);
28824
+ const drives = await this.getDrives();
28825
+ for (const drive of drives) {
28826
+ await this.migrateDrive(drive);
28827
+ const documents = await this.getChildren(drive);
28828
+ await Promise.all(documents.map(async (docId) => this.migrateDocument(drive, docId)));
28829
+ }
29135
28830
  }
29136
28831
  async migrateDrive(driveId) {
29137
28832
  const drive = await this.get(driveId);
@@ -29205,11 +28900,8 @@ const getReactorDefaultDrivesConfig = () => {
29205
28900
  }
29206
28901
  };
29207
28902
  };
29208
- function createBrowserStorage(routerBasename) {
29209
- return new BrowserStorage(routerBasename);
29210
- }
29211
- function createBrowserDocumentDriveServer(documentModels, storage) {
29212
- return new ReactorBuilder(documentModels).withStorage(storage).withCache(new InMemoryCache()).withQueueManager(new BaseQueueManager(1, 10)).withOptions({ ...getReactorDefaultDrivesConfig() }).build();
28903
+ function createBrowserDocumentDriveServer(documentModels, routerBasename) {
28904
+ return new ReactorBuilder(documentModels).withStorage(new BrowserStorage(routerBasename)).withCache(new InMemoryCache()).withQueueManager(new BaseQueueManager(1, 10)).withOptions({ ...getReactorDefaultDrivesConfig() }).build();
29213
28905
  }
29214
28906
  const VERSION_CHECK_INTERVAL = parseInt(window.__VITE_ENVS.PH_CONNECT_VERSION_CHECK_INTERVAL) || 60 * 60 * 1e3;
29215
28907
  const basePath = connectConfig.routerBasename;
@@ -31768,14 +31460,14 @@ if (window.__VITE_ENVS.MODE === "development") {
31768
31460
  } else {
31769
31461
  serviceWorkerManager.registerServiceWorker(false);
31770
31462
  }
31771
- const App = lazy(() => __vitePreload(() => import("./app-B5yYl0zv.js").then((n) => n.bs), true ? __vite__mapDeps([0,1,2]) : void 0));
31463
+ const App = lazy(() => __vitePreload(() => import("./app-CZSKsD-w.js").then((n) => n.a_), true ? __vite__mapDeps([0,1,2]) : void 0));
31772
31464
  const AppLoader = /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(App, {}) });
31773
31465
  const appLoader = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
31774
31466
  __proto__: null,
31775
31467
  default: AppLoader
31776
31468
  }, Symbol.toStringTag, { value: "Module" }));
31777
31469
  export {
31778
- Icon as $,
31470
+ getDefaultExportFromCjs as $,
31779
31471
  AddStateExampleInputSchema as A,
31780
31472
  SetModuleDescriptionInputSchema as B,
31781
31473
  SetModuleNameInputSchema as C,
@@ -31802,148 +31494,148 @@ export {
31802
31494
  baseLoadFromFile as X,
31803
31495
  baseLoadFromInput as Y,
31804
31496
  pascalCase as Z,
31805
- logger$1 as _,
31497
+ Icon as _,
31806
31498
  createReducer as a,
31807
- getNamedType as a$,
31808
- getDefaultExportFromCjs as a0,
31809
- LOCAL as a1,
31810
- commonjsGlobal as a2,
31499
+ DELETE as a$,
31500
+ LOCAL as a0,
31501
+ commonjsGlobal as a1,
31502
+ PUBLIC as a2,
31811
31503
  SWITCHBOARD as a3,
31812
- PUBLIC as a4,
31813
- locationInfoByLocation as a5,
31814
- sharingTypeOptions as a6,
31815
- objectType as a7,
31504
+ locationInfoByLocation as a4,
31505
+ sharingTypeOptions as a5,
31506
+ objectType as a6,
31507
+ recordType as a7,
31816
31508
  stringType as a8,
31817
- recordType as a9,
31818
- updateNode as aA,
31819
- FILE as aB,
31820
- moveNode as aC,
31821
- generateNodesCopy as aD,
31822
- copyNode as aE,
31823
- createState as aF,
31824
- setDriveName as aG,
31825
- setAvailableOffline as aH,
31826
- setSharingType as aI,
31827
- SynchronizationUnitNotFoundError as aJ,
31828
- removeTrigger as aK,
31829
- PullResponderTransmitter as aL,
31830
- addTrigger as aM,
31831
- ReadDriveNotFoundError as aN,
31832
- openUrl as aO,
31833
- getNodeOptions as aP,
31834
- DRIVE as aQ,
31835
- FOLDER as aR,
31836
- requestPublicDrive as aS,
31837
- serviceWorkerManager as aT,
31838
- packageJson as aU,
31839
- t as aV,
31840
- gql as aW,
31841
- request as aX,
31842
- inspect as aY,
31843
- GraphQLError as aZ,
31844
- invariant as a_,
31845
- capitalCase as aa,
31846
- CLOUD as ab,
31847
- createZip as ac,
31509
+ capitalCase as a9,
31510
+ moveNode as aA,
31511
+ generateNodesCopy as aB,
31512
+ copyNode as aC,
31513
+ createState as aD,
31514
+ setDriveName as aE,
31515
+ setAvailableOffline as aF,
31516
+ setSharingType as aG,
31517
+ SynchronizationUnitNotFoundError as aH,
31518
+ removeTrigger as aI,
31519
+ generateUUID as aJ,
31520
+ PullResponderTransmitter as aK,
31521
+ addTrigger as aL,
31522
+ ReadDriveNotFoundError as aM,
31523
+ openUrl as aN,
31524
+ getNodeOptions as aO,
31525
+ DRIVE as aP,
31526
+ FOLDER as aQ,
31527
+ requestPublicDrive as aR,
31528
+ serviceWorkerManager as aS,
31529
+ packageJson as aT,
31530
+ t as aU,
31531
+ gql as aV,
31532
+ request as aW,
31533
+ getDimensions as aX,
31534
+ READ as aY,
31535
+ nodeOptionsMap as aZ,
31536
+ defaultFileOptions as a_,
31537
+ CLOUD as aa,
31538
+ createZip as ab,
31539
+ logger$1 as ac,
31848
31540
  LZString as ad,
31849
31541
  buildSignedOperation as ae,
31850
- getDefaults as af,
31851
- getI18n as ag,
31542
+ getI18n as af,
31543
+ getDefaults as ag,
31852
31544
  connectConfig as ah,
31853
31545
  hashDocumentStateForScope as ai,
31854
31546
  getAugmentedNamespace as aj,
31855
- childLogger as ak,
31856
- process as al,
31857
- setErrorHandler as am,
31858
- driveDocumentModelModule as an,
31859
- createBrowserStorage as ao,
31860
- createBrowserDocumentDriveServer as ap,
31861
- generateId as aq,
31862
- reducer as ar,
31863
- isDocumentDrive as as,
31864
- generateAddNodeAction as at,
31865
- isFileNode as au,
31866
- uploadDocumentOperations as av,
31867
- updateFile as aw,
31868
- addFolder as ax,
31869
- isFolderNode as ay,
31870
- deleteNode as az,
31547
+ setErrorHandler as ak,
31548
+ driveDocumentModelModule as al,
31549
+ createBrowserDocumentDriveServer as am,
31550
+ hashKey as an,
31551
+ childLogger as ao,
31552
+ reducer as ap,
31553
+ isDocumentDrive as aq,
31554
+ generateAddNodeAction as ar,
31555
+ isFileNode as as,
31556
+ uploadDocumentOperations as at,
31557
+ updateFile as au,
31558
+ addFolder as av,
31559
+ isFolderNode as aw,
31560
+ deleteNode as ax,
31561
+ updateNode as ay,
31562
+ FILE as az,
31871
31563
  SetStateSchemaInputSchema as b,
31872
- DUPLICATE as b$,
31873
- isInputObjectType as b0,
31874
- isScalarType as b1,
31875
- isObjectType as b2,
31876
- isInterfaceType as b3,
31877
- isUnionType as b4,
31878
- isEnumType as b5,
31879
- astFromValue as b6,
31880
- print as b7,
31881
- DEFAULT_DEPRECATION_REASON as b8,
31882
- Kind as b9,
31883
- isInputType as bA,
31884
- GraphQLBoolean as bB,
31885
- assertAbstractType as bC,
31886
- doTypesOverlap as bD,
31887
- DirectiveLocation as bE,
31888
- specifiedRules as bF,
31889
- NoUnusedFragmentsRule as bG,
31890
- ExecutableDefinitionsRule as bH,
31891
- validate as bI,
31892
- validateSchema as bJ,
31893
- GraphQLID as bK,
31894
- GraphQLString as bL,
31895
- GraphQLFloat as bM,
31896
- GraphQLInt as bN,
31897
- GraphQLDirective as bO,
31898
- GraphQLUnionType as bP,
31899
- isNonNullType as bQ,
31900
- GraphQLNonNull as bR,
31901
- isNamedType as bS,
31902
- isLeafType as bT,
31903
- GraphQLSchema as bU,
31904
- buildSchema as bV,
31905
- sentenceCase as bW,
31906
- getDimensions as bX,
31907
- READ as bY,
31908
- nodeOptionsMap as bZ,
31909
- defaultFileOptions as b_,
31910
- isPrintableAsBlockString as ba,
31911
- isSpecifiedDirective as bb,
31912
- isSpecifiedScalarType as bc,
31913
- isIntrospectionType as bd,
31914
- z as be,
31915
- GraphQLScalarType as bf,
31916
- parse as bg,
31917
- visit as bh,
31918
- buildASTSchema as bi,
31919
- extendSchema as bj,
31920
- getNullableType as bk,
31921
- isListType as bl,
31922
- snakeCase as bm,
31923
- constantCase as bn,
31924
- isAbstractType as bo,
31925
- BREAK as bp,
31926
- GraphQLInputObjectType as bq,
31927
- GraphQLList as br,
31928
- GraphQLEnumType as bs,
31929
- GraphQLObjectType as bt,
31930
- GraphQLInterfaceType as bu,
31931
- SchemaMetaFieldDef as bv,
31932
- TypeMetaFieldDef as bw,
31933
- TypeNameMetaFieldDef as bx,
31934
- isCompositeType as by,
31935
- isOutputType as bz,
31564
+ TypeNameMetaFieldDef as b$,
31565
+ RENAME as b0,
31566
+ WRITE as b1,
31567
+ DUPLICATE as b2,
31568
+ defaultFolderOptions as b3,
31569
+ garbageCollect as b4,
31570
+ sortOperations as b5,
31571
+ UI_NODE as b6,
31572
+ generateId as b7,
31573
+ undo as b8,
31574
+ redo as b9,
31575
+ GraphQLInt as bA,
31576
+ GraphQLDirective as bB,
31577
+ GraphQLObjectType as bC,
31578
+ GraphQLInterfaceType as bD,
31579
+ GraphQLUnionType as bE,
31580
+ GraphQLInputObjectType as bF,
31581
+ GraphQLEnumType as bG,
31582
+ isListType as bH,
31583
+ GraphQLList as bI,
31584
+ isNonNullType as bJ,
31585
+ GraphQLNonNull as bK,
31586
+ isNamedType as bL,
31587
+ getNullableType as bM,
31588
+ isLeafType as bN,
31589
+ GraphQLSchema as bO,
31590
+ buildSchema as bP,
31591
+ buildASTSchema as bQ,
31592
+ parse as bR,
31593
+ validate as bS,
31594
+ visit as bT,
31595
+ extendSchema as bU,
31596
+ snakeCase as bV,
31597
+ constantCase as bW,
31598
+ isAbstractType as bX,
31599
+ BREAK as bY,
31600
+ SchemaMetaFieldDef as bZ,
31601
+ TypeMetaFieldDef as b_,
31602
+ useDocumentDispatch as ba,
31603
+ inspect as bb,
31604
+ GraphQLError as bc,
31605
+ getNamedType as bd,
31606
+ invariant as be,
31607
+ isInputObjectType as bf,
31608
+ isScalarType as bg,
31609
+ isObjectType as bh,
31610
+ isInterfaceType as bi,
31611
+ isUnionType as bj,
31612
+ isEnumType as bk,
31613
+ print as bl,
31614
+ isPrintableAsBlockString as bm,
31615
+ Kind as bn,
31616
+ astFromValue as bo,
31617
+ DEFAULT_DEPRECATION_REASON as bp,
31618
+ isSpecifiedDirective as bq,
31619
+ isSpecifiedScalarType as br,
31620
+ isIntrospectionType as bs,
31621
+ z as bt,
31622
+ GraphQLScalarType as bu,
31623
+ specifiedRules as bv,
31624
+ GraphQLID as bw,
31625
+ GraphQLBoolean as bx,
31626
+ GraphQLString as by,
31627
+ GraphQLFloat as bz,
31936
31628
  createAction as c,
31937
- RENAME as c0,
31938
- WRITE as c1,
31939
- DELETE as c2,
31940
- defaultFolderOptions as c3,
31941
- garbageCollect as c4,
31942
- sortOperations as c5,
31943
- UI_NODE as c6,
31944
- undo as c7,
31945
- redo as c8,
31946
- useDocumentDispatch as c9,
31629
+ isCompositeType as c0,
31630
+ isOutputType as c1,
31631
+ isInputType as c2,
31632
+ assertAbstractType as c3,
31633
+ doTypesOverlap as c4,
31634
+ DirectiveLocation as c5,
31635
+ NoUnusedFragmentsRule as c6,
31636
+ ExecutableDefinitionsRule as c7,
31637
+ validateSchema as c8,
31638
+ sentenceCase as c9,
31947
31639
  appLoader as ca,
31948
31640
  ReorderModuleOperationsInputSchema as d,
31949
31641
  DeleteOperationInputSchema as e,
@@ -31969,4 +31661,3 @@ export {
31969
31661
  ReorderModulesInputSchema as y,
31970
31662
  DeleteModuleInputSchema as z
31971
31663
  };
31972
- //# sourceMappingURL=app-loader-CmEZOj3m.js.map