@seedprotocol/sdk 0.2.11 → 0.2.13
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/{Db-BSX8ExDc.js → Db-DOaWOiNg.js} +2 -2
- package/dist/{Db-BSX8ExDc.js.map → Db-DOaWOiNg.js.map} +1 -1
- package/dist/{Db-MiGz1G85.js → Db-DuTuGf68.js} +2 -2
- package/dist/{Db-MiGz1G85.js.map → Db-DuTuGf68.js.map} +1 -1
- package/dist/{Item-EjMuBC8b.js → Item-CLlF0KW4.js} +2 -2
- package/dist/{Item-EjMuBC8b.js.map → Item-CLlF0KW4.js.map} +1 -1
- package/dist/{index-Ebj_-grh.js → index-B8uGwSbV.js} +163 -9
- package/dist/{index-Ebj_-grh.js.map → index-B8uGwSbV.js.map} +1 -1
- package/dist/{index-CVbqPojA.js → index-DI6gojqO.js} +2 -2
- package/dist/index-DI6gojqO.js.map +1 -0
- package/dist/main.js +1 -1
- package/dist/{seed.schema.config-CmeKzlEe.js → seed.schema.config-jYCP0EPe.js} +2 -2
- package/dist/{seed.schema.config-CmeKzlEe.js.map → seed.schema.config-jYCP0EPe.js.map} +1 -1
- package/dist/src/actors.ts +7 -292
- package/dist/src/index.ts +10 -62
- package/dist/src/initialize.ts +88 -239
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/index-CVbqPojA.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as BaseDb } from './index-
|
|
1
|
+
import { a as BaseDb } from './index-B8uGwSbV.js';
|
|
2
2
|
import 'immer';
|
|
3
3
|
import 'reflect-metadata';
|
|
4
4
|
import 'tslib';
|
|
@@ -36,4 +36,4 @@ class Db extends BaseDb {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
export { Db };
|
|
39
|
-
//# sourceMappingURL=Db-
|
|
39
|
+
//# sourceMappingURL=Db-DOaWOiNg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Db-
|
|
1
|
+
{"version":3,"file":"Db-DOaWOiNg.js","sources":["../../src/node/db/Db.ts"],"sourcesContent":["import { BaseDb } from \"@/db/Db/BaseDb\";\nimport { IDb } from \"@/interfaces\";\n\nexport class Db extends BaseDb implements IDb {\n constructor() {\n super()\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGM,MAAO,EAAG,SAAQ,MAAM,CAAA;AAC5B,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;;AAEV;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as BaseDb, g as getAppDb, i as isAppDbReady, b as getSqliteWasmClient } from './index-
|
|
1
|
+
import { a as BaseDb, g as getAppDb, i as isAppDbReady, b as getSqliteWasmClient } from './index-B8uGwSbV.js';
|
|
2
2
|
import { __awaiter } from 'tslib';
|
|
3
3
|
import debug from 'debug';
|
|
4
4
|
import 'immer';
|
|
@@ -135,4 +135,4 @@ class Db extends BaseDb {
|
|
|
135
135
|
BaseDb.setPlatformClass(Db);
|
|
136
136
|
|
|
137
137
|
export { Db };
|
|
138
|
-
//# sourceMappingURL=Db-
|
|
138
|
+
//# sourceMappingURL=Db-DuTuGf68.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Db-
|
|
1
|
+
{"version":3,"file":"Db-DuTuGf68.js","sources":["../../src/services/db/connectionManager.ts","../../src/browser/db/Db.ts"],"sourcesContent":["type SqliteDatabase = {\n open: (filename: string) => Promise<void>\n exec: (sql: string, params?: any[]) => any\n close: () => void\n}\n\nclass SqliteConnectionManager {\n private sqliteModule: SqliteDatabase\n private idleTimeout: number\n private databases: { [key: string]: SqliteDatabase }\n private idleTimers: { [key: string]: NodeJS.Timeout }\n\n constructor(sqliteModule: SqliteDatabase, idleTimeout: number = 300000) {\n // Default idle timeout: 5 minutes\n this.sqliteModule = sqliteModule\n this.idleTimeout = idleTimeout\n this.databases = {}\n this.idleTimers = {}\n }\n\n private resetIdleTimer(dbName: string): void {\n if (this.idleTimers[dbName]) {\n clearTimeout(this.idleTimers[dbName])\n }\n\n this.idleTimers[dbName] = setTimeout(() => {\n this.closeConnection(dbName)\n }, this.idleTimeout)\n }\n\n private async getConnection(dbName: string): Promise<SqliteDatabase> {\n if (this.databases[dbName]) {\n this.resetIdleTimer(dbName)\n return this.databases[dbName]\n }\n\n const db = new this.sqliteModule()\n await db.open(dbName)\n this.databases[dbName] = db\n this.resetIdleTimer(dbName)\n return db\n }\n\n public async execute(\n dbName: string,\n sql: string,\n params: any[] = [],\n ): Promise<any> {\n const db = await this.getConnection(dbName)\n const result = db.exec(sql, params)\n this.resetIdleTimer(dbName)\n return result\n }\n\n public closeConnection(dbName: string): void {\n if (this.databases[dbName]) {\n this.databases[dbName].close()\n delete this.databases[dbName]\n if (this.idleTimers[dbName]) {\n clearTimeout(this.idleTimers[dbName])\n delete this.idleTimers[dbName]\n }\n }\n }\n}\n\nexport { SqliteConnectionManager }\n","import { BaseDb } from \"@/db/Db/BaseDb\";\nimport { IDb } from \"@/interfaces/IDb\";\nimport { getAppDb, getSqliteWasmClient, isAppDbReady } from \"./sqlWasmClient\";\nimport { SqliteConnectionManager } from \"@/services/db\";\nimport debug from \"debug\";\n\nconst logger = debug('app:browser:db:Db')\n\nclass Db extends BaseDb implements IDb {\n constructor() {\n super()\n }\n\n static getAppDb() {\n return getAppDb()\n }\n\n static isAppDbReady() {\n return isAppDbReady()\n }\n\n static prepareDb() {\n\n return new Promise((resolve, reject) => {\n let sqliteWasmClient\n const interval = setInterval(() => {\n // TODO: Add a timeout\n // TODO: Add a cancel token to the promise so we can prevent more loops starting while we're checking the successful outcome\n getSqliteWasmClient().then((sqliteWasmClient) => {\n\n if (sqliteWasmClient) {\n clearInterval(interval)\n const manager = new SqliteConnectionManager(sqliteWasmClient)\n resolve(manager)\n }\n })\n\n }, 200)\n })\n }\n\n static connectToDb(pathToDir: string, dbName: string) {\n\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n\n // TODO: Add a timeout\n // TODO: Add a cancel token to the promise so we can prevent more loops starting while we're checking the successful outcome\n getSqliteWasmClient().then((sqliteWasmClient) => {\n\n //@ts-ignore\n sqliteWasmClient('config-get', {}).then((response) => {\n logger(response)\n logger('Running SQLite3 version', response.result.version.libVersion)\n\n //@ts-ignore\n sqliteWasmClient('open', {\n filename: `file:${pathToDir}/db/${dbName}.sqlite3?vfs=opfs`,\n }).then((response: { dbId: string, result: { filename: string } }) => {\n\n logger(response)\n const dbId = response.dbId\n logger(\n 'OPFS is available, created persisted database at',\n response.result.filename.replace(/^file:(.*?)\\?vfs=opfs$/, '$1'),\n )\n\n if (dbId) {\n clearInterval(interval)\n resolve(dbId)\n }\n })\n })\n })\n }, 500)\n })\n }\n}\n\nBaseDb.setPlatformClass(Db)\n\nexport { Db }"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BaseItem } from './index-
|
|
1
|
+
import { B as BaseItem } from './index-B8uGwSbV.js';
|
|
2
2
|
import 'immer';
|
|
3
3
|
import 'reflect-metadata';
|
|
4
4
|
import 'tslib';
|
|
@@ -37,4 +37,4 @@ class Item extends BaseItem {
|
|
|
37
37
|
BaseItem.setPlatformClass(Item);
|
|
38
38
|
|
|
39
39
|
export { Item };
|
|
40
|
-
//# sourceMappingURL=Item-
|
|
40
|
+
//# sourceMappingURL=Item-CLlF0KW4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Item-
|
|
1
|
+
{"version":3,"file":"Item-CLlF0KW4.js","sources":["../../src/node/Item/Item.ts"],"sourcesContent":["import { IItem } from '@/interfaces';\nimport { BaseItem } from '@/Item/BaseItem';\nimport { ModelSchema, ModelValues } from '@/types';\n\nexport class Item<T extends ModelValues<ModelSchema>> extends BaseItem<T> implements IItem<T> {\n constructor(initialValues: any) {\n super(initialValues);\n }\n\n}\n\nBaseItem.setPlatformClass(Item)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIM,MAAO,IAAyC,SAAQ,QAAW,CAAA;AACvE,IAAA,WAAA,CAAY,aAAkB,EAAA;QAC5B,KAAK,CAAC,aAAa,CAAC;;AAGvB;AAED,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;;;;"}
|
|
@@ -13,7 +13,7 @@ import { a as BaseQueryClient, B as BaseEasClient, I as INTERNAL_DATA_TYPES, G a
|
|
|
13
13
|
import { sqliteTable, text, int, blob, check, unique } from 'drizzle-orm/sqlite-core';
|
|
14
14
|
import { sql, relations, and, eq, max, or, isNotNull, not, inArray, like, isNull, getTableColumns, count, gt } from 'drizzle-orm';
|
|
15
15
|
import path from 'path';
|
|
16
|
-
import { useState, useEffect, useRef
|
|
16
|
+
import { useState, useCallback, useEffect, useRef } from 'react';
|
|
17
17
|
import pluralize from 'pluralize';
|
|
18
18
|
import EventEmitter from 'eventemitter3';
|
|
19
19
|
import { throttle, camelCase, startCase, orderBy } from 'lodash-es';
|
|
@@ -1262,7 +1262,7 @@ const hydrateFromDb = fromCallback(({ sendBack, input: { context } }) => {
|
|
|
1262
1262
|
if (propertyRecordSchema &&
|
|
1263
1263
|
propertyRecordSchema.storageType &&
|
|
1264
1264
|
propertyRecordSchema.storageType === 'ItemStorage') {
|
|
1265
|
-
const { Item } = yield import('./index-
|
|
1265
|
+
const { Item } = yield import('./index-DI6gojqO.js');
|
|
1266
1266
|
const item = yield Item.find({
|
|
1267
1267
|
seedLocalId,
|
|
1268
1268
|
modelName,
|
|
@@ -2218,7 +2218,7 @@ const addModelsToDb = fromCallback(({ sendBack, input: { context } }) => {
|
|
|
2218
2218
|
if (!models$1) {
|
|
2219
2219
|
return;
|
|
2220
2220
|
}
|
|
2221
|
-
const { models: SeedModels } = yield import('./seed.schema.config-
|
|
2221
|
+
const { models: SeedModels } = yield import('./seed.schema.config-jYCP0EPe.js');
|
|
2222
2222
|
const allModels = Object.assign(Object.assign({}, SeedModels), models$1);
|
|
2223
2223
|
let hasModelsInDb = false;
|
|
2224
2224
|
const schemaDefsByModelName = new Map();
|
|
@@ -6229,6 +6229,131 @@ const getServiceUniqueKey = (service) => {
|
|
|
6229
6229
|
}
|
|
6230
6230
|
return uniqueKey;
|
|
6231
6231
|
};
|
|
6232
|
+
const useService = (service) => {
|
|
6233
|
+
const [timeElapsed, setTimeElapsed] = useState(0);
|
|
6234
|
+
const getPercentComplete = (service) => {
|
|
6235
|
+
let percentComplete = 0;
|
|
6236
|
+
if (service.logic.states) {
|
|
6237
|
+
const stateNames = [];
|
|
6238
|
+
const startupStates = [];
|
|
6239
|
+
for (const [stateName, state] of Object.entries(service.logic.states)) {
|
|
6240
|
+
if (state.tags.includes('loading')) {
|
|
6241
|
+
stateNames.push(stateName);
|
|
6242
|
+
startupStates.push(state);
|
|
6243
|
+
}
|
|
6244
|
+
}
|
|
6245
|
+
const totalStates = startupStates.length;
|
|
6246
|
+
const value = getServiceValue(service);
|
|
6247
|
+
if (finalStrings.includes(value)) {
|
|
6248
|
+
return 0;
|
|
6249
|
+
}
|
|
6250
|
+
const stateIndex = stateNames.indexOf(value);
|
|
6251
|
+
percentComplete = (stateIndex / totalStates) * 100;
|
|
6252
|
+
}
|
|
6253
|
+
return percentComplete;
|
|
6254
|
+
};
|
|
6255
|
+
const updateTime = useCallback((interval) => {
|
|
6256
|
+
service.getSnapshot().context;
|
|
6257
|
+
const status = service.getSnapshot().value;
|
|
6258
|
+
if (status === 'done' ||
|
|
6259
|
+
status === 'success' ||
|
|
6260
|
+
status === 'idle' ||
|
|
6261
|
+
status === 'ready') {
|
|
6262
|
+
clearInterval(interval);
|
|
6263
|
+
return;
|
|
6264
|
+
}
|
|
6265
|
+
setTimeElapsed((timeElapsed) => timeElapsed + 1);
|
|
6266
|
+
}, [service]);
|
|
6267
|
+
const startInterval = useCallback(() => {
|
|
6268
|
+
const interval = setInterval(() => {
|
|
6269
|
+
updateTime(interval);
|
|
6270
|
+
}, 1000);
|
|
6271
|
+
return interval;
|
|
6272
|
+
}, [updateTime, service]);
|
|
6273
|
+
useEffect(() => {
|
|
6274
|
+
const interval = startInterval();
|
|
6275
|
+
return () => clearInterval(interval);
|
|
6276
|
+
}, []);
|
|
6277
|
+
return {
|
|
6278
|
+
name: getServiceName(service),
|
|
6279
|
+
timeElapsed,
|
|
6280
|
+
value: getServiceValue(service),
|
|
6281
|
+
percentComplete: getPercentComplete(service),
|
|
6282
|
+
uniqueKey: getServiceUniqueKey(service),
|
|
6283
|
+
};
|
|
6284
|
+
};
|
|
6285
|
+
const useIsDbReady = () => {
|
|
6286
|
+
const [isDbReady, setIsDbReady] = useState(false);
|
|
6287
|
+
const { internalStatus } = useGlobalServiceStatus();
|
|
6288
|
+
useEffect(() => {
|
|
6289
|
+
if (internalStatus === 'ready') {
|
|
6290
|
+
setIsDbReady(true);
|
|
6291
|
+
}
|
|
6292
|
+
}, [internalStatus]);
|
|
6293
|
+
return isDbReady;
|
|
6294
|
+
};
|
|
6295
|
+
const usePersistedSnapshots = () => {
|
|
6296
|
+
const [initialized, setInitialized] = useState(false);
|
|
6297
|
+
const hasSavedSnapshots = useHasSavedSnapshots();
|
|
6298
|
+
const { services, percentComplete } = useServices();
|
|
6299
|
+
// Helper function to save all actor snapshots to the database
|
|
6300
|
+
const save = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
6301
|
+
for (const actor of services) {
|
|
6302
|
+
const uniqueKey = getServiceUniqueKey(actor);
|
|
6303
|
+
console.log(`would save to db with snapshot__${uniqueKey}:`, JSON.stringify(actor.getPersistedSnapshot()));
|
|
6304
|
+
// await writeAppState(
|
|
6305
|
+
// `snapshot__${uniqueKey}`,
|
|
6306
|
+
// JSON.stringify(actor.getPersistedSnapshot()),
|
|
6307
|
+
// )
|
|
6308
|
+
}
|
|
6309
|
+
}), [services]);
|
|
6310
|
+
// Helper function to load persisted snapshots from the database
|
|
6311
|
+
const load = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
6312
|
+
const appDb = BaseDb.getAppDb();
|
|
6313
|
+
if (!appDb) {
|
|
6314
|
+
return [];
|
|
6315
|
+
}
|
|
6316
|
+
const persistedSnapshots = yield appDb
|
|
6317
|
+
.select()
|
|
6318
|
+
.from(appState)
|
|
6319
|
+
.where(like(appState.key, 'snapshot__%'));
|
|
6320
|
+
return persistedSnapshots;
|
|
6321
|
+
}), []);
|
|
6322
|
+
useEffect(() => {
|
|
6323
|
+
if (!hasSavedSnapshots || initialized) {
|
|
6324
|
+
return;
|
|
6325
|
+
}
|
|
6326
|
+
const initialize = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
6327
|
+
const persistedSnapshots = yield load();
|
|
6328
|
+
console.log('persistedSnapshots:', persistedSnapshots);
|
|
6329
|
+
setInitialized(true);
|
|
6330
|
+
});
|
|
6331
|
+
initialize();
|
|
6332
|
+
return () => {
|
|
6333
|
+
save(); // Save snapshots on unmount
|
|
6334
|
+
};
|
|
6335
|
+
}, [hasSavedSnapshots, initialized]);
|
|
6336
|
+
};
|
|
6337
|
+
const useHasSavedSnapshots = () => {
|
|
6338
|
+
const [hasSavedSnapshots, setHasSavedSnapshots] = useState(false);
|
|
6339
|
+
const isDbReady = useIsDbReady();
|
|
6340
|
+
useEffect(() => {
|
|
6341
|
+
if (isDbReady) {
|
|
6342
|
+
const _checkForSnapshots = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
6343
|
+
const appDb = BaseDb.getAppDb();
|
|
6344
|
+
const rows = yield appDb
|
|
6345
|
+
.select()
|
|
6346
|
+
.from(appState)
|
|
6347
|
+
.where(like(appState.key, 'snapshot__%'));
|
|
6348
|
+
if (rows && rows.length > 0) {
|
|
6349
|
+
setHasSavedSnapshots(true);
|
|
6350
|
+
}
|
|
6351
|
+
});
|
|
6352
|
+
_checkForSnapshots();
|
|
6353
|
+
}
|
|
6354
|
+
}, [isDbReady]);
|
|
6355
|
+
return hasSavedSnapshots;
|
|
6356
|
+
};
|
|
6232
6357
|
const useServices = () => {
|
|
6233
6358
|
const [actors, setActors] = useState([]);
|
|
6234
6359
|
const [percentComplete, setPercentComplete] = useState(5);
|
|
@@ -6531,6 +6656,35 @@ const useCreateItem = (modelName) => {
|
|
|
6531
6656
|
isCreatingItem,
|
|
6532
6657
|
};
|
|
6533
6658
|
};
|
|
6659
|
+
const usePublishItem = () => {
|
|
6660
|
+
const [isPublishing, setIsPublishing] = useState(false);
|
|
6661
|
+
const isLocked = useRef(false);
|
|
6662
|
+
const publishItem = useCallback((item, callback) => __awaiter(void 0, void 0, void 0, function* () {
|
|
6663
|
+
if (!item || isLocked.current) {
|
|
6664
|
+
return;
|
|
6665
|
+
}
|
|
6666
|
+
isLocked.current = true;
|
|
6667
|
+
setIsPublishing(true);
|
|
6668
|
+
try {
|
|
6669
|
+
// await item.publish()
|
|
6670
|
+
const payload = yield item.getPublishPayload();
|
|
6671
|
+
if (callback) {
|
|
6672
|
+
callback();
|
|
6673
|
+
}
|
|
6674
|
+
}
|
|
6675
|
+
catch (e) {
|
|
6676
|
+
if (callback) {
|
|
6677
|
+
callback(e);
|
|
6678
|
+
}
|
|
6679
|
+
}
|
|
6680
|
+
setIsPublishing(false);
|
|
6681
|
+
isLocked.current = false;
|
|
6682
|
+
}), []);
|
|
6683
|
+
return {
|
|
6684
|
+
publishItem,
|
|
6685
|
+
isPublishing,
|
|
6686
|
+
};
|
|
6687
|
+
};
|
|
6534
6688
|
|
|
6535
6689
|
const logger$3 = debug('app:react:property');
|
|
6536
6690
|
const useItemProperty = ({ propertyName, seedLocalId, seedUid, }) => {
|
|
@@ -7985,7 +8139,7 @@ const initItem = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
7985
8139
|
(yield Promise.resolve().then(function () { return Item$1; })).Item;
|
|
7986
8140
|
}
|
|
7987
8141
|
else {
|
|
7988
|
-
(yield import('./Item-
|
|
8142
|
+
(yield import('./Item-CLlF0KW4.js')).Item;
|
|
7989
8143
|
}
|
|
7990
8144
|
});
|
|
7991
8145
|
|
|
@@ -8027,10 +8181,10 @@ const initFileManager = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
8027
8181
|
|
|
8028
8182
|
const initDb = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
8029
8183
|
if (typeof window !== 'undefined') {
|
|
8030
|
-
(yield import('./Db-
|
|
8184
|
+
(yield import('./Db-DuTuGf68.js')).Db;
|
|
8031
8185
|
}
|
|
8032
8186
|
else {
|
|
8033
|
-
(yield import('./Db-
|
|
8187
|
+
(yield import('./Db-DOaWOiNg.js')).Db;
|
|
8034
8188
|
}
|
|
8035
8189
|
});
|
|
8036
8190
|
|
|
@@ -8066,7 +8220,7 @@ const client = {
|
|
|
8066
8220
|
addresses,
|
|
8067
8221
|
arweaveDomain,
|
|
8068
8222
|
});
|
|
8069
|
-
const { models: internalModels } = yield import('./seed.schema.config-
|
|
8223
|
+
const { models: internalModels } = yield import('./seed.schema.config-jYCP0EPe.js');
|
|
8070
8224
|
for (const [key, value] of Object.entries(internalModels)) {
|
|
8071
8225
|
setModel(key, value);
|
|
8072
8226
|
}
|
|
@@ -8116,5 +8270,5 @@ const client = {
|
|
|
8116
8270
|
|
|
8117
8271
|
enableMapSet();
|
|
8118
8272
|
|
|
8119
|
-
export { BaseItem as B, Item as I, Json as J, List as L, Model as M, Property as P, Relation as R, Text as T, BaseDb as a, getSqliteWasmClient as b, ImageSrc as c, ItemProperty as d, useItem as e, useItemProperties as f, getAppDb as g, useCreateItem as h, isAppDbReady as i, useItemProperty as j, useDeleteItem as k, useGlobalServiceStatus as l,
|
|
8120
|
-
//# sourceMappingURL=index-
|
|
8273
|
+
export { BaseItem as B, Item as I, Json as J, List as L, Model as M, Property as P, Relation as R, Text as T, BaseDb as a, getSqliteWasmClient as b, ImageSrc as c, ItemProperty as d, useItem as e, useItemProperties as f, getAppDb as g, useCreateItem as h, isAppDbReady as i, useItemProperty as j, useDeleteItem as k, useGlobalServiceStatus as l, usePublishItem as m, usePersistedSnapshots as n, useServices as o, useService as p, getGlobalService as q, getCorrectId as r, eventEmitter as s, client as t, useItems as u, withSeed as w };
|
|
8274
|
+
//# sourceMappingURL=index-B8uGwSbV.js.map
|