@powerhousedao/connect 1.0.21-staging.0 → 1.0.22-dev.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.
- package/dist/.env +1 -1
- package/dist/assets/{app-B2txMMB6.js → app-B-5qYsgM.js} +8796 -3328
- package/dist/assets/app-B-5qYsgM.js.map +1 -0
- package/dist/assets/{app-CDOWlDp2.css → app-CmlD3Pwe.css} +119 -1
- package/dist/assets/{app-loader-uTr5bb-C.js → app-loader-DXPAMQYN.js} +681 -375
- package/dist/assets/app-loader-DXPAMQYN.js.map +1 -0
- package/dist/assets/{app-loader-DiF8OhX3.css → app-loader-DaCxVT0x.css} +134 -0
- package/dist/assets/browser-DC1g4ocI.js +27235 -0
- package/dist/assets/browser-DC1g4ocI.js.map +1 -0
- package/dist/assets/{ccip-Eu5ix3yZ.js → ccip-B4L3odPP.js} +5 -3
- package/dist/assets/ccip-B4L3odPP.js.map +1 -0
- package/dist/assets/{content-ZNvpO_Bf.js → content-D22zsKwo.js} +1052 -374
- package/dist/assets/content-D22zsKwo.js.map +1 -0
- package/dist/assets/{index-CdCNoFiu.js → index-CCV8LLva.js} +4 -3
- package/dist/assets/index-CCV8LLva.js.map +1 -0
- package/dist/assets/{index-CXtQlZED.js → index-CKPKk_m5.js} +24 -171
- package/dist/assets/index-CKPKk_m5.js.map +1 -0
- package/dist/assets/index-CWah4bZB.js +209 -0
- package/dist/assets/index-CWah4bZB.js.map +1 -0
- package/dist/assets/{index-BQuSynqj.js → index-bTL_WhmE.js} +8 -6
- package/dist/assets/index-bTL_WhmE.js.map +1 -0
- package/dist/assets/{main.D6_W-5oY.js → main.B0yzXDFz.js} +2 -1
- package/dist/assets/main.B0yzXDFz.js.map +1 -0
- package/dist/assets/reactor-analytics-BF1jqSpK.js +45 -0
- package/dist/assets/reactor-analytics-BF1jqSpK.js.map +1 -0
- package/dist/assets/router-C1-W7Dq7.js +1585 -0
- package/dist/assets/router-C1-W7Dq7.js.map +1 -0
- package/dist/assets/{style-Ce3V83BE.css → style-BPUyhu8E.css} +3 -0
- package/dist/external-packages.js +1 -0
- package/dist/external-packages.js.map +1 -0
- package/dist/hmr.js +1 -0
- package/dist/hmr.js.map +1 -0
- package/dist/index.html +1 -1
- package/dist/service-worker.js +1 -0
- package/dist/service-worker.js.map +1 -0
- package/dist/vite-envs.sh +1 -1
- package/package.json +10 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/app-B-5qYsgM.js","assets/main.B0yzXDFz.js","assets/app-CmlD3Pwe.css"])))=>i.map(i=>d[i]);
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __typeError = (msg) => {
|
|
4
4
|
throw TypeError(msg);
|
|
@@ -11,9 +11,10 @@ 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.
|
|
14
|
+
import { _ as __vitePreload } from "./main.B0yzXDFz.js";
|
|
15
15
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
16
16
|
import { useState, useEffect, Suspense, lazy } from "react";
|
|
17
|
+
import "node:fs";
|
|
17
18
|
function _mergeNamespaces(n, m) {
|
|
18
19
|
for (var i = 0; i < m.length; i++) {
|
|
19
20
|
const e = m[i];
|
|
@@ -97,14 +98,51 @@ const trimResultingState = (document) => {
|
|
|
97
98
|
});
|
|
98
99
|
return { ...document, operations: { global: global2, local } };
|
|
99
100
|
};
|
|
101
|
+
class CacheStorageManager {
|
|
102
|
+
constructor(cache) {
|
|
103
|
+
__publicField(this, "index", 0);
|
|
104
|
+
__publicField(this, "cache");
|
|
105
|
+
this.cache = cache;
|
|
106
|
+
}
|
|
107
|
+
createStorage() {
|
|
108
|
+
const index = this.index;
|
|
109
|
+
this.index += 1;
|
|
110
|
+
function buildKey(key) {
|
|
111
|
+
return `${index}-${key}`;
|
|
112
|
+
}
|
|
113
|
+
const storage = {
|
|
114
|
+
get: (key) => {
|
|
115
|
+
return this.cache.get(buildKey(key));
|
|
116
|
+
},
|
|
117
|
+
set: (key, value) => {
|
|
118
|
+
this.cache.set(buildKey(key), value);
|
|
119
|
+
return storage;
|
|
120
|
+
},
|
|
121
|
+
delete: (key) => {
|
|
122
|
+
return this.cache.delete(buildKey(key));
|
|
123
|
+
},
|
|
124
|
+
clear: () => {
|
|
125
|
+
this.cache.clear();
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
return storage;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
100
131
|
class InMemoryCache {
|
|
101
|
-
constructor() {
|
|
102
|
-
__publicField(this, "
|
|
103
|
-
__publicField(this, "
|
|
104
|
-
__publicField(this, "
|
|
132
|
+
constructor(cache = /* @__PURE__ */ new Map()) {
|
|
133
|
+
__publicField(this, "cache");
|
|
134
|
+
__publicField(this, "cacheStorageManager");
|
|
135
|
+
__publicField(this, "idToDocument");
|
|
136
|
+
__publicField(this, "idToDrive");
|
|
137
|
+
__publicField(this, "slugToDriveId");
|
|
138
|
+
this.cache = cache;
|
|
139
|
+
this.cacheStorageManager = new CacheStorageManager(cache);
|
|
140
|
+
this.idToDocument = this.cacheStorageManager.createStorage();
|
|
141
|
+
this.idToDrive = this.cacheStorageManager.createStorage();
|
|
142
|
+
this.slugToDriveId = this.cacheStorageManager.createStorage();
|
|
105
143
|
}
|
|
106
144
|
clear() {
|
|
107
|
-
this.
|
|
145
|
+
this.idToDocument.clear();
|
|
108
146
|
this.idToDrive.clear();
|
|
109
147
|
this.slugToDriveId.clear();
|
|
110
148
|
}
|
|
@@ -113,13 +151,13 @@ class InMemoryCache {
|
|
|
113
151
|
/////////////////////////////////////////////////////////////////////////////
|
|
114
152
|
async setDocument(documentId, document) {
|
|
115
153
|
const doc = trimResultingState(document);
|
|
116
|
-
this.
|
|
154
|
+
this.idToDocument.set(documentId, doc);
|
|
117
155
|
}
|
|
118
156
|
async getDocument(documentId) {
|
|
119
|
-
return this.
|
|
157
|
+
return this.idToDocument.get(documentId);
|
|
120
158
|
}
|
|
121
159
|
async deleteDocument(documentId) {
|
|
122
|
-
return this.
|
|
160
|
+
return this.idToDocument.delete(documentId);
|
|
123
161
|
}
|
|
124
162
|
async setDrive(driveId, drive) {
|
|
125
163
|
const doc = trimResultingState(drive);
|
|
@@ -133,7 +171,7 @@ class InMemoryCache {
|
|
|
133
171
|
if (!drive) {
|
|
134
172
|
return false;
|
|
135
173
|
}
|
|
136
|
-
const slug = drive.
|
|
174
|
+
const slug = drive.slug.length > 0 ? drive.slug : driveId;
|
|
137
175
|
if (slug) {
|
|
138
176
|
this.slugToDriveId.delete(slug);
|
|
139
177
|
}
|
|
@@ -388,8 +426,8 @@ function isBE() {
|
|
|
388
426
|
return buf[0] === 254;
|
|
389
427
|
}
|
|
390
428
|
const FileSystemError = new Error("File system not available.");
|
|
391
|
-
function generateUUID
|
|
392
|
-
if (!crypto.randomUUID) {
|
|
429
|
+
function generateUUID() {
|
|
430
|
+
if (typeof crypto === "undefined" || !crypto.randomUUID) {
|
|
393
431
|
throw new Error("generateUUID is not available in unsecure contexts.");
|
|
394
432
|
}
|
|
395
433
|
return crypto.randomUUID();
|
|
@@ -6777,7 +6815,7 @@ function loadStateOperation(oldDocument, newDocument) {
|
|
|
6777
6815
|
};
|
|
6778
6816
|
}
|
|
6779
6817
|
function generateId(method) {
|
|
6780
|
-
return generateUUID
|
|
6818
|
+
return generateUUID();
|
|
6781
6819
|
}
|
|
6782
6820
|
function getUnixTimestamp(date) {
|
|
6783
6821
|
return (new Date(date).getTime() / 1e3).toFixed(0);
|
|
@@ -7117,6 +7155,7 @@ function createReducer(stateReducer2, documentReducer = baseReducer) {
|
|
|
7117
7155
|
function baseCreateExtendedState(initialState, createState2) {
|
|
7118
7156
|
return {
|
|
7119
7157
|
name: "",
|
|
7158
|
+
slug: "",
|
|
7120
7159
|
documentType: "",
|
|
7121
7160
|
revision: {
|
|
7122
7161
|
global: 0,
|
|
@@ -7144,10 +7183,6 @@ function baseCreateDocument(initialState, createState2) {
|
|
|
7144
7183
|
function hashDocumentStateForScope(document, scope = "global") {
|
|
7145
7184
|
return hash(cjsModule(document.state[scope] || ""));
|
|
7146
7185
|
}
|
|
7147
|
-
const hashKey = (date, randomLimit = 1e3) => {
|
|
7148
|
-
const random = Math.random() * randomLimit;
|
|
7149
|
-
return hash(`${(/* @__PURE__ */ new Date()).toISOString()}${random}`);
|
|
7150
|
-
};
|
|
7151
7186
|
function getDocumentLastModified(document) {
|
|
7152
7187
|
var _a2;
|
|
7153
7188
|
const sortedOperations = sortOperations(Object.values(document.operations).flat());
|
|
@@ -7196,6 +7231,9 @@ function replayDocument(initialState, operations, reducer2, dispatch, header, sk
|
|
|
7196
7231
|
operationsToReplay.push(...Object.values(operations).flat());
|
|
7197
7232
|
}
|
|
7198
7233
|
const document = baseCreateDocument(documentState);
|
|
7234
|
+
if (header == null ? void 0 : header.slug) {
|
|
7235
|
+
document.slug = header.slug;
|
|
7236
|
+
}
|
|
7199
7237
|
document.initialState = initialState;
|
|
7200
7238
|
document.operations = initialOperations;
|
|
7201
7239
|
let result = document;
|
|
@@ -7534,21 +7572,186 @@ function UpdateStateExampleInputSchema() {
|
|
|
7534
7572
|
newExample: z.string()
|
|
7535
7573
|
});
|
|
7536
7574
|
}
|
|
7575
|
+
var dist = {};
|
|
7576
|
+
var hasRequiredDist;
|
|
7577
|
+
function requireDist() {
|
|
7578
|
+
if (hasRequiredDist) return dist;
|
|
7579
|
+
hasRequiredDist = 1;
|
|
7580
|
+
(function(exports) {
|
|
7581
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
7582
|
+
function getDefaultExportFromCjs2(x) {
|
|
7583
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
7584
|
+
}
|
|
7585
|
+
var browser = { exports: {} };
|
|
7586
|
+
var process2 = browser.exports = {};
|
|
7587
|
+
var cachedSetTimeout;
|
|
7588
|
+
var cachedClearTimeout;
|
|
7589
|
+
function defaultSetTimout() {
|
|
7590
|
+
throw new Error("setTimeout has not been defined");
|
|
7591
|
+
}
|
|
7592
|
+
function defaultClearTimeout() {
|
|
7593
|
+
throw new Error("clearTimeout has not been defined");
|
|
7594
|
+
}
|
|
7595
|
+
(function() {
|
|
7596
|
+
try {
|
|
7597
|
+
if (typeof setTimeout === "function") {
|
|
7598
|
+
cachedSetTimeout = setTimeout;
|
|
7599
|
+
} else {
|
|
7600
|
+
cachedSetTimeout = defaultSetTimout;
|
|
7601
|
+
}
|
|
7602
|
+
} catch (e) {
|
|
7603
|
+
cachedSetTimeout = defaultSetTimout;
|
|
7604
|
+
}
|
|
7605
|
+
try {
|
|
7606
|
+
if (typeof clearTimeout === "function") {
|
|
7607
|
+
cachedClearTimeout = clearTimeout;
|
|
7608
|
+
} else {
|
|
7609
|
+
cachedClearTimeout = defaultClearTimeout;
|
|
7610
|
+
}
|
|
7611
|
+
} catch (e) {
|
|
7612
|
+
cachedClearTimeout = defaultClearTimeout;
|
|
7613
|
+
}
|
|
7614
|
+
})();
|
|
7615
|
+
function runTimeout(fun) {
|
|
7616
|
+
if (cachedSetTimeout === setTimeout) {
|
|
7617
|
+
return setTimeout(fun, 0);
|
|
7618
|
+
}
|
|
7619
|
+
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
|
|
7620
|
+
cachedSetTimeout = setTimeout;
|
|
7621
|
+
return setTimeout(fun, 0);
|
|
7622
|
+
}
|
|
7623
|
+
try {
|
|
7624
|
+
return cachedSetTimeout(fun, 0);
|
|
7625
|
+
} catch (e) {
|
|
7626
|
+
try {
|
|
7627
|
+
return cachedSetTimeout.call(null, fun, 0);
|
|
7628
|
+
} catch (e2) {
|
|
7629
|
+
return cachedSetTimeout.call(this, fun, 0);
|
|
7630
|
+
}
|
|
7631
|
+
}
|
|
7632
|
+
}
|
|
7633
|
+
function runClearTimeout(marker) {
|
|
7634
|
+
if (cachedClearTimeout === clearTimeout) {
|
|
7635
|
+
return clearTimeout(marker);
|
|
7636
|
+
}
|
|
7637
|
+
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
|
|
7638
|
+
cachedClearTimeout = clearTimeout;
|
|
7639
|
+
return clearTimeout(marker);
|
|
7640
|
+
}
|
|
7641
|
+
try {
|
|
7642
|
+
return cachedClearTimeout(marker);
|
|
7643
|
+
} catch (e) {
|
|
7644
|
+
try {
|
|
7645
|
+
return cachedClearTimeout.call(null, marker);
|
|
7646
|
+
} catch (e2) {
|
|
7647
|
+
return cachedClearTimeout.call(this, marker);
|
|
7648
|
+
}
|
|
7649
|
+
}
|
|
7650
|
+
}
|
|
7651
|
+
var queue = [];
|
|
7652
|
+
var draining = false;
|
|
7653
|
+
var currentQueue;
|
|
7654
|
+
var queueIndex = -1;
|
|
7655
|
+
function cleanUpNextTick() {
|
|
7656
|
+
if (!draining || !currentQueue) {
|
|
7657
|
+
return;
|
|
7658
|
+
}
|
|
7659
|
+
draining = false;
|
|
7660
|
+
if (currentQueue.length) {
|
|
7661
|
+
queue = currentQueue.concat(queue);
|
|
7662
|
+
} else {
|
|
7663
|
+
queueIndex = -1;
|
|
7664
|
+
}
|
|
7665
|
+
if (queue.length) {
|
|
7666
|
+
drainQueue();
|
|
7667
|
+
}
|
|
7668
|
+
}
|
|
7669
|
+
function drainQueue() {
|
|
7670
|
+
if (draining) {
|
|
7671
|
+
return;
|
|
7672
|
+
}
|
|
7673
|
+
var timeout = runTimeout(cleanUpNextTick);
|
|
7674
|
+
draining = true;
|
|
7675
|
+
var len = queue.length;
|
|
7676
|
+
while (len) {
|
|
7677
|
+
currentQueue = queue;
|
|
7678
|
+
queue = [];
|
|
7679
|
+
while (++queueIndex < len) {
|
|
7680
|
+
if (currentQueue) {
|
|
7681
|
+
currentQueue[queueIndex].run();
|
|
7682
|
+
}
|
|
7683
|
+
}
|
|
7684
|
+
queueIndex = -1;
|
|
7685
|
+
len = queue.length;
|
|
7686
|
+
}
|
|
7687
|
+
currentQueue = null;
|
|
7688
|
+
draining = false;
|
|
7689
|
+
runClearTimeout(timeout);
|
|
7690
|
+
}
|
|
7691
|
+
process2.nextTick = function(fun) {
|
|
7692
|
+
var args = new Array(arguments.length - 1);
|
|
7693
|
+
if (arguments.length > 1) {
|
|
7694
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
7695
|
+
args[i - 1] = arguments[i];
|
|
7696
|
+
}
|
|
7697
|
+
}
|
|
7698
|
+
queue.push(new Item(fun, args));
|
|
7699
|
+
if (queue.length === 1 && !draining) {
|
|
7700
|
+
runTimeout(drainQueue);
|
|
7701
|
+
}
|
|
7702
|
+
};
|
|
7703
|
+
function Item(fun, array) {
|
|
7704
|
+
this.fun = fun;
|
|
7705
|
+
this.array = array;
|
|
7706
|
+
}
|
|
7707
|
+
Item.prototype.run = function() {
|
|
7708
|
+
this.fun.apply(null, this.array);
|
|
7709
|
+
};
|
|
7710
|
+
process2.title = "browser";
|
|
7711
|
+
process2.browser = true;
|
|
7712
|
+
process2.env = {};
|
|
7713
|
+
process2.argv = [];
|
|
7714
|
+
process2.version = "";
|
|
7715
|
+
process2.versions = {};
|
|
7716
|
+
function noop2() {
|
|
7717
|
+
}
|
|
7718
|
+
process2.on = noop2;
|
|
7719
|
+
process2.addListener = noop2;
|
|
7720
|
+
process2.once = noop2;
|
|
7721
|
+
process2.off = noop2;
|
|
7722
|
+
process2.removeListener = noop2;
|
|
7723
|
+
process2.removeAllListeners = noop2;
|
|
7724
|
+
process2.emit = noop2;
|
|
7725
|
+
process2.prependListener = noop2;
|
|
7726
|
+
process2.prependOnceListener = noop2;
|
|
7727
|
+
process2.listeners = function(name2) {
|
|
7728
|
+
return [];
|
|
7729
|
+
};
|
|
7730
|
+
process2.binding = function(name2) {
|
|
7731
|
+
throw new Error("process.binding is not supported");
|
|
7732
|
+
};
|
|
7733
|
+
process2.cwd = function() {
|
|
7734
|
+
return "/";
|
|
7735
|
+
};
|
|
7736
|
+
process2.chdir = function(dir) {
|
|
7737
|
+
throw new Error("process.chdir is not supported");
|
|
7738
|
+
};
|
|
7739
|
+
process2.umask = function() {
|
|
7740
|
+
return 0;
|
|
7741
|
+
};
|
|
7742
|
+
var browserExports = browser.exports;
|
|
7743
|
+
const process$1 = /* @__PURE__ */ getDefaultExportFromCjs2(browserExports);
|
|
7744
|
+
exports.default = process$1;
|
|
7745
|
+
exports.process = process$1;
|
|
7746
|
+
})(dist);
|
|
7747
|
+
return dist;
|
|
7748
|
+
}
|
|
7749
|
+
var distExports = requireDist();
|
|
7750
|
+
const process = /* @__PURE__ */ getDefaultExportFromCjs(distExports);
|
|
7537
7751
|
function commonjsRequire(path) {
|
|
7538
7752
|
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
7753
|
}
|
|
7540
7754
|
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
7755
|
var hasRequiredJszip_min;
|
|
7553
7756
|
function requireJszip_min() {
|
|
7554
7757
|
if (hasRequiredJszip_min) return jszip_min.exports;
|
|
@@ -10323,9 +10526,10 @@ function validateOperations(operations) {
|
|
|
10323
10526
|
}
|
|
10324
10527
|
function createZip(document) {
|
|
10325
10528
|
const zip = new JSZip();
|
|
10326
|
-
const { name: name2, revision, documentType: documentType2, created, lastModified } = document;
|
|
10529
|
+
const { name: name2, slug, revision, documentType: documentType2, created, lastModified } = document;
|
|
10327
10530
|
const header = {
|
|
10328
10531
|
name: name2,
|
|
10532
|
+
slug,
|
|
10329
10533
|
revision,
|
|
10330
10534
|
documentType: documentType2,
|
|
10331
10535
|
created,
|
|
@@ -10740,40 +10944,60 @@ const reducer$2 = {
|
|
|
10740
10944
|
state.triggers = state.triggers.filter((trigger) => trigger.id !== action.input.triggerId);
|
|
10741
10945
|
}
|
|
10742
10946
|
};
|
|
10743
|
-
|
|
10744
|
-
|
|
10745
|
-
|
|
10947
|
+
class DocumentModelNotFoundError extends Error {
|
|
10948
|
+
constructor(id, cause) {
|
|
10949
|
+
super(`Document model "${id}" not found`, { cause });
|
|
10950
|
+
__publicField(this, "id");
|
|
10951
|
+
this.id = id;
|
|
10952
|
+
}
|
|
10746
10953
|
}
|
|
10747
|
-
|
|
10748
|
-
|
|
10954
|
+
class OperationError extends Error {
|
|
10955
|
+
constructor(status, operation, message, cause) {
|
|
10956
|
+
super(message, { cause: cause ?? operation });
|
|
10957
|
+
__publicField(this, "status");
|
|
10958
|
+
__publicField(this, "operation");
|
|
10959
|
+
this.status = status;
|
|
10960
|
+
this.operation = operation;
|
|
10961
|
+
}
|
|
10749
10962
|
}
|
|
10750
|
-
|
|
10751
|
-
|
|
10752
|
-
|
|
10753
|
-
if (!getRandomValues) {
|
|
10754
|
-
if (typeof crypto === "undefined" || !crypto.getRandomValues) {
|
|
10755
|
-
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
10756
|
-
}
|
|
10757
|
-
getRandomValues = crypto.getRandomValues.bind(crypto);
|
|
10963
|
+
class ConflictOperationError extends OperationError {
|
|
10964
|
+
constructor(existingOperation, newOperation) {
|
|
10965
|
+
super("CONFLICT", newOperation, `Conflicting operation on index ${newOperation.index}`, { existingOperation, newOperation });
|
|
10758
10966
|
}
|
|
10759
|
-
return getRandomValues(rnds8);
|
|
10760
10967
|
}
|
|
10761
|
-
|
|
10762
|
-
|
|
10763
|
-
|
|
10764
|
-
var _a2;
|
|
10765
|
-
if (native.randomUUID && true && !options) {
|
|
10766
|
-
return native.randomUUID();
|
|
10968
|
+
class DocumentIdValidationError extends Error {
|
|
10969
|
+
constructor(documentId) {
|
|
10970
|
+
super(`Invalid document id: ${documentId}`);
|
|
10767
10971
|
}
|
|
10768
|
-
|
|
10769
|
-
|
|
10770
|
-
|
|
10771
|
-
|
|
10972
|
+
}
|
|
10973
|
+
class DocumentSlugValidationError extends Error {
|
|
10974
|
+
constructor(slug) {
|
|
10975
|
+
super(`Invalid slug: ${slug}`);
|
|
10976
|
+
}
|
|
10977
|
+
}
|
|
10978
|
+
class DocumentAlreadyExistsError extends Error {
|
|
10979
|
+
constructor(documentId) {
|
|
10980
|
+
super(`Document with id ${documentId} uses id or slug that already exists`);
|
|
10981
|
+
__publicField(this, "documentId");
|
|
10982
|
+
this.documentId = documentId;
|
|
10772
10983
|
}
|
|
10773
|
-
rnds[6] = rnds[6] & 15 | 64;
|
|
10774
|
-
rnds[8] = rnds[8] & 63 | 128;
|
|
10775
|
-
return unsafeStringify(rnds);
|
|
10776
10984
|
}
|
|
10985
|
+
class DocumentNotFoundError extends Error {
|
|
10986
|
+
constructor(documentId) {
|
|
10987
|
+
super(`Document with id ${documentId} not found`);
|
|
10988
|
+
__publicField(this, "documentId");
|
|
10989
|
+
this.documentId = documentId;
|
|
10990
|
+
}
|
|
10991
|
+
}
|
|
10992
|
+
class SynchronizationUnitNotFoundError extends Error {
|
|
10993
|
+
constructor(message, syncUnitId) {
|
|
10994
|
+
super(message);
|
|
10995
|
+
__publicField(this, "syncUnitId");
|
|
10996
|
+
this.syncUnitId = syncUnitId;
|
|
10997
|
+
}
|
|
10998
|
+
}
|
|
10999
|
+
const isValidDocumentId = (id) => /^[a-zA-Z0-9_-]+$/.test(id);
|
|
11000
|
+
const isValidSlug = (slug) => /^[a-zA-Z0-9_-]+$/.test(slug);
|
|
10777
11001
|
function isFileNode(node) {
|
|
10778
11002
|
return node.kind === "file";
|
|
10779
11003
|
}
|
|
@@ -10837,7 +11061,7 @@ function generateNodesCopy(src, idGenerator, nodes) {
|
|
|
10837
11061
|
function generateSynchronizationUnitId(nodes) {
|
|
10838
11062
|
let syncId = "";
|
|
10839
11063
|
while (!syncId || nodes.find((node) => isFileNode(node) && node.synchronizationUnits.find((unit) => unit.syncId === syncId))) {
|
|
10840
|
-
syncId =
|
|
11064
|
+
syncId = generateId();
|
|
10841
11065
|
}
|
|
10842
11066
|
return syncId;
|
|
10843
11067
|
}
|
|
@@ -10915,6 +11139,9 @@ const reducer$1 = {
|
|
|
10915
11139
|
if (state.nodes.find((node) => node.id === action.input.id)) {
|
|
10916
11140
|
throw new Error(`Node with id ${action.input.id} already exists!`);
|
|
10917
11141
|
}
|
|
11142
|
+
if (!isValidDocumentId(action.input.id)) {
|
|
11143
|
+
throw new DocumentIdValidationError(action.input.id);
|
|
11144
|
+
}
|
|
10918
11145
|
const name2 = handleTargetNameCollisions({
|
|
10919
11146
|
nodes: state.nodes,
|
|
10920
11147
|
srcName: action.input.name,
|
|
@@ -11007,6 +11234,9 @@ const reducer$1 = {
|
|
|
11007
11234
|
if (!node) {
|
|
11008
11235
|
throw new Error(`Node with id ${action.input.srcId} not found`);
|
|
11009
11236
|
}
|
|
11237
|
+
if (!isValidDocumentId(action.input.targetId)) {
|
|
11238
|
+
throw new DocumentIdValidationError(action.input.targetId);
|
|
11239
|
+
}
|
|
11010
11240
|
const duplicatedNode = state.nodes.find((node2) => node2.id === action.input.targetId);
|
|
11011
11241
|
if (duplicatedNode) {
|
|
11012
11242
|
throw new Error(`Node with id ${action.input.targetId} already exists`);
|
|
@@ -11018,8 +11248,9 @@ const reducer$1 = {
|
|
|
11018
11248
|
});
|
|
11019
11249
|
const newNode = {
|
|
11020
11250
|
...node,
|
|
11021
|
-
name: name2,
|
|
11022
11251
|
id: action.input.targetId,
|
|
11252
|
+
slug: action.input.targetId,
|
|
11253
|
+
name: name2,
|
|
11023
11254
|
parentFolder: action.input.targetParentFolder || null
|
|
11024
11255
|
};
|
|
11025
11256
|
const isFile = isFileNode(newNode);
|
|
@@ -11154,8 +11385,7 @@ const initialGlobalState = {
|
|
|
11154
11385
|
id: "",
|
|
11155
11386
|
name: "",
|
|
11156
11387
|
nodes: [],
|
|
11157
|
-
icon: null
|
|
11158
|
-
slug: null
|
|
11388
|
+
icon: null
|
|
11159
11389
|
};
|
|
11160
11390
|
const initialLocalState = {
|
|
11161
11391
|
listeners: [],
|
|
@@ -11416,8 +11646,7 @@ const driveDocumentModelModule = {
|
|
|
11416
11646
|
actions: { ...creators, ...actions },
|
|
11417
11647
|
utils: { ...documentModelUtils, ...customUtils }
|
|
11418
11648
|
};
|
|
11419
|
-
|
|
11420
|
-
const LEVELS = {
|
|
11649
|
+
const LogLevels = {
|
|
11421
11650
|
verbose: 1,
|
|
11422
11651
|
debug: 2,
|
|
11423
11652
|
info: 3,
|
|
@@ -11425,6 +11654,10 @@ const LEVELS = {
|
|
|
11425
11654
|
error: 5,
|
|
11426
11655
|
silent: 6
|
|
11427
11656
|
};
|
|
11657
|
+
function isLogLevel(value) {
|
|
11658
|
+
return typeof value === "string" && value in LogLevels;
|
|
11659
|
+
}
|
|
11660
|
+
var define_process_env_default = {};
|
|
11428
11661
|
class ConsoleLogger {
|
|
11429
11662
|
constructor(tags, errorHandler2) {
|
|
11430
11663
|
__privateAdd(this, _ConsoleLogger_instances);
|
|
@@ -11444,6 +11677,10 @@ class ConsoleLogger {
|
|
|
11444
11677
|
return __privateGet(this, _levelString);
|
|
11445
11678
|
}
|
|
11446
11679
|
set level(level) {
|
|
11680
|
+
if (level !== "env" && !isLogLevel(level)) {
|
|
11681
|
+
throw new Error(`Invalid log level: ${JSON.stringify(level)}.
|
|
11682
|
+
Must be one of ${Object.keys(LogLevels).concat(["env"]).join(", ")}.`);
|
|
11683
|
+
}
|
|
11447
11684
|
__privateSet(this, _levelString, level);
|
|
11448
11685
|
}
|
|
11449
11686
|
get errorHandler() {
|
|
@@ -11456,31 +11693,31 @@ class ConsoleLogger {
|
|
|
11456
11693
|
return this.debug(...data);
|
|
11457
11694
|
}
|
|
11458
11695
|
verbose(...data) {
|
|
11459
|
-
if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) >
|
|
11696
|
+
if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LogLevels.verbose) {
|
|
11460
11697
|
return;
|
|
11461
11698
|
}
|
|
11462
11699
|
return this.debug(...data);
|
|
11463
11700
|
}
|
|
11464
11701
|
debug(...data) {
|
|
11465
|
-
if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) >
|
|
11702
|
+
if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LogLevels.debug) {
|
|
11466
11703
|
return;
|
|
11467
11704
|
}
|
|
11468
11705
|
return console.debug(...[...__privateGet(this, _tags), ...data]);
|
|
11469
11706
|
}
|
|
11470
11707
|
info(...data) {
|
|
11471
|
-
if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) >
|
|
11708
|
+
if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LogLevels.info) {
|
|
11472
11709
|
return;
|
|
11473
11710
|
}
|
|
11474
11711
|
return console.info(...[...__privateGet(this, _tags), ...data]);
|
|
11475
11712
|
}
|
|
11476
11713
|
warn(...data) {
|
|
11477
|
-
if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) >
|
|
11714
|
+
if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LogLevels.warn) {
|
|
11478
11715
|
return;
|
|
11479
11716
|
}
|
|
11480
11717
|
return console.warn(...[...__privateGet(this, _tags), ...data]);
|
|
11481
11718
|
}
|
|
11482
11719
|
error(...data) {
|
|
11483
|
-
if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) >
|
|
11720
|
+
if (__privateGet(this, _ConsoleLogger_instances, levelValue_get) > LogLevels.error) {
|
|
11484
11721
|
return;
|
|
11485
11722
|
}
|
|
11486
11723
|
if (__privateGet(this, _errorHandler)) {
|
|
@@ -11495,16 +11732,16 @@ _errorHandler = new WeakMap();
|
|
|
11495
11732
|
_ConsoleLogger_instances = new WeakSet();
|
|
11496
11733
|
levelValue_get = function() {
|
|
11497
11734
|
if (__privateGet(this, _levelString) === "env") {
|
|
11498
|
-
const envLevel = typeof process !== "undefined" ? define_process_env_default.LOG_LEVEL : void 0;
|
|
11735
|
+
const envLevel = typeof process !== "undefined" && "env" in process ? define_process_env_default.LOG_LEVEL : void 0;
|
|
11499
11736
|
if (!envLevel) {
|
|
11500
|
-
return
|
|
11737
|
+
return LogLevels.debug;
|
|
11501
11738
|
}
|
|
11502
|
-
if (!(envLevel in
|
|
11503
|
-
return
|
|
11739
|
+
if (!(envLevel in LogLevels)) {
|
|
11740
|
+
return LogLevels.debug;
|
|
11504
11741
|
}
|
|
11505
|
-
return
|
|
11742
|
+
return LogLevels[envLevel];
|
|
11506
11743
|
}
|
|
11507
|
-
return
|
|
11744
|
+
return LogLevels[__privateGet(this, _levelString)];
|
|
11508
11745
|
};
|
|
11509
11746
|
const loggerInstance = new ConsoleLogger();
|
|
11510
11747
|
let logLevel = "env";
|
|
@@ -11526,48 +11763,6 @@ const childLogger = (tags) => {
|
|
|
11526
11763
|
logger2.errorHandler = errorHandler;
|
|
11527
11764
|
return logger2;
|
|
11528
11765
|
};
|
|
11529
|
-
class DocumentModelNotFoundError extends Error {
|
|
11530
|
-
constructor(id, cause) {
|
|
11531
|
-
super(`Document model "${id}" not found`, { cause });
|
|
11532
|
-
__publicField(this, "id");
|
|
11533
|
-
this.id = id;
|
|
11534
|
-
}
|
|
11535
|
-
}
|
|
11536
|
-
class OperationError extends Error {
|
|
11537
|
-
constructor(status, operation, message, cause) {
|
|
11538
|
-
super(message, { cause: cause ?? operation });
|
|
11539
|
-
__publicField(this, "status");
|
|
11540
|
-
__publicField(this, "operation");
|
|
11541
|
-
this.status = status;
|
|
11542
|
-
this.operation = operation;
|
|
11543
|
-
}
|
|
11544
|
-
}
|
|
11545
|
-
class ConflictOperationError extends OperationError {
|
|
11546
|
-
constructor(existingOperation, newOperation) {
|
|
11547
|
-
super("CONFLICT", newOperation, `Conflicting operation on index ${newOperation.index}`, { existingOperation, newOperation });
|
|
11548
|
-
}
|
|
11549
|
-
}
|
|
11550
|
-
class DocumentAlreadyExistsError extends Error {
|
|
11551
|
-
constructor(documentId) {
|
|
11552
|
-
super(`Document with id ${documentId} already exists`);
|
|
11553
|
-
__publicField(this, "documentId");
|
|
11554
|
-
this.documentId = documentId;
|
|
11555
|
-
}
|
|
11556
|
-
}
|
|
11557
|
-
class DocumentNotFoundError extends Error {
|
|
11558
|
-
constructor(documentId) {
|
|
11559
|
-
super(`Document with id ${documentId} not found`);
|
|
11560
|
-
__publicField(this, "documentId");
|
|
11561
|
-
this.documentId = documentId;
|
|
11562
|
-
}
|
|
11563
|
-
}
|
|
11564
|
-
class SynchronizationUnitNotFoundError extends Error {
|
|
11565
|
-
constructor(message, syncUnitId) {
|
|
11566
|
-
super(message);
|
|
11567
|
-
__publicField(this, "syncUnitId");
|
|
11568
|
-
this.syncUnitId = syncUnitId;
|
|
11569
|
-
}
|
|
11570
|
-
}
|
|
11571
11766
|
var RunAsap;
|
|
11572
11767
|
(function(RunAsap2) {
|
|
11573
11768
|
RunAsap2.useMessageChannel = (() => {
|
|
@@ -11707,9 +11902,6 @@ function mergeOperations(currentOperations, newOperations) {
|
|
|
11707
11902
|
return { ...acc, [curr.scope]: [...existingOperations, curr] };
|
|
11708
11903
|
}, currentOperations);
|
|
11709
11904
|
}
|
|
11710
|
-
function generateUUID() {
|
|
11711
|
-
return generateId();
|
|
11712
|
-
}
|
|
11713
11905
|
function isBefore(dateA, dateB) {
|
|
11714
11906
|
return new Date(dateA) < new Date(dateB);
|
|
11715
11907
|
}
|
|
@@ -11810,7 +12002,7 @@ class BaseQueueManager {
|
|
|
11810
12002
|
if (!this.delegate) {
|
|
11811
12003
|
throw new Error("No server delegate defined");
|
|
11812
12004
|
}
|
|
11813
|
-
const jobId =
|
|
12005
|
+
const jobId = generateId();
|
|
11814
12006
|
const queue = this.getQueue(job.driveId, job.documentId);
|
|
11815
12007
|
if (await queue.isDeleted()) {
|
|
11816
12008
|
throw new Error("Queue is deleted");
|
|
@@ -22234,7 +22426,7 @@ class ReadModeService {
|
|
|
22234
22426
|
return Promise.resolve(result ? { ...result.drive, readContext: result.context } : new ReadDriveNotFoundError(id));
|
|
22235
22427
|
}
|
|
22236
22428
|
async getReadDriveBySlug(slug) {
|
|
22237
|
-
const readDrive = [...__privateGet(this, _drives).values()].find(({ drive }) => drive.
|
|
22429
|
+
const readDrive = [...__privateGet(this, _drives).values()].find(({ drive }) => drive.slug === slug);
|
|
22238
22430
|
return Promise.resolve(readDrive ? { ...readDrive.drive, readContext: readDrive.context } : new ReadDriveSlugNotFoundError(slug));
|
|
22239
22431
|
}
|
|
22240
22432
|
getReadDriveContext(id) {
|
|
@@ -22699,7 +22891,7 @@ class PullResponderTransmitter {
|
|
|
22699
22891
|
static async executePull(driveId, trigger, onStrandUpdate, onError, onRevisions, onAcknowledge) {
|
|
22700
22892
|
var _a2, _b;
|
|
22701
22893
|
staticLogger().verbose(`executePull(driveId: ${driveId}), trigger:`, trigger);
|
|
22702
|
-
staticLogger().
|
|
22894
|
+
staticLogger().debug(`[SYNC DEBUG] PullResponderTransmitter.executePull starting for drive: ${driveId}, listenerId: ${trigger.data.listenerId}`);
|
|
22703
22895
|
const { url } = trigger.data;
|
|
22704
22896
|
let strands;
|
|
22705
22897
|
let error;
|
|
@@ -22863,7 +23055,7 @@ class PullResponderTransmitter {
|
|
|
22863
23055
|
};
|
|
22864
23056
|
const listenerId = await PullResponderTransmitter.registerPullResponder(driveId, url, filter);
|
|
22865
23057
|
const pullTrigger = {
|
|
22866
|
-
id:
|
|
23058
|
+
id: generateId(),
|
|
22867
23059
|
type: "PullResponder",
|
|
22868
23060
|
driveId,
|
|
22869
23061
|
filter,
|
|
@@ -23296,7 +23488,7 @@ class BaseDocumentDriveServer {
|
|
|
23296
23488
|
async _initializeDrive(driveId) {
|
|
23297
23489
|
var _a2, _b, _c;
|
|
23298
23490
|
const drive = await this.getDrive(driveId);
|
|
23299
|
-
this.logger.verbose(`[SYNC DEBUG] Initializing drive ${driveId} with slug "${drive.
|
|
23491
|
+
this.logger.verbose(`[SYNC DEBUG] Initializing drive ${driveId} with slug "${drive.slug}"`);
|
|
23300
23492
|
await this.synchronizationManager.initializeDriveSyncStatus(driveId, drive);
|
|
23301
23493
|
if (this.shouldSyncRemoteDrive(drive)) {
|
|
23302
23494
|
this.logger.verbose(`[SYNC DEBUG] Starting sync for remote drive ${driveId}`);
|
|
@@ -23372,23 +23564,22 @@ class BaseDocumentDriveServer {
|
|
|
23372
23564
|
return [...this.documentModelModules];
|
|
23373
23565
|
}
|
|
23374
23566
|
async addDrive(input, preferredEditor) {
|
|
23375
|
-
const id = input.global.id ||
|
|
23567
|
+
const id = input.global.id || generateId();
|
|
23376
23568
|
if (!id) {
|
|
23377
23569
|
throw new Error("Invalid Drive Id");
|
|
23378
23570
|
}
|
|
23379
|
-
const drives = await this.legacyStorage.getDrives();
|
|
23380
|
-
if (drives.includes(id)) {
|
|
23381
|
-
throw new DocumentAlreadyExistsError(id);
|
|
23382
|
-
}
|
|
23383
23571
|
const document = createDocument({
|
|
23384
23572
|
state: input
|
|
23385
23573
|
});
|
|
23574
|
+
if (input.slug && input.slug.length > 0) {
|
|
23575
|
+
document.slug = input.slug;
|
|
23576
|
+
}
|
|
23386
23577
|
document.meta = {
|
|
23387
23578
|
preferredEditor
|
|
23388
23579
|
};
|
|
23389
|
-
await this.
|
|
23390
|
-
if (input.
|
|
23391
|
-
await this.cache.deleteDriveBySlug(input.
|
|
23580
|
+
await this.documentStorage.create(id, document);
|
|
23581
|
+
if (input.slug && input.slug.length > 0) {
|
|
23582
|
+
await this.cache.deleteDriveBySlug(input.slug);
|
|
23392
23583
|
}
|
|
23393
23584
|
await this._initializeDrive(id);
|
|
23394
23585
|
this.eventEmitter.emit("driveAdded", document);
|
|
@@ -23402,10 +23593,10 @@ class BaseDocumentDriveServer {
|
|
|
23402
23593
|
pullInterval
|
|
23403
23594
|
});
|
|
23404
23595
|
return await this.addDrive({
|
|
23596
|
+
slug,
|
|
23405
23597
|
global: {
|
|
23406
23598
|
id,
|
|
23407
23599
|
name: name2,
|
|
23408
|
-
slug,
|
|
23409
23600
|
icon: icon ?? null
|
|
23410
23601
|
},
|
|
23411
23602
|
local: {
|
|
@@ -23421,16 +23612,25 @@ class BaseDocumentDriveServer {
|
|
|
23421
23612
|
this.stopSyncRemoteDrive(driveId),
|
|
23422
23613
|
this.listenerManager.removeDrive(driveId),
|
|
23423
23614
|
this.cache.deleteDrive(driveId),
|
|
23424
|
-
this.
|
|
23615
|
+
this.documentStorage.delete(driveId)
|
|
23425
23616
|
]);
|
|
23617
|
+
this.eventEmitter.emit("driveDeleted", driveId);
|
|
23426
23618
|
result.forEach((r) => {
|
|
23427
23619
|
if (r.status === "rejected") {
|
|
23428
23620
|
throw r.reason;
|
|
23429
23621
|
}
|
|
23430
23622
|
});
|
|
23431
23623
|
}
|
|
23432
|
-
|
|
23433
|
-
|
|
23624
|
+
// TODO: paginate
|
|
23625
|
+
async getDrives() {
|
|
23626
|
+
const drives = [];
|
|
23627
|
+
let cursor;
|
|
23628
|
+
do {
|
|
23629
|
+
const { documents, nextCursor } = await this.documentStorage.findByType("powerhouse/document-drive", 100, cursor);
|
|
23630
|
+
drives.push(...documents);
|
|
23631
|
+
cursor = nextCursor;
|
|
23632
|
+
} while (cursor);
|
|
23633
|
+
return drives;
|
|
23434
23634
|
}
|
|
23435
23635
|
async getDrive(driveId, options) {
|
|
23436
23636
|
let document;
|
|
@@ -23506,6 +23706,7 @@ class BaseDocumentDriveServer {
|
|
|
23506
23706
|
const document = input.document ?? this.getDocumentModelModule(input.documentType).utils.createDocument();
|
|
23507
23707
|
const documentStorage = {
|
|
23508
23708
|
name: document.name,
|
|
23709
|
+
slug: document.slug,
|
|
23509
23710
|
revision: document.revision,
|
|
23510
23711
|
documentType: document.documentType,
|
|
23511
23712
|
created: document.created,
|
|
@@ -23654,12 +23855,18 @@ class BaseDocumentDriveServer {
|
|
|
23654
23855
|
handler = () => this.deleteDocument(driveId, signal.input.id);
|
|
23655
23856
|
break;
|
|
23656
23857
|
case "COPY_CHILD_DOCUMENT":
|
|
23657
|
-
handler = () => this.getDocument(driveId, signal.input.id).then((documentToCopy) =>
|
|
23658
|
-
|
|
23659
|
-
|
|
23660
|
-
|
|
23661
|
-
|
|
23662
|
-
|
|
23858
|
+
handler = () => this.getDocument(driveId, signal.input.id).then((documentToCopy) => {
|
|
23859
|
+
const doc = {
|
|
23860
|
+
...documentToCopy,
|
|
23861
|
+
slug: signal.input.newId
|
|
23862
|
+
};
|
|
23863
|
+
return this.createDocument(driveId, {
|
|
23864
|
+
id: signal.input.newId,
|
|
23865
|
+
documentType: documentToCopy.documentType,
|
|
23866
|
+
document: doc,
|
|
23867
|
+
synchronizationUnits: signal.input.synchronizationUnits
|
|
23868
|
+
});
|
|
23869
|
+
});
|
|
23663
23870
|
break;
|
|
23664
23871
|
}
|
|
23665
23872
|
if (handler) {
|
|
@@ -23916,13 +24123,6 @@ class BaseDocumentDriveServer {
|
|
|
23916
24123
|
addDriveOperation(driveId, operation, options) {
|
|
23917
24124
|
return this.addDriveOperations(driveId, [operation], options);
|
|
23918
24125
|
}
|
|
23919
|
-
async clearStorage() {
|
|
23920
|
-
var _a2, _b;
|
|
23921
|
-
for (const drive of await this.getDrives()) {
|
|
23922
|
-
await this.deleteDrive(drive);
|
|
23923
|
-
}
|
|
23924
|
-
await ((_b = (_a2 = this.legacyStorage).clearStorage) == null ? void 0 : _b.call(_a2));
|
|
23925
|
-
}
|
|
23926
24126
|
async _addDriveOperations(driveId, callback) {
|
|
23927
24127
|
if (!this.legacyStorage.addDriveOperationsWithTransaction) {
|
|
23928
24128
|
const documentStorage = await this.documentStorage.get(driveId);
|
|
@@ -24197,17 +24397,31 @@ class MemoryStorage {
|
|
|
24197
24397
|
exists(documentId) {
|
|
24198
24398
|
return Promise.resolve(!!this.documents[documentId]);
|
|
24199
24399
|
}
|
|
24200
|
-
// TODO: this should throw an error if the document already exists.
|
|
24201
24400
|
create(documentId, document) {
|
|
24202
|
-
|
|
24401
|
+
if (!isValidDocumentId(documentId)) {
|
|
24402
|
+
throw new DocumentIdValidationError(documentId);
|
|
24403
|
+
}
|
|
24404
|
+
if (this.documents[documentId]) {
|
|
24405
|
+
throw new DocumentAlreadyExistsError(documentId);
|
|
24406
|
+
}
|
|
24407
|
+
const slug = document.slug.length > 0 ? document.slug : documentId;
|
|
24408
|
+
if (!isValidSlug(slug)) {
|
|
24409
|
+
throw new DocumentSlugValidationError(slug);
|
|
24410
|
+
}
|
|
24411
|
+
if (slug && this.slugToDocumentId[slug]) {
|
|
24412
|
+
throw new DocumentAlreadyExistsError(documentId);
|
|
24413
|
+
}
|
|
24414
|
+
document.slug = slug;
|
|
24203
24415
|
this.documents[documentId] = document;
|
|
24204
|
-
const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
|
|
24205
24416
|
if (slug) {
|
|
24206
24417
|
if (this.slugToDocumentId[slug]) {
|
|
24207
|
-
throw new
|
|
24418
|
+
throw new DocumentAlreadyExistsError(documentId);
|
|
24208
24419
|
}
|
|
24209
24420
|
this.slugToDocumentId[slug] = documentId;
|
|
24210
24421
|
}
|
|
24422
|
+
if (document.documentType === "powerhouse/document-drive") {
|
|
24423
|
+
this.updateDriveManifest(documentId, { documentIds: /* @__PURE__ */ new Set() });
|
|
24424
|
+
}
|
|
24211
24425
|
return Promise.resolve();
|
|
24212
24426
|
}
|
|
24213
24427
|
get(documentId) {
|
|
@@ -24224,20 +24438,56 @@ class MemoryStorage {
|
|
|
24224
24438
|
}
|
|
24225
24439
|
return this.get(documentId);
|
|
24226
24440
|
}
|
|
24441
|
+
async findByType(documentModelType, limit = 100, cursor) {
|
|
24442
|
+
const documentsAndIds = Object.entries(this.documents).filter(([_, doc]) => doc.documentType === documentModelType).map(([id, doc]) => ({
|
|
24443
|
+
id,
|
|
24444
|
+
document: doc
|
|
24445
|
+
}));
|
|
24446
|
+
documentsAndIds.sort((a, b) => {
|
|
24447
|
+
const aDate = new Date(a.document.created);
|
|
24448
|
+
const bDate = new Date(b.document.created);
|
|
24449
|
+
if (aDate.getTime() === bDate.getTime()) {
|
|
24450
|
+
const aId = a.id;
|
|
24451
|
+
const bId = b.id;
|
|
24452
|
+
return aId.localeCompare(bId);
|
|
24453
|
+
}
|
|
24454
|
+
return aDate.getTime() - bDate.getTime();
|
|
24455
|
+
});
|
|
24456
|
+
let startIndex = 0;
|
|
24457
|
+
if (cursor) {
|
|
24458
|
+
const index = documentsAndIds.findIndex(({ id }) => id === cursor);
|
|
24459
|
+
if (index !== -1) {
|
|
24460
|
+
startIndex = index;
|
|
24461
|
+
}
|
|
24462
|
+
}
|
|
24463
|
+
const endIndex = Math.min(startIndex + limit, documentsAndIds.length);
|
|
24464
|
+
let nextCursor;
|
|
24465
|
+
if (endIndex < documentsAndIds.length) {
|
|
24466
|
+
nextCursor = documentsAndIds[endIndex].id;
|
|
24467
|
+
}
|
|
24468
|
+
return {
|
|
24469
|
+
documents: documentsAndIds.slice(startIndex, endIndex).map(({ id }) => id),
|
|
24470
|
+
nextCursor
|
|
24471
|
+
};
|
|
24472
|
+
}
|
|
24227
24473
|
async delete(documentId) {
|
|
24228
|
-
var _a2;
|
|
24229
24474
|
const document = this.documents[documentId];
|
|
24230
24475
|
if (document) {
|
|
24231
|
-
const slug =
|
|
24476
|
+
const slug = document.slug.length > 0 ? document.slug : documentId;
|
|
24232
24477
|
if (slug && this.slugToDocumentId[slug] === documentId) {
|
|
24233
24478
|
delete this.slugToDocumentId[slug];
|
|
24234
24479
|
}
|
|
24235
24480
|
}
|
|
24236
|
-
const
|
|
24237
|
-
for (const
|
|
24238
|
-
|
|
24239
|
-
|
|
24240
|
-
|
|
24481
|
+
const parents = await this.getParents(documentId);
|
|
24482
|
+
for (const parent of parents) {
|
|
24483
|
+
await this.removeChild(parent, documentId);
|
|
24484
|
+
}
|
|
24485
|
+
const children = await this.getChildren(documentId);
|
|
24486
|
+
for (const child of children) {
|
|
24487
|
+
const childParents = await this.getParents(child);
|
|
24488
|
+
if (childParents.length === 1) {
|
|
24489
|
+
await this.delete(child);
|
|
24490
|
+
}
|
|
24241
24491
|
}
|
|
24242
24492
|
delete this.driveManifests[documentId];
|
|
24243
24493
|
if (this.documents[documentId]) {
|
|
@@ -24271,14 +24521,26 @@ class MemoryStorage {
|
|
|
24271
24521
|
const manifest = this.getManifest(parentId);
|
|
24272
24522
|
return [...manifest.documentIds];
|
|
24273
24523
|
}
|
|
24524
|
+
async getParents(childId) {
|
|
24525
|
+
const parents = [];
|
|
24526
|
+
for (const [driveId, manifest] of Object.entries(this.driveManifests)) {
|
|
24527
|
+
if (manifest.documentIds.has(childId)) {
|
|
24528
|
+
parents.push(driveId);
|
|
24529
|
+
}
|
|
24530
|
+
}
|
|
24531
|
+
return parents;
|
|
24532
|
+
}
|
|
24274
24533
|
////////////////////////////////
|
|
24275
|
-
//
|
|
24534
|
+
// IDocumentAdminStorage
|
|
24276
24535
|
////////////////////////////////
|
|
24277
|
-
async
|
|
24536
|
+
async clear() {
|
|
24278
24537
|
this.documents = {};
|
|
24279
24538
|
this.driveManifests = {};
|
|
24280
24539
|
this.slugToDocumentId = {};
|
|
24281
24540
|
}
|
|
24541
|
+
////////////////////////////////
|
|
24542
|
+
// IDriveStorage
|
|
24543
|
+
////////////////////////////////
|
|
24282
24544
|
async addDocumentOperations(drive, id, operations, header) {
|
|
24283
24545
|
const document = await this.get(id);
|
|
24284
24546
|
if (!document) {
|
|
@@ -24291,13 +24553,6 @@ class MemoryStorage {
|
|
|
24291
24553
|
operations: mergedOperations
|
|
24292
24554
|
};
|
|
24293
24555
|
}
|
|
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
24556
|
async addDriveOperations(id, operations, header) {
|
|
24302
24557
|
const drive = await this.get(id);
|
|
24303
24558
|
const mergedOperations = mergeOperations(drive.operations, operations);
|
|
@@ -24307,32 +24562,6 @@ class MemoryStorage {
|
|
|
24307
24562
|
operations: mergedOperations
|
|
24308
24563
|
};
|
|
24309
24564
|
}
|
|
24310
|
-
async deleteDrive(id) {
|
|
24311
|
-
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;
|
|
24322
|
-
}
|
|
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];
|
|
24329
|
-
}
|
|
24330
|
-
}
|
|
24331
|
-
delete this.documents[docId];
|
|
24332
|
-
}));
|
|
24333
|
-
delete this.driveManifests[id];
|
|
24334
|
-
delete this.documents[id];
|
|
24335
|
-
}
|
|
24336
24565
|
async getSynchronizationUnitsRevision(units) {
|
|
24337
24566
|
const results = await Promise.allSettled(units.map(async (unit) => {
|
|
24338
24567
|
try {
|
|
@@ -25535,6 +25764,9 @@ function Syncing(props) {
|
|
|
25535
25764
|
function Tabler(props) {
|
|
25536
25765
|
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
25766
|
}
|
|
25767
|
+
function TimelineCaret(props) {
|
|
25768
|
+
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" }) });
|
|
25769
|
+
}
|
|
25538
25770
|
function Timeline(props) {
|
|
25539
25771
|
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
25772
|
}
|
|
@@ -25675,6 +25907,7 @@ const iconComponents = {
|
|
|
25675
25907
|
Synced,
|
|
25676
25908
|
Syncing,
|
|
25677
25909
|
Tabler,
|
|
25910
|
+
TimelineCaret,
|
|
25678
25911
|
Timeline,
|
|
25679
25912
|
TrashFill,
|
|
25680
25913
|
Trash,
|
|
@@ -25737,7 +25970,12 @@ const ADD_TRIGGER = "ADD_TRIGGER";
|
|
|
25737
25970
|
const ADD_INVALID_TRIGGER = "ADD_INVALID_TRIGGER";
|
|
25738
25971
|
const defaultDriveOptions = [NEW_FOLDER, RENAME, SETTINGS];
|
|
25739
25972
|
const defaultFileOptions = [RENAME, DELETE, DUPLICATE];
|
|
25740
|
-
const defaultFolderOptions = [
|
|
25973
|
+
const defaultFolderOptions = [
|
|
25974
|
+
NEW_FOLDER,
|
|
25975
|
+
RENAME,
|
|
25976
|
+
DELETE,
|
|
25977
|
+
DUPLICATE
|
|
25978
|
+
];
|
|
25741
25979
|
const debugNodeOptions = [
|
|
25742
25980
|
ADD_TRIGGER,
|
|
25743
25981
|
REMOVE_TRIGGER,
|
|
@@ -25817,7 +26055,7 @@ const nodeOptionsMap = {
|
|
|
25817
26055
|
};
|
|
25818
26056
|
const name = "@powerhousedao/connect";
|
|
25819
26057
|
const productName = "Powerhouse-Connect";
|
|
25820
|
-
const version$1 = "1.0.
|
|
26058
|
+
const version$1 = "1.0.22-dev.1";
|
|
25821
26059
|
const description = "Powerhouse Connect";
|
|
25822
26060
|
const main = "./dist/index.html";
|
|
25823
26061
|
const type = "module";
|
|
@@ -25829,7 +26067,7 @@ const repository = { "type": "git", "url": "git+https://github.com/powerhouse-in
|
|
|
25829
26067
|
const bugs = { "url": "https://github.com/powerhouse-inc/document-model-electron/issues" };
|
|
25830
26068
|
const homepage = "https://github.com/powerhouse-inc/document-model-electron#readme";
|
|
25831
26069
|
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" };
|
|
25832
|
-
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" };
|
|
26070
|
+
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.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" };
|
|
25833
26071
|
const optionalDependencies = { "@esbuild/linux-x64": "^0.21.4", "@rollup/rollup-linux-x64-musl": "4.14.3" };
|
|
25834
26072
|
const packageJson = {
|
|
25835
26073
|
name,
|
|
@@ -25870,8 +26108,9 @@ const PH_CONNECT_SENTRY_ENV = window.__VITE_ENVS.PH_CONNECT_SENTRY_ENV || "dev";
|
|
|
25870
26108
|
const PH_CONNECT_SENTRY_TRACING_ENABLED = window.__VITE_ENVS.PH_CONNECT_SENTRY_TRACING_ENABLED || "false";
|
|
25871
26109
|
const GA_TRACKING_ID = window.__VITE_ENVS.PH_CONNECT_GA_TRACKING_ID;
|
|
25872
26110
|
const PH_CONNECT_CLI_VERSION = window.__VITE_ENVS.PH_CONNECT_CLI_VERSION || void 0;
|
|
25873
|
-
|
|
25874
|
-
|
|
26111
|
+
const LOG_LEVEL = isLogLevel(window.__VITE_ENVS.LOG_LEVEL) ? window.__VITE_ENVS.LOG_LEVEL : "info";
|
|
26112
|
+
setLogLevel(LOG_LEVEL);
|
|
26113
|
+
logger$1.debug(`Setting log level to ${window.__VITE_ENVS.LOG_LEVEL}.`);
|
|
25875
26114
|
const connectConfig = {
|
|
25876
26115
|
appVersion: APP_VERSION,
|
|
25877
26116
|
studioMode: PH_CONNECT_STUDIO_MODE.toString() === "true",
|
|
@@ -28610,6 +28849,9 @@ const _BrowserStorage = class _BrowserStorage {
|
|
|
28610
28849
|
name: namespace ? `${namespace}:${_BrowserStorage.DBName}` : _BrowserStorage.DBName
|
|
28611
28850
|
}));
|
|
28612
28851
|
}
|
|
28852
|
+
////////////////////////////////
|
|
28853
|
+
// IDocumentAdminStorage
|
|
28854
|
+
////////////////////////////////
|
|
28613
28855
|
async clear() {
|
|
28614
28856
|
const db = await this.db;
|
|
28615
28857
|
await db.clear();
|
|
@@ -28622,19 +28864,34 @@ const _BrowserStorage = class _BrowserStorage {
|
|
|
28622
28864
|
const document = await db.getItem(this.buildDocumentKey(documentId));
|
|
28623
28865
|
return !!document;
|
|
28624
28866
|
}
|
|
28625
|
-
// TODO: this should throw an error if the document already exists.
|
|
28626
28867
|
async create(documentId, document) {
|
|
28627
|
-
|
|
28868
|
+
if (!isValidDocumentId(documentId)) {
|
|
28869
|
+
throw new DocumentIdValidationError(documentId);
|
|
28870
|
+
}
|
|
28628
28871
|
const db = await this.db;
|
|
28872
|
+
if (await this.exists(documentId)) {
|
|
28873
|
+
throw new DocumentAlreadyExistsError(documentId);
|
|
28874
|
+
}
|
|
28875
|
+
const slug = document.slug.length > 0 ? document.slug : documentId;
|
|
28876
|
+
if (!isValidSlug(slug)) {
|
|
28877
|
+
throw new DocumentSlugValidationError(slug);
|
|
28878
|
+
}
|
|
28879
|
+
const slugManifest = await this.getSlugManifest();
|
|
28880
|
+
if (slugManifest.slugToId[slug]) {
|
|
28881
|
+
throw new DocumentAlreadyExistsError(documentId);
|
|
28882
|
+
}
|
|
28883
|
+
document.slug = slug;
|
|
28629
28884
|
await db.setItem(this.buildDocumentKey(documentId), document);
|
|
28630
|
-
const slug = ((_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug) ?? documentId;
|
|
28631
28885
|
if (slug) {
|
|
28632
|
-
const
|
|
28633
|
-
if (
|
|
28886
|
+
const slugManifest2 = await this.getSlugManifest();
|
|
28887
|
+
if (slugManifest2.slugToId[slug]) {
|
|
28634
28888
|
throw new Error(`Document with slug ${slug} already exists`);
|
|
28635
28889
|
}
|
|
28636
|
-
|
|
28637
|
-
await this.updateSlugManifest(
|
|
28890
|
+
slugManifest2.slugToId[slug] = documentId;
|
|
28891
|
+
await this.updateSlugManifest(slugManifest2);
|
|
28892
|
+
}
|
|
28893
|
+
if (document.documentType === "powerhouse/document-drive") {
|
|
28894
|
+
this.updateDriveManifest(documentId, { documentIds: [] });
|
|
28638
28895
|
}
|
|
28639
28896
|
}
|
|
28640
28897
|
async get(documentId) {
|
|
@@ -28653,15 +28910,56 @@ const _BrowserStorage = class _BrowserStorage {
|
|
|
28653
28910
|
}
|
|
28654
28911
|
return this.get(documentId);
|
|
28655
28912
|
}
|
|
28913
|
+
async findByType(documentModelType, limit = 100, cursor) {
|
|
28914
|
+
const db = await this.db;
|
|
28915
|
+
const keys = await db.keys();
|
|
28916
|
+
const documentKeys = keys.filter((key) => key.startsWith(`${_BrowserStorage.DOCUMENT_KEY}${_BrowserStorage.SEP}`));
|
|
28917
|
+
const documentsAndIds = [];
|
|
28918
|
+
for (const key of documentKeys) {
|
|
28919
|
+
const documentId = key.slice(_BrowserStorage.DOCUMENT_KEY.length + _BrowserStorage.SEP.length);
|
|
28920
|
+
try {
|
|
28921
|
+
const document = await db.getItem(key);
|
|
28922
|
+
if (!document || document.documentType !== documentModelType) {
|
|
28923
|
+
continue;
|
|
28924
|
+
}
|
|
28925
|
+
documentsAndIds.push({ id: documentId, document });
|
|
28926
|
+
} catch (error) {
|
|
28927
|
+
continue;
|
|
28928
|
+
}
|
|
28929
|
+
}
|
|
28930
|
+
documentsAndIds.sort((a, b) => {
|
|
28931
|
+
const aDate = new Date(a.document.created);
|
|
28932
|
+
const bDate = new Date(b.document.created);
|
|
28933
|
+
if (aDate.getTime() === bDate.getTime()) {
|
|
28934
|
+
return a.id.localeCompare(b.id);
|
|
28935
|
+
}
|
|
28936
|
+
return aDate.getTime() - bDate.getTime();
|
|
28937
|
+
});
|
|
28938
|
+
let startIndex = 0;
|
|
28939
|
+
if (cursor) {
|
|
28940
|
+
const index = documentsAndIds.findIndex(({ id }) => id === cursor);
|
|
28941
|
+
if (index !== -1) {
|
|
28942
|
+
startIndex = index;
|
|
28943
|
+
}
|
|
28944
|
+
}
|
|
28945
|
+
const endIndex = Math.min(startIndex + limit, documentsAndIds.length);
|
|
28946
|
+
let nextCursor;
|
|
28947
|
+
if (endIndex < documentsAndIds.length) {
|
|
28948
|
+
nextCursor = documentsAndIds[endIndex].id;
|
|
28949
|
+
}
|
|
28950
|
+
return {
|
|
28951
|
+
documents: documentsAndIds.slice(startIndex, endIndex).map(({ id }) => id),
|
|
28952
|
+
nextCursor
|
|
28953
|
+
};
|
|
28954
|
+
}
|
|
28656
28955
|
async delete(documentId) {
|
|
28657
|
-
var _a2;
|
|
28658
28956
|
const db = await this.db;
|
|
28659
28957
|
const document = await db.getItem(this.buildDocumentKey(documentId));
|
|
28660
28958
|
if (!document) {
|
|
28661
28959
|
return false;
|
|
28662
28960
|
}
|
|
28961
|
+
const slug = document.slug.length > 0 ? document.slug : documentId;
|
|
28663
28962
|
try {
|
|
28664
|
-
const slug = (_a2 = document.initialState.state.global) == null ? void 0 : _a2.slug;
|
|
28665
28963
|
if (slug) {
|
|
28666
28964
|
const slugManifest = await this.getSlugManifest();
|
|
28667
28965
|
if (slugManifest.slugToId[slug] === documentId) {
|
|
@@ -28671,11 +28969,16 @@ const _BrowserStorage = class _BrowserStorage {
|
|
|
28671
28969
|
}
|
|
28672
28970
|
} catch (error) {
|
|
28673
28971
|
}
|
|
28674
|
-
const
|
|
28675
|
-
for (const
|
|
28676
|
-
|
|
28677
|
-
|
|
28678
|
-
|
|
28972
|
+
const parents = await this.getParents(documentId);
|
|
28973
|
+
for (const parent of parents) {
|
|
28974
|
+
await this.removeChild(parent, documentId);
|
|
28975
|
+
}
|
|
28976
|
+
const children = await this.getChildren(documentId);
|
|
28977
|
+
for (const child of children) {
|
|
28978
|
+
const childParents = await this.getParents(child);
|
|
28979
|
+
if (childParents.length === 1 && childParents[0] === documentId) {
|
|
28980
|
+
await this.delete(child);
|
|
28981
|
+
}
|
|
28679
28982
|
}
|
|
28680
28983
|
await db.removeItem(this.buildManifestKey(documentId));
|
|
28681
28984
|
await db.removeItem(this.buildDocumentKey(documentId));
|
|
@@ -28709,6 +29012,20 @@ const _BrowserStorage = class _BrowserStorage {
|
|
|
28709
29012
|
const manifest = await this.getManifest(parentId);
|
|
28710
29013
|
return manifest.documentIds;
|
|
28711
29014
|
}
|
|
29015
|
+
async getParents(childId) {
|
|
29016
|
+
const db = await this.db;
|
|
29017
|
+
const keys = await db.keys();
|
|
29018
|
+
const parents = [];
|
|
29019
|
+
const manifestKeys = keys.filter((key) => key.startsWith(`${_BrowserStorage.MANIFEST_KEY}${_BrowserStorage.SEP}`));
|
|
29020
|
+
for (const key of manifestKeys) {
|
|
29021
|
+
const driveId = key.slice(_BrowserStorage.MANIFEST_KEY.length + _BrowserStorage.SEP.length);
|
|
29022
|
+
const manifest = await this.getManifest(driveId);
|
|
29023
|
+
if (manifest.documentIds.includes(childId)) {
|
|
29024
|
+
parents.push(driveId);
|
|
29025
|
+
}
|
|
29026
|
+
}
|
|
29027
|
+
return parents;
|
|
29028
|
+
}
|
|
28712
29029
|
////////////////////////////////
|
|
28713
29030
|
// IDriveStorage
|
|
28714
29031
|
////////////////////////////////
|
|
@@ -28730,9 +29047,6 @@ const _BrowserStorage = class _BrowserStorage {
|
|
|
28730
29047
|
const db = await this.db;
|
|
28731
29048
|
await db.setItem(_BrowserStorage.SLUG_MANIFEST_KEY, manifest);
|
|
28732
29049
|
}
|
|
28733
|
-
async clearStorage() {
|
|
28734
|
-
return (await this.db).clear();
|
|
28735
|
-
}
|
|
28736
29050
|
async addDocumentOperations(drive, id, operations, header) {
|
|
28737
29051
|
const document = await this.get(id);
|
|
28738
29052
|
if (!document) {
|
|
@@ -28746,22 +29060,6 @@ const _BrowserStorage = class _BrowserStorage {
|
|
|
28746
29060
|
operations: mergedOperations
|
|
28747
29061
|
});
|
|
28748
29062
|
}
|
|
28749
|
-
async getDrives() {
|
|
28750
|
-
const db = await this.db;
|
|
28751
|
-
const keys = await db.keys();
|
|
28752
|
-
return keys.filter((key) => key.startsWith(_BrowserStorage.MANIFEST_KEY)).map((key) => key.slice(_BrowserStorage.MANIFEST_KEY.length + _BrowserStorage.SEP.length));
|
|
28753
|
-
}
|
|
28754
|
-
async createDrive(id, drive) {
|
|
28755
|
-
await this.create(id, drive);
|
|
28756
|
-
await this.updateDriveManifest(id, { documentIds: [] });
|
|
28757
|
-
}
|
|
28758
|
-
async deleteDrive(id) {
|
|
28759
|
-
const documents = await this.getChildren(id);
|
|
28760
|
-
await Promise.all(documents.map((doc) => this.delete(doc)));
|
|
28761
|
-
const db = await this.db;
|
|
28762
|
-
await db.removeItem(this.buildManifestKey(id));
|
|
28763
|
-
return db.removeItem(this.buildDocumentKey(id));
|
|
28764
|
-
}
|
|
28765
29063
|
async addDriveOperations(id, operations, header) {
|
|
28766
29064
|
const drive = await this.get(id);
|
|
28767
29065
|
const mergedOperations = mergeOperations(drive.operations, operations);
|
|
@@ -28802,12 +29100,16 @@ const _BrowserStorage = class _BrowserStorage {
|
|
|
28802
29100
|
}
|
|
28803
29101
|
// migrates all stored operations from legacy signature to signatures array
|
|
28804
29102
|
async migrateOperationSignatures() {
|
|
28805
|
-
|
|
28806
|
-
|
|
28807
|
-
await this.
|
|
28808
|
-
const
|
|
28809
|
-
|
|
28810
|
-
|
|
29103
|
+
let cursor;
|
|
29104
|
+
do {
|
|
29105
|
+
const { documents: drives, nextCursor } = await this.findByType("powerhouse/document-drive", 100, cursor);
|
|
29106
|
+
for (const drive of drives) {
|
|
29107
|
+
await this.migrateDrive(drive);
|
|
29108
|
+
const documents = await this.getChildren(drive);
|
|
29109
|
+
await Promise.all(documents.map(async (docId) => this.migrateDocument(drive, docId)));
|
|
29110
|
+
}
|
|
29111
|
+
cursor = nextCursor;
|
|
29112
|
+
} while (cursor);
|
|
28811
29113
|
}
|
|
28812
29114
|
async migrateDrive(driveId) {
|
|
28813
29115
|
const drive = await this.get(driveId);
|
|
@@ -28881,8 +29183,11 @@ const getReactorDefaultDrivesConfig = () => {
|
|
|
28881
29183
|
}
|
|
28882
29184
|
};
|
|
28883
29185
|
};
|
|
28884
|
-
function
|
|
28885
|
-
return new
|
|
29186
|
+
function createBrowserStorage(routerBasename) {
|
|
29187
|
+
return new BrowserStorage(routerBasename);
|
|
29188
|
+
}
|
|
29189
|
+
function createBrowserDocumentDriveServer(documentModels, storage) {
|
|
29190
|
+
return new ReactorBuilder(documentModels).withStorage(storage).withCache(new InMemoryCache()).withQueueManager(new BaseQueueManager(1, 10)).withOptions({ ...getReactorDefaultDrivesConfig() }).build();
|
|
28886
29191
|
}
|
|
28887
29192
|
const VERSION_CHECK_INTERVAL = parseInt(window.__VITE_ENVS.PH_CONNECT_VERSION_CHECK_INTERVAL) || 60 * 60 * 1e3;
|
|
28888
29193
|
const basePath = connectConfig.routerBasename;
|
|
@@ -31441,14 +31746,14 @@ if (window.__VITE_ENVS.MODE === "development") {
|
|
|
31441
31746
|
} else {
|
|
31442
31747
|
serviceWorkerManager.registerServiceWorker(false);
|
|
31443
31748
|
}
|
|
31444
|
-
const App = lazy(() => __vitePreload(() => import("./app-
|
|
31749
|
+
const App = lazy(() => __vitePreload(() => import("./app-B-5qYsgM.js").then((n) => n.bs), true ? __vite__mapDeps([0,1,2]) : void 0));
|
|
31445
31750
|
const AppLoader = /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(App, {}) });
|
|
31446
31751
|
const appLoader = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
31447
31752
|
__proto__: null,
|
|
31448
31753
|
default: AppLoader
|
|
31449
31754
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
31450
31755
|
export {
|
|
31451
|
-
|
|
31756
|
+
Icon as $,
|
|
31452
31757
|
AddStateExampleInputSchema as A,
|
|
31453
31758
|
SetModuleDescriptionInputSchema as B,
|
|
31454
31759
|
SetModuleNameInputSchema as C,
|
|
@@ -31475,49 +31780,49 @@ export {
|
|
|
31475
31780
|
baseLoadFromFile as X,
|
|
31476
31781
|
baseLoadFromInput as Y,
|
|
31477
31782
|
pascalCase as Z,
|
|
31478
|
-
|
|
31783
|
+
logger$1 as _,
|
|
31479
31784
|
createReducer as a,
|
|
31480
|
-
|
|
31481
|
-
|
|
31482
|
-
|
|
31483
|
-
|
|
31484
|
-
|
|
31485
|
-
|
|
31486
|
-
|
|
31487
|
-
|
|
31488
|
-
|
|
31489
|
-
|
|
31490
|
-
|
|
31491
|
-
|
|
31492
|
-
|
|
31493
|
-
|
|
31494
|
-
|
|
31495
|
-
|
|
31496
|
-
|
|
31497
|
-
|
|
31498
|
-
|
|
31499
|
-
|
|
31500
|
-
|
|
31501
|
-
|
|
31502
|
-
|
|
31503
|
-
|
|
31504
|
-
|
|
31505
|
-
|
|
31506
|
-
|
|
31507
|
-
|
|
31508
|
-
|
|
31509
|
-
|
|
31510
|
-
|
|
31511
|
-
|
|
31512
|
-
|
|
31513
|
-
|
|
31514
|
-
|
|
31515
|
-
|
|
31516
|
-
|
|
31517
|
-
|
|
31518
|
-
|
|
31519
|
-
|
|
31520
|
-
|
|
31785
|
+
invariant as a$,
|
|
31786
|
+
getDefaultExportFromCjs as a0,
|
|
31787
|
+
LOCAL as a1,
|
|
31788
|
+
commonjsGlobal as a2,
|
|
31789
|
+
PUBLIC as a3,
|
|
31790
|
+
SWITCHBOARD as a4,
|
|
31791
|
+
locationInfoByLocation as a5,
|
|
31792
|
+
sharingTypeOptions as a6,
|
|
31793
|
+
objectType as a7,
|
|
31794
|
+
recordType as a8,
|
|
31795
|
+
stringType as a9,
|
|
31796
|
+
updateNode as aA,
|
|
31797
|
+
FILE as aB,
|
|
31798
|
+
moveNode as aC,
|
|
31799
|
+
generateNodesCopy as aD,
|
|
31800
|
+
copyNode as aE,
|
|
31801
|
+
createState as aF,
|
|
31802
|
+
setDriveName as aG,
|
|
31803
|
+
setAvailableOffline as aH,
|
|
31804
|
+
setSharingType as aI,
|
|
31805
|
+
SynchronizationUnitNotFoundError as aJ,
|
|
31806
|
+
removeTrigger as aK,
|
|
31807
|
+
PullResponderTransmitter as aL,
|
|
31808
|
+
addTrigger as aM,
|
|
31809
|
+
ReadDriveNotFoundError as aN,
|
|
31810
|
+
openUrl as aO,
|
|
31811
|
+
getNodeOptions as aP,
|
|
31812
|
+
DRIVE as aQ,
|
|
31813
|
+
FOLDER as aR,
|
|
31814
|
+
requestPublicDrive as aS,
|
|
31815
|
+
serviceWorkerManager as aT,
|
|
31816
|
+
packageJson as aU,
|
|
31817
|
+
t as aV,
|
|
31818
|
+
gql as aW,
|
|
31819
|
+
request as aX,
|
|
31820
|
+
inspect as aY,
|
|
31821
|
+
GraphQLError as aZ,
|
|
31822
|
+
getNamedType as a_,
|
|
31823
|
+
capitalCase as aa,
|
|
31824
|
+
CLOUD as ab,
|
|
31825
|
+
createZip as ac,
|
|
31521
31826
|
LZString as ad,
|
|
31522
31827
|
buildSignedOperation as ae,
|
|
31523
31828
|
getI18n as af,
|
|
@@ -31525,98 +31830,98 @@ export {
|
|
|
31525
31830
|
connectConfig as ah,
|
|
31526
31831
|
hashDocumentStateForScope as ai,
|
|
31527
31832
|
getAugmentedNamespace as aj,
|
|
31528
|
-
|
|
31529
|
-
|
|
31530
|
-
|
|
31531
|
-
|
|
31532
|
-
|
|
31533
|
-
|
|
31534
|
-
|
|
31535
|
-
|
|
31536
|
-
|
|
31537
|
-
|
|
31538
|
-
|
|
31539
|
-
|
|
31540
|
-
|
|
31541
|
-
|
|
31542
|
-
|
|
31543
|
-
|
|
31833
|
+
childLogger as ak,
|
|
31834
|
+
process as al,
|
|
31835
|
+
setErrorHandler as am,
|
|
31836
|
+
driveDocumentModelModule as an,
|
|
31837
|
+
createBrowserStorage as ao,
|
|
31838
|
+
createBrowserDocumentDriveServer as ap,
|
|
31839
|
+
generateId as aq,
|
|
31840
|
+
reducer as ar,
|
|
31841
|
+
isDocumentDrive as as,
|
|
31842
|
+
generateAddNodeAction as at,
|
|
31843
|
+
isFileNode as au,
|
|
31844
|
+
uploadDocumentOperations as av,
|
|
31845
|
+
updateFile as aw,
|
|
31846
|
+
addFolder as ax,
|
|
31847
|
+
isFolderNode as ay,
|
|
31848
|
+
deleteNode as az,
|
|
31544
31849
|
SetStateSchemaInputSchema as b,
|
|
31545
|
-
|
|
31546
|
-
|
|
31547
|
-
|
|
31548
|
-
|
|
31549
|
-
|
|
31550
|
-
|
|
31551
|
-
|
|
31552
|
-
|
|
31553
|
-
|
|
31554
|
-
|
|
31555
|
-
|
|
31556
|
-
|
|
31557
|
-
|
|
31558
|
-
|
|
31559
|
-
|
|
31560
|
-
|
|
31561
|
-
|
|
31562
|
-
|
|
31563
|
-
|
|
31564
|
-
|
|
31565
|
-
|
|
31566
|
-
|
|
31567
|
-
|
|
31568
|
-
|
|
31569
|
-
|
|
31570
|
-
|
|
31571
|
-
|
|
31572
|
-
|
|
31573
|
-
|
|
31574
|
-
|
|
31575
|
-
|
|
31576
|
-
|
|
31577
|
-
|
|
31578
|
-
|
|
31579
|
-
|
|
31580
|
-
|
|
31581
|
-
|
|
31582
|
-
|
|
31583
|
-
|
|
31584
|
-
|
|
31585
|
-
|
|
31586
|
-
|
|
31587
|
-
|
|
31588
|
-
|
|
31589
|
-
|
|
31590
|
-
|
|
31591
|
-
|
|
31592
|
-
|
|
31593
|
-
|
|
31594
|
-
|
|
31595
|
-
|
|
31596
|
-
|
|
31597
|
-
|
|
31598
|
-
|
|
31599
|
-
|
|
31600
|
-
|
|
31601
|
-
|
|
31602
|
-
|
|
31603
|
-
|
|
31604
|
-
|
|
31605
|
-
|
|
31606
|
-
|
|
31607
|
-
|
|
31608
|
-
|
|
31850
|
+
DELETE as b$,
|
|
31851
|
+
isInputObjectType as b0,
|
|
31852
|
+
isScalarType as b1,
|
|
31853
|
+
isObjectType as b2,
|
|
31854
|
+
isInterfaceType as b3,
|
|
31855
|
+
isUnionType as b4,
|
|
31856
|
+
isEnumType as b5,
|
|
31857
|
+
print as b6,
|
|
31858
|
+
isPrintableAsBlockString as b7,
|
|
31859
|
+
Kind as b8,
|
|
31860
|
+
astFromValue as b9,
|
|
31861
|
+
isInputType as bA,
|
|
31862
|
+
GraphQLBoolean as bB,
|
|
31863
|
+
assertAbstractType as bC,
|
|
31864
|
+
doTypesOverlap as bD,
|
|
31865
|
+
DirectiveLocation as bE,
|
|
31866
|
+
specifiedRules as bF,
|
|
31867
|
+
NoUnusedFragmentsRule as bG,
|
|
31868
|
+
ExecutableDefinitionsRule as bH,
|
|
31869
|
+
validate as bI,
|
|
31870
|
+
validateSchema as bJ,
|
|
31871
|
+
GraphQLID as bK,
|
|
31872
|
+
GraphQLString as bL,
|
|
31873
|
+
GraphQLFloat as bM,
|
|
31874
|
+
GraphQLInt as bN,
|
|
31875
|
+
GraphQLDirective as bO,
|
|
31876
|
+
GraphQLUnionType as bP,
|
|
31877
|
+
isNonNullType as bQ,
|
|
31878
|
+
GraphQLNonNull as bR,
|
|
31879
|
+
isNamedType as bS,
|
|
31880
|
+
isLeafType as bT,
|
|
31881
|
+
GraphQLSchema as bU,
|
|
31882
|
+
buildSchema as bV,
|
|
31883
|
+
sentenceCase as bW,
|
|
31884
|
+
getDimensions as bX,
|
|
31885
|
+
READ as bY,
|
|
31886
|
+
nodeOptionsMap as bZ,
|
|
31887
|
+
defaultFileOptions as b_,
|
|
31888
|
+
DEFAULT_DEPRECATION_REASON as ba,
|
|
31889
|
+
isSpecifiedDirective as bb,
|
|
31890
|
+
isSpecifiedScalarType as bc,
|
|
31891
|
+
isIntrospectionType as bd,
|
|
31892
|
+
z as be,
|
|
31893
|
+
GraphQLScalarType as bf,
|
|
31894
|
+
parse as bg,
|
|
31895
|
+
visit as bh,
|
|
31896
|
+
buildASTSchema as bi,
|
|
31897
|
+
extendSchema as bj,
|
|
31898
|
+
getNullableType as bk,
|
|
31899
|
+
isListType as bl,
|
|
31900
|
+
snakeCase as bm,
|
|
31901
|
+
constantCase as bn,
|
|
31902
|
+
isAbstractType as bo,
|
|
31903
|
+
BREAK as bp,
|
|
31904
|
+
GraphQLInputObjectType as bq,
|
|
31905
|
+
GraphQLList as br,
|
|
31906
|
+
GraphQLEnumType as bs,
|
|
31907
|
+
GraphQLObjectType as bt,
|
|
31908
|
+
GraphQLInterfaceType as bu,
|
|
31909
|
+
SchemaMetaFieldDef as bv,
|
|
31910
|
+
TypeMetaFieldDef as bw,
|
|
31911
|
+
TypeNameMetaFieldDef as bx,
|
|
31912
|
+
isCompositeType as by,
|
|
31913
|
+
isOutputType as bz,
|
|
31609
31914
|
createAction as c,
|
|
31610
|
-
|
|
31611
|
-
|
|
31612
|
-
|
|
31613
|
-
|
|
31614
|
-
|
|
31615
|
-
|
|
31616
|
-
|
|
31617
|
-
|
|
31618
|
-
|
|
31619
|
-
|
|
31915
|
+
RENAME as c0,
|
|
31916
|
+
WRITE as c1,
|
|
31917
|
+
DUPLICATE as c2,
|
|
31918
|
+
defaultFolderOptions as c3,
|
|
31919
|
+
garbageCollect as c4,
|
|
31920
|
+
sortOperations as c5,
|
|
31921
|
+
UI_NODE as c6,
|
|
31922
|
+
undo as c7,
|
|
31923
|
+
redo as c8,
|
|
31924
|
+
useDocumentDispatch as c9,
|
|
31620
31925
|
appLoader as ca,
|
|
31621
31926
|
ReorderModuleOperationsInputSchema as d,
|
|
31622
31927
|
DeleteOperationInputSchema as e,
|
|
@@ -31642,3 +31947,4 @@ export {
|
|
|
31642
31947
|
ReorderModulesInputSchema as y,
|
|
31643
31948
|
DeleteModuleInputSchema as z
|
|
31644
31949
|
};
|
|
31950
|
+
//# sourceMappingURL=app-loader-DXPAMQYN.js.map
|