@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
- let pvId = pkg.activePackageVersionId;
39
- try {
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
- let pvId = pkg.activePackageVersionId;
124
- try {
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 resolveUiBundleVersion(pkg);
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.0",
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.0",
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.0",
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",