@powerhousedao/connect 6.2.0-dev.10 → 6.2.0-dev.11
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/{DebugSettingsModal-DyBKC4o4.js → DebugSettingsModal-DODYHds3.js} +4 -4
- package/dist/{DebugSettingsModal-DyBKC4o4.js.map → DebugSettingsModal-DODYHds3.js.map} +1 -1
- package/dist/{MissingPackageModal-D_N96M6a.js → MissingPackageModal-BqgCNi7N.js} +4 -4
- package/dist/{MissingPackageModal-D_N96M6a.js.map → MissingPackageModal-BqgCNi7N.js.map} +1 -1
- package/dist/{SettingsModal-FmV5d-qZ.js → SettingsModal-CWDPf3XO.js} +16 -23
- package/dist/{SettingsModal-FmV5d-qZ.js.map → SettingsModal-CWDPf3XO.js.map} +1 -1
- package/dist/app-loader-CRnHAHhq.js +4 -0
- package/dist/{app-loader-CdUk4WrI.js → app-loader-DaVfK88Y.js} +7 -7
- package/dist/{app-loader-CdUk4WrI.js.map → app-loader-DaVfK88Y.js.map} +1 -1
- package/dist/{build-info-FZe0GcwJ.js → build-info-JxFdBdHm.js} +4 -4
- package/dist/{build-info-FZe0GcwJ.js.map → build-info-JxFdBdHm.js.map} +1 -1
- package/dist/{components-DBa6iWxY.js → components-CE1mpMgc.js} +3 -3
- package/dist/{load-CRHjdTEm.js → load--zo9qF81.js} +4 -4
- package/dist/{load-CRHjdTEm.js.map → load--zo9qF81.js.map} +1 -1
- package/dist/main.js +1 -1
- package/dist/{package-C7nB0wpN.js → package-Bd-Q575F.js} +6 -5
- package/dist/package-Bd-Q575F.js.map +1 -0
- package/dist/start-connect.js +1 -1
- package/dist/style.css +11 -0
- package/dist/{useRegistryPackages-Bh0luCvV.js → useRegistryPackages-B-gFECmd.js} +44 -8
- package/dist/useRegistryPackages-B-gFECmd.js.map +1 -0
- package/package.json +11 -10
- package/dist/app-loader-BIWPp45Z.js +0 -4
- package/dist/package-C7nB0wpN.js.map +0 -1
- package/dist/useRegistryPackages-Bh0luCvV.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="19d0d05e-3534-567b-8081-dd0bd7fd5f54")}catch(e){}}();
|
|
3
3
|
import { buildTreeUrl, shortGitSha } from "@powerhousedao/shared";
|
|
4
4
|
//#region src/utils/build-info.ts
|
|
5
5
|
function getGitSha() {
|
|
6
|
-
return "
|
|
6
|
+
return "43d2338a04e7639d932784f165b87beb11608df7";
|
|
7
7
|
}
|
|
8
8
|
function getGitUrl() {
|
|
9
9
|
return buildTreeUrl(getGitSha());
|
|
@@ -11,5 +11,5 @@ function getGitUrl() {
|
|
|
11
11
|
//#endregion
|
|
12
12
|
export { getGitUrl as n, shortGitSha as r, getGitSha as t };
|
|
13
13
|
|
|
14
|
-
//# sourceMappingURL=build-info-
|
|
15
|
-
//# debugId=
|
|
14
|
+
//# sourceMappingURL=build-info-JxFdBdHm.js.map
|
|
15
|
+
//# debugId=19d0d05e-3534-567b-8081-dd0bd7fd5f54
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-info-
|
|
1
|
+
{"version":3,"file":"build-info-JxFdBdHm.js","sources":["../src/utils/build-info.ts"],"sourcesContent":["import { buildTreeUrl, shortGitSha } from \"@powerhousedao/shared\";\nimport { packageJson } from \"./package-json.js\";\n\nexport { shortGitSha };\n\ndeclare const CONNECT_VERSION: string | undefined;\ndeclare const CONNECT_GIT_SHA: string | undefined;\n\nexport function getVersion(): string {\n if (typeof CONNECT_VERSION !== \"undefined\") return CONNECT_VERSION;\n return (\n process.env.WORKSPACE_VERSION ??\n process.env.npm_package_version ??\n packageJson.version\n );\n}\n\nexport function getGitSha(): string {\n if (typeof CONNECT_GIT_SHA !== \"undefined\") return CONNECT_GIT_SHA;\n return process.env.WORKSPACE_GIT_SHA ?? \"unknown\";\n}\n\nexport function getGitUrl(): string | null {\n return buildTreeUrl(getGitSha());\n}\n"],"names":[],"mappings":";;;;AAiBA,SAAgB,YAAoB;AACU,QAAA;;AAI9C,SAAgB,YAA2B;AACzC,QAAO,aAAa,WAAW,CAAC","debug_id":"19d0d05e-3534-567b-8081-dd0bd7fd5f54"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./reload-connect-toast-CwvSc6F-.js";
|
|
2
|
-
import { t as AppLoader } from "./app-loader-
|
|
2
|
+
import { t as AppLoader } from "./app-loader-DaVfK88Y.js";
|
|
3
3
|
export { AppLoader };
|
|
4
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
5
|
-
//# debugId=
|
|
4
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e2aa59fe-63ab-5eeb-ac53-4a483d473914")}catch(e){}}();
|
|
5
|
+
//# debugId=e2aa59fe-63ab-5eeb-ac53-4a483d473914
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="aba61760-6391-5f76-8e65-c7bcf4753f8f")}catch(e){}}();
|
|
3
3
|
import { r as loadRuntimeConfig, t as applyConnectBranding } from "./runtime-config-DL3QjcfM.js";
|
|
4
4
|
import { t as ReloadConnectToast } from "./reload-connect-toast-CwvSc6F-.js";
|
|
5
|
-
import { t as package_default } from "./package-
|
|
5
|
+
import { t as package_default } from "./package-Bd-Q575F.js";
|
|
6
6
|
import { r as connectConfig } from "./connect.config-Bt4pvvWV.js";
|
|
7
7
|
import { t as detectReactorPgMajor } from "./pglite-runtime-Ch2YeUAA.js";
|
|
8
8
|
import { n as seedPendingPgVersion } from "./pglite-seed-BWk7yOwr.js";
|
|
@@ -97,5 +97,5 @@ async function loadComponent(localPackage) {
|
|
|
97
97
|
//#endregion
|
|
98
98
|
export { loadComponent };
|
|
99
99
|
|
|
100
|
-
//# sourceMappingURL=load
|
|
101
|
-
//# debugId=
|
|
100
|
+
//# sourceMappingURL=load--zo9qF81.js.map
|
|
101
|
+
//# debugId=aba61760-6391-5f76-8e65-c7bcf4753f8f
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load
|
|
1
|
+
{"version":3,"file":"load--zo9qF81.js","sources":["../src/hooks/useCheckLatestVersion.ts","../src/hooks/utils.ts","../src/store/user.ts","../src/components/load.tsx"],"sourcesContent":["import { connectConfig } from \"@powerhousedao/connect/config\";\nimport { isLatestVersion } from \"@powerhousedao/connect/hooks\";\nimport { toast } from \"@powerhousedao/connect/services\";\nimport { logger } from \"document-model\";\nimport { createElement, useEffect } from \"react\";\nimport { ReloadConnectToast } from \"../components/reload-connect-toast.js\";\n\nexport const useCheckLatestVersion = () => {\n async function checkLatestVersion() {\n const result = await isLatestVersion();\n if (result === null) return;\n // ignore dev/staging versions\n if (result.isLatest || result.currentVersion.includes(\"-\")) {\n return true;\n }\n\n if (\n import.meta.env.MODE === \"development\" ||\n connectConfig.studioMode ||\n !connectConfig.warnOutdatedApp\n ) {\n logger.warn(\n \"Connect is outdated: \\nCurrent: @currentVersion\\nLatest: @latestVersion\",\n result.currentVersion,\n result.latestVersion,\n );\n } else {\n toast(createElement(ReloadConnectToast), {\n type: \"connect-warning\",\n toastId: \"outdated-app\",\n autoClose: false,\n });\n }\n }\n\n useEffect(() => {\n checkLatestVersion().catch(console.error);\n }, []);\n};\n","import { packageJson } from \"../utils/package-json.js\";\n\nexport const isMac = window.navigator.appVersion.includes(\"Mac\");\n\nconst urlBranchMap: Record<string, string> = {\n \"staging/makerdao\": \"deployments/staging/makerdao\",\n \"staging/arbitrum\": \"arb-ltip\",\n \"staging/powerhouse\": \"staging\",\n makerdao: \"deployments/makerdao\",\n arbitrum: \"deployments/arbitrum\",\n arbgrants: \"deployments/arbitrum\",\n localhost: \"develop\",\n};\n\nconst getGithubLinkFromUrl = () => {\n const githubLink = \"https://raw.githubusercontent.com/powerhouse-inc/connect\";\n const url = window.location.href;\n\n const env = Object.keys(urlBranchMap).find((env) => url.includes(env));\n const value = env ? urlBranchMap[env] : undefined;\n if (!value) {\n return undefined;\n } else {\n return `${githubLink}/${value}/package.json`;\n }\n};\n\nconst fetchLatestVersion = async () => {\n const link = getGithubLinkFromUrl();\n if (!link) {\n return undefined;\n }\n const result = await fetch(link);\n const data = (await result.json()) as { version: string };\n const { version } = data;\n return version;\n};\n\nexport const isLatestVersion = async () => {\n const currentVersion = packageJson.version;\n const deployed = await fetchLatestVersion();\n\n if (deployed) {\n return {\n isLatest: deployed === currentVersion,\n currentVersion,\n latestVersion: deployed,\n };\n }\n\n return null;\n};\n","import { useUser } from \"@powerhousedao/reactor-browser\";\nimport type { User as SentryUser } from \"@sentry/react\";\nimport { setUser as setSentryUser } from \"@sentry/react\";\nimport { useEffect } from \"react\";\n\nexport function useSetSentryUser() {\n const user = useUser();\n useEffect(() => {\n let sentryUser: SentryUser | null = null;\n if (user) {\n // saves the user info except the credential\n const { credential: _credential, ...rest } = user;\n sentryUser = { id: rest.did, username: rest.ens?.name, ...rest };\n }\n setSentryUser(sentryUser);\n }, [user]);\n}\n","import { useCheckLatestVersion } from \"@powerhousedao/connect/hooks\";\nimport \"@powerhousedao/connect/i18n\";\nimport { createReactor, useSetSentryUser } from \"@powerhousedao/connect/store\";\nimport {\n detectReactorPgMajor,\n seedPendingPgVersion,\n} from \"@powerhousedao/connect/utils\";\nimport { initTheme } from \"@powerhousedao/reactor-browser\";\nimport type { DocumentModelLib } from \"document-model\";\nimport { type ReactNode } from \"react\";\nimport { applyConnectBranding, loadRuntimeConfig } from \"../runtime-config.js\";\n\nexport async function loadComponent(localPackage?: DocumentModelLib) {\n await seedPendingPgVersion();\n await detectReactorPgMajor();\n const runtimeConfig = await loadRuntimeConfig();\n applyConnectBranding(runtimeConfig);\n await createReactor(localPackage);\n return {\n default: ({ children }: { children?: ReactNode }) => {\n initTheme();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useSetSentryUser();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useCheckLatestVersion();\n return children;\n },\n };\n}\n"],"names":["packageJson"],"mappings":";;;;;;;;;;;;;;;AAOA,MAAa,8BAA8B;CACzC,eAAe,qBAAqB;EAClC,MAAM,SAAS,MAAM,iBAAiB;AACtC,MAAI,WAAW,KAAM;AAErB,MAAI,OAAO,YAAY,OAAO,eAAe,SAAS,IAAI,CACxD,QAAO;AAGT,MACE,OAAO,KAAK,IAAI,SAAS,iBACzB,cAAc,cACd,CAAC,cAAc,gBAEf,QAAO,KACL,2EACA,OAAO,gBACP,OAAO,cACR;MAED,OAAM,cAAc,mBAAmB,EAAE;GACvC,MAAM;GACN,SAAS;GACT,WAAW;GACZ,CAAC;;AAIN,iBAAgB;AACd,sBAAoB,CAAC,MAAM,QAAQ,MAAM;IACxC,EAAE,CAAC;;ACnCa,OAAO,UAAU,WAAW,SAAS,MAAM;AAEhE,MAAM,eAAuC;CAC3C,oBAAoB;CACpB,oBAAoB;CACpB,sBAAsB;CACtB,UAAU;CACV,UAAU;CACV,WAAW;CACX,WAAW;CACZ;AAED,MAAM,6BAA6B;CACjC,MAAM,aAAa;CACnB,MAAM,MAAM,OAAO,SAAS;CAE5B,MAAM,MAAM,OAAO,KAAK,aAAa,CAAC,MAAM,QAAQ,IAAI,SAAS,IAAI,CAAC;CACtE,MAAM,QAAQ,MAAM,aAAa,OAAO,KAAA;AACxC,KAAI,CAAC,MACH;KAEA,QAAO,GAAG,WAAW,GAAG,MAAM;;AAIlC,MAAM,qBAAqB,YAAY;CACrC,MAAM,OAAO,sBAAsB;AACnC,KAAI,CAAC,KACH;CAIF,MAAM,EAAE,YADM,OADC,MAAM,MAAM,KAAK,EACL,MAAM;AAEjC,QAAO;;AAGT,MAAa,kBAAkB,YAAY;CACzC,MAAM,iBAAiBA,gBAAY;CACnC,MAAM,WAAW,MAAM,oBAAoB;AAE3C,KAAI,SACF,QAAO;EACL,UAAU,aAAa;EACvB;EACA,eAAe;EAChB;AAGH,QAAO;;;;AC7CT,SAAgB,mBAAmB;CACjC,MAAM,OAAO,SAAS;AACtB,iBAAgB;EACd,IAAI,aAAgC;AACpC,MAAI,MAAM;GAER,MAAM,EAAE,YAAY,aAAa,GAAG,SAAS;AAC7C,gBAAa;IAAE,IAAI,KAAK;IAAK,UAAU,KAAK,KAAK;IAAM,GAAG;IAAM;;AAElE,UAAc,WAAW;IACxB,CAAC,KAAK,CAAC;;;;ACHZ,eAAsB,cAAc,cAAiC;AACnE,OAAM,sBAAsB;AAC5B,OAAM,sBAAsB;AAE5B,sBADsB,MAAM,mBAAmB,CACZ;AACnC,OAAM,cAAc,aAAa;AACjC,QAAO,EACL,UAAU,EAAE,eAAyC;AACnD,aAAW;AAEX,oBAAkB;AAElB,yBAAuB;AACvB,SAAO;IAEV","debug_id":"aba61760-6391-5f76-8e65-c7bcf4753f8f"}
|
package/dist/main.js
CHANGED
|
@@ -6,7 +6,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
6
6
|
//#region main.tsx
|
|
7
7
|
if (!window.ph) window.ph = {};
|
|
8
8
|
await loadRuntimeConfig();
|
|
9
|
-
const { AppLoader } = await import("./app-loader-
|
|
9
|
+
const { AppLoader } = await import("./app-loader-CRnHAHhq.js");
|
|
10
10
|
createRoot(document.getElementById("root")).render(/* @__PURE__ */ jsx(AppLoader, {}));
|
|
11
11
|
//#endregion
|
|
12
12
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
//#region package.json
|
|
2
2
|
|
|
3
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="acec2d00-fed0-503b-868d-f56339aaadda")}catch(e){}}();
|
|
4
4
|
var package_default = {
|
|
5
5
|
name: "@powerhousedao/connect",
|
|
6
6
|
productName: "Powerhouse-Connect",
|
|
7
|
-
version: "6.2.0-dev.
|
|
7
|
+
version: "6.2.0-dev.11",
|
|
8
8
|
description: "Powerhouse Connect",
|
|
9
9
|
main: "dist/index.html",
|
|
10
10
|
type: "module",
|
|
@@ -70,9 +70,9 @@ var package_default = {
|
|
|
70
70
|
"@openpanel/web": "^1.4.1",
|
|
71
71
|
"@powerhousedao/config": "workspace:*",
|
|
72
72
|
"@powerhousedao/design-system": "workspace:*",
|
|
73
|
-
"@powerhousedao/reactor-attachments": "workspace:*",
|
|
74
73
|
"@powerhousedao/document-engineering": "catalog:",
|
|
75
74
|
"@powerhousedao/powerhouse-vetra-packages": "workspace:*",
|
|
75
|
+
"@powerhousedao/reactor-attachments": "workspace:*",
|
|
76
76
|
"@powerhousedao/reactor-browser": "workspace:*",
|
|
77
77
|
"@powerhousedao/shared": "workspace:*",
|
|
78
78
|
"@powerhousedao/vetra": "workspace:*",
|
|
@@ -82,6 +82,7 @@ var package_default = {
|
|
|
82
82
|
"i18next": "^25.5.3",
|
|
83
83
|
"kysely": "catalog:",
|
|
84
84
|
"kysely-pglite-dialect": "catalog:",
|
|
85
|
+
"lucide-react": "^1.16.0",
|
|
85
86
|
"pglite-legacy-02": "npm:@electric-sql/pglite@0.2.17",
|
|
86
87
|
"pglite-tools-legacy-02": "npm:@electric-sql/pglite-tools@0.2.4",
|
|
87
88
|
"react-error-boundary": "^4.0.11",
|
|
@@ -121,5 +122,5 @@ var package_default = {
|
|
|
121
122
|
//#endregion
|
|
122
123
|
export { package_default as t };
|
|
123
124
|
|
|
124
|
-
//# sourceMappingURL=package-
|
|
125
|
-
//# debugId=
|
|
125
|
+
//# sourceMappingURL=package-Bd-Q575F.js.map
|
|
126
|
+
//# debugId=acec2d00-fed0-503b-868d-f56339aaadda
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-Bd-Q575F.js","sources":["../package.json"],"sourcesContent":[""],"names":[],"mappings":"","debug_id":"acec2d00-fed0-503b-868d-f56339aaadda"}
|
package/dist/start-connect.js
CHANGED
|
@@ -5,7 +5,7 @@ import { createRoot } from "react-dom/client";
|
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region start-connect.tsx
|
|
7
7
|
await loadRuntimeConfig();
|
|
8
|
-
const { AppLoader } = await import("./components-
|
|
8
|
+
const { AppLoader } = await import("./components-CE1mpMgc.js");
|
|
9
9
|
function updateLocalPackage(pkg) {
|
|
10
10
|
window.ph?.vetraPackageManager?.updateLocalPackage(pkg);
|
|
11
11
|
}
|
package/dist/style.css
CHANGED
|
@@ -567,6 +567,9 @@
|
|
|
567
567
|
.mt-\[11px\] {
|
|
568
568
|
margin-top: 11px;
|
|
569
569
|
}
|
|
570
|
+
.mt-auto {
|
|
571
|
+
margin-top: auto;
|
|
572
|
+
}
|
|
570
573
|
.-mr-1 {
|
|
571
574
|
margin-right: calc(var(--spacing) * -1);
|
|
572
575
|
}
|
|
@@ -1378,6 +1381,9 @@
|
|
|
1378
1381
|
margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
|
|
1379
1382
|
}
|
|
1380
1383
|
}
|
|
1384
|
+
.gap-x-0\.5 {
|
|
1385
|
+
column-gap: calc(var(--spacing) * 0.5);
|
|
1386
|
+
}
|
|
1381
1387
|
.gap-x-1 {
|
|
1382
1388
|
column-gap: calc(var(--spacing) * 1);
|
|
1383
1389
|
}
|
|
@@ -3830,6 +3836,11 @@
|
|
|
3830
3836
|
border-color: var(--color-slate-600);
|
|
3831
3837
|
}
|
|
3832
3838
|
}
|
|
3839
|
+
.dark\:border-slate-700 {
|
|
3840
|
+
&:where(.dark, .dark *) {
|
|
3841
|
+
border-color: var(--color-slate-700);
|
|
3842
|
+
}
|
|
3843
|
+
}
|
|
3833
3844
|
.dark\:border-slate-800 {
|
|
3834
3845
|
&:where(.dark, .dark *) {
|
|
3835
3846
|
border-color: var(--color-slate-800);
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ed326e42-f833-53ca-9b66-6d0b7e627b32")}catch(e){}}();
|
|
3
3
|
import { n as getRuntimeConfig } from "./runtime-config-DL3QjcfM.js";
|
|
4
|
-
import { useEffect, useMemo } from "react";
|
|
4
|
+
import { useEffect, useMemo, useState } from "react";
|
|
5
5
|
import { getPackages, trimTrailingSlash, useVetraPackageManager } from "@powerhousedao/reactor-browser";
|
|
6
|
-
import {
|
|
6
|
+
import { slimManifest } from "@powerhousedao/shared/registry/manifest-slim";
|
|
7
7
|
//#region src/hooks/useRegistryPackages.ts
|
|
8
8
|
function useRegistryPackages() {
|
|
9
9
|
const packageManager = useVetraPackageManager();
|
|
10
10
|
const packageManagerPackages = packageManager?.packages;
|
|
11
11
|
const registryUrl = getRuntimeConfig().packageRegistryUrl ?? null;
|
|
12
|
-
const [registryPackagesMap, setRegistryPackagesMap] =
|
|
12
|
+
const [registryPackagesMap, setRegistryPackagesMap] = useBestEffortLocalStorage(`REGISTRY_PACKAGES:${registryUrl === null ? null : trimTrailingSlash(registryUrl)}`, {});
|
|
13
13
|
const registryPackageList = useMemo(() => {
|
|
14
14
|
return Array.from(Object.values(registryPackagesMap)).filter((p) => p !== void 0);
|
|
15
15
|
}, [registryPackagesMap]);
|
|
@@ -28,7 +28,7 @@ function useRegistryPackages() {
|
|
|
28
28
|
const installedVersion = packageManager.getPackageVersion(packageInfo.name);
|
|
29
29
|
newRegistryPackages[packageInfo.name] = {
|
|
30
30
|
...existingPackage,
|
|
31
|
-
manifest: packageInfo.manifest ?? existingPackage.manifest,
|
|
31
|
+
manifest: slimManifest(packageInfo.manifest) ?? existingPackage.manifest,
|
|
32
32
|
version: installedVersion ?? packageInfo.version ?? existingPackage.version,
|
|
33
33
|
distTags: packageInfo.distTags ?? existingPackage.distTags,
|
|
34
34
|
versions: packageInfo.versions ?? existingPackage.versions,
|
|
@@ -107,18 +107,54 @@ function makeRegistryPackageFromDocumentModelLib(documentModelLib, status, versi
|
|
|
107
107
|
path: "stub-path",
|
|
108
108
|
documentTypes: documentModelLib.documentModels.map((d) => d.documentModel.global.id),
|
|
109
109
|
status,
|
|
110
|
-
manifest: documentModelLib.manifest,
|
|
110
|
+
manifest: slimManifest(documentModelLib.manifest),
|
|
111
111
|
version
|
|
112
112
|
};
|
|
113
113
|
}
|
|
114
114
|
function makeRegistryPackageFromPackageInfo(packageInfo, status) {
|
|
115
115
|
return {
|
|
116
116
|
...packageInfo,
|
|
117
|
+
manifest: slimManifest(packageInfo.manifest),
|
|
117
118
|
documentTypes: packageInfo.manifest?.documentModels?.map((d) => d.id) ?? [],
|
|
118
119
|
status
|
|
119
120
|
};
|
|
120
121
|
}
|
|
121
122
|
/**
|
|
123
|
+
* Like usehooks-ts' useLocalStorage, but persistence is best-effort: a failed
|
|
124
|
+
* `setItem` (e.g. QuotaExceededError on an oversized payload) keeps the
|
|
125
|
+
* in-memory state so the package manager still works for the session.
|
|
126
|
+
* useLocalStorage couples the state update to the write — when the write
|
|
127
|
+
* threw, the freshly fetched package list was discarded and the registry UI
|
|
128
|
+
* rendered (and searched) an empty list.
|
|
129
|
+
*
|
|
130
|
+
* The key is derived from the boot-time runtime config and never changes
|
|
131
|
+
* within a session, so no key-change rehydration is needed.
|
|
132
|
+
*/
|
|
133
|
+
function useBestEffortLocalStorage(key, initialValue) {
|
|
134
|
+
const [value, setValue] = useState(() => readJsonFromStorage(key) ?? initialValue);
|
|
135
|
+
useEffect(() => {
|
|
136
|
+
try {
|
|
137
|
+
window.localStorage.setItem(key, JSON.stringify(value));
|
|
138
|
+
} catch (error) {
|
|
139
|
+
try {
|
|
140
|
+
window.localStorage.removeItem(key);
|
|
141
|
+
window.localStorage.setItem(key, JSON.stringify(value));
|
|
142
|
+
} catch {
|
|
143
|
+
console.warn(`Failed to persist "${key}" to localStorage; continuing with in-memory data.`, error);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}, [key, value]);
|
|
147
|
+
return [value, setValue];
|
|
148
|
+
}
|
|
149
|
+
function readJsonFromStorage(key) {
|
|
150
|
+
try {
|
|
151
|
+
const raw = window.localStorage.getItem(key);
|
|
152
|
+
return raw === null ? null : JSON.parse(raw);
|
|
153
|
+
} catch {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
122
158
|
* When refreshing a cached entry, promote `"available"` to whatever the
|
|
123
159
|
* packageManager now reports — the cached `"available"` was almost certainly
|
|
124
160
|
* recorded before `packageManager.addPackages()` finished on a prior session.
|
|
@@ -139,5 +175,5 @@ function getPackageStatusFromPackageSource(packageSource) {
|
|
|
139
175
|
//#endregion
|
|
140
176
|
export { useRegistryPackages as t };
|
|
141
177
|
|
|
142
|
-
//# sourceMappingURL=useRegistryPackages-
|
|
143
|
-
//# debugId=
|
|
178
|
+
//# sourceMappingURL=useRegistryPackages-B-gFECmd.js.map
|
|
179
|
+
//# debugId=ed326e42-f833-53ca-9b66-6d0b7e627b32
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRegistryPackages-B-gFECmd.js","sources":["../src/hooks/useRegistryPackages.ts"],"sourcesContent":["import {\n getPackages,\n trimTrailingSlash,\n useVetraPackageManager,\n} from \"@powerhousedao/reactor-browser\";\nimport type {\n PackageInfo,\n RegistryPackage,\n RegistryPackageList,\n RegistryPackageMap,\n RegistryPackageSource,\n RegistryPackageStatus,\n} from \"@powerhousedao/shared/registry\";\nimport { slimManifest } from \"@powerhousedao/shared/registry/manifest-slim\";\nimport type { DocumentModelLib } from \"document-model\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { getRuntimeConfig } from \"../runtime-config.js\";\n\nexport function useRegistryPackages() {\n const packageManager = useVetraPackageManager();\n const packageManagerPackages = packageManager?.packages;\n const registryUrl = getRuntimeConfig().packageRegistryUrl ?? null;\n // Normalize so `http://host` and `http://host/` don't produce two separate\n // localStorage maps where the install/status flow reads from one while the\n // registry fetch writes to the other.\n const registryPackagesKey = `REGISTRY_PACKAGES:${registryUrl === null ? null : trimTrailingSlash(registryUrl)}`;\n const [registryPackagesMap, setRegistryPackagesMap] =\n useBestEffortLocalStorage<RegistryPackageMap>(registryPackagesKey, {});\n const registryPackageList: RegistryPackageList = useMemo(() => {\n return Array.from(Object.values(registryPackagesMap)).filter(\n (p) => p !== undefined,\n );\n }, [registryPackagesMap]);\n\n useEffect(() => {\n async function refreshPackages() {\n if (registryUrl === null || !packageManager) return;\n\n const packageInfos = await getPackages(registryUrl);\n\n setRegistryPackagesMap((oldPackages) => {\n const newRegistryPackages: RegistryPackageMap = {\n ...oldPackages,\n };\n\n for (const packageInfo of packageInfos) {\n const existingPackage = newRegistryPackages[packageInfo.name];\n\n if (!existingPackage) {\n const packageSource = packageManager.getPackageSource(\n packageInfo.name,\n );\n const status = getPackageStatusFromPackageSource(packageSource);\n newRegistryPackages[packageInfo.name] =\n makeRegistryPackageFromPackageInfo(packageInfo, status);\n } else {\n // Keep the cached entry's status, but refresh anything the\n // registry sent. This includes distTags and the versions list\n // the Package Manager UI filters on.\n //\n // For `version`, prefer the actually-installed version from the\n // package manager (set by the rehydration effect). `packageInfo.version`\n // is the registry's newest-published version, which for installed\n // packages would incorrectly overwrite the user's picked version\n // on the next /packages refresh.\n const installedVersion = packageManager.getPackageVersion(\n packageInfo.name,\n );\n newRegistryPackages[packageInfo.name] = {\n ...existingPackage,\n manifest:\n slimManifest(packageInfo.manifest) ?? existingPackage.manifest,\n version:\n installedVersion ??\n packageInfo.version ??\n existingPackage.version,\n distTags: packageInfo.distTags ?? existingPackage.distTags,\n versions: packageInfo.versions ?? existingPackage.versions,\n documentTypes: packageInfo.documentTypes.length\n ? packageInfo.documentTypes\n : existingPackage.documentTypes,\n status: promoteStatus(\n existingPackage.status,\n packageManager.getPackageSource(packageInfo.name),\n ),\n };\n }\n }\n\n return newRegistryPackages;\n });\n }\n\n refreshPackages().catch(console.error);\n }, []);\n\n useEffect(() => {\n if (!packageManager) return;\n\n if (packageManagerPackages?.length) {\n for (const packageManagerPackage of packageManagerPackages) {\n setRegistryPackagesMap((existingRegistryPackages) => {\n const packageName = packageManagerPackage.manifest.name;\n const existingPackage = existingRegistryPackages[packageName];\n const newRegistryPackages = { ...existingRegistryPackages };\n const version = packageManager.getPackageVersion(packageName);\n if (existingPackage) {\n newRegistryPackages[packageName] = {\n ...existingPackage,\n version: version ?? existingPackage.version,\n status: promoteStatus(\n existingPackage.status,\n packageManager.getPackageSource(packageName),\n ),\n };\n } else {\n const packageSource = packageManager.getPackageSource(packageName);\n const status = getPackageStatusFromPackageSource(packageSource);\n const newRegistryPackage = makeRegistryPackageFromDocumentModelLib(\n packageManagerPackage,\n status,\n version,\n );\n newRegistryPackages[packageName] = newRegistryPackage;\n }\n return newRegistryPackages;\n });\n }\n }\n }, [packageManagerPackages]);\n\n function updateRegistryPackageStatus(\n packageName: string,\n newStatus: RegistryPackageStatus,\n ) {\n setRegistryPackagesMap((oldRegistryPackages) => {\n const newRegistryPackages = { ...oldRegistryPackages };\n const newRegistryPackage = newRegistryPackages[packageName];\n if (!newRegistryPackage) {\n console.error(\n \"Attempting to update status for package that does not exist.\",\n );\n return newRegistryPackages;\n }\n newRegistryPackages[packageName] = {\n ...newRegistryPackage,\n status: newStatus,\n };\n\n return newRegistryPackages;\n });\n }\n\n /**\n * Register a freshly-installed package that came in via the npm-uplink\n * fallback — the user typed a bare name, our local `/packages` didn't know\n * it, but the install succeeded because verdaccio proxy-fetched the tarball.\n *\n * This is the one legitimate case where the status update runs against a\n * name that wasn't in the registry map. We treat it as an insert rather\n * than logging the \"does not exist\" error. Data is pulled from the loaded\n * module so the UI card shows the real manifest immediately; the next\n * `/packages` refresh will add `versions`/`distTags`.\n */\n function registerFallbackRegistryPackage(\n packageName: string,\n loadedPackage: DocumentModelLib,\n version: string | undefined,\n status: RegistryPackageStatus,\n ) {\n setRegistryPackagesMap((oldRegistryPackages) => {\n const newRegistryPackages = { ...oldRegistryPackages };\n newRegistryPackages[packageName] = {\n ...makeRegistryPackageFromDocumentModelLib(\n loadedPackage,\n status,\n version,\n ),\n name: packageName,\n };\n return newRegistryPackages;\n });\n }\n\n return {\n registryPackagesMap,\n registryPackageList,\n updateRegistryPackageStatus,\n registerFallbackRegistryPackage,\n };\n}\n\nfunction makeRegistryPackageFromDocumentModelLib(\n documentModelLib: DocumentModelLib,\n status: RegistryPackageStatus,\n version?: string,\n): RegistryPackage {\n return {\n name: documentModelLib.manifest.name,\n path: \"stub-path\",\n documentTypes: documentModelLib.documentModels.map(\n (d) => d.documentModel.global.id,\n ),\n status,\n manifest: slimManifest(documentModelLib.manifest),\n version,\n };\n}\n\nfunction makeRegistryPackageFromPackageInfo(\n packageInfo: PackageInfo,\n status: RegistryPackageStatus,\n): RegistryPackage {\n return {\n ...packageInfo,\n // Slim before caching: registry manifests are unvalidated JSON and have\n // carried multi-megabyte junk fields that blew the localStorage quota\n // (and the UI only reads the summary fields anyway).\n manifest: slimManifest(packageInfo.manifest),\n documentTypes: packageInfo.manifest?.documentModels?.map((d) => d.id) ?? [],\n status,\n };\n}\n\n/**\n * Like usehooks-ts' useLocalStorage, but persistence is best-effort: a failed\n * `setItem` (e.g. QuotaExceededError on an oversized payload) keeps the\n * in-memory state so the package manager still works for the session.\n * useLocalStorage couples the state update to the write — when the write\n * threw, the freshly fetched package list was discarded and the registry UI\n * rendered (and searched) an empty list.\n *\n * The key is derived from the boot-time runtime config and never changes\n * within a session, so no key-change rehydration is needed.\n */\nfunction useBestEffortLocalStorage<T>(key: string, initialValue: T) {\n const [value, setValue] = useState<T>(\n () => readJsonFromStorage<T>(key) ?? initialValue,\n );\n\n useEffect(() => {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch (error) {\n // Free the key and retry once — a stale oversized entry from an older\n // session may be occupying the quota this write needs.\n try {\n window.localStorage.removeItem(key);\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch {\n console.warn(\n `Failed to persist \"${key}\" to localStorage; continuing with in-memory data.`,\n error,\n );\n }\n }\n }, [key, value]);\n\n return [value, setValue] as const;\n}\n\nfunction readJsonFromStorage<T>(key: string): T | null {\n try {\n const raw = window.localStorage.getItem(key);\n return raw === null ? null : (JSON.parse(raw) as T);\n } catch {\n return null;\n }\n}\n\n/**\n * When refreshing a cached entry, promote `\"available\"` to whatever the\n * packageManager now reports — the cached `\"available\"` was almost certainly\n * recorded before `packageManager.addPackages()` finished on a prior session.\n * Never downgrade an already-installed entry, and never overwrite a deliberate\n * `\"dismissed\"` choice.\n */\nfunction promoteStatus(\n cachedStatus: RegistryPackageStatus,\n packageSource: RegistryPackageSource | null,\n): RegistryPackageStatus {\n if (cachedStatus !== \"available\") return cachedStatus;\n if (packageSource === null) return cachedStatus;\n return getPackageStatusFromPackageSource(packageSource);\n}\n\nfunction getPackageStatusFromPackageSource(\n packageSource: RegistryPackageSource | null,\n): RegistryPackageStatus {\n // if we check the package source for a package that came from the api and it doesn't exist yet,\n // then we know the package is available on the api but not installed\n if (packageSource === null) return \"available\";\n // show common package, local project package and locally installed packages as \"local-install\"\n if (\n packageSource === \"local-install\" ||\n packageSource === \"common\" ||\n packageSource === \"project\"\n )\n return \"local-install\";\n // show \"registry-install\" status for package source \"registry-install\"\n if (packageSource === \"registry-install\") return \"registry-install\";\n // fallback to available — we should probably do more checks here\n return \"available\";\n}\n"],"names":[],"mappings":"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","debug_id":"ed326e42-f833-53ca-9b66-6d0b7e627b32"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerhousedao/connect",
|
|
3
3
|
"productName": "Powerhouse-Connect",
|
|
4
|
-
"version": "6.2.0-dev.
|
|
4
|
+
"version": "6.2.0-dev.11",
|
|
5
5
|
"description": "Powerhouse Connect",
|
|
6
6
|
"main": "dist/index.html",
|
|
7
7
|
"type": "module",
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"i18next": "^25.5.3",
|
|
61
61
|
"kysely": "0.28.16",
|
|
62
62
|
"kysely-pglite-dialect": "1.2.0",
|
|
63
|
+
"lucide-react": "^1.16.0",
|
|
63
64
|
"pglite-legacy-02": "npm:@electric-sql/pglite@0.2.17",
|
|
64
65
|
"pglite-tools-legacy-02": "npm:@electric-sql/pglite-tools@0.2.4",
|
|
65
66
|
"react-error-boundary": "^4.0.11",
|
|
@@ -69,15 +70,15 @@
|
|
|
69
70
|
"tailwind-merge": "3.4.0",
|
|
70
71
|
"usehooks-ts": "^3.1.1",
|
|
71
72
|
"zod": "4.3.6",
|
|
72
|
-
"@powerhousedao/config": "6.2.0-dev.
|
|
73
|
-
"@powerhousedao/
|
|
74
|
-
"@powerhousedao/
|
|
75
|
-
"@powerhousedao/reactor-attachments": "6.2.0-dev.
|
|
76
|
-
"@powerhousedao/reactor-browser": "6.2.0-dev.
|
|
77
|
-
"@powerhousedao/shared": "6.2.0-dev.
|
|
78
|
-
"@powerhousedao/vetra": "6.2.0-dev.
|
|
79
|
-
"
|
|
80
|
-
"
|
|
73
|
+
"@powerhousedao/config": "6.2.0-dev.11",
|
|
74
|
+
"@powerhousedao/powerhouse-vetra-packages": "6.2.0-dev.11",
|
|
75
|
+
"@powerhousedao/design-system": "6.2.0-dev.11",
|
|
76
|
+
"@powerhousedao/reactor-attachments": "6.2.0-dev.11",
|
|
77
|
+
"@powerhousedao/reactor-browser": "6.2.0-dev.11",
|
|
78
|
+
"@powerhousedao/shared": "6.2.0-dev.11",
|
|
79
|
+
"@powerhousedao/vetra": "6.2.0-dev.11",
|
|
80
|
+
"@renown/sdk": "6.2.0-dev.11",
|
|
81
|
+
"document-model": "6.2.0-dev.11"
|
|
81
82
|
},
|
|
82
83
|
"devDependencies": {
|
|
83
84
|
"@tailwindcss/cli": "4.2.2",
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { t as AppLoader } from "./app-loader-CdUk4WrI.js";
|
|
2
|
-
export { AppLoader };
|
|
3
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="43c5887f-0555-580a-af2e-45c9d1832184")}catch(e){}}();
|
|
4
|
-
//# debugId=43c5887f-0555-580a-af2e-45c9d1832184
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-C7nB0wpN.js","sources":["../package.json"],"sourcesContent":[""],"names":[],"mappings":"","debug_id":"ed584e94-3103-5c79-8fb3-752bfe91efcc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRegistryPackages-Bh0luCvV.js","sources":["../src/hooks/useRegistryPackages.ts"],"sourcesContent":["import {\n getPackages,\n trimTrailingSlash,\n useVetraPackageManager,\n} from \"@powerhousedao/reactor-browser\";\nimport type {\n PackageInfo,\n RegistryPackage,\n RegistryPackageList,\n RegistryPackageMap,\n RegistryPackageSource,\n RegistryPackageStatus,\n} from \"@powerhousedao/shared/registry\";\nimport type { DocumentModelLib } from \"document-model\";\nimport { useEffect, useMemo } from \"react\";\nimport { useLocalStorage } from \"usehooks-ts\";\nimport { getRuntimeConfig } from \"../runtime-config.js\";\n\nexport function useRegistryPackages() {\n const packageManager = useVetraPackageManager();\n const packageManagerPackages = packageManager?.packages;\n const registryUrl = getRuntimeConfig().packageRegistryUrl ?? null;\n // Normalize so `http://host` and `http://host/` don't produce two separate\n // localStorage maps where the install/status flow reads from one while the\n // registry fetch writes to the other.\n const registryPackagesKey = `REGISTRY_PACKAGES:${registryUrl === null ? null : trimTrailingSlash(registryUrl)}`;\n const [registryPackagesMap, setRegistryPackagesMap] =\n useLocalStorage<RegistryPackageMap>(registryPackagesKey, {});\n const registryPackageList: RegistryPackageList = useMemo(() => {\n return Array.from(Object.values(registryPackagesMap)).filter(\n (p) => p !== undefined,\n );\n }, [registryPackagesMap]);\n\n useEffect(() => {\n async function refreshPackages() {\n if (registryUrl === null || !packageManager) return;\n\n const packageInfos = await getPackages(registryUrl);\n\n setRegistryPackagesMap((oldPackages) => {\n const newRegistryPackages: RegistryPackageMap = {\n ...oldPackages,\n };\n\n for (const packageInfo of packageInfos) {\n const existingPackage = newRegistryPackages[packageInfo.name];\n\n if (!existingPackage) {\n const packageSource = packageManager.getPackageSource(\n packageInfo.name,\n );\n const status = getPackageStatusFromPackageSource(packageSource);\n newRegistryPackages[packageInfo.name] =\n makeRegistryPackageFromPackageInfo(packageInfo, status);\n } else {\n // Keep the cached entry's status, but refresh anything the\n // registry sent. This includes distTags and the versions list\n // the Package Manager UI filters on.\n //\n // For `version`, prefer the actually-installed version from the\n // package manager (set by the rehydration effect). `packageInfo.version`\n // is the registry's newest-published version, which for installed\n // packages would incorrectly overwrite the user's picked version\n // on the next /packages refresh.\n const installedVersion = packageManager.getPackageVersion(\n packageInfo.name,\n );\n newRegistryPackages[packageInfo.name] = {\n ...existingPackage,\n manifest: packageInfo.manifest ?? existingPackage.manifest,\n version:\n installedVersion ??\n packageInfo.version ??\n existingPackage.version,\n distTags: packageInfo.distTags ?? existingPackage.distTags,\n versions: packageInfo.versions ?? existingPackage.versions,\n documentTypes: packageInfo.documentTypes.length\n ? packageInfo.documentTypes\n : existingPackage.documentTypes,\n status: promoteStatus(\n existingPackage.status,\n packageManager.getPackageSource(packageInfo.name),\n ),\n };\n }\n }\n\n return newRegistryPackages;\n });\n }\n\n refreshPackages().catch(console.error);\n }, []);\n\n useEffect(() => {\n if (!packageManager) return;\n\n if (packageManagerPackages?.length) {\n for (const packageManagerPackage of packageManagerPackages) {\n setRegistryPackagesMap((existingRegistryPackages) => {\n const packageName = packageManagerPackage.manifest.name;\n const existingPackage = existingRegistryPackages[packageName];\n const newRegistryPackages = { ...existingRegistryPackages };\n const version = packageManager.getPackageVersion(packageName);\n if (existingPackage) {\n newRegistryPackages[packageName] = {\n ...existingPackage,\n version: version ?? existingPackage.version,\n status: promoteStatus(\n existingPackage.status,\n packageManager.getPackageSource(packageName),\n ),\n };\n } else {\n const packageSource = packageManager.getPackageSource(packageName);\n const status = getPackageStatusFromPackageSource(packageSource);\n const newRegistryPackage = makeRegistryPackageFromDocumentModelLib(\n packageManagerPackage,\n status,\n version,\n );\n newRegistryPackages[packageName] = newRegistryPackage;\n }\n return newRegistryPackages;\n });\n }\n }\n }, [packageManagerPackages]);\n\n function updateRegistryPackageStatus(\n packageName: string,\n newStatus: RegistryPackageStatus,\n ) {\n setRegistryPackagesMap((oldRegistryPackages) => {\n const newRegistryPackages = { ...oldRegistryPackages };\n const newRegistryPackage = newRegistryPackages[packageName];\n if (!newRegistryPackage) {\n console.error(\n \"Attempting to update status for package that does not exist.\",\n );\n return newRegistryPackages;\n }\n newRegistryPackages[packageName] = {\n ...newRegistryPackage,\n status: newStatus,\n };\n\n return newRegistryPackages;\n });\n }\n\n /**\n * Register a freshly-installed package that came in via the npm-uplink\n * fallback — the user typed a bare name, our local `/packages` didn't know\n * it, but the install succeeded because verdaccio proxy-fetched the tarball.\n *\n * This is the one legitimate case where the status update runs against a\n * name that wasn't in the registry map. We treat it as an insert rather\n * than logging the \"does not exist\" error. Data is pulled from the loaded\n * module so the UI card shows the real manifest immediately; the next\n * `/packages` refresh will add `versions`/`distTags`.\n */\n function registerFallbackRegistryPackage(\n packageName: string,\n loadedPackage: DocumentModelLib,\n version: string | undefined,\n status: RegistryPackageStatus,\n ) {\n setRegistryPackagesMap((oldRegistryPackages) => {\n const newRegistryPackages = { ...oldRegistryPackages };\n newRegistryPackages[packageName] = {\n ...makeRegistryPackageFromDocumentModelLib(\n loadedPackage,\n status,\n version,\n ),\n name: packageName,\n };\n return newRegistryPackages;\n });\n }\n\n return {\n registryPackagesMap,\n registryPackageList,\n updateRegistryPackageStatus,\n registerFallbackRegistryPackage,\n };\n}\n\nfunction makeRegistryPackageFromDocumentModelLib(\n documentModelLib: DocumentModelLib,\n status: RegistryPackageStatus,\n version?: string,\n): RegistryPackage {\n return {\n name: documentModelLib.manifest.name,\n path: \"stub-path\",\n documentTypes: documentModelLib.documentModels.map(\n (d) => d.documentModel.global.id,\n ),\n status,\n manifest: documentModelLib.manifest,\n version,\n };\n}\n\nfunction makeRegistryPackageFromPackageInfo(\n packageInfo: PackageInfo,\n status: RegistryPackageStatus,\n): RegistryPackage {\n return {\n ...packageInfo,\n documentTypes: packageInfo.manifest?.documentModels?.map((d) => d.id) ?? [],\n status,\n };\n}\n\n/**\n * When refreshing a cached entry, promote `\"available\"` to whatever the\n * packageManager now reports — the cached `\"available\"` was almost certainly\n * recorded before `packageManager.addPackages()` finished on a prior session.\n * Never downgrade an already-installed entry, and never overwrite a deliberate\n * `\"dismissed\"` choice.\n */\nfunction promoteStatus(\n cachedStatus: RegistryPackageStatus,\n packageSource: RegistryPackageSource | null,\n): RegistryPackageStatus {\n if (cachedStatus !== \"available\") return cachedStatus;\n if (packageSource === null) return cachedStatus;\n return getPackageStatusFromPackageSource(packageSource);\n}\n\nfunction getPackageStatusFromPackageSource(\n packageSource: RegistryPackageSource | null,\n): RegistryPackageStatus {\n // if we check the package source for a package that came from the api and it doesn't exist yet,\n // then we know the package is available on the api but not installed\n if (packageSource === null) return \"available\";\n // show common package, local project package and locally installed packages as \"local-install\"\n if (\n packageSource === \"local-install\" ||\n packageSource === \"common\" ||\n packageSource === \"project\"\n )\n return \"local-install\";\n // show \"registry-install\" status for package source \"registry-install\"\n if (packageSource === \"registry-install\") return \"registry-install\";\n // fallback to available — we should probably do more checks here\n return \"available\";\n}\n"],"names":[],"mappings":"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","debug_id":"00afa3b6-8395-5048-957c-8d7b4b8e1bb1"}
|