diff --git a/apps/anon-message-client/CHANGELOG.md b/apps/anon-message-client/CHANGELOG.md index 0d1b463a49..e2be4ad32d 100644 --- a/apps/anon-message-client/CHANGELOG.md +++ b/apps/anon-message-client/CHANGELOG.md @@ -1,5 +1,17 @@ # sbc-client +## 0.2.2 + +### Patch Changes + +- Updated dependencies + - @pcd/passport-interface@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/util@0.9.0 + - @pcd/eddsa-ticket-pcd@0.10.0 + - @pcd/semaphore-identity-pcd@0.15.0 + - @pcd/zk-eddsa-event-ticket-pcd@0.10.0 + ## 0.2.1 ### Patch Changes diff --git a/apps/anon-message-client/package.json b/apps/anon-message-client/package.json index 0a4ccad0c5..7590a9c542 100644 --- a/apps/anon-message-client/package.json +++ b/apps/anon-message-client/package.json @@ -1,6 +1,6 @@ { "name": "anon-message-client", - "version": "0.2.1", + "version": "0.2.2", "license": "GPL-3.0-or-later", "private": true, "scripts": { @@ -11,12 +11,12 @@ "lint": "next lint" }, "dependencies": { - "@pcd/eddsa-ticket-pcd": "0.9.0", - "@pcd/passport-interface": "^0.14.0", - "@pcd/pcd-types": "0.14.0", - "@pcd/semaphore-identity-pcd": "0.14.0", - "@pcd/util": "^0.8.0", - "@pcd/zk-eddsa-event-ticket-pcd": "0.9.0", + "@pcd/eddsa-ticket-pcd": "0.10.0", + "@pcd/passport-interface": "^0.15.0", + "@pcd/pcd-types": "0.15.0", + "@pcd/semaphore-identity-pcd": "0.15.0", + "@pcd/util": "^0.9.0", + "@pcd/zk-eddsa-event-ticket-pcd": "0.10.0", "@types/node": "20.4.10", "@types/react": "18.2.20", "@types/react-dom": "18.2.7", @@ -31,7 +31,7 @@ "typescript": "5.3.3" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", "eslint": "8.57.0", "nodemon": "^3.0.1", "ts-node": "^10.9.2" diff --git a/apps/consumer-client/CHANGELOG.md b/apps/consumer-client/CHANGELOG.md index 39965f7d3b..64394ef58f 100644 --- a/apps/consumer-client/CHANGELOG.md +++ b/apps/consumer-client/CHANGELOG.md @@ -1,5 +1,31 @@ # consumer-client +## 0.0.51 + +### Patch Changes + +- Updated dependencies + - @pcd/client-shared@0.4.0 + - @pcd/gpc@0.4.0 + - @pcd/passport-interface@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/pod@0.5.0 + - @pcd/util@0.9.0 + - @pcd/zuauth@1.8.0 + - @pcd/eddsa-frog-pcd@0.7.0 + - @pcd/eddsa-pcd@0.10.0 + - @pcd/eddsa-ticket-pcd@0.10.0 + - @pcd/ethereum-group-pcd@0.9.0 + - @pcd/ethereum-ownership-pcd@0.15.0 + - @pcd/gpc-pcd@0.4.0 + - @pcd/pod-pcd@0.5.0 + - @pcd/semaphore-group-pcd@0.15.0 + - @pcd/semaphore-identity-pcd@0.15.0 + - @pcd/semaphore-signature-pcd@0.15.0 + - @pcd/webauthn-pcd@0.15.0 + - @pcd/zk-eddsa-event-ticket-pcd@0.10.0 + - @pcd/zk-eddsa-frog-pcd@0.7.0 + ## 0.0.50 ### Patch Changes diff --git a/apps/consumer-client/package.json b/apps/consumer-client/package.json index 6b4d573dbb..1683a521c2 100644 --- a/apps/consumer-client/package.json +++ b/apps/consumer-client/package.json @@ -1,6 +1,6 @@ { "name": "consumer-client", - "version": "0.0.50", + "version": "0.0.51", "license": "GPL-3.0-or-later", "private": true, "scripts": { @@ -13,26 +13,26 @@ }, "dependencies": { "@babel/core": "^7.24.0", - "@pcd/client-shared": "0.3.0", - "@pcd/eddsa-frog-pcd": "0.6.0", - "@pcd/eddsa-pcd": "0.9.0", - "@pcd/eddsa-ticket-pcd": "0.9.0", - "@pcd/ethereum-group-pcd": "0.8.0", - "@pcd/ethereum-ownership-pcd": "0.14.0", - "@pcd/gpc": "0.3.0", - "@pcd/gpc-pcd": "0.3.0", - "@pcd/passport-interface": "0.14.0", - "@pcd/pcd-types": "0.14.0", - "@pcd/pod": "0.4.0", - "@pcd/pod-pcd": "0.4.0", - "@pcd/semaphore-group-pcd": "0.14.0", - "@pcd/semaphore-identity-pcd": "0.14.0", - "@pcd/semaphore-signature-pcd": "0.14.0", - "@pcd/util": "0.8.0", - "@pcd/webauthn-pcd": "0.14.0", - "@pcd/zk-eddsa-event-ticket-pcd": "0.9.0", - "@pcd/zk-eddsa-frog-pcd": "0.6.0", - "@pcd/zuauth": "1.7.0", + "@pcd/client-shared": "0.4.0", + "@pcd/eddsa-frog-pcd": "0.7.0", + "@pcd/eddsa-pcd": "0.10.0", + "@pcd/eddsa-ticket-pcd": "0.10.0", + "@pcd/ethereum-group-pcd": "0.9.0", + "@pcd/ethereum-ownership-pcd": "0.15.0", + "@pcd/gpc": "0.4.0", + "@pcd/gpc-pcd": "0.4.0", + "@pcd/passport-interface": "0.15.0", + "@pcd/pcd-types": "0.15.0", + "@pcd/pod": "0.5.0", + "@pcd/pod-pcd": "0.5.0", + "@pcd/semaphore-group-pcd": "0.15.0", + "@pcd/semaphore-identity-pcd": "0.15.0", + "@pcd/semaphore-signature-pcd": "0.15.0", + "@pcd/util": "0.9.0", + "@pcd/webauthn-pcd": "0.15.0", + "@pcd/zk-eddsa-event-ticket-pcd": "0.10.0", + "@pcd/zk-eddsa-frog-pcd": "0.7.0", + "@pcd/zuauth": "1.8.0", "@personaelabs/spartan-ecdsa": "^2.1.4", "@semaphore-protocol/identity": "^3.15.2", "@simplewebauthn/browser": "^7.2.0", @@ -53,7 +53,7 @@ "devDependencies": { "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@esbuild-plugins/node-modules-polyfill": "^0.2.2", - "@pcd/eslint-config-custom": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", "@types/json-bigint": "^1.0.1", "@types/react": "^18.2.6", "@types/react-dom": "^18.0.7", diff --git a/apps/consumer-server/CHANGELOG.md b/apps/consumer-server/CHANGELOG.md index b49a89ac60..d1e519400b 100644 --- a/apps/consumer-server/CHANGELOG.md +++ b/apps/consumer-server/CHANGELOG.md @@ -1,5 +1,17 @@ # consumer-server +## 0.0.34 + +### Patch Changes + +- Updated dependencies + - @pcd/passport-interface@0.15.0 + - @pcd/util@0.9.0 + - @pcd/zuauth@1.8.0 + - @pcd/eddsa-ticket-pcd@0.10.0 + - @pcd/semaphore-signature-pcd@0.15.0 + - @pcd/zk-eddsa-event-ticket-pcd@0.10.0 + ## 0.0.33 ### Patch Changes diff --git a/apps/consumer-server/package.json b/apps/consumer-server/package.json index 204612e52b..72d09ee07f 100644 --- a/apps/consumer-server/package.json +++ b/apps/consumer-server/package.json @@ -1,6 +1,6 @@ { "name": "consumer-server", - "version": "0.0.33", + "version": "0.0.34", "license": "GPL-3.0-or-later", "private": true, "scripts": { @@ -16,12 +16,12 @@ "@opentelemetry/api": "1.3.0", "@opentelemetry/auto-instrumentations-node": "^0.36.0", "@opentelemetry/sdk-node": "^0.34.0", - "@pcd/eddsa-ticket-pcd": "^0.9.0", - "@pcd/passport-interface": "^0.14.0", - "@pcd/semaphore-signature-pcd": "^0.14.0", - "@pcd/util": "^0.8.0", - "@pcd/zk-eddsa-event-ticket-pcd": "^0.9.0", - "@pcd/zuauth": "1.7.0", + "@pcd/eddsa-ticket-pcd": "^0.10.0", + "@pcd/passport-interface": "^0.15.0", + "@pcd/semaphore-signature-pcd": "^0.15.0", + "@pcd/util": "^0.9.0", + "@pcd/zk-eddsa-event-ticket-pcd": "^0.10.0", + "@pcd/zuauth": "1.8.0", "cors": "^2.8.5", "express": "^4.18.2", "iron-session": "^8.0.2", @@ -30,8 +30,8 @@ "ts-node": "^10.9.2" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/express": "^4.17.16", "@types/mocha": "^10.0.1", "@types/morgan": "^1.9.4", diff --git a/apps/generic-issuance-client/CHANGELOG.md b/apps/generic-issuance-client/CHANGELOG.md index 0a0b63c952..d6492aa565 100644 --- a/apps/generic-issuance-client/CHANGELOG.md +++ b/apps/generic-issuance-client/CHANGELOG.md @@ -1,5 +1,16 @@ # generic-issuance-client +## 0.0.15 + +### Patch Changes + +- Updated dependencies + - @pcd/client-shared@0.4.0 + - @pcd/passport-interface@0.15.0 + - @pcd/pod@0.5.0 + - @pcd/podbox-shared@0.4.0 + - @pcd/util@0.9.0 + ## 0.0.14 ### Patch Changes diff --git a/apps/generic-issuance-client/package.json b/apps/generic-issuance-client/package.json index 7caa41e80e..337ee15743 100644 --- a/apps/generic-issuance-client/package.json +++ b/apps/generic-issuance-client/package.json @@ -1,6 +1,6 @@ { "name": "generic-issuance-client", - "version": "0.0.14", + "version": "0.0.15", "license": "GPL-3.0-or-later", "private": true, "scripts": { @@ -18,11 +18,11 @@ "@emotion/react": "^11.11.3", "@emotion/styled": "^11.11.0", "@monaco-editor/react": "^4.6.0", - "@pcd/client-shared": "0.3.0", - "@pcd/passport-interface": "0.14.0", - "@pcd/pod": "0.4.0", - "@pcd/podbox-shared": "0.3.0", - "@pcd/util": "0.8.0", + "@pcd/client-shared": "0.4.0", + "@pcd/passport-interface": "0.15.0", + "@pcd/pod": "0.5.0", + "@pcd/podbox-shared": "0.4.0", + "@pcd/util": "0.9.0", "@rollbar/react": "^0.11.2", "@stytch/react": "^15.0.0", "@stytch/vanilla-js": "^4.4.2", @@ -38,6 +38,7 @@ "monaco-editor": "^0.47.0", "monaco-themes": "^0.4.4", "pretty-bytes": "^6.1.1", + "pretty-ms": "^9.1.0", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -52,7 +53,7 @@ "devDependencies": { "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@esbuild-plugins/node-modules-polyfill": "^0.2.2", - "@pcd/eslint-config-custom": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", "@types/javascript-time-ago": "^2.0.8", "@types/lodash": "^4.14.202", "@types/react": "^18.2.6", diff --git a/apps/generic-issuance-client/src/pages/dashboard/PipelineTable.tsx b/apps/generic-issuance-client/src/pages/dashboard/PipelineTable.tsx index 4fc392c57a..e6da5bade5 100644 --- a/apps/generic-issuance-client/src/pages/dashboard/PipelineTable.tsx +++ b/apps/generic-issuance-client/src/pages/dashboard/PipelineTable.tsx @@ -14,6 +14,7 @@ import { getSortedRowModel, useReactTable } from "@tanstack/react-table"; +import prettyMilliseconds from "pretty-ms"; import { ReactNode, useCallback, useMemo, useState } from "react"; import styled, { FlattenSimpleInterpolation, css } from "styled-components"; import { PodLink } from "../../components/Core"; @@ -50,7 +51,7 @@ export type PipelineRow = { id: string; loadTraceLink: string; allTraceLink: string; - lastLoad?: string; + lastLoadDetails?: string; name?: string; displayName: string; pipeline: PipelineDefinition; @@ -88,7 +89,16 @@ export function PipelineTable({ id: entry.pipeline.id, loadTraceLink: getLoadTraceHoneycombLinkForPipeline(entry.pipeline.id), allTraceLink: getAllHoneycombLinkForPipeline(entry.pipeline.id), - lastLoad: entry.extraInfo.lastLoad?.lastRunEndTimestamp, + lastLoadDetails: entry.extraInfo.lastLoad + ? timeAgoStr(entry.extraInfo.lastLoad.lastRunEndTimestamp) + + " ago in " + + prettyMilliseconds( + new Date(entry.extraInfo.lastLoad.lastRunEndTimestamp).getTime() - + new Date( + entry.extraInfo.lastLoad.lastRunStartTimestamp + ).getTime() + ) + : "n/a", name: entry.pipeline.options?.name, displayName: pipelineDisplayNameStr(entry.pipeline), pipeline: entry.pipeline @@ -169,9 +179,9 @@ export function PipelineTable({ ) }), - columnHelper.accessor("lastLoad", { + columnHelper.accessor("lastLoadDetails", { header: "Last Load", - cell: (props) => timeAgoStr(props.row.original.lastLoad) + cell: (props) => props.row.original.lastLoadDetails }), isAdminView diff --git a/apps/passport-client/.env.example b/apps/passport-client/.env.example index 7bc4e57c2d..be27c545aa 100644 --- a/apps/passport-client/.env.example +++ b/apps/passport-client/.env.example @@ -55,3 +55,9 @@ DISABLE_CONSOLE_LOG= # Some origins are allowed to query Devcon tickets directly. Origins not in this list cannot do so: DEVCON_TICKET_QUERY_ORIGINS='["http://example.com", "http://localhost:3200"]' + +# If IGNORE_NON_PRIORITY_FEEDS=true, then non-priority feeds will be ignored. +IGNORE_NON_PRIORITY_FEEDS=false + +# URLs of feed providers that are priority feeds. +PRIORITY_FEED_PROVIDER_URLS='[]' diff --git a/apps/passport-client/CHANGELOG.md b/apps/passport-client/CHANGELOG.md index a2d9e05623..09bf1cd5e4 100644 --- a/apps/passport-client/CHANGELOG.md +++ b/apps/passport-client/CHANGELOG.md @@ -1,5 +1,60 @@ # passport-client +## 0.0.41 + +### Patch Changes + +- Updated dependencies + - @pcd/client-shared@0.4.0 + - @pcd/emitter@0.9.0 + - @pcd/gpc@0.4.0 + - @pcd/gpcircuits@0.5.0 + - @pcd/passport-crypto@0.15.0 + - @pcd/passport-interface@0.15.0 + - @pcd/passport-ui@0.15.0 + - @pcd/pcd-collection@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/pod@0.5.0 + - @pcd/util@0.9.0 + - @pcd/eddsa-frog-pcd@0.7.0 + - @pcd/eddsa-pcd@0.10.0 + - @pcd/eddsa-ticket-pcd@0.10.0 + - @pcd/email-pcd@0.10.0 + - @pcd/ethereum-ownership-pcd@0.15.0 + - @pcd/gpc-pcd@0.4.0 + - @pcd/halo-nonce-pcd@0.11.0 + - @pcd/message-pcd@0.5.0 + - @pcd/pod-pcd@0.5.0 + - @pcd/pod-ticket-pcd@0.5.0 + - @pcd/rsa-image-pcd@0.9.0 + - @pcd/rsa-pcd@0.10.0 + - @pcd/rsa-ticket-pcd@0.10.0 + - @pcd/semaphore-group-pcd@0.15.0 + - @pcd/semaphore-identity-pcd@0.15.0 + - @pcd/semaphore-signature-pcd@0.15.0 + - @pcd/unknown-pcd@0.4.0 + - @pcd/zk-eddsa-event-ticket-pcd@0.10.0 + - @pcd/zk-eddsa-frog-pcd@0.7.0 + - @pcd/eddsa-frog-pcd-ui@0.6.0 + - @pcd/eddsa-pcd-ui@0.6.0 + - @pcd/eddsa-ticket-pcd-ui@0.6.0 + - @pcd/email-pcd-ui@0.6.0 + - @pcd/ethereum-ownership-pcd-ui@0.6.0 + - @pcd/gpc-pcd-ui@0.4.0 + - @pcd/halo-nonce-pcd-ui@0.6.0 + - @pcd/message-pcd-ui@0.5.0 + - @pcd/pod-pcd-ui@0.5.0 + - @pcd/pod-ticket-pcd-ui@0.5.0 + - @pcd/rsa-image-pcd-ui@0.6.0 + - @pcd/rsa-pcd-ui@0.6.0 + - @pcd/rsa-ticket-pcd-ui@0.6.0 + - @pcd/semaphore-group-pcd-ui@0.6.0 + - @pcd/semaphore-identity-pcd-ui@0.6.0 + - @pcd/semaphore-signature-pcd-ui@0.6.0 + - @pcd/unknown-pcd-ui@0.4.0 + - @pcd/zk-eddsa-event-ticket-pcd-ui@0.6.0 + - @pcd/zk-eddsa-frog-pcd-ui@0.6.0 + ## 0.0.40 ### Patch Changes diff --git a/apps/passport-client/build.ts b/apps/passport-client/build.ts index b4c464ffe5..911601d97c 100644 --- a/apps/passport-client/build.ts +++ b/apps/passport-client/build.ts @@ -87,6 +87,20 @@ const define = { process.env.DEVCON_TICKET_QUERY_ORIGINS ) } + : {}), + ...(process.env.IGNORE_NON_PRIORITY_FEEDS !== undefined + ? { + "process.env.IGNORE_NON_PRIORITY_FEEDS": JSON.stringify( + process.env.IGNORE_NON_PRIORITY_FEEDS + ) + } + : {}), + ...(process.env.PRIORITY_FEED_PROVIDER_URLS !== undefined + ? { + "process.env.PRIORITY_FEED_PROVIDER_URLS": JSON.stringify( + process.env.PRIORITY_FEED_PROVIDER_URLS + ) + } : {}) }; diff --git a/apps/passport-client/components/modals/ErrorPopup.tsx b/apps/passport-client/components/modals/ErrorPopup.tsx index f331c68827..556a7905bf 100644 --- a/apps/passport-client/components/modals/ErrorPopup.tsx +++ b/apps/passport-client/components/modals/ErrorPopup.tsx @@ -38,7 +38,6 @@ const ErrorBg = styled.div` right: 0; overflow-y: scroll; background: rgba(0, 0, 0, 0.5); - backdrop-filter: blur(4px); z-index: 999; display: flex; justify-content: flex-start; diff --git a/apps/passport-client/components/modals/Modal.tsx b/apps/passport-client/components/modals/Modal.tsx index 0b8a3e4f9b..dc72b36623 100644 --- a/apps/passport-client/components/modals/Modal.tsx +++ b/apps/passport-client/components/modals/Modal.tsx @@ -153,7 +153,6 @@ const ModalBg = styled.div<{ $fullScreen?: boolean }>` overflow-x: hidden; overflow-y: hidden; background: rgba(0, 0, 0, 0.5); - backdrop-filter: blur(4px); z-index: 9999; ${({ $fullScreen }: { $fullScreen?: boolean }): FlattenSimpleInterpolation => diff --git a/apps/passport-client/components/screens/EmbeddedScreens/EmbeddedGPCProofScreen.tsx b/apps/passport-client/components/screens/EmbeddedScreens/EmbeddedGPCProofScreen.tsx index 6bc62b4bfd..0d9c4beb64 100644 --- a/apps/passport-client/components/screens/EmbeddedScreens/EmbeddedGPCProofScreen.tsx +++ b/apps/passport-client/components/screens/EmbeddedScreens/EmbeddedGPCProofScreen.tsx @@ -21,11 +21,12 @@ import { usePCDCollection, useZappOrigin } from "../../../src/appHooks"; +import { BANNER_HEIGHT } from "../../../src/sharedConstants"; import { useSyncE2EEStorage } from "../../../src/useSyncE2EEStorage"; import { getGPCArtifactsURL } from "../../../src/util"; import { getPODsForCollections } from "../../../src/zapp/collections"; import { AppContainer } from "../../shared/AppContainer"; -import Select from "../../shared/Select"; +import { NativeSelect } from "../../shared/NativeSelect"; import { displayPODValue } from "../../shared/uiUtil"; export function EmbeddedGPCProofScreen({ @@ -190,9 +191,10 @@ function ProvePODInfo({ }) .filter( ([_, entry]) => - !!entry.isMemberOf || - !!entry.isNotMemberOf || - !!(entry.type === "int" && entry.inRange) + entry.type !== "null" && + (!!entry.isMemberOf || + !!entry.isNotMemberOf || + !!(entry.type === "int" && entry.inRange)) ); const defaultOption = { value: "", @@ -221,7 +223,7 @@ function ProvePODInfo({ > {name.toUpperCase()} - @@ -119,6 +124,8 @@ export const NewPasswordForm2 = ({ placeholder="Current password" error={getErrorMessage("change")} variant="secondary" + showPassword={showPassword} + onTogglePassword={togglePassword} /> )} - + {textOrLoader(submitButtonText)} - + Back {showSkipConfirm && ( - + Skip for now )} @@ -166,7 +177,7 @@ export const NewPasswordForm2 = ({ ); }; -const PasswordForm = styled.div` +const PasswordForm = styled.form` display: flex; flex-direction: column; gap: 12px; diff --git a/apps/passport-client/new-components/shared/Login/PasswordInput2.tsx b/apps/passport-client/new-components/shared/Login/PasswordInput2.tsx index 7ecfddf0af..58e4dcd9e6 100644 --- a/apps/passport-client/new-components/shared/Login/PasswordInput2.tsx +++ b/apps/passport-client/new-components/shared/Login/PasswordInput2.tsx @@ -3,23 +3,43 @@ import EyeSlashIcon from "@heroicons/react/16/solid/EyeSlashIcon"; import { ForwardedRef, forwardRef, useState } from "react"; import { Input2, NewInputProps } from "../Input"; +interface PasswordInputProps extends NewInputProps { + showPassword?: boolean; + onTogglePassword?: () => void; +} + export const PasswordInput2 = forwardRef( - (props: NewInputProps, ref: ForwardedRef): JSX.Element => { - const [showPassword, setShowPassword] = useState(false); + ( + props: PasswordInputProps, + ref: ForwardedRef + ): JSX.Element => { + const [localShowPassword, setLocalShowPassword] = useState(false); + const { showPassword, onTogglePassword, ...inputProps } = props; + + // Use local state if not provided + const isPasswordVisible = showPassword ?? localShowPassword; + const handleToggle = (): void => { + if (onTogglePassword) { + onTogglePassword(); + } else { + setLocalShowPassword((prev) => !prev); + } + }; return ( setShowPassword(true)} + onClick={handleToggle} color="#8B94AC" + cursor="pointer" /> ) : ( - setShowPassword(false)} color="#8B94AC" /> + ) } /> diff --git a/apps/passport-client/new-components/shared/Modals/HelpModal.tsx b/apps/passport-client/new-components/shared/Modals/HelpModal.tsx index c0e5524116..91c20d75bc 100644 --- a/apps/passport-client/new-components/shared/Modals/HelpModal.tsx +++ b/apps/passport-client/new-components/shared/Modals/HelpModal.tsx @@ -29,7 +29,10 @@ export const HelpModal = (): JSX.Element => { onClick: () => { dispatch({ type: "set-bottom-modal", - modal: { modalType: "manage-emails", goBackToSupport: true } + modal: { + modalType: "manage-emails", + prevModal: { modalType: "help-modal" } + } }); } }} diff --git a/apps/passport-client/new-components/shared/Modals/ManageEmailsModal.tsx b/apps/passport-client/new-components/shared/Modals/ManageEmailsModal.tsx index 761f046b24..8525871533 100644 --- a/apps/passport-client/new-components/shared/Modals/ManageEmailsModal.tsx +++ b/apps/passport-client/new-components/shared/Modals/ManageEmailsModal.tsx @@ -24,6 +24,7 @@ import { useStateContext } from "../../../src/appHooks"; import { getEmailUpdateErrorMessage } from "../../../src/errorMessage"; +import { AppState } from "../../../src/state"; import { BottomModal, BottomModalHeader } from "../BottomModal"; import { Button2 } from "../Button"; import { Input2 } from "../Input"; @@ -82,14 +83,14 @@ export const ManageEmailModal = (): JSX.Element => { const backBtn = ( { - let goBackToSupport = false; + let prevModal: AppState["bottomModal"] = { modalType: "settings" }; const isManageModal = activeBottomModal.modalType === "manage-emails"; - if (isManageModal) { - goBackToSupport = !!activeBottomModal.goBackToSupport; + if (isManageModal && activeBottomModal.prevModal) { + prevModal = activeBottomModal.prevModal; } dispatch({ type: "set-bottom-modal", - modal: { modalType: goBackToSupport ? "help-modal" : "settings" } + modal: prevModal }); reset(); }} @@ -195,6 +196,8 @@ export const ManageEmailModal = (): JSX.Element => { stateContext.update({ extraSubscriptionFetchRequested: true }); + setConfirmationCode(""); + setNewEmail(""); } else { setError( `Couldn't add '${newEmail}', please wait and try again later.` @@ -358,8 +361,8 @@ export const ManageEmailModal = (): JSX.Element => { /> {textOrLoader("Delete")} @@ -372,8 +375,7 @@ export const ManageEmailModal = (): JSX.Element => { <> The email you are about to change is:{" "} @@ -393,6 +395,7 @@ export const ManageEmailModal = (): JSX.Element => { setNewEmail(e.target.value); setError(""); }} + error={error} /> {emailManagerState === EmailManagerState.changeEmailEnterConfirmationCode && ( @@ -413,12 +416,7 @@ export const ManageEmailModal = (): JSX.Element => { )} { - emailManagerState === - EmailManagerState.changeEmailEnterConfirmationCode - ? onChangeEmail() - : sendConfirmationCode(); - }} + type="submit" disabled={ errorOrLoading || (emailManagerState === @@ -433,11 +431,11 @@ export const ManageEmailModal = (): JSX.Element => { : "Get confirmation code" )} - {backToManageBtn} ); + const addEmailView = ( <> { error={error} /> - sendConfirmationCode()} - disabled={errorOrLoading} - > + {textOrLoader("Get confirmation code")} {backToManageBtn} ); + const emailListView = ( <> { setOldEmail(email); setEmailManagerState(EmailManagerState.changeEmail); }} + key={email} /> ))} {self && self.emails.length < 5 && ( setEmailManagerState(EmailManagerState.addEmail)} + onClick={(e) => { + e.preventDefault(); + setEmailManagerState(EmailManagerState.addEmail); + }} disabled={errorOrLoading} > Add email @@ -511,8 +511,11 @@ export const ManageEmailModal = (): JSX.Element => { { - setConfirmationCode(e.target.value); + setConfirmationCode(e.target.value.replace(/\D/g, "")); setError(""); }} value={confirmationCode} @@ -520,10 +523,7 @@ export const ManageEmailModal = (): JSX.Element => { placeholder="Enter confirmation code" /> - verifyCode()} - disabled={errorOrLoading || !confirmationCode} - > + {textOrLoader("Verify")} {backToManageBtn} @@ -548,12 +548,47 @@ export const ManageEmailModal = (): JSX.Element => { return emailListView; } }; + return ( reset()} isOpen={activeBottomModal.modalType === "manage-emails"} > - {getComponentState(emailManagerState)} + { + e.preventDefault(); + if (emailManagerState) { + switch (emailManagerState) { + case EmailManagerState.addEmail: + sendConfirmationCode(); + break; + case EmailManagerState.changeEmail: + sendConfirmationCode(); + break; + case EmailManagerState.changeEmailEnterConfirmationCode: + onChangeEmail(); + break; + case EmailManagerState.deleteEmail: + if (emailToRemove === emailToRemoveText) { + onRemoveEmail(); + } + break; + case EmailManagerState.enterConfirmationCode: + if (confirmationCode) { + verifyCode(); + } + break; + } + } + }} + > + {getComponentState(emailManagerState)} + ); }; @@ -631,6 +666,7 @@ const EmailInput = ({ ); }; + const EmailsContainer = styled.div` display: flex; flex-direction: column; @@ -643,7 +679,7 @@ const ButtonsContainer = styled.div` gap: 8px; `; -const Container = styled.div` +const Container = styled.form` display: flex; flex-direction: column; gap: 24px; diff --git a/apps/passport-client/new-components/shared/Modals/PodsCollectionBottomModal.tsx b/apps/passport-client/new-components/shared/Modals/PodsCollectionBottomModal.tsx index 1c0d1191fd..2078f33684 100644 --- a/apps/passport-client/new-components/shared/Modals/PodsCollectionBottomModal.tsx +++ b/apps/passport-client/new-components/shared/Modals/PodsCollectionBottomModal.tsx @@ -10,7 +10,6 @@ import { import { isPODTicketPCD } from "@pcd/pod-ticket-pcd"; import { isUnknownPCD } from "@pcd/unknown-pcd"; import { isZKEdDSAFrogPCD } from "@pcd/zk-eddsa-frog-pcd"; -import intersectionWith from "lodash/intersectionWith"; import { ReactElement, ReactNode, @@ -29,7 +28,7 @@ import { useDispatch, usePCDCollection } from "../../../src/appHooks"; -import { ScrollIndicator } from "../../screens/Home/NewHomeScreen"; +import { ScrollIndicator } from "../../screens/Home/ScrollIndicator"; import { Avatar } from "../Avatar"; import { BottomModal } from "../BottomModal"; import { Button2 } from "../Button"; @@ -38,11 +37,30 @@ import { GroupType, List } from "../List"; import { Typography } from "../Typography"; import { POD_FOLDER_DISPLAY_SEPERATOR, + hideScrollCSS, replaceDotWithSlash, - useOrientation, - hideScrollCSS + useOrientation } from "../utils"; +const filterOverlappingEdDSATickets = ( + pcds: PCD[] +): PCD[] => { + const eddsaTickets = pcds.filter(isEdDSATicketPCD); + const podTickets = pcds.filter(isPODTicketPCD); + const overlapping = eddsaTickets + .filter((eddsa) => + podTickets.find( + (pod) => + pod.claim.ticket.attendeeEmail === eddsa.claim.ticket.attendeeEmail && + pod.claim.ticket.eventId === eddsa.claim.ticket.eventId + ) + ) + .map((eddsa) => eddsa.id); + + const noEmails = pcds.filter((p) => !isEmailPCD(p)); + + return noEmails.filter((pcd) => !overlapping.includes(pcd.id)); +}; const getPcdName = (pcd: PCD): string => { switch (true) { case isEdDSATicketPCD(pcd) || isPODTicketPCD(pcd): @@ -99,18 +117,7 @@ export const PodsCollectionList = ({ const podsCollectionList = useMemo(() => { const allPcds = pcdCollection.getAll(); - // If we have the same ticket in both POD and EDSA, we want to show only the POD one - const podTickets = allPcds.filter(isPODTicketPCD); - const eddsaTickets = allPcds.filter(isEdDSATicketPCD); - const badTicketsIds = intersectionWith(eddsaTickets, podTickets, (a, b) => { - return a.claim.ticket.ticketId === b.claim.ticket.ticketId; - }).map((ticket) => ticket.id); - const filteredPcds = allPcds.filter( - (pcd) => - (!isEdDSATicketPCD(pcd) || !badTicketsIds.includes(pcd.id)) && - !isEmailPCD(pcd) - ); - + const filteredPods = filterOverlappingEdDSATickets(allPcds); // Group PCDs by folder and create a list of groups with the items inside const result: Record = {}; @@ -121,7 +128,7 @@ export const PodsCollectionList = ({ if (!result[value]) { const isItTheFirstGroup = !Object.keys(result).length; const shouldExpandedByDefault = - isItTheFirstGroup || filteredPcds.length < 20; + isItTheFirstGroup || filteredPods.length < 20; result[value] = { title: value.replace(/\//g, ` ${POD_FOLDER_DISPLAY_SEPERATOR} `), id: value, // setting the folder path as a key @@ -133,7 +140,7 @@ export const PodsCollectionList = ({ }; } - const pcd = filteredPcds.find((pcd) => pcd.id === key); + const pcd = filteredPods.find((pcd) => pcd.id === key); if (!pcd) continue; result[value].children.push({ @@ -145,7 +152,6 @@ export const PodsCollectionList = ({ LeftIcon: getPCDImage(pcd) }); } - return Object.values(result) .map((group) => { if (!searchQuery) { @@ -209,6 +215,7 @@ export const PodsCollectionBottomModal = (): JSX.Element | null => { const dispatch = useDispatch(); const [params, setParams] = useSearchParams(); const orientation = useOrientation(); + const isLandscape = orientation.type === "landscape-primary" || orientation.type === "landscape-secondary"; @@ -326,7 +333,37 @@ export const PodsCollectionBottomModal = (): JSX.Element | null => { }} > {activePod ? ( - + => { + if ( + !confirm( + "Are you sure you want to delete this? This action is not reversible." + ) + ) { + return; + } + await dispatch({ type: "remove-pcd", id: activePod.id }); + if (modalGoBackBehavior === "back") { + dispatch({ + type: "set-bottom-modal", + modal: { + modalType: "pods-collection" + } + }); + } else { + dispatch({ + type: "set-bottom-modal", + modal: { modalType: "none" } + }); + } + } + : undefined + } + /> ) : ( <> ` flex-direction: column; // 50px comes from 24px padding we have on the bottom modal max-height: calc( - 100vh - ${({ isLandscape }): number => (isLandscape ? 50 : 120)}px + 100vh - ${({ isLandscape }): number => (isLandscape ? 80 : 150)}px ); `; const ContainerWithPadding = styled.div` diff --git a/apps/passport-client/new-components/shared/Modals/ProveModal.tsx b/apps/passport-client/new-components/shared/Modals/ProveModal.tsx index 150d46f309..d84cb43d5a 100644 --- a/apps/passport-client/new-components/shared/Modals/ProveModal.tsx +++ b/apps/passport-client/new-components/shared/Modals/ProveModal.tsx @@ -6,7 +6,7 @@ import { getScreen } from "../../../components/screens/ProveScreen/ProveScreen"; export const ProveModal = (): ReactElement | null => { const activeModal = useBottomModal(); const dispatch = useDispatch(); - if (activeModal.modalType !== "prove") { + if (activeModal.modalType !== "prove" || !activeModal.request) { return null; } diff --git a/apps/passport-client/new-components/shared/Modals/SessionExpiredModal.tsx b/apps/passport-client/new-components/shared/Modals/SessionExpiredModal.tsx index 10193cdbc5..252aa129b8 100644 --- a/apps/passport-client/new-components/shared/Modals/SessionExpiredModal.tsx +++ b/apps/passport-client/new-components/shared/Modals/SessionExpiredModal.tsx @@ -1,10 +1,10 @@ -import React, { ReactElement, useCallback } from "react"; -import { BottomModal } from "../BottomModal"; -import { Typography } from "../Typography"; +import { ReactElement, useCallback } from "react"; +import styled from "styled-components"; import { useBottomModal, useDispatch } from "../../../src/appHooks"; +import { BottomModal } from "../BottomModal"; import { Button2 } from "../Button"; +import { Typography } from "../Typography"; import { useExport } from "../utils"; -import styled from "styled-components"; const optionsList = [ "Reload this page", @@ -101,7 +101,7 @@ export const SessionExpiredModal = (): ReactElement => { {optionsList.map((option, i) => ( - + {i + 1} diff --git a/apps/passport-client/new-components/shared/NewLoader.tsx b/apps/passport-client/new-components/shared/NewLoader.tsx index bb777e96d5..fe70571c8d 100644 --- a/apps/passport-client/new-components/shared/NewLoader.tsx +++ b/apps/passport-client/new-components/shared/NewLoader.tsx @@ -5,21 +5,34 @@ type LoaderProps = { rows?: number; columns?: number; color?: string; + size?: number; + gap?: number; }; -const Rect = styled.div<{ active: boolean; color: string }>` - width: 8px; - height: 8px; +const Rect = styled.div<{ active: boolean; color: string; size: number }>` + width: ${({ size }): number => size}px; + height: ${({ size }): number => size}px; background: ${({ color }): string => color}; opacity: ${({ active }): number => (active ? 1 : 0.2)}; `; -const Container = styled.div<{ rows: number; columns: number }>` +const Container = styled.div<{ + rows: number; + columns: number; + size: number; + gap: number; +}>` display: grid; place-items: center; - grid-template-rows: repeat(${({ rows }): number => rows}, 8px); - grid-template-columns: repeat(${({ columns }): number => columns}, 8px); - gap: 5px; + grid-template-rows: repeat( + ${({ rows }): number => rows}, + ${({ size }): number => size}px + ); + grid-template-columns: repeat( + ${({ columns }): number => columns}, + ${({ size }): number => size}px + ); + gap: ${({ gap }): number => gap}px; `; const generateStaticNoise = (rows: number, columns: number): number[][] => { @@ -37,6 +50,8 @@ const generateStaticNoise = (rows: number, columns: number): number[][] => { export const NewLoader = ({ rows = 5, columns = 5, + gap = 5, + size = 8, color }: LoaderProps): ReactElement => { const [noise, setNoise] = useState(generateStaticNoise(rows, columns)); @@ -55,6 +70,7 @@ export const NewLoader = ({ row.push( + {grid} ); diff --git a/apps/passport-client/new-components/shared/SwipeViewContainer.tsx b/apps/passport-client/new-components/shared/SwipeViewContainer.tsx index 2331ca50d3..59017aafa3 100644 --- a/apps/passport-client/new-components/shared/SwipeViewContainer.tsx +++ b/apps/passport-client/new-components/shared/SwipeViewContainer.tsx @@ -2,6 +2,8 @@ import styled from "styled-components"; export const SwipeViewContainer = styled.div<{ isZapp?: boolean }>` position: relative; - width: min(100vw, 420px); - height: ${({ isZapp }): string => (isZapp ? "100vh" : "inherit")}; + ${({ isZapp }): string => (isZapp ? "height: 100vh;" : "")}; + display: flex; + flex-direction: column; + width: 100%; `; diff --git a/apps/passport-client/new-components/shared/TicketCard.tsx b/apps/passport-client/new-components/shared/TicketCard.tsx index e909e555b5..197c756c92 100644 --- a/apps/passport-client/new-components/shared/TicketCard.tsx +++ b/apps/passport-client/new-components/shared/TicketCard.tsx @@ -1,6 +1,6 @@ import { Property } from "csstype"; -import { forwardRef } from "react"; -import styled from "styled-components"; +import { forwardRef, useState } from "react"; +import styled, { keyframes } from "styled-components"; import { Typography } from "./Typography"; export const TicketCardHeight = 300; @@ -33,15 +33,56 @@ const TicketCardContainer = styled.div<{ 0px 4px 6px -1px rgba(0, 0, 0, 0.1); `; -const TicketCardImage = styled.div<{ src?: string }>` - ${({ src }): string | undefined => - src ? `background: url(${src});` : undefined} +const TicketCardImage = styled.img<{ src?: string }>` background-size: cover; background-position: 50% 50%; width: 100%; height: 100%; `; +const shimmer = keyframes` + 0% { + transform: translateX(-100%); + } + 100% { + transform: translateX(100%); + } +`; + +const LoaderContainer = styled.div` + height: 100%; + display: flex; + justify-content: center; + align-items: center; + + /* Skeleton styling */ + .skeleton { + width: 100%; + height: 100%; + background-color: #e0e0e0; + position: relative; + overflow: hidden; + border-radius: 8px; + + &::before { + content: ""; + display: block; + position: absolute; + top: 0; + left: 0; + width: 200%; + height: 100%; + background-image: linear-gradient( + 90deg, + rgba(255, 255, 255, 0) 0%, + rgba(255, 255, 255, 0.4) 50%, + /* Increased opacity for more contrast */ rgba(255, 255, 255, 0) 100% + ); + animation: ${shimmer} 2s infinite linear; + } + } +`; + const TicketCardImageContainer = styled.div` position: relative; width: 100%; @@ -72,6 +113,7 @@ export const TicketCard = forwardRef( { imgSource, title, address, ticketCount, cardColor, ticketWidth }, ref ): JSX.Element => { + const [imageLoading, setImageLoading] = useState(true); return ( ( $borderColor={CARD_COLORS[cardColor]} > - + {imageLoading && ( + +
+
+ )} + { + setImageLoading(false); + }} + src={imgSource} + />
diff --git a/apps/passport-client/new-components/shared/Typography.tsx b/apps/passport-client/new-components/shared/Typography.tsx index 844b7a1238..4718227016 100644 --- a/apps/passport-client/new-components/shared/Typography.tsx +++ b/apps/passport-client/new-components/shared/Typography.tsx @@ -3,7 +3,7 @@ import React from "react"; import styled from "styled-components"; export type FontWeight = 400 | 500 | 600 | 700 | 800 | 900; -export type FontSize = 10 | 12 | 14 | 16 | 18 | 20 | 24; +export type FontSize = 10 | 12 | 14 | 16 | 18 | 20 | 24 | 28; export type FontFamily = "Barlow" | "Rubik"; const LINE_HEIGHT: Record = { "10": 13.5, @@ -12,7 +12,8 @@ const LINE_HEIGHT: Record = { "16": 21.6, "18": 24.3, "20": 27, - "24": 32.4 + "24": 32.4, + "28": 37.8 }; const TypographyText = styled.span<{ diff --git a/apps/passport-client/new-components/shared/utils.ts b/apps/passport-client/new-components/shared/utils.ts index 88056242af..8628c593dd 100644 --- a/apps/passport-client/new-components/shared/utils.ts +++ b/apps/passport-client/new-components/shared/utils.ts @@ -1,11 +1,11 @@ import { serializeStorage } from "@pcd/passport-interface"; import { useCallback, useEffect, useState } from "react"; +import { css } from "styled-components"; import { usePCDCollection, useSelf, useSubscriptions } from "../../src/appHooks"; -import { css } from "styled-components"; export const useExport = (): (() => Promise) => { const user = useSelf(); @@ -40,7 +40,7 @@ export const isMobile = /Mobi|Android/i.test(navigator.userAgent); export const useOrientation = (): ScreenOrientation => { const [state, setState] = useState( - window.screen.orientation + window.screen?.orientation ?? { type: "portrait-primary" } ); useEffect(() => { @@ -48,7 +48,7 @@ export const useOrientation = (): ScreenOrientation => { let mounted = true; const onChange = (): void => { - if (mounted) { + if (mounted && screen.orientation) { const { orientation } = screen; setState(orientation); @@ -86,3 +86,14 @@ export const hideScrollCSS = css` -ms-overflow-style: none; /* IE and Edge */ scrollbar-width: none; /* Firefox */ `; + +declare global { + interface Window { + TelegramWebviewProxy: { + postEvent: (...args: unknown[]) => unknown; + }; + } +} + +export const isInWebview = (): boolean => + !!window?.TelegramWebviewProxy?.postEvent; diff --git a/apps/passport-client/package.json b/apps/passport-client/package.json index 39baa34fac..6f61646afd 100644 --- a/apps/passport-client/package.json +++ b/apps/passport-client/package.json @@ -1,6 +1,6 @@ { "name": "passport-client", - "version": "0.0.40", + "version": "0.0.41", "license": "GPL-3.0-or-later", "private": true, "type": "module", @@ -18,59 +18,58 @@ "dependencies": { "@babel/runtime": "^7.24.0", "@heroicons/react": "^2.1.5", - "iframe-resizer-react": "1.1.0", - "@parcnet-js/client-helpers": "^1.0.7", - "@parcnet-js/client-rpc": "^1.1.6", - "@parcnet-js/podspec": "^1.1.3", - "@pcd/client-shared": "0.3.0", - "@pcd/eddsa-frog-pcd": "0.6.0", - "@pcd/eddsa-frog-pcd-ui": "0.5.0", - "@pcd/eddsa-pcd": "0.9.0", - "@pcd/eddsa-pcd-ui": "0.5.0", - "@pcd/eddsa-ticket-pcd": "0.9.0", - "@pcd/eddsa-ticket-pcd-ui": "0.5.0", - "@pcd/email-pcd": "0.9.0", - "@pcd/email-pcd-ui": "0.5.0", - "@pcd/emitter": "0.8.0", - "@pcd/ethereum-ownership-pcd": "0.14.0", - "@pcd/ethereum-ownership-pcd-ui": "0.5.0", - "@pcd/gpc": "0.3.0", - "@pcd/gpc-pcd": "0.3.0", - "@pcd/gpc-pcd-ui": "0.3.0", - "@pcd/gpcircuits": "0.4.0", - "@pcd/halo-nonce-pcd": "0.10.0", - "@pcd/halo-nonce-pcd-ui": "0.5.0", - "@pcd/message-pcd": "0.4.0", - "@pcd/message-pcd-ui": "0.4.0", - "@pcd/passport-crypto": "0.14.0", - "@pcd/passport-interface": "0.14.0", - "@pcd/passport-ui": "0.14.0", - "@pcd/pcd-collection": "0.14.0", - "@pcd/pcd-types": "0.14.0", - "@pcd/pod": "0.4.0", - "@pcd/pod-pcd": "0.4.0", - "@pcd/pod-pcd-ui": "0.4.0", - "@pcd/pod-ticket-pcd": "0.4.0", - "@pcd/pod-ticket-pcd-ui": "0.4.0", - "@pcd/rsa-image-pcd": "0.8.0", - "@pcd/rsa-image-pcd-ui": "0.5.0", - "@pcd/rsa-pcd": "0.9.0", - "@pcd/rsa-pcd-ui": "0.5.0", - "@pcd/rsa-ticket-pcd": "0.9.0", - "@pcd/rsa-ticket-pcd-ui": "0.5.0", - "@pcd/semaphore-group-pcd": "0.14.0", - "@pcd/semaphore-group-pcd-ui": "0.5.0", - "@pcd/semaphore-identity-pcd": "0.14.0", - "@pcd/semaphore-identity-pcd-ui": "0.5.0", - "@pcd/semaphore-signature-pcd": "0.14.0", - "@pcd/semaphore-signature-pcd-ui": "0.5.0", - "@pcd/unknown-pcd": "0.3.0", - "@pcd/unknown-pcd-ui": "0.3.0", - "@pcd/util": "^0.8.0", - "@pcd/zk-eddsa-event-ticket-pcd": "0.9.0", - "@pcd/zk-eddsa-event-ticket-pcd-ui": "0.5.0", - "@pcd/zk-eddsa-frog-pcd": "0.6.0", - "@pcd/zk-eddsa-frog-pcd-ui": "0.5.0", + "@parcnet-js/client-helpers": "^1.0.8", + "@parcnet-js/client-rpc": "^1.2.0", + "@parcnet-js/podspec": "^1.2.0", + "@pcd/client-shared": "0.4.0", + "@pcd/eddsa-frog-pcd": "0.7.0", + "@pcd/eddsa-frog-pcd-ui": "0.6.0", + "@pcd/eddsa-pcd": "0.10.0", + "@pcd/eddsa-pcd-ui": "0.6.0", + "@pcd/eddsa-ticket-pcd": "0.10.0", + "@pcd/eddsa-ticket-pcd-ui": "0.6.0", + "@pcd/email-pcd": "0.10.0", + "@pcd/email-pcd-ui": "0.6.0", + "@pcd/emitter": "0.9.0", + "@pcd/ethereum-ownership-pcd": "0.15.0", + "@pcd/ethereum-ownership-pcd-ui": "0.6.0", + "@pcd/gpc": "0.4.0", + "@pcd/gpc-pcd": "0.4.0", + "@pcd/gpc-pcd-ui": "0.4.0", + "@pcd/gpcircuits": "0.5.0", + "@pcd/halo-nonce-pcd": "0.11.0", + "@pcd/halo-nonce-pcd-ui": "0.6.0", + "@pcd/message-pcd": "0.5.0", + "@pcd/message-pcd-ui": "0.5.0", + "@pcd/passport-crypto": "0.15.0", + "@pcd/passport-interface": "0.15.0", + "@pcd/passport-ui": "0.15.0", + "@pcd/pcd-collection": "0.15.0", + "@pcd/pcd-types": "0.15.0", + "@pcd/pod": "0.5.0", + "@pcd/pod-pcd": "0.5.0", + "@pcd/pod-pcd-ui": "0.5.0", + "@pcd/pod-ticket-pcd": "0.5.0", + "@pcd/pod-ticket-pcd-ui": "0.5.0", + "@pcd/rsa-image-pcd": "0.9.0", + "@pcd/rsa-image-pcd-ui": "0.6.0", + "@pcd/rsa-pcd": "0.10.0", + "@pcd/rsa-pcd-ui": "0.6.0", + "@pcd/rsa-ticket-pcd": "0.10.0", + "@pcd/rsa-ticket-pcd-ui": "0.6.0", + "@pcd/semaphore-group-pcd": "0.15.0", + "@pcd/semaphore-group-pcd-ui": "0.6.0", + "@pcd/semaphore-identity-pcd": "0.15.0", + "@pcd/semaphore-identity-pcd-ui": "0.6.0", + "@pcd/semaphore-signature-pcd": "0.15.0", + "@pcd/semaphore-signature-pcd-ui": "0.6.0", + "@pcd/unknown-pcd": "0.4.0", + "@pcd/unknown-pcd-ui": "0.4.0", + "@pcd/util": "^0.9.0", + "@pcd/zk-eddsa-event-ticket-pcd": "0.10.0", + "@pcd/zk-eddsa-event-ticket-pcd-ui": "0.6.0", + "@pcd/zk-eddsa-frog-pcd": "0.7.0", + "@pcd/zk-eddsa-frog-pcd-ui": "0.6.0", "@rollbar/react": "^0.11.1", "@semaphore-protocol/identity": "^3.15.2", "@types/react-swipeable-views": "^0.13.5", @@ -81,7 +80,6 @@ "email-validator": "^2.0.4", "fast-json-stable-stringify": "^2.1.0", "handlebars": "^4.7.7", - "iframe-resizer-react": "1.1.0", "isomorphic-timers-promises": "^1.0.1", "js-sha256": "^0.11.0", "lodash": "^4.17.21", @@ -118,7 +116,7 @@ "devDependencies": { "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@esbuild-plugins/node-modules-polyfill": "^0.2.2", - "@pcd/eslint-config-custom": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", "@pcd/proto-pod-gpc-artifacts": "0.13.0", "@types/email-validator": "^1.0.6", "@types/express": "^4.17.17", diff --git a/apps/passport-client/pages/index.tsx b/apps/passport-client/pages/index.tsx index e28431ccc5..8fc881a33d 100644 --- a/apps/passport-client/pages/index.tsx +++ b/apps/passport-client/pages/index.tsx @@ -50,8 +50,7 @@ import { ConnectPopupScreen } from "../components/screens/ZappScreens/ConnectPop import { AppContainer, Background, - CenterColumn, - GlobalBackground + CenterColumn } from "../components/shared/AppContainer"; import { useTsParticles } from "../components/shared/useTsParticles"; import { NewHomeScreen } from "../new-components/screens/Home"; @@ -83,6 +82,21 @@ import { ListenMode, useZappServer } from "../src/zapp/useZappServer"; enableLiveReload(); +// Delete local storage and reload if forceNewSession is set +if (typeof window !== "undefined") { + const params = new URLSearchParams(window.location.search); + if (params.has("forceNewSession")) { + localStorage.clear(); + const newParams = new URLSearchParams(window.location.search); + newParams.delete("forceNewSession"); + const newSearch = newParams.toString(); + const newPath = `${window.location.pathname}${ + newSearch ? `?${newSearch}` : "" + }${window.location.hash}`; + window.location.replace(newPath); + } +} + function App(): JSX.Element { useBackgroundJobs(); useZappServer(ListenMode.LISTEN_IF_EMBEDDED); @@ -208,7 +222,7 @@ function RouterImpl(): JSX.Element { element={} /> */} } /> - - + diff --git a/apps/passport-client/public/global-zupass.css b/apps/passport-client/public/global-zupass.css index d4dfca3a01..0c9876ce46 100644 --- a/apps/passport-client/public/global-zupass.css +++ b/apps/passport-client/public/global-zupass.css @@ -22,7 +22,7 @@ html { --text-tertiary: #8b94ac; --text-primary: #1e2c50; - --core-accent: #01685c; + --core-accent: #0077ff; --dot-bg: #ececec; --dot-color: #e4e4e4; @@ -51,13 +51,22 @@ html { system-ui, sans-serif; line-height: 1.5; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } body { + overflow: auto; + height: 100%; + overflow-y: scroll; - -webkit-user-select: none; /* Safari */ - -ms-user-select: none; /* IE 10 and IE 11 */ - user-select: none; /* Standard syntax */ + -webkit-user-select: none; + /* Safari */ + -ms-user-select: none; + /* IE 10 and IE 11 */ + user-select: none; + /* Standard syntax */ } a, diff --git a/apps/passport-client/public/images/devcon/devcon-landscape.webp b/apps/passport-client/public/images/devcon/devcon-landscape.webp new file mode 100644 index 0000000000..3e1c7c883c Binary files /dev/null and b/apps/passport-client/public/images/devcon/devcon-landscape.webp differ diff --git a/apps/passport-client/public/images/devcon/devcon-portrait.webp b/apps/passport-client/public/images/devcon/devcon-portrait.webp new file mode 100644 index 0000000000..96283211ba Binary files /dev/null and b/apps/passport-client/public/images/devcon/devcon-portrait.webp differ diff --git a/apps/passport-client/public/images/zuzalu/zuconnect-landscape.webp b/apps/passport-client/public/images/zuzalu/zuconnect-landscape.webp new file mode 100644 index 0000000000..ae5cbe0e50 Binary files /dev/null and b/apps/passport-client/public/images/zuzalu/zuconnect-landscape.webp differ diff --git a/apps/passport-client/public/images/zuzalu/zuzalu-landscape.webp b/apps/passport-client/public/images/zuzalu/zuzalu-landscape.webp new file mode 100644 index 0000000000..cfb938bd26 Binary files /dev/null and b/apps/passport-client/public/images/zuzalu/zuzalu-landscape.webp differ diff --git a/apps/passport-client/src/appConfig.ts b/apps/passport-client/src/appConfig.ts index 8b124b9503..d97c5aedfe 100644 --- a/apps/passport-client/src/appConfig.ts +++ b/apps/passport-client/src/appConfig.ts @@ -21,6 +21,10 @@ interface AppConfig { embeddedZapps: Record; // origins that are allowed to query Devcon tickets directly devconTicketQueryOrigins: string[]; + // If IGNORE_NON_PRIORITY_FEEDS=true, then non-priority feeds will be ignored. + ignoreNonPriorityFeeds: boolean; + // URLs of feed providers that are priority feeds. + priorityFeedProviderUrls: string[]; } if ( @@ -84,7 +88,11 @@ export const appConfig: AppConfig = { zappRestrictOrigins: process.env.ZAPP_RESTRICT_ORIGINS === "true", zappAllowedSignerOrigins: zappAllowedSignerOrigins, embeddedZapps: embeddedZapps, - devconTicketQueryOrigins: devconTicketQueryOrigins + devconTicketQueryOrigins: devconTicketQueryOrigins, + ignoreNonPriorityFeeds: process.env.IGNORE_NON_PRIORITY_FEEDS === "true", + priorityFeedProviderUrls: process.env.PRIORITY_FEED_PROVIDER_URLS + ? JSON.parse(process.env.PRIORITY_FEED_PROVIDER_URLS) + : [] }; console.log("App Config: " + JSON.stringify(appConfig)); diff --git a/apps/passport-client/src/appHooks.ts b/apps/passport-client/src/appHooks.ts index 9153c99620..a0b32f360b 100644 --- a/apps/passport-client/src/appHooks.ts +++ b/apps/passport-client/src/appHooks.ts @@ -199,6 +199,10 @@ export function useLoadedIssuedPCDs(): boolean { return useSelector((s) => !!s.loadedIssuedPCDs, []); } +export function useExtraSubscriptionFetchRequested(): boolean { + return useSelector((s) => !!s.extraSubscriptionFetchRequested, []); +} + export function useIsDownloaded(): boolean { return useSelector((s) => !!s.downloadedPCDs, []); } @@ -231,7 +235,6 @@ export function useUserShouldAgreeNewPrivacyNotice(): void { export function useIsSyncSettled(): boolean { const isDownloaded = useIsDownloaded(); const loadedIssued = useLoadedIssuedPCDs(); - return isDownloaded && loadedIssued; } @@ -410,6 +413,7 @@ export const useAutoLoginFromOneClick = (): { loading: boolean } => { const [oneClickRedirect, setOneClickRedirect] = useState( localStorage.getItem(ONE_CLICK_REDIRECT_KEY) ); + const [redirectHash] = useState(location.hash); useEffect(() => { if (attemptedLogin.current) return; @@ -425,7 +429,10 @@ export const useAutoLoginFromOneClick = (): { loading: boolean } => { if (self?.emails?.includes(email)) throw new Error("User is already logged in"); - location.hash = `#${oneClickRedirect}`; + const base = `#${oneClickRedirect.trim()}`; + window.location.hash = redirectHash + ? `${base}?redirectHash=${encodeURIComponent(redirectHash.trim())}` + : base; } catch (error) { console.error("Unable to auto-login", error); } finally { @@ -435,7 +442,7 @@ export const useAutoLoginFromOneClick = (): { loading: boolean } => { }; attemptAutoLogin(); - }, [dispatch, self, oneClickRedirect]); + }, [dispatch, self, oneClickRedirect, redirectHash]); return { loading: !!oneClickRedirect }; }; diff --git a/apps/passport-client/src/dispatch.ts b/apps/passport-client/src/dispatch.ts index 8295910c59..d9b0d25a25 100644 --- a/apps/passport-client/src/dispatch.ts +++ b/apps/passport-client/src/dispatch.ts @@ -399,6 +399,8 @@ async function oneClickLogin( state: AppState, update: ZuUpdate ): Promise { + if (state.self) throw new Error("User is already logged in"); + update({ modal: { modalType: "none" } }); @@ -1158,14 +1160,23 @@ async function doSync( onSubscriptionResult, state.subscriptions .getActiveSubscriptions() - .filter( - (s) => - s.id !== + .filter((s) => { + if ( + s.id === state.subscriptions.findSubscription( ZUPASS_FEED_URL, ZupassFeedIds.Email )?.id - ) + ) { + return false; + } + + if (appConfig.ignoreNonPriorityFeeds) { + return appConfig.priorityFeedProviderUrls.includes(s.providerUrl); + } + + return true; + }) .map((s) => s.id) ); diff --git a/apps/passport-client/src/password.ts b/apps/passport-client/src/password.ts index 09ba781354..407df89094 100644 --- a/apps/passport-client/src/password.ts +++ b/apps/passport-client/src/password.ts @@ -41,7 +41,7 @@ export const setPassword = async ( ); } else if (res.error.name === "Conflict") { update({ extraDownloadRequested: true }); - throw new Error(`Cannot change password while PCDs are syncing. + throw new Error(`Cannot change password while PODs are syncing. Wait for download to complete or reload the page and try again.`); } else { throw new Error( diff --git a/apps/passport-client/src/sharedConstants.ts b/apps/passport-client/src/sharedConstants.ts index de948cdf66..cab834dae5 100644 --- a/apps/passport-client/src/sharedConstants.ts +++ b/apps/passport-client/src/sharedConstants.ts @@ -25,7 +25,7 @@ export const OUTDATED_BROWSER_ERROR_MESSAGE = export const OOM_ERROR_MESSAGE = "Out of memory"; -export const MAX_WIDTH_SCREEN = 420; +export const MAX_WIDTH_SCREEN = 440; // Environment variable configure how we fetch GPC artifacts, however we // default to fetching from the Zupass server rather than jsdelivr. @@ -45,3 +45,4 @@ export const GPC_ARTIFACTS_CONFIG = export const ZUPASS_GPC_ARTIFACT_BASE_PATH = `/artifacts/proto-pod-gpc`; export const ZUPASS_GPC_ARTIFACT_PATH = ZUPASS_GPC_ARTIFACT_BASE_PATH + `/${ARTIFACTS_NPM_VERSION}`; +export const BANNER_HEIGHT = 0; diff --git a/apps/passport-client/src/state.ts b/apps/passport-client/src/state.ts index 8535888452..124f500378 100644 --- a/apps/passport-client/src/state.ts +++ b/apps/passport-client/src/state.ts @@ -44,8 +44,12 @@ export interface AppState { | { modalType: "success-modal"; title: string; description: string } | { modalType: "about"; modalGoBackBehavior?: "close" | "back" } | { modalType: "import" } - | { modalType: "prove"; request: PCDGetRequest } - | { modalType: "manage-emails"; goBackToSupport?: boolean } + | { modalType: "prove"; request?: PCDGetRequest } + | { + modalType: "manage-emails"; + prevModal?: AppState["bottomModal"]; + dismissble?: boolean; + } | { modalType: "delete-account" } | { modalType: "ticket-add-ons"; addOns: TicketType[] } | { modalType: "help-modal" } diff --git a/apps/passport-client/src/worker/service-worker.ts b/apps/passport-client/src/worker/service-worker.ts index c6779ac419..8dbcb26d78 100644 --- a/apps/passport-client/src/worker/service-worker.ts +++ b/apps/passport-client/src/worker/service-worker.ts @@ -117,6 +117,8 @@ const STABLE_CACHE_RESOURCES = new Set([ "/images/social.webp", "/images/star.webp", "/images/wristband.webp", + "/images/devcon/devcon-portrait.webp", + "/images/devcon/devcon-landscape.webp", "fonts/Rubik-Black.ttf", "fonts/Rubik-BlackItalic.ttf", "fonts/Rubik-Bold.ttf", diff --git a/apps/passport-client/src/zapp/ZappServer.ts b/apps/passport-client/src/zapp/ZappServer.ts index 9091cd9ba1..c3b0c8c687 100644 --- a/apps/passport-client/src/zapp/ZappServer.ts +++ b/apps/passport-client/src/zapp/ZappServer.ts @@ -27,7 +27,6 @@ import { ticketToPOD } from "@pcd/pod-ticket-pcd"; import { v3tov4Identity } from "@pcd/semaphore-identity-pcd"; -import { v4 as uuidv4 } from "uuid"; import { appConfig } from "../appConfig"; import { StateContextValue } from "../dispatch"; import { EmbeddedScreenType } from "../embedded"; @@ -164,7 +163,7 @@ class ZupassPODRPC extends BaseZappServer implements ParcnetPODRPC { ) { throw new MissingPermissionError("INSERT_POD", "pod.insert"); } - const id = uuidv4(); + const id = `pod-${podData.signature}`; const podPCD = new PODPCD( id, POD.load(podData.entries, podData.signature, podData.signerPublicKey) diff --git a/apps/passport-client/src/zapp/useZappServer.ts b/apps/passport-client/src/zapp/useZappServer.ts index cbb11b5946..6bb35f2a1c 100644 --- a/apps/passport-client/src/zapp/useZappServer.ts +++ b/apps/passport-client/src/zapp/useZappServer.ts @@ -8,6 +8,7 @@ import { useEffect } from "react"; import * as v from "valibot"; import { useStateContext } from "../appHooks"; import { StateContextValue } from "../dispatch"; +import { useSyncE2EEStorage } from "../useSyncE2EEStorage"; import { ZupassRPCProcessor } from "./ZappServer"; export enum ListenMode { @@ -34,11 +35,21 @@ async function waitForAuthentication( async function waitForFirstSync(context: StateContextValue): Promise { return new Promise((resolve) => { - if (context.getState().completedFirstSync) { + if ( + context.getState().downloadedPCDs && + context.getState().pcds.getAllPCDsInFolder("Devcon SEA").length > 0 + ) { resolve(); return; } const unlisten = context.stateEmitter.listen((state) => { + if ( + context.getState().downloadedPCDs && + context.getState().pcds.getAllPCDsInFolder("Devcon SEA").length > 0 + ) { + resolve(); + return; + } if (state.completedFirstSync) { unlisten(); resolve(); @@ -105,6 +116,7 @@ function isAlreadyAuthorized( export function useZappServer(mode: ListenMode): void { const context = useStateContext(); + useSyncE2EEStorage(); useEffect(() => { if ( diff --git a/apps/passport-server/.env.example b/apps/passport-server/.env.example index cc9fc78cc4..c71e0e3dbd 100644 --- a/apps/passport-server/.env.example +++ b/apps/passport-server/.env.example @@ -1,6 +1,6 @@ # This file is intended to be used as a starting point for local # development. You should be able to copy it as-is into a file -# named `.env` as a sibling of this file, and be able to run +# named `.env` as a sibling of this file, and be able to run # passport-server ################################################################## @@ -16,7 +16,7 @@ PASSPORT_SERVER_URL="http://localhost:3002" PASSPORT_CLIENT_URL="http://localhost:3000" # To enable notifications from the server to be sent to Discord -# +# # DISCORD_TOKEN= # DISCORD_ALERTS_CHANNEL_ID= @@ -47,11 +47,11 @@ DATABASE_DB_NAME=postgres DATABASE_SSL=false # To enable honeycomb tracing set this API key -# +# # HONEYCOMB_API_KEY= # To enable error reporting, both these environment variables must be set -# +# # ROLLBAR_TOKEN= # ROLLBAR_ENV_NAME= @@ -122,13 +122,13 @@ WORKER_QUANTITY=1 ################################################################## # So that Podbox server knows the url of where its corresponding client lives. -# +# GENERIC_ISSUANCE_CLIENT_URL="http://localhost:3005" -# To enable server-issued PCDs using the generic issuance feature, the server needs an an EdDSA -# private key. You can generate one using the following command at the root of the project, +# To enable server-issued PCDs using the generic issuance feature, the server needs an an EdDSA +# private key. You can generate one using the following command at the root of the project, # after installing dependencies and building the project: -# +# # node -e 'console.log(require("@pcd/eddsa-pcd").newEdDSAPrivateKey())' | pbcopy GENERIC_ISSUANCE_EDDSA_PRIVATE_KEY="129806f9d68c3cf87450a968748fd31f01ba4e6f2078d80f24ebab23d98df7cf" @@ -143,7 +143,7 @@ GENERIC_ISSUANCE_ZUPASS_PUBLIC_KEY=["00f669040a1c31ff18b8e221b94ac36580da68a05c6 # in the generic issuance service # e.g. you could set the value to be ["ivan@0xparc.org"] to make the server # set the user with that email address to be an admin on start-up. -# +# GENERIC_ISSUANCE_ADMINS=["ivan@0xparc.org", "admin@podbox.dev"] # if true, and both `STYTCH_PROJECT_ID` and `STYTCH_SECRET` are @@ -172,7 +172,7 @@ IS_LOCAL_HTTPS=false # TELEGRAM_BOT_DISABLED= # For anonymous message posting rate limit (per topic) -# +# # MAX_DAILY_ANON_TOPIC_POSTS_PER_USER=3 # url for anon-message-client # TELEGRAM_BOT_ANON_WEBSITE= @@ -187,15 +187,14 @@ IS_LOCAL_HTTPS=false # The anonymous message client, like https://dev.local:4000 or https://zk-tg.com # TELEGRAM_ANON_WEBSITE= - ################################################################## ################################################################## # Legacy Integration ################################################################## ################################################################## -# Zuzalu 2023 -# +# Zuzalu 2023 +# # PRETIX_TOKEN= # PRETIX_ORG_URL= # PRETIX_ZU_EVENT_ID= @@ -205,7 +204,7 @@ IS_LOCAL_HTTPS=false # ZUCONNECT_MOCK_TICKETS='["test@example.com", "another@example.com"]' # Devconnect 2023 -# +# # To disable syncing tickets from Pretix for local development # PRETIX_SYNC_DISABLED= @@ -229,4 +228,15 @@ IS_LOCAL_HTTPS=false # If true, the generic issuance service will not schedule pipeline loads on a loop, # but will instead load pipelines on demand. -# GENERIC_ISSUANCE_TEST_MODE="true" \ No newline at end of file +# GENERIC_ISSUANCE_TEST_MODE="true" + +# The list of Pretix organizer urls to enable batching order requests for. If +# batching is enabled for an organizer, the server will fetch 30 pages of orders +# at a time, rather than sequentially one page at a time. Instead of checking +# whether we've loaded all orders by checking that the last page does not have the +# `next` field in its response, we instead know that we've loaded all orders when +# there are 404 errors for pages that are not the first page, and no other errors. +# PRETIX_BATCH_ENABLED_FOR=[""] + +# The number of database connections to keep open. +# DB_POOL_SIZE=32 diff --git a/apps/passport-server/CHANGELOG.md b/apps/passport-server/CHANGELOG.md index 68dcc02cc5..154ab47055 100644 --- a/apps/passport-server/CHANGELOG.md +++ b/apps/passport-server/CHANGELOG.md @@ -1,5 +1,35 @@ # passport-server +## 0.0.41 + +### Patch Changes + +- Updated dependencies + - @pcd/passport-crypto@0.15.0 + - @pcd/passport-interface@0.15.0 + - @pcd/pcd-collection@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/pod@0.5.0 + - @pcd/podbox-shared@0.4.0 + - @pcd/server-shared@0.4.0 + - @pcd/util@0.9.0 + - @pcd/eddsa-frog-pcd@0.7.0 + - @pcd/eddsa-pcd@0.10.0 + - @pcd/eddsa-ticket-pcd@0.10.0 + - @pcd/email-pcd@0.10.0 + - @pcd/message-pcd@0.5.0 + - @pcd/pod-pcd@0.5.0 + - @pcd/pod-ticket-pcd@0.5.0 + - @pcd/rln-pcd@0.14.0 + - @pcd/rsa-image-pcd@0.9.0 + - @pcd/rsa-pcd@0.10.0 + - @pcd/rsa-ticket-pcd@0.10.0 + - @pcd/semaphore-group-pcd@0.15.0 + - @pcd/semaphore-identity-pcd@0.15.0 + - @pcd/semaphore-signature-pcd@0.15.0 + - @pcd/zk-eddsa-event-ticket-pcd@0.10.0 + - @pcd/zk-eddsa-frog-pcd@0.7.0 + ## 0.0.40 ### Patch Changes diff --git a/apps/passport-server/package.json b/apps/passport-server/package.json index b4f6ec17eb..8146638515 100644 --- a/apps/passport-server/package.json +++ b/apps/passport-server/package.json @@ -1,6 +1,6 @@ { "name": "passport-server", - "version": "0.0.40", + "version": "0.0.41", "license": "GPL-3.0-or-later", "private": true, "scripts": { @@ -23,30 +23,30 @@ "@opentelemetry/auto-instrumentations-node": "^0.36.0", "@opentelemetry/sdk-node": "^0.34.0", "@pagerduty/pdjs": "^2.2.4", - "@pcd/eddsa-frog-pcd": "0.6.0", - "@pcd/eddsa-pcd": "0.9.0", - "@pcd/eddsa-ticket-pcd": "0.9.0", - "@pcd/email-pcd": "0.9.0", - "@pcd/message-pcd": "0.4.0", - "@pcd/passport-crypto": "0.14.0", - "@pcd/passport-interface": "0.14.0", - "@pcd/pcd-collection": "0.14.0", - "@pcd/pcd-types": "0.14.0", - "@pcd/pod": "0.4.0", - "@pcd/pod-pcd": "0.4.0", - "@pcd/pod-ticket-pcd": "0.4.0", - "@pcd/podbox-shared": "0.3.0", - "@pcd/rln-pcd": "0.13.0", - "@pcd/rsa-image-pcd": "0.8.0", - "@pcd/rsa-pcd": "0.9.0", - "@pcd/rsa-ticket-pcd": "0.9.0", - "@pcd/semaphore-group-pcd": "0.14.0", - "@pcd/semaphore-identity-pcd": "0.14.0", - "@pcd/semaphore-signature-pcd": "0.14.0", - "@pcd/server-shared": "0.3.0", - "@pcd/util": "^0.8.0", - "@pcd/zk-eddsa-event-ticket-pcd": "0.9.0", - "@pcd/zk-eddsa-frog-pcd": "0.6.0", + "@pcd/eddsa-frog-pcd": "0.7.0", + "@pcd/eddsa-pcd": "0.10.0", + "@pcd/eddsa-ticket-pcd": "0.10.0", + "@pcd/email-pcd": "0.10.0", + "@pcd/message-pcd": "0.5.0", + "@pcd/passport-crypto": "0.15.0", + "@pcd/passport-interface": "0.15.0", + "@pcd/pcd-collection": "0.15.0", + "@pcd/pcd-types": "0.15.0", + "@pcd/pod": "0.5.0", + "@pcd/pod-pcd": "0.5.0", + "@pcd/pod-ticket-pcd": "0.5.0", + "@pcd/podbox-shared": "0.4.0", + "@pcd/rln-pcd": "0.14.0", + "@pcd/rsa-image-pcd": "0.9.0", + "@pcd/rsa-pcd": "0.10.0", + "@pcd/rsa-ticket-pcd": "0.10.0", + "@pcd/semaphore-group-pcd": "0.15.0", + "@pcd/semaphore-identity-pcd": "0.15.0", + "@pcd/semaphore-signature-pcd": "0.15.0", + "@pcd/server-shared": "0.4.0", + "@pcd/util": "^0.9.0", + "@pcd/zk-eddsa-event-ticket-pcd": "0.10.0", + "@pcd/zk-eddsa-frog-pcd": "0.7.0", "@semaphore-protocol/group": "^3.15.2", "@semaphore-protocol/identity": "^3.15.2", "@sendgrid/mail": "^7.7.0", @@ -98,8 +98,8 @@ "devDependencies": { "@grammyjs/auto-retry": "^1.1.1", "@grammyjs/menu": "^1.2.1", - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/async-lock": "^1.4.2", "@types/chai": "^4.3.5", "@types/chai-as-promised": "^7.1.5", diff --git a/apps/passport-server/resources/one-click-page/error.html b/apps/passport-server/resources/one-click-page/error.html index eb4f172f88..d63c492d95 100644 --- a/apps/passport-server/resources/one-click-page/error.html +++ b/apps/passport-server/resources/one-click-page/error.html @@ -6,6 +6,13 @@ + + + + Missing ticket + .modal__button_container { + display: flex; + flex-direction: column; + width: 100%; + gap: 8px; + } + - -
- Whoops, looks like you don't have a ticket. - +
+
+ NO UPCOMING EVENTS + Don't see your ticket? Learn more +
+
+ + + diff --git a/apps/passport-server/resources/one-click-page/index.html b/apps/passport-server/resources/one-click-page/index.html index f0c4ee11dc..52da662208 100644 --- a/apps/passport-server/resources/one-click-page/index.html +++ b/apps/passport-server/resources/one-click-page/index.html @@ -7,7 +7,7 @@ - -
+
+
- {{eventName}} + WELCOME TO {{eventName}}
{{eventLocation}} · @@ -466,71 +510,80 @@ 1 Ticket {{/isMoreThanOne}}
-
-
- -
- {{attendeeName}} -
- {{attendeeEmail}} - · - {{ticketName}} -
+
+ + + {{#tickets}} +
+ +
+ {{attendeeName}} +
+ {{attendeeEmail}} + · + {{ticketName}}
- {{#addonsCount}} - - {{/addonsCount}} - {{^addonsCount}} - -
- {{/addonsCount}} +
+ {{#showAddons}} + + {{/showAddons}} + {{^showAddons}} + +
+ {{/showAddons}} +
+ {{/tickets}}
- {hasCollectableContent && ( )} + + POD • ZK powered by ZUPASS + ); } +const ExtraSectionSecondaryText = styled.div` + color: var(--text-tertiary); + text-align: center; + + /* text-xs (12px)/regular-rubik */ + font-family: Rubik; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 135%; /* 16.2px */ +`; + function getFormatDisplayName(displayFormat: PODDisplayFormat): string { switch (displayFormat) { case PODDisplayFormat.POD: @@ -156,3 +212,11 @@ async function verifySignature(pcd: PODPCD): Promise<{ return { isValid: false, errorMessage: getErrorMessage(e) }; } } + +const Text = styled.span` + font-family: Rubik; + font-size: 14px; + font-style: normal; + font-weight: 500; + line-height: 135%; /* 18.9px */ +`; diff --git a/packages/ui/pod-pcd-ui/src/renderers/DefaultPODPCDCardBody.tsx b/packages/ui/pod-pcd-ui/src/renderers/DefaultPODPCDCardBody.tsx index c21df9dba4..3f47b4c2a8 100644 --- a/packages/ui/pod-pcd-ui/src/renderers/DefaultPODPCDCardBody.tsx +++ b/packages/ui/pod-pcd-ui/src/renderers/DefaultPODPCDCardBody.tsx @@ -1,4 +1,10 @@ -import { Card, HiddenText, styled, TextContainer } from "@pcd/passport-ui"; +import { + Card, + CardWithCopy, + HiddenText, + styled, + TextContainer +} from "@pcd/passport-ui"; import { podEntriesToJSON } from "@pcd/pod"; import { PODPCD } from "@pcd/pod-pcd"; @@ -12,26 +18,38 @@ const StyledPre = styled.pre` export function DefaultPODPCDCardBody({ pcd }: { pcd: PODPCD }): JSX.Element { return (
- { + return navigator.clipboard.writeText( + JSON.stringify(pcd.pod.toJSON(), null, 2) + ); }} > - - {JSON.stringify(podEntriesToJSON(pcd.claim.entries), null, 2)} - - - - - - - - + + + {JSON.stringify(podEntriesToJSON(pcd.claim.entries), null, 2)} + + + + + + + + +
); } diff --git a/packages/ui/pod-pcd-ui/tsconfig.json b/packages/ui/pod-pcd-ui/tsconfig.json index 2d6c0e587f..0f13ff40d6 100644 --- a/packages/ui/pod-pcd-ui/tsconfig.json +++ b/packages/ui/pod-pcd-ui/tsconfig.json @@ -1,23 +1,15 @@ { "extends": "@pcd/tsconfig/ts-library.json", "compilerOptions": { - "lib": [], + "lib": ["DOM"], "outDir": "dist", "declarationDir": "dist/types", // Include all source files, including tests "rootDir": "." }, // Some artifact-including packages need to import a JSON file - "include": [ - "src", - "test", - "artifacts/*.json" - ], - "exclude": [ - "dist", - "build", - "node_modules" - ], + "include": ["src", "test", "artifacts/*.json"], + "exclude": ["dist", "build", "node_modules"], // DO NOT MODIFY MANUALLY BEYOND THIS POINT // References are automatically maintained by `yarn fix-references` "references": [ diff --git a/packages/ui/pod-ticket-pcd-ui/CHANGELOG.md b/packages/ui/pod-ticket-pcd-ui/CHANGELOG.md index 99cf379c33..0f788527b0 100644 --- a/packages/ui/pod-ticket-pcd-ui/CHANGELOG.md +++ b/packages/ui/pod-ticket-pcd-ui/CHANGELOG.md @@ -1,5 +1,18 @@ # @pcd/pod-ticket-pcd-ui +## 0.5.0 + +### Minor Changes + +- GPC v4 enhancements, PODValue types, more GPC configurations + +### Patch Changes + +- Updated dependencies + - @pcd/passport-ui@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/pod-ticket-pcd@0.5.0 + ## 0.4.0 ### Minor Changes diff --git a/packages/ui/pod-ticket-pcd-ui/package.json b/packages/ui/pod-ticket-pcd-ui/package.json index adf84ade5a..3a1fe98cee 100644 --- a/packages/ui/pod-ticket-pcd-ui/package.json +++ b/packages/ui/pod-ticket-pcd-ui/package.json @@ -1,6 +1,6 @@ { "name": "@pcd/pod-ticket-pcd-ui", - "version": "0.4.0", + "version": "0.5.0", "license": "GPL-3.0-or-later", "main": "./dist/cjs/src/index.js", "module": "./dist/esm/src/index.js", @@ -26,15 +26,14 @@ "clean": "rm -rf dist node_modules *.tsbuildinfo" }, "dependencies": { - "@pcd/passport-ui": "0.14.0", - "@pcd/pcd-types": "0.14.0", - "@pcd/pod-ticket-pcd": "0.4.0", - "html-to-image": "^1.11.11", + "@pcd/passport-ui": "0.15.0", + "@pcd/pcd-types": "0.15.0", + "@pcd/pod-ticket-pcd": "0.5.0", "url-join": "4.0.1" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/react": "^18.0.22", "@types/react-dom": "^18.0.7", "eslint": "^8.57.0", diff --git a/packages/ui/pod-ticket-pcd-ui/src/CardBody.tsx b/packages/ui/pod-ticket-pcd-ui/src/CardBody.tsx index 87ccf7e042..f2e8a5c8ea 100644 --- a/packages/ui/pod-ticket-pcd-ui/src/CardBody.tsx +++ b/packages/ui/pod-ticket-pcd-ui/src/CardBody.tsx @@ -2,8 +2,7 @@ import { QRDisplayWithRegenerateAndStorage, styled } from "@pcd/passport-ui"; import { PCDUI } from "@pcd/pcd-types"; import { PODTicketPCD } from "@pcd/pod-ticket-pcd"; import { IPODTicketData } from "@pcd/pod-ticket-pcd/src/schema"; -import { toCanvas } from "html-to-image"; -import { useCallback, useRef, useState } from "react"; +import { useCallback, useRef } from "react"; import urlJoin from "url-join"; type NEW_UI__AddOns = { @@ -14,7 +13,6 @@ export interface PODTicketPCDCardProps { ticketData: IPODTicketData; idBasedVerifyURL: string; addOns?: NEW_UI__AddOns; - showDownoladButton?: boolean; } export const PODTicketPCDUI: PCDUI = { @@ -24,17 +22,14 @@ export const PODTicketPCDUI: PCDUI = { function PODTicketCardBody({ pcd, idBasedVerifyURL, - addOns, - showDownoladButton + addOns }: { pcd: PODTicketPCD; idBasedVerifyURL: string; addOns?: NEW_UI__AddOns; - showDownoladButton?: boolean; }): JSX.Element { return ( (null); - const [downloading, setDownloading] = useState(false); - // If ticket has an `eventStartDate` render the `qrCodeOverrideImageUrl`, if it exists // Else, render the `imageUrl`, if it existss const imageToRender = ticketData?.eventStartDate @@ -94,32 +86,19 @@ export function PODTicketCardBodyImpl({
- {showDownoladButton && !imageToRender && ( - { - if (downloading) return; - setDownloading(true); - const ticketElement = ticketImageRef.current; - if (!ticketElement) return; - await shareOrDownloadImage( - ticketElement, - (ticketData?.eventName || "event-ticket-data") + ".jpeg" - ); - setDownloading(false); - }} - > - - Download ticket - - - - )} {addOns && ( {addOns.text} )} + + + QR POD • ZK powered by ZUPASS + +
); @@ -197,7 +176,7 @@ const NEW_UI__Container = styled.div` font-family: Rubik; border-radius: 16px; border: 2px solid var(--text-white, #fff); - background: var(--bg-white-transparent, rgba(255, 255, 255, 0.8)); + background: #fff; /* shadow-sm */ box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.05); @@ -270,19 +249,17 @@ const NEW_UI__ExtraSectionText = styled.div<{ $disabled?: boolean }>` line-height: 135%; `; -const DownloadIcon = (): JSX.Element => ( - - - - -); +const ExtraSectionSecondaryText = styled.div` + color: var(--text-tertiary); + text-align: center; + + /* text-xs (12px)/regular-rubik */ + font-family: Rubik; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 135%; /* 16.2px */ +`; const QRIcon = (): JSX.Element => ( ( ); - -const shareOrDownloadImage = async ( - ticketElement: HTMLElement | null, - fileName: string -): Promise => { - if (!ticketElement) return; - - const canvas: HTMLCanvasElement = await toCanvas(ticketElement); - const blob: Blob | null = await new Promise((resolve) => - canvas.toBlob(resolve, "image/jpeg") - ); - if (!blob) return; // Ensure the blob exists before proceeding - - const downloadImage = (blob: Blob, fileName: string): void => { - const url = URL.createObjectURL(blob); - const link = document.createElement("a"); - link.href = url; - link.download = fileName; - link.click(); - URL.revokeObjectURL(url); - }; - const file = new File([blob], fileName, { type: "image/jpeg" }); - if (navigator.share && navigator.canShare({ files: [file] })) { - try { - await navigator.share({ - files: [file] - }); - } catch (e) { - console.error("Error sharing image", e); - // Ignore errors related to the user aborting the share or a share already in progress - if ( - e instanceof Error && - ["AbortError", "InvalidStateError"].includes(e.name) - ) - return; - downloadImage(blob, fileName); - } - } else { - downloadImage(blob, fileName); - } -}; diff --git a/packages/ui/rsa-image-pcd-ui/CHANGELOG.md b/packages/ui/rsa-image-pcd-ui/CHANGELOG.md index 2fc26b10d1..b0942f684b 100644 --- a/packages/ui/rsa-image-pcd-ui/CHANGELOG.md +++ b/packages/ui/rsa-image-pcd-ui/CHANGELOG.md @@ -1,5 +1,18 @@ # @pcd/rsa-image-pcd-ui +## 0.6.0 + +### Minor Changes + +- GPC v4 enhancements, PODValue types, more GPC configurations + +### Patch Changes + +- Updated dependencies + - @pcd/passport-ui@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/rsa-image-pcd@0.9.0 + ## 0.5.0 ### Minor Changes diff --git a/packages/ui/rsa-image-pcd-ui/package.json b/packages/ui/rsa-image-pcd-ui/package.json index e798176e7d..cdfa012dd3 100644 --- a/packages/ui/rsa-image-pcd-ui/package.json +++ b/packages/ui/rsa-image-pcd-ui/package.json @@ -1,6 +1,6 @@ { "name": "@pcd/rsa-image-pcd-ui", - "version": "0.5.0", + "version": "0.6.0", "license": "GPL-3.0-or-later", "main": "./dist/cjs/src/index.js", "module": "./dist/esm/src/index.js", @@ -26,13 +26,13 @@ "clean": "rm -rf dist node_modules *.tsbuildinfo" }, "dependencies": { - "@pcd/rsa-image-pcd": "0.8.0", - "@pcd/passport-ui": "0.14.0", - "@pcd/pcd-types": "0.14.0" + "@pcd/rsa-image-pcd": "0.9.0", + "@pcd/passport-ui": "0.15.0", + "@pcd/pcd-types": "0.15.0" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/react": "^18.0.22", "@types/react-dom": "^18.0.7", "eslint": "^8.57.0", diff --git a/packages/ui/rsa-pcd-ui/CHANGELOG.md b/packages/ui/rsa-pcd-ui/CHANGELOG.md index 60b3e021bf..561b2e10df 100644 --- a/packages/ui/rsa-pcd-ui/CHANGELOG.md +++ b/packages/ui/rsa-pcd-ui/CHANGELOG.md @@ -1,5 +1,18 @@ # @pcd/rsa-pcd-ui +## 0.6.0 + +### Minor Changes + +- GPC v4 enhancements, PODValue types, more GPC configurations + +### Patch Changes + +- Updated dependencies + - @pcd/passport-ui@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/rsa-pcd@0.10.0 + ## 0.5.0 ### Minor Changes diff --git a/packages/ui/rsa-pcd-ui/package.json b/packages/ui/rsa-pcd-ui/package.json index 720cd61ffd..b3354b6631 100644 --- a/packages/ui/rsa-pcd-ui/package.json +++ b/packages/ui/rsa-pcd-ui/package.json @@ -1,6 +1,6 @@ { "name": "@pcd/rsa-pcd-ui", - "version": "0.5.0", + "version": "0.6.0", "license": "GPL-3.0-or-later", "main": "./dist/cjs/src/index.js", "module": "./dist/esm/src/index.js", @@ -26,13 +26,13 @@ "clean": "rm -rf dist node_modules *.tsbuildinfo" }, "dependencies": { - "@pcd/rsa-pcd": "0.9.0", - "@pcd/passport-ui": "0.14.0", - "@pcd/pcd-types": "0.14.0" + "@pcd/rsa-pcd": "0.10.0", + "@pcd/passport-ui": "0.15.0", + "@pcd/pcd-types": "0.15.0" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/react": "^18.0.22", "@types/react-dom": "^18.0.7", "eslint": "^8.57.0", diff --git a/packages/ui/rsa-ticket-pcd-ui/CHANGELOG.md b/packages/ui/rsa-ticket-pcd-ui/CHANGELOG.md index ebff635420..ed1a252402 100644 --- a/packages/ui/rsa-ticket-pcd-ui/CHANGELOG.md +++ b/packages/ui/rsa-ticket-pcd-ui/CHANGELOG.md @@ -1,5 +1,18 @@ # @pcd/rsa-ticket-pcd-ui +## 0.6.0 + +### Minor Changes + +- GPC v4 enhancements, PODValue types, more GPC configurations + +### Patch Changes + +- Updated dependencies + - @pcd/passport-ui@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/rsa-ticket-pcd@0.10.0 + ## 0.5.0 ### Minor Changes diff --git a/packages/ui/rsa-ticket-pcd-ui/package.json b/packages/ui/rsa-ticket-pcd-ui/package.json index 3dcb4de6d9..bc2888b276 100644 --- a/packages/ui/rsa-ticket-pcd-ui/package.json +++ b/packages/ui/rsa-ticket-pcd-ui/package.json @@ -1,6 +1,6 @@ { "name": "@pcd/rsa-ticket-pcd-ui", - "version": "0.5.0", + "version": "0.6.0", "license": "GPL-3.0-or-later", "main": "./dist/cjs/src/index.js", "module": "./dist/esm/src/index.js", @@ -26,13 +26,13 @@ "clean": "rm -rf dist node_modules *.tsbuildinfo" }, "dependencies": { - "@pcd/rsa-ticket-pcd": "0.9.0", - "@pcd/passport-ui": "0.14.0", - "@pcd/pcd-types": "0.14.0" + "@pcd/rsa-ticket-pcd": "0.10.0", + "@pcd/passport-ui": "0.15.0", + "@pcd/pcd-types": "0.15.0" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/react": "^18.0.22", "@types/react-dom": "^18.0.7", "eslint": "^8.57.0", diff --git a/packages/ui/semaphore-group-pcd-ui/CHANGELOG.md b/packages/ui/semaphore-group-pcd-ui/CHANGELOG.md index 9f8ca548ea..0995ef4476 100644 --- a/packages/ui/semaphore-group-pcd-ui/CHANGELOG.md +++ b/packages/ui/semaphore-group-pcd-ui/CHANGELOG.md @@ -1,5 +1,18 @@ # @pcd/semaphore-group-pcd-ui +## 0.6.0 + +### Minor Changes + +- GPC v4 enhancements, PODValue types, more GPC configurations + +### Patch Changes + +- Updated dependencies + - @pcd/passport-ui@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/semaphore-group-pcd@0.15.0 + ## 0.5.0 ### Minor Changes diff --git a/packages/ui/semaphore-group-pcd-ui/package.json b/packages/ui/semaphore-group-pcd-ui/package.json index 2044eae954..82d9e0a98e 100644 --- a/packages/ui/semaphore-group-pcd-ui/package.json +++ b/packages/ui/semaphore-group-pcd-ui/package.json @@ -1,6 +1,6 @@ { "name": "@pcd/semaphore-group-pcd-ui", - "version": "0.5.0", + "version": "0.6.0", "license": "GPL-3.0-or-later", "main": "./dist/cjs/src/index.js", "module": "./dist/esm/src/index.js", @@ -26,13 +26,13 @@ "clean": "rm -rf dist node_modules *.tsbuildinfo" }, "dependencies": { - "@pcd/semaphore-group-pcd": "0.14.0", - "@pcd/passport-ui": "0.14.0", - "@pcd/pcd-types": "0.14.0" + "@pcd/semaphore-group-pcd": "0.15.0", + "@pcd/passport-ui": "0.15.0", + "@pcd/pcd-types": "0.15.0" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/react": "^18.0.22", "@types/react-dom": "^18.0.7", "eslint": "^8.57.0", diff --git a/packages/ui/semaphore-identity-pcd-ui/CHANGELOG.md b/packages/ui/semaphore-identity-pcd-ui/CHANGELOG.md index 86643b1242..ba32d789ea 100644 --- a/packages/ui/semaphore-identity-pcd-ui/CHANGELOG.md +++ b/packages/ui/semaphore-identity-pcd-ui/CHANGELOG.md @@ -1,5 +1,18 @@ # @pcd/semaphore-identity-pcd-ui +## 0.6.0 + +### Minor Changes + +- GPC v4 enhancements, PODValue types, more GPC configurations + +### Patch Changes + +- Updated dependencies + - @pcd/passport-ui@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/semaphore-identity-pcd@0.15.0 + ## 0.5.0 ### Minor Changes diff --git a/packages/ui/semaphore-identity-pcd-ui/package.json b/packages/ui/semaphore-identity-pcd-ui/package.json index a4293f993b..2fe81cb21f 100644 --- a/packages/ui/semaphore-identity-pcd-ui/package.json +++ b/packages/ui/semaphore-identity-pcd-ui/package.json @@ -1,6 +1,6 @@ { "name": "@pcd/semaphore-identity-pcd-ui", - "version": "0.5.0", + "version": "0.6.0", "license": "GPL-3.0-or-later", "main": "./dist/cjs/src/index.js", "module": "./dist/esm/src/index.js", @@ -27,13 +27,13 @@ "clean": "rm -rf dist node_modules *.tsbuildinfo" }, "dependencies": { - "@pcd/semaphore-identity-pcd": "0.14.0", - "@pcd/passport-ui": "0.14.0", - "@pcd/pcd-types": "0.14.0" + "@pcd/semaphore-identity-pcd": "0.15.0", + "@pcd/passport-ui": "0.15.0", + "@pcd/pcd-types": "0.15.0" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/react": "^18.0.22", "@types/react-dom": "^18.0.7", "eslint": "^8.57.0", diff --git a/packages/ui/semaphore-signature-pcd-ui/CHANGELOG.md b/packages/ui/semaphore-signature-pcd-ui/CHANGELOG.md index 773eee8c55..b0db5ee502 100644 --- a/packages/ui/semaphore-signature-pcd-ui/CHANGELOG.md +++ b/packages/ui/semaphore-signature-pcd-ui/CHANGELOG.md @@ -1,5 +1,18 @@ # @pcd/semaphore-signature-pcd-ui +## 0.6.0 + +### Minor Changes + +- GPC v4 enhancements, PODValue types, more GPC configurations + +### Patch Changes + +- Updated dependencies + - @pcd/passport-ui@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/semaphore-signature-pcd@0.15.0 + ## 0.5.0 ### Minor Changes diff --git a/packages/ui/semaphore-signature-pcd-ui/package.json b/packages/ui/semaphore-signature-pcd-ui/package.json index d654778a10..267218bcaf 100644 --- a/packages/ui/semaphore-signature-pcd-ui/package.json +++ b/packages/ui/semaphore-signature-pcd-ui/package.json @@ -1,6 +1,6 @@ { "name": "@pcd/semaphore-signature-pcd-ui", - "version": "0.5.0", + "version": "0.6.0", "license": "GPL-3.0-or-later", "main": "./dist/cjs/src/index.js", "module": "./dist/esm/src/index.js", @@ -26,13 +26,13 @@ "clean": "rm -rf dist node_modules *.tsbuildinfo" }, "dependencies": { - "@pcd/semaphore-signature-pcd": "0.14.0", - "@pcd/passport-ui": "0.14.0", - "@pcd/pcd-types": "0.14.0" + "@pcd/semaphore-signature-pcd": "0.15.0", + "@pcd/passport-ui": "0.15.0", + "@pcd/pcd-types": "0.15.0" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/react": "^18.0.22", "@types/react-dom": "^18.0.7", "eslint": "^8.57.0", diff --git a/packages/ui/unknown-pcd-ui/CHANGELOG.md b/packages/ui/unknown-pcd-ui/CHANGELOG.md index a6bb7ce1d0..b7ab09d9a4 100644 --- a/packages/ui/unknown-pcd-ui/CHANGELOG.md +++ b/packages/ui/unknown-pcd-ui/CHANGELOG.md @@ -1,5 +1,19 @@ # @pcd/unknown-pcd-ui +## 0.4.0 + +### Minor Changes + +- GPC v4 enhancements, PODValue types, more GPC configurations + +### Patch Changes + +- Updated dependencies + - @pcd/passport-ui@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/util@0.9.0 + - @pcd/unknown-pcd@0.4.0 + ## 0.3.0 ### Minor Changes diff --git a/packages/ui/unknown-pcd-ui/package.json b/packages/ui/unknown-pcd-ui/package.json index 81bacf0766..f401a139e3 100644 --- a/packages/ui/unknown-pcd-ui/package.json +++ b/packages/ui/unknown-pcd-ui/package.json @@ -1,7 +1,7 @@ { "name": "@pcd/unknown-pcd-ui", "private": true, - "version": "0.3.0", + "version": "0.4.0", "license": "MIT", "main": "./dist/cjs/src/index.js", "module": "./dist/esm/src/index.js", @@ -26,15 +26,15 @@ "clean": "rm -rf dist node_modules *.tsbuildinfo" }, "dependencies": { - "@pcd/passport-ui": "0.14.0", - "@pcd/pcd-types": "0.14.0", - "@pcd/unknown-pcd": "0.3.0", - "@pcd/util": "0.8.0", + "@pcd/passport-ui": "0.15.0", + "@pcd/pcd-types": "0.15.0", + "@pcd/unknown-pcd": "0.4.0", + "@pcd/util": "0.9.0", "react": "^18.2.0" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/chai": "^4.3.5", "@types/mocha": "^10.0.1", "eslint": "^8.57.0", diff --git a/packages/ui/webauthn-pcd-ui/CHANGELOG.md b/packages/ui/webauthn-pcd-ui/CHANGELOG.md index c7ee21cef9..5a20de4fac 100644 --- a/packages/ui/webauthn-pcd-ui/CHANGELOG.md +++ b/packages/ui/webauthn-pcd-ui/CHANGELOG.md @@ -1,5 +1,18 @@ # @pcd/webauthn-pcd-ui +## 0.6.0 + +### Minor Changes + +- GPC v4 enhancements, PODValue types, more GPC configurations + +### Patch Changes + +- Updated dependencies + - @pcd/passport-ui@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/webauthn-pcd@0.15.0 + ## 0.5.0 ### Minor Changes diff --git a/packages/ui/webauthn-pcd-ui/package.json b/packages/ui/webauthn-pcd-ui/package.json index 510f92e81d..74e667dc43 100644 --- a/packages/ui/webauthn-pcd-ui/package.json +++ b/packages/ui/webauthn-pcd-ui/package.json @@ -1,6 +1,6 @@ { "name": "@pcd/webauthn-pcd-ui", - "version": "0.5.0", + "version": "0.6.0", "license": "GPL-3.0-or-later", "main": "./dist/cjs/src/index.js", "module": "./dist/esm/src/index.js", @@ -26,13 +26,13 @@ "clean": "rm -rf dist node_modules *.tsbuildinfo" }, "dependencies": { - "@pcd/webauthn-pcd": "0.14.0", - "@pcd/passport-ui": "0.14.0", - "@pcd/pcd-types": "0.14.0" + "@pcd/webauthn-pcd": "0.15.0", + "@pcd/passport-ui": "0.15.0", + "@pcd/pcd-types": "0.15.0" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/react": "^18.0.22", "@types/react-dom": "^18.0.7", "eslint": "^8.57.0", diff --git a/packages/ui/zk-eddsa-event-ticket-pcd-ui/CHANGELOG.md b/packages/ui/zk-eddsa-event-ticket-pcd-ui/CHANGELOG.md index 21559870ce..1240a3b2f8 100644 --- a/packages/ui/zk-eddsa-event-ticket-pcd-ui/CHANGELOG.md +++ b/packages/ui/zk-eddsa-event-ticket-pcd-ui/CHANGELOG.md @@ -1,5 +1,18 @@ # @pcd/zk-eddsa-event-ticket-pcd-ui +## 0.6.0 + +### Minor Changes + +- GPC v4 enhancements, PODValue types, more GPC configurations + +### Patch Changes + +- Updated dependencies + - @pcd/passport-ui@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/zk-eddsa-event-ticket-pcd@0.10.0 + ## 0.5.0 ### Minor Changes diff --git a/packages/ui/zk-eddsa-event-ticket-pcd-ui/package.json b/packages/ui/zk-eddsa-event-ticket-pcd-ui/package.json index f3ee9d1481..2fa81ca644 100644 --- a/packages/ui/zk-eddsa-event-ticket-pcd-ui/package.json +++ b/packages/ui/zk-eddsa-event-ticket-pcd-ui/package.json @@ -1,6 +1,6 @@ { "name": "@pcd/zk-eddsa-event-ticket-pcd-ui", - "version": "0.5.0", + "version": "0.6.0", "license": "GPL-3.0-or-later", "main": "./dist/cjs/src/index.js", "module": "./dist/esm/src/index.js", @@ -26,13 +26,13 @@ "clean": "rm -rf dist node_modules *.tsbuildinfo" }, "dependencies": { - "@pcd/zk-eddsa-event-ticket-pcd": "0.9.0", - "@pcd/passport-ui": "0.14.0", - "@pcd/pcd-types": "0.14.0" + "@pcd/zk-eddsa-event-ticket-pcd": "0.10.0", + "@pcd/passport-ui": "0.15.0", + "@pcd/pcd-types": "0.15.0" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/react": "^18.0.22", "@types/react-dom": "^18.0.7", "eslint": "^8.57.0", diff --git a/packages/ui/zk-eddsa-frog-pcd-ui/CHANGELOG.md b/packages/ui/zk-eddsa-frog-pcd-ui/CHANGELOG.md index 8ae6068ae5..e41a46e601 100644 --- a/packages/ui/zk-eddsa-frog-pcd-ui/CHANGELOG.md +++ b/packages/ui/zk-eddsa-frog-pcd-ui/CHANGELOG.md @@ -1,5 +1,18 @@ # @pcd/zk-eddsa-frog-pcd-ui +## 0.6.0 + +### Minor Changes + +- GPC v4 enhancements, PODValue types, more GPC configurations + +### Patch Changes + +- Updated dependencies + - @pcd/passport-ui@0.15.0 + - @pcd/pcd-types@0.15.0 + - @pcd/zk-eddsa-frog-pcd@0.7.0 + ## 0.5.0 ### Minor Changes diff --git a/packages/ui/zk-eddsa-frog-pcd-ui/package.json b/packages/ui/zk-eddsa-frog-pcd-ui/package.json index 3ca2d5d7ba..c9e5338416 100644 --- a/packages/ui/zk-eddsa-frog-pcd-ui/package.json +++ b/packages/ui/zk-eddsa-frog-pcd-ui/package.json @@ -1,6 +1,6 @@ { "name": "@pcd/zk-eddsa-frog-pcd-ui", - "version": "0.5.0", + "version": "0.6.0", "license": "GPL-3.0-or-later", "main": "./dist/cjs/src/index.js", "module": "./dist/esm/src/index.js", @@ -26,13 +26,13 @@ "clean": "rm -rf dist node_modules *.tsbuildinfo" }, "dependencies": { - "@pcd/zk-eddsa-frog-pcd": "0.6.0", - "@pcd/passport-ui": "0.14.0", - "@pcd/pcd-types": "0.14.0" + "@pcd/zk-eddsa-frog-pcd": "0.7.0", + "@pcd/passport-ui": "0.15.0", + "@pcd/pcd-types": "0.15.0" }, "devDependencies": { - "@pcd/eslint-config-custom": "0.14.0", - "@pcd/tsconfig": "0.14.0", + "@pcd/eslint-config-custom": "0.15.0", + "@pcd/tsconfig": "0.15.0", "@types/react": "^18.0.22", "@types/react-dom": "^18.0.7", "eslint": "^8.57.0", diff --git a/scripts/new-version-release.sh b/scripts/new-version-release.sh old mode 100644 new mode 100755 diff --git a/turbo.json b/turbo.json index 8ebe174b2e..5fafbc8b38 100644 --- a/turbo.json +++ b/turbo.json @@ -119,6 +119,9 @@ "EMBEDDED_ZAPPS", "DEVCON_TICKET_QUERY_ORIGINS", "GENERATED_CHUNKS", + "TELEGRAM_CHAT_TO_PRODUCT_IDS", + "IGNORE_NON_PRIORITY_FEEDS", + "PRIORITY_FEED_PROVIDER_URLS", "//// add env vars above this line ////" ], "globalEnv": [ @@ -241,6 +244,8 @@ "LOCAL_FILE_SERVICE_ENABLED", "SELF_HOSTED_PODBOX_MODE", "GENERIC_ISSUANCE_TEST_MODE", + "PRETIX_BATCH_ENABLED_FOR", + "DB_POOL_SIZE", "//// add env vars above this line ////" ] } diff --git a/yarn.lock b/yarn.lock index b00f0349e0..c3c98d8fbd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,16 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@adraffy/ens-normalize@1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" + integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== + +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + "@alloc/quick-lru@^5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" @@ -4332,12 +4342,19 @@ dependencies: "@noble/hashes" "1.3.1" +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + "@noble/hashes@1.3.1": version "1.3.1" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== -"@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": +"@noble/hashes@1.3.2", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": version "1.3.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== @@ -5196,12 +5213,12 @@ nanoevents "^9.0.0" valibot "^0.42.0" -"@parcnet-js/client-helpers@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@parcnet-js/client-helpers/-/client-helpers-1.0.7.tgz#64f83b3f6a164a2fc903033fefcea30d5ddf4971" - integrity sha512-lzXJs+aQNiMecrOfFS/4MblmPuNvwN5K2navXyGeZ9yrgZRAupz/W+SLjcDA9Swa0vHAms22KFLy3o616Zhwxw== +"@parcnet-js/client-helpers@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@parcnet-js/client-helpers/-/client-helpers-1.0.8.tgz#b0a865630e92b4b2574c15fdbea3947616c87b2e" + integrity sha512-xD/jrmDjwZtbSOE2oHdV1ejYiiDrhoTh0Ysyg97RYl+mYhgy4/24jw3Ueq2iuu2XGwjZiISOcPnjO1mESNWjgQ== dependencies: - "@parcnet-js/client-rpc" "1.1.6" + "@parcnet-js/client-rpc" "1.2.0" valibot "^0.42.0" "@parcnet-js/client-rpc@1.1.6", "@parcnet-js/client-rpc@^1.1.6": @@ -5214,6 +5231,16 @@ "@pcd/pod" "^0.4.0" valibot "^0.42.0" +"@parcnet-js/client-rpc@1.2.0", "@parcnet-js/client-rpc@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@parcnet-js/client-rpc/-/client-rpc-1.2.0.tgz#b6b12442456296ee4897c32606183a5309b0f618" + integrity sha512-Mmv+inaoWu13buhCQJHKUrSqIJbBWFDcHFDQh7R+qTWjgPX3iB8nF8tSvujv6OsKNLj0mj8k0sTj+bKZG4Lfag== + dependencies: + "@parcnet-js/podspec" "1.2.0" + "@pcd/gpc" "^0.4.0" + "@pcd/pod" "^0.5.0" + valibot "^0.42.0" + "@parcnet-js/podspec@1.1.3", "@parcnet-js/podspec@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@parcnet-js/podspec/-/podspec-1.1.3.tgz#ab3ff3e1ad62d1ad488b6fb72d12ce32c31b8b30" @@ -5222,6 +5249,14 @@ "@pcd/gpc" "^0.3.0" "@pcd/pod" "^0.4.0" +"@parcnet-js/podspec@1.2.0", "@parcnet-js/podspec@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@parcnet-js/podspec/-/podspec-1.2.0.tgz#b584ccb48c41de43f245ce2848f1132ab34d0189" + integrity sha512-VOksMRk9POo+mECc3VS7+YGDIv+yQ9Tu+bf8C9jZRnn9sKL8p8FE4fKdINZFimEeTe7xdR3dm47LwRcghFcWLQ== + dependencies: + "@pcd/gpc" "^0.4.0" + "@pcd/pod" "^0.5.0" + "@parcnet-js/ticket-spec@^1.1.8": version "1.1.8" resolved "https://registry.yarnpkg.com/@parcnet-js/ticket-spec/-/ticket-spec-1.1.8.tgz#4c26a17401af0fd37d5e46576b654ba4ce16e5df" @@ -5230,10 +5265,31 @@ "@parcnet-js/client-rpc" "1.1.6" "@parcnet-js/podspec" "1.1.3" -"@pcd/eslint-config-custom@0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@pcd/eslint-config-custom/-/eslint-config-custom-0.13.0.tgz#cb62252d7073406c43e93b56522637b786fe3826" - integrity sha512-+JbOjiPObh+cwGVyY6++RVuMZR+S98p3xK0Xc9tIfZqvg2AuhmbX4rvuxiZ3NA4ZREYGj//7kH4InzbFr2mQpA== +"@pcd/gpc@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@pcd/gpc/-/gpc-0.3.0.tgz#d046b7aa472b02a808c343b2a16825d14618fb68" + integrity sha512-gaDwb76PYYm+qJUZu+gYWbpJKjbEAI+UPO+yaPYCURLPK+8iUMB3xIv6F3CCJNICQdpcwOVMpnWOu+5wzzwqhA== + dependencies: + "@pcd/gpcircuits" "0.4.0" + "@pcd/pod" "0.4.0" + "@pcd/util" "0.8.0" + "@semaphore-protocol/identity" "^3.15.2" + json-bigint "^1.0.0" + lodash "^4.17.21" + semaphore-identity-v4 "npm:@semaphore-protocol/identity@^4.0.3" + snarkjs "^0.7.4" + url-join "^4.0.1" + valibot "^0.42.1" + +"@pcd/gpcircuits@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@pcd/gpcircuits/-/gpcircuits-0.4.0.tgz#189bf3806c214034e94b0cac0c0b2784f6f90915" + integrity sha512-rn1pkRTQit/maD80bqB2fb84yN22iTWvZWIjgOV6Y84jAZ1uyU4hfbEUJ4q6pdgb4vENiFu9g3pHGge7My9ZTQ== + dependencies: + "@pcd/pod" "0.4.0" + fastfile "0.0.20" + snarkjs "^0.7.4" + url-join "4.0.1" "@pcd/libsodium-sumo@^0.7.15": version "0.7.15" @@ -5247,15 +5303,33 @@ dependencies: "@pcd/libsodium-sumo" "^0.7.15" +"@pcd/pod@0.4.0", "@pcd/pod@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@pcd/pod/-/pod-0.4.0.tgz#4a7ea942fbcdb63ad9d0ea5198670781d4e669a2" + integrity sha512-A90GK1cv/t3pxB9YiiLIXDsJldp3YcmCJchRSbVvFfA9Q2pleumNRpFadwmweLqGf5Er9n1C7AWtiEt07K3rIw== + dependencies: + "@pcd/util" "0.8.0" + "@zk-kit/eddsa-poseidon" "1.0.3" + "@zk-kit/lean-imt" "2.2.1" + "@zk-kit/utils" "1.2.1" + js-sha256 "^0.10.1" + poseidon-lite "^0.3.0" + "@pcd/proto-pod-gpc-artifacts@0.13.0": version "0.13.0" resolved "https://registry.yarnpkg.com/@pcd/proto-pod-gpc-artifacts/-/proto-pod-gpc-artifacts-0.13.0.tgz#ce15130bd275dc38ad83df6fccd7ef0131a5bffd" integrity sha512-SFKV8gmFCyZ6WIOcJPXCdx4I1gNavIw+5u7TFU8L6/DqtUPWZ1/SubyAChb7aTetfwNgJTyid/VL9fEkJYSThA== -"@pcd/tsconfig@0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@pcd/tsconfig/-/tsconfig-0.13.0.tgz#4c726a9c474ee50f083bef6b3b81b922256416c0" - integrity sha512-OSK7SgGnJOClpGXJJlGoua+2ScBySHOSGxASq/ulC6p3ijERnJCLMzxPLUnxVRNpSGaHcqXBZgAp5XKbVZZm1A== +"@pcd/util@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@pcd/util/-/util-0.8.0.tgz#acae365322ee23952ee69bf888ccca93228cd0b8" + integrity sha512-KG1V8O+o8Awr9iHH9I1eVeqHGlm3F6zqzvOJzXKe/bViE8A31DuiZoeHCVPFRA5+03d+qY4tWQJKOxYGQL6Kww== + dependencies: + buffer "^6.0.3" + email-validator "^2.0.4" + js-sha256 "^0.10.1" + secure-random "^1.1.2" + uuid "^9.0.0" "@peculiar/asn1-android@^2.3.3": version "2.3.6" @@ -5909,6 +5983,24 @@ "@noble/hashes" "~1.3.0" "@scure/base" "~1.1.0" +"@semaphore-protocol/core@^4.0.3", "@semaphore-protocol/core@^4.5.0": + version "4.7.2" + resolved "https://registry.yarnpkg.com/@semaphore-protocol/core/-/core-4.7.2.tgz#93fe7f8fc4ed60a2e01a5576c13527d7db45b93b" + integrity sha512-bWec8FK/Z94gYqIj0Elmcizbz9VTfKGG7EHkloi3dXPcAsdcjXO0eRPWru2lpC7XhebpUb6k4Kcq+eWYbJvpLQ== + dependencies: + "@semaphore-protocol/group" "4.7.2" + "@semaphore-protocol/identity" "4.7.2" + "@semaphore-protocol/proof" "4.7.2" + +"@semaphore-protocol/group@4.7.2": + version "4.7.2" + resolved "https://registry.yarnpkg.com/@semaphore-protocol/group/-/group-4.7.2.tgz#c04aecf0e8d132707941e6d4593c94828c163d1f" + integrity sha512-J5dRhAabh1PlsI2w7HyKGOqpwCyXCAYS0jVAvkP6EGbbTsIaTXny9swQU2SmVtowlI71nzBCcH9IPAgt7huoGQ== + dependencies: + "@zk-kit/lean-imt" "2.2.2" + "@zk-kit/utils" "1.2.1" + poseidon-lite "0.3.0" + "@semaphore-protocol/group@^3.15.2": version "3.15.2" resolved "https://registry.yarnpkg.com/@semaphore-protocol/group/-/group-3.15.2.tgz#31d24b302982fd51760548cdfc0a7df6e3523a75" @@ -5919,6 +6011,16 @@ "@ethersproject/keccak256" "^5.7.0" "@zk-kit/incremental-merkle-tree" "1.1.0" +"@semaphore-protocol/identity@4.7.2": + version "4.7.2" + resolved "https://registry.yarnpkg.com/@semaphore-protocol/identity/-/identity-4.7.2.tgz#9935a743eb0c2c913514d829e22a2aebea74de75" + integrity sha512-chNxrmlhTQ2peJTYnN4UaFFBYefmo0PUSeo0Wa8GcKC+CfG+uAlPlgZyOU/Pz4sV35UnfRfgqEvcq6tnaN5uFw== + dependencies: + "@zk-kit/baby-jubjub" "1.0.3" + "@zk-kit/eddsa-poseidon" "1.0.4" + "@zk-kit/utils" "1.2.1" + poseidon-lite "0.3.0" + "@semaphore-protocol/identity@^2.6.1": version "2.6.1" resolved "https://registry.yarnpkg.com/@semaphore-protocol/identity/-/identity-2.6.1.tgz#49385c1004261ca2e192c43aa04005ce6ef82d83" @@ -5941,15 +6043,16 @@ "@ethersproject/strings" "^5.6.1" js-sha512 "^0.8.0" -"@semaphore-protocol/identity@^4.0.3", "@semaphore-protocol/identity@^4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@semaphore-protocol/identity/-/identity-4.5.0.tgz#d5c412eb609df2686b7216825ec88670ef73461b" - integrity sha512-TIKxF2Lir1LppDQDJU6Z/aJUkocHT03BLpzv5vFEdCo/IT4g/4BhbFp2UQui7HyDE+JgMfUASXfScbFfo/5ULA== +"@semaphore-protocol/proof@4.7.2": + version "4.7.2" + resolved "https://registry.yarnpkg.com/@semaphore-protocol/proof/-/proof-4.7.2.tgz#89e371eeaf17e1a5a90de5c32645c8f75e519d6b" + integrity sha512-a/7Ad53QS9Z9lHkGrVtK7EHrqglzGXi1kaBn8XE4qCxiYR2CsoLr1tZW2s1UwYCobHFZn5HnNMKTEhR0fTHIew== dependencies: - "@zk-kit/baby-jubjub" "1.0.3" - "@zk-kit/eddsa-poseidon" "1.0.4" + "@semaphore-protocol/utils" "4.7.2" + "@zk-kit/artifacts" "1.8.0" "@zk-kit/utils" "1.2.1" - poseidon-lite "0.3.0" + ethers "6.10.0" + snarkjs "0.7.4" "@semaphore-protocol/proof@npm:@pcd/semaphore-proof-v3@^3.15.2": version "3.15.2" @@ -5964,6 +6067,13 @@ "@zk-kit/incremental-merkle-tree" "0.4.3" poseidon-lite "^0.2.0" +"@semaphore-protocol/utils@4.7.2": + version "4.7.2" + resolved "https://registry.yarnpkg.com/@semaphore-protocol/utils/-/utils-4.7.2.tgz#89f0201423544c94428d8bfcb225593297842635" + integrity sha512-S7t5aU2qCsyXC3vlDdDEC71RO/udEeTOrD0Sp5FqISvccA89LFkVNZuttVZar8uyKEs+E3FyAhcQs9YlzNoPhQ== + dependencies: + ethers "^6.11.1" + "@sendgrid/client@^7.7.0": version "7.7.0" resolved "https://registry.yarnpkg.com/@sendgrid/client/-/client-7.7.0.tgz#f8f67abd604205a0d0b1af091b61517ef465fdbf" @@ -7345,11 +7455,23 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.0.tgz#9d7daa855d33d4efec8aea88cd66db1c2f0ebe16" integrity sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg== +"@types/node@18.15.13": + version "18.15.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" + integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== + "@types/node@20.4.10": version "20.4.10" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.10.tgz#73c9480791e3ddeb4887a660fc93a7f59353ad45" integrity sha512-vwzFiiy8Rn6E0MtA13/Cxxgpan/N6UeNYR9oUu6kuJWxu6zCk98trcDp8CBhbtaeuq9SykCmXkFr2lWLoPcvLg== +"@types/node@22.7.5": + version "22.7.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== + dependencies: + undici-types "~6.19.2" + "@types/node@>=8.0.0 <15": version "14.18.59" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.59.tgz#2b61a51d875e2a4deb0c6b498ff21a78e691edc6" @@ -8270,6 +8392,11 @@ dependencies: "@zag-js/dom-query" "0.16.0" +"@zk-kit/artifacts@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@zk-kit/artifacts/-/artifacts-1.8.0.tgz#afeab93754da7429d67f0c13d6935749d454bc56" + integrity sha512-G2rQ1BxYt9CuVyU4Egc4ceSLLWx9BRrtFGZWS0RWwHhAMfSV/Fq9Qz6OX02leFzTbi7Tr3bTP6DgDSqr28OQnw== + "@zk-kit/baby-jubjub@1.0.3", "@zk-kit/baby-jubjub@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@zk-kit/baby-jubjub/-/baby-jubjub-1.0.3.tgz#8d2eccd20d729f1dbd39203dbff9a245a61dea76" @@ -8284,6 +8411,15 @@ dependencies: circomlib "^2.0.5" +"@zk-kit/eddsa-poseidon@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@zk-kit/eddsa-poseidon/-/eddsa-poseidon-1.0.3.tgz#0da41ca6a6888072db7639d8499edf2eb0650d79" + integrity sha512-VyTu5jXHDqno3MBDWhoIwGz0vO/HB1X/2wqwope4JRvS4V8S9sYTwH3paf7ynImrJV7L/zK61RHxpGKbNemYRQ== + dependencies: + "@zk-kit/baby-jubjub" "1.0.3" + "@zk-kit/utils" "1.2.1" + buffer "6.0.3" + "@zk-kit/eddsa-poseidon@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@zk-kit/eddsa-poseidon/-/eddsa-poseidon-1.0.4.tgz#80e20fd94eca610002e58a5dc8c1716458f0cb60" @@ -8323,13 +8459,20 @@ resolved "https://registry.yarnpkg.com/@zk-kit/incremental-merkle-tree/-/incremental-merkle-tree-1.1.0.tgz#6b0ccce56f9e05ccf73f7ea4fa746d5ef7d24b1d" integrity sha512-WnNR/GQse3lX8zOHMU8zwhgX8u3qPoul8w4GjJ0WDHq+VGJimo7EGheRZ/ILeBQabnlzAerdv3vBqYBehBeoKA== -"@zk-kit/lean-imt@^2.2.1": +"@zk-kit/lean-imt@2.2.1", "@zk-kit/lean-imt@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@zk-kit/lean-imt/-/lean-imt-2.2.1.tgz#aa24ed3d281cff270013c3654fa1eec6f785ccef" integrity sha512-Zq5yunUYu+ztp9RR5nuqiG1GpK1wjUoAjC0+x/MB95sI/Ns7zCxpzxo/Om9E0gme74Y3jO9KM5UUh3f9tqU++w== dependencies: "@zk-kit/utils" "1.2.1" +"@zk-kit/lean-imt@2.2.2": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@zk-kit/lean-imt/-/lean-imt-2.2.2.tgz#79c8bd70fc0d444638328cb4781479b14c69a9dd" + integrity sha512-rscIPEgBBcu9vP/DJ3J+3187G/ObKETl343G5enPawNT81oeQSdHx3e2ZapTC+GfrZ/AS2AHHUOpRS1FfdSwjg== + dependencies: + "@zk-kit/utils" "1.2.1" + "@zk-kit/utils@1.2.1", "@zk-kit/utils@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@zk-kit/utils/-/utils-1.2.1.tgz#6cb38120535c73ab68cd0f09684882af148f256d" @@ -8410,6 +8553,11 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -12397,6 +12545,19 @@ ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.5: ethereum-cryptography "^0.1.3" rlp "^2.2.4" +ethers@6.10.0: + version "6.10.0" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.10.0.tgz#20f3c63c60d59a993f8090ad423d8a3854b3b1cd" + integrity sha512-nMNwYHzs6V1FR3Y4cdfxSQmNgZsRj1RiTU25JwvnJLmyzw9z3SKxNc2XKDuiXXo/v9ds5Mp9m6HBabgYQQ26tA== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "18.15.13" + aes-js "4.0.0-beta.5" + tslib "2.4.0" + ws "8.5.0" + ethers@^5.5.1, ethers@^5.7.2: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" @@ -12433,6 +12594,19 @@ ethers@^5.5.1, ethers@^5.7.2: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" +ethers@^6.11.1: + version "6.13.4" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.4.tgz#bd3e1c3dc1e7dc8ce10f9ffb4ee40967a651b53c" + integrity sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "22.7.5" + aes-js "4.0.0-beta.5" + tslib "2.7.0" + ws "8.17.1" + ethjs-unit@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" @@ -13996,11 +14170,6 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-to-image@^1.11.11: - version "1.11.11" - resolved "https://registry.yarnpkg.com/html-to-image/-/html-to-image-1.11.11.tgz#c0f8a34dc9e4b97b93ff7ea286eb8562642ebbea" - integrity sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA== - html-url-attributes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/html-url-attributes/-/html-url-attributes-3.0.0.tgz#fc4abf0c3fb437e2329c678b80abb3c62cff6f08" @@ -14177,19 +14346,6 @@ ieee754@^1.1.13, ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -iframe-resizer-react@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/iframe-resizer-react/-/iframe-resizer-react-1.1.0.tgz#5009e019b7a5c7f1c009bff5bcdf0dbf33557465" - integrity sha512-FrytSq91AIJaDgE+6uK/Vdd6IR8CrwLoZ6eGmL2qQMPTzF0xlSV2jaSzRRUh5V2fttD7vzl21jvBl97bV40eBw== - dependencies: - iframe-resizer "^4.3.0" - warning "^4.0.3" - -iframe-resizer@^4.3.0: - version "4.4.5" - resolved "https://registry.yarnpkg.com/iframe-resizer/-/iframe-resizer-4.4.5.tgz#f5048636e7f2fb5d9a09cc2ae78eb2da55ad555c" - integrity sha512-U8bCywf/Gh07O69RXo6dXAzTtODQrxaHGHRI7Nt4ipXsuq6EMxVsOP/jjaP43YtXz/ibESS0uSVDN3sOGCzSmw== - ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" @@ -17915,6 +18071,11 @@ parse-ms@^3.0.0: resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-3.0.0.tgz#3ea24a934913345fcc3656deda72df921da3a70e" integrity sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw== +parse-ms@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-4.0.0.tgz#c0c058edd47c2a590151a718990533fd62803df4" + integrity sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw== + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -18569,6 +18730,13 @@ pretty-ms@^8.0.0: dependencies: parse-ms "^3.0.0" +pretty-ms@^9.1.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-9.2.0.tgz#e14c0aad6493b69ed63114442a84133d7e560ef0" + integrity sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg== + dependencies: + parse-ms "^4.0.0" + prisma@^4.12.0: version "4.16.2" resolved "https://registry.yarnpkg.com/prisma/-/prisma-4.16.2.tgz#469e0a0991c6ae5bcde289401726bb012253339e" @@ -18770,11 +18938,6 @@ pvutils@^1.1.3: resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== -qr-image@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/qr-image/-/qr-image-3.2.0.tgz#9fa8295beae50c4a149cf9f909a1db464a8672e8" - integrity sha512-rXKDS5Sx3YipVsqmlMJsJsk6jXylEpiHRC2+nJy66fxA5ExYyGa4PqwteW69SaVmAb2OQ18HbYriT7cGQMbduw== - qrcode@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.4.tgz#5cb81d86eb57c675febb08cf007fff963405da88" @@ -19919,6 +20082,16 @@ seek-bzip@^1.0.5: dependencies: commander "^2.8.1" +"semaphore-identity-v4@npm:@semaphore-protocol/identity@^4.0.3": + version "4.7.2" + resolved "https://registry.yarnpkg.com/@semaphore-protocol/identity/-/identity-4.7.2.tgz#9935a743eb0c2c913514d829e22a2aebea74de75" + integrity sha512-chNxrmlhTQ2peJTYnN4UaFFBYefmo0PUSeo0Wa8GcKC+CfG+uAlPlgZyOU/Pz4sV35UnfRfgqEvcq6tnaN5uFw== + dependencies: + "@zk-kit/baby-jubjub" "1.0.3" + "@zk-kit/eddsa-poseidon" "1.0.4" + "@zk-kit/utils" "1.2.1" + poseidon-lite "0.3.0" + semver-match@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/semver-match/-/semver-match-0.1.1.tgz#e7ccb31f83fd4a0e377d66387afd8ca3a329b5fc" @@ -20271,6 +20444,22 @@ snarkjs@0.5.0, snarkjs@^0.5.0: logplease "^1.2.15" r1csfile "0.0.41" +snarkjs@0.7.4, snarkjs@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/snarkjs/-/snarkjs-0.7.4.tgz#b9ad5813f055ab84d33f1831a6f1f34a71b6cd46" + integrity sha512-x4cOCR4YXSyBlLtfnUUwfbZrw8wFd/Y0lk83eexJzKwZB8ELdpH+10ts8YtDsm2/a3WK7c7p514bbE8NpqxW8w== + dependencies: + "@iden3/binfileutils" "0.0.12" + bfj "^7.0.2" + blake2b-wasm "^2.4.0" + circom_runtime "0.1.25" + ejs "^3.1.6" + fastfile "0.0.20" + ffjavascript "0.3.0" + js-sha3 "^0.8.0" + logplease "^1.2.15" + r1csfile "0.0.48" + snarkjs@^0.4.22: version "0.4.27" resolved "https://registry.yarnpkg.com/snarkjs/-/snarkjs-0.4.27.tgz#6f00e17e2b0b197dd69029a65ee570085b49a5f0" @@ -20303,22 +20492,6 @@ snarkjs@^0.7.0: logplease "^1.2.15" r1csfile "0.0.47" -snarkjs@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/snarkjs/-/snarkjs-0.7.4.tgz#b9ad5813f055ab84d33f1831a6f1f34a71b6cd46" - integrity sha512-x4cOCR4YXSyBlLtfnUUwfbZrw8wFd/Y0lk83eexJzKwZB8ELdpH+10ts8YtDsm2/a3WK7c7p514bbE8NpqxW8w== - dependencies: - "@iden3/binfileutils" "0.0.12" - bfj "^7.0.2" - blake2b-wasm "^2.4.0" - circom_runtime "0.1.25" - ejs "^3.1.6" - fastfile "0.0.20" - ffjavascript "0.3.0" - js-sha3 "^0.8.0" - logplease "^1.2.15" - r1csfile "0.0.48" - socks-proxy-agent@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz#5acbd7be7baf18c46a3f293a840109a430a640ad" @@ -21566,6 +21739,11 @@ tslib@2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + tslib@^1.11.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -22262,6 +22440,11 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + undici@^5.22.0: version "5.24.0" resolved "https://registry.yarnpkg.com/undici/-/undici-5.24.0.tgz#6133630372894cfeb3c3dab13b4c23866bd344b5" @@ -22797,7 +22980,7 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" -warning@^4.0.1, warning@^4.0.3: +warning@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== @@ -23381,6 +23564,16 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +ws@8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + ws@^3.0.0: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"