@peers-app/peers-ui 0.28.0 → 0.28.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.
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.loadAllRoutes = exports.allPackages = void 0;
|
|
4
4
|
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
5
5
|
require("../ui-defaults");
|
|
6
|
+
const runnable_version_1 = require("./runnable-version");
|
|
6
7
|
/** Packages with authorized navigation metadata available in the current context. */
|
|
7
8
|
exports.allPackages = (0, peers_sdk_1.observable)([]);
|
|
8
9
|
let allRoutesLoaded = false;
|
|
@@ -35,30 +36,8 @@ function subscribeToPrefs(packageId) {
|
|
|
35
36
|
* Enrich an IPackage with appNavs from the device's active PackageVersion record.
|
|
36
37
|
*/
|
|
37
38
|
async function enrichWithPvAppNavs(pkg) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const pvar = (0, peers_sdk_1.packagePrefsVar)(pkg.packageId);
|
|
41
|
-
await pvar.loadingPromise;
|
|
42
|
-
pvId = pvar()?.activePackageVersionId ?? pvId;
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
/* use group default */
|
|
46
|
-
}
|
|
47
|
-
if (!pvId)
|
|
48
|
-
return pkg;
|
|
49
|
-
try {
|
|
50
|
-
const dataContext = await (0, peers_sdk_1.getDefaultDataContext)();
|
|
51
|
-
const pv = await (0, peers_sdk_1.PackageVersions)(dataContext).get(pvId);
|
|
52
|
-
if (pv)
|
|
53
|
-
await (0, peers_sdk_1.assertPackageVersionRunnable)(pkg, pv, dataContext);
|
|
54
|
-
if (pv?.appNavs) {
|
|
55
|
-
return { ...pkg, appNavs: pv.appNavs };
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
/* PV not found */
|
|
60
|
-
}
|
|
61
|
-
return pkg;
|
|
39
|
+
const appNavs = (await (0, runnable_version_1.resolveRunnableVersion)(pkg))?.pv.appNavs;
|
|
40
|
+
return appNavs ? { ...pkg, appNavs } : pkg;
|
|
62
41
|
}
|
|
63
42
|
/** Load package routes and subscribe to changes in the current context. */
|
|
64
43
|
const loadAllRoutes = async () => {
|
|
@@ -120,31 +99,8 @@ function loadRoutesBundle(pkg, forceRefresh) {
|
|
|
120
99
|
console.log(`waiting for registerPeersUIRoute to be defined on the window object`);
|
|
121
100
|
await new Promise((resolve) => setTimeout(resolve, 20));
|
|
122
101
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const pvar = (0, peers_sdk_1.packagePrefsVar)(pkg.packageId);
|
|
126
|
-
await pvar.loadingPromise;
|
|
127
|
-
pvId = pvar()?.activePackageVersionId ?? pvId;
|
|
128
|
-
}
|
|
129
|
-
catch {
|
|
130
|
-
/* use group default */
|
|
131
|
-
}
|
|
132
|
-
let routesBundleFileId;
|
|
133
|
-
let selected;
|
|
134
|
-
if (pvId) {
|
|
135
|
-
try {
|
|
136
|
-
const dataContext = await (0, peers_sdk_1.getDefaultDataContext)();
|
|
137
|
-
const pv = await (0, peers_sdk_1.PackageVersions)(dataContext).get(pvId);
|
|
138
|
-
if (pv) {
|
|
139
|
-
await (0, peers_sdk_1.assertPackageVersionRunnable)(pkg, pv, dataContext);
|
|
140
|
-
selected = { pv, dataContext };
|
|
141
|
-
}
|
|
142
|
-
routesBundleFileId = pv?.routesBundleFileId;
|
|
143
|
-
}
|
|
144
|
-
catch {
|
|
145
|
-
/* no version record */
|
|
146
|
-
}
|
|
147
|
-
}
|
|
102
|
+
const selected = await (0, runnable_version_1.resolveRunnableVersion)(pkg);
|
|
103
|
+
const routesBundleFileId = selected?.pv.routesBundleFileId;
|
|
148
104
|
let bundleCode = "";
|
|
149
105
|
if (routesBundleFileId) {
|
|
150
106
|
bundleCode = await peers_sdk_1.rpcServerCalls.getFileContents(routesBundleFileId);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type DataContext, type IPackage, type IPackageVersion } from "@peers-app/peers-sdk";
|
|
2
|
+
/**
|
|
3
|
+
* The version of `pkg` this device runs, when it may run here: the device's own selection, else
|
|
4
|
+
* the group's, checked with `assertPackageVersionRunnable`. A refusal is logged and gives
|
|
5
|
+
* undefined, so the package's app links, routes and screens are left out rather than loaded.
|
|
6
|
+
*
|
|
7
|
+
* @param pkg - The package.
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolveRunnableVersion(pkg: IPackage): Promise<{
|
|
10
|
+
pv: IPackageVersion;
|
|
11
|
+
dataContext: DataContext;
|
|
12
|
+
} | undefined>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveRunnableVersion = resolveRunnableVersion;
|
|
4
|
+
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
5
|
+
/**
|
|
6
|
+
* The version of `pkg` this device runs, when it may run here: the device's own selection, else
|
|
7
|
+
* the group's, checked with `assertPackageVersionRunnable`. A refusal is logged and gives
|
|
8
|
+
* undefined, so the package's app links, routes and screens are left out rather than loaded.
|
|
9
|
+
*
|
|
10
|
+
* @param pkg - The package.
|
|
11
|
+
*/
|
|
12
|
+
async function resolveRunnableVersion(pkg) {
|
|
13
|
+
let pvId = pkg.activePackageVersionId;
|
|
14
|
+
try {
|
|
15
|
+
const pvar = (0, peers_sdk_1.packagePrefsVar)(pkg.packageId);
|
|
16
|
+
await pvar.loadingPromise;
|
|
17
|
+
pvId = pvar()?.activePackageVersionId ?? pvId;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
/* use group default */
|
|
21
|
+
}
|
|
22
|
+
if (!pvId)
|
|
23
|
+
return undefined;
|
|
24
|
+
try {
|
|
25
|
+
const dataContext = await (0, peers_sdk_1.getDefaultDataContext)();
|
|
26
|
+
const pv = await (0, peers_sdk_1.PackageVersions)(dataContext).get(pvId);
|
|
27
|
+
if (!pv)
|
|
28
|
+
return undefined;
|
|
29
|
+
await (0, peers_sdk_1.assertPackageVersionRunnable)(pkg, pv, dataContext);
|
|
30
|
+
return { pv, dataContext };
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.warn(`Not showing ${pkg.name}: ${error instanceof Error ? error.message : String(error)}`);
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -44,6 +44,7 @@ const globals_1 = require("../globals");
|
|
|
44
44
|
const hooks_1 = require("../hooks");
|
|
45
45
|
require("../ui-defaults");
|
|
46
46
|
const routes_loader_1 = require("./routes-loader");
|
|
47
|
+
const runnable_version_1 = require("./runnable-version");
|
|
47
48
|
const peersUIs = {};
|
|
48
49
|
class UIErrorBoundary extends react_1.Component {
|
|
49
50
|
constructor(props) {
|
|
@@ -182,36 +183,13 @@ const UILoader = (args) => {
|
|
|
182
183
|
return (0, jsx_runtime_1.jsx)(UIAsyncLoader, { peersUIId: peersUIId, props: props }, peersUIId);
|
|
183
184
|
};
|
|
184
185
|
const uiLoadingPromises = {};
|
|
185
|
-
async function resolveUiBundleVersion(pkg) {
|
|
186
|
-
let pvId = pkg.activePackageVersionId;
|
|
187
|
-
try {
|
|
188
|
-
const pvar = (0, peers_sdk_1.packagePrefsVar)(pkg.packageId);
|
|
189
|
-
await pvar.loadingPromise;
|
|
190
|
-
pvId = pvar()?.activePackageVersionId ?? pvId;
|
|
191
|
-
}
|
|
192
|
-
catch {
|
|
193
|
-
/* use group default */
|
|
194
|
-
}
|
|
195
|
-
if (!pvId)
|
|
196
|
-
return undefined;
|
|
197
|
-
try {
|
|
198
|
-
const dataContext = await (0, peers_sdk_1.getDefaultDataContext)();
|
|
199
|
-
const pv = await (0, peers_sdk_1.PackageVersions)(dataContext).get(pvId);
|
|
200
|
-
if (pv)
|
|
201
|
-
await (0, peers_sdk_1.assertPackageVersionRunnable)(pkg, pv, dataContext);
|
|
202
|
-
return pv ? { pv, dataContext } : undefined;
|
|
203
|
-
}
|
|
204
|
-
catch {
|
|
205
|
-
return undefined;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
186
|
function loadUIBundle(pkg, forceRefresh) {
|
|
209
187
|
let importPromise = uiLoadingPromises[pkg.packageId];
|
|
210
188
|
if (!importPromise || forceRefresh) {
|
|
211
189
|
const sTime = Date.now();
|
|
212
190
|
console.log(`loading ui bundle for ${pkg.name}`);
|
|
213
191
|
importPromise = (async () => {
|
|
214
|
-
const selected = await
|
|
192
|
+
const selected = await (0, runnable_version_1.resolveRunnableVersion)(pkg);
|
|
215
193
|
const uiBundleFileId = selected?.pv.uiBundleFileId;
|
|
216
194
|
if (!selected || !uiBundleFileId) {
|
|
217
195
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peers-app/peers-ui",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.1",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/peers-app/peers-ui.git"
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"lint:fix": "biome check --write ."
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
|
-
"@peers-app/peers-sdk": "^0.28.
|
|
39
|
+
"@peers-app/peers-sdk": "^0.28.1",
|
|
40
40
|
"bootstrap": "^5.3.3",
|
|
41
41
|
"react": "^18.0.0",
|
|
42
42
|
"react-dom": "^18.0.0"
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@babel/preset-react": "^7.24.1",
|
|
48
48
|
"@babel/preset-typescript": "^7.27.1",
|
|
49
49
|
"@biomejs/biome": "2.3.11",
|
|
50
|
-
"@peers-app/peers-sdk": "0.28.
|
|
50
|
+
"@peers-app/peers-sdk": "0.28.1",
|
|
51
51
|
"@testing-library/dom": "^10.4.0",
|
|
52
52
|
"@testing-library/jest-dom": "^6.6.3",
|
|
53
53
|
"@testing-library/react": "^16.3.0",
|