on master help sign in
476 files changed+73639−29577
since splitsnapshots
unifiedsplit
.env+2−2 .env.development+5−5 .eslintrc+1−1 .github/ISSUE_TEMPLATE/bridge-bug-report → .github/ISSUE_TEMPLATE/bridge-bug-report.md+2−1 .github/ISSUE_TEMPLATE/l2-bug-report.md+41 .gitignore+2 .nvmrc+1 .vscode/settings.json+3 DEVELOPMENT.md+127−12 README.md+17−1 bridge-npm-audit.txt+697 config-overrides.js−13 config/env.js−93 config/jest/cssTransform.js−14 config/jest/fileTransform.js−40 config/modules.js−84 config/paths.js−90 config/pnpTs.js−35 config/webpack.config.js−628 config/webpackDevServer.config.js−104 contracts/Naive.sol+15 globals.d.ts+13 index.html+107 jsconfig.json−5 legal/privacy policy.md+11−11 migrations/1_migration.js+52−16 notes.md+1 package-lock.json+49785−16311 package.json+101−45 public/index.html−26 scripts/build.js−191 scripts/start.js−145 scripts/test.js−52 src/Bridge.js−87 src/Bridge.tsx+128 src/assets/blank-planet-sigil.svg+39 src/assets/history.svg+6 src/assets/invite.svg+3 src/assets/keyfile.svg+5 src/assets/metamask.png src/assets/metamask.svg+9 src/assets/star.svg+3 src/assets/wallet-connect.png src/assets/wallet-connect.svg+3 src/assets/wallet.svg+3 src/azimuth-js.d.ts+2 src/components/Accordion.js → src/components/Accordion.jsx src/components/AddressButton.tsx+36 src/components/AlertBox.tsx+25 src/components/AspectRatio.js → src/components/AspectRatio.jsx src/components/BarGraph.js → src/components/BarGraph.jsx src/components/Blinky.js → src/components/Blinky.jsx src/components/BrowserWarning.tsx+27 src/components/Buttons.js → src/components/Buttons.jsx+8 src/components/Chip.js → src/components/Chip.jsx src/components/CopiableAddress.js−8 src/components/Crumbs.js → src/components/Crumbs.jsx src/components/DownloadKeyfileButton.js → src/components/DownloadKeyfileButton.jsx+2−2 src/components/DownloadSigilButton.js → src/components/DownloadSigilButton.jsx src/components/Footer.js → src/components/Footer.jsx+4−1 src/components/FooterButton.js → src/components/FooterButton.jsx src/components/GlobalErrorBoundary.js → src/components/GlobalErrorBoundary.tsx+14−7 src/components/Greeting.js−60 src/components/Greeting.jsx+109 src/components/Header.js → src/components/Header.jsx src/components/Highlighted.js → src/components/Highlighted.jsx+1−1 src/components/InlineEthereumTransaction.js → src/components/InlineEthereumTransaction.jsx+111−106 src/components/InlineEthereumTransaction.scss+27 src/components/InputSigil.js → src/components/InputSigil.jsx−1 src/components/InviteSigilList.js → src/components/InviteSigilList.jsx src/components/L2/Card.scss+46 src/components/L2/Card.tsx+43 src/components/L2/CreatingInvitesModal.tsx+85 src/components/L2/Dropdowns/AccountsDropdown.scss+137 src/components/L2/Dropdowns/AccountsDropdown.tsx+145 src/components/L2/Dropdowns/Dropdown.scss+65 src/components/L2/Dropdowns/Dropdown.tsx+37 src/components/L2/Dropdowns/FeeDropdown.scss+71 src/components/L2/Dropdowns/FeeDropdown.tsx+136 src/components/L2/Headers/AdvancedOptions.scss+54 src/components/L2/Headers/AdvancedOptions.tsx+71 src/components/L2/Headers/HeaderButton.scss+10 src/components/L2/Headers/HeaderButton.tsx+23 src/components/L2/Headers/L2BackHeader.scss+40 src/components/L2/Headers/L2BackHeader.tsx+77 src/components/L2/Headers/L2PointHeader.scss+90 src/components/L2/Headers/L2PointHeader.tsx+102 src/components/L2/InviteConverter.tsx+292 src/components/L2/LayerIndicator.scss+59 src/components/L2/LayerIndicator.tsx+26 src/components/L2/LoadingOverlay.scss+40 src/components/L2/LoadingOverlay.tsx+26 src/components/L2/Modal.scss+53 src/components/L2/Modal.tsx+41 src/components/L2/Paginator.scss+30 src/components/L2/Paginator.tsx+41 src/components/L2/PendingTransaction.scss+64 src/components/L2/PendingTransaction.tsx+46 src/components/L2/PermissionIndicator.scss+15 src/components/L2/PermissionIndicator.tsx+35 src/components/L2/PointList.tsx+65 src/components/L2/Points/IncomingPoint.scss+47 src/components/L2/Points/IncomingPoint.tsx+46 src/components/L2/Window/BodyPane.scss+89 src/components/L2/Window/BodyPane.tsx+28 src/components/L2/Window/HeaderPane.scss+54 src/components/L2/Window/HeaderPane.tsx+14 src/components/L2/Window/Window.scss+9 src/components/L2/Window/Window.tsx+14 src/components/LoadingBar.js → src/components/LoadingBar.jsx src/components/LoginButton.js → src/components/LoginButton.jsx src/components/MaybeSigil.js → src/components/MaybeSigil.jsx src/components/MiniBackButton.js−11 src/components/MiniBackButton.jsx+14 src/components/MiniBackButton.scss+10 src/components/NavHeader.js → src/components/NavHeader.jsx+4−1 src/components/NeedFundsNotice.js → src/components/NeedFundsNotice.jsx+4−2 src/components/NetworkKeys.jsx+98 src/components/NetworkingKeys.js−115 src/components/NoticeBox.js → src/components/NoticeBox.jsx src/components/PaperBuilder.js → src/components/PaperBuilder.jsx src/components/Passport.js → src/components/Passport.jsx+40−112 src/components/ProgressButton.js → src/components/ProgressButton.jsx src/components/Router.js → src/components/Router.jsx src/components/Sigil.js → src/components/Sigil.jsx+2−2 src/components/SigilMini.scss+46 src/components/Steps.js → src/components/Steps.jsx src/components/Tabs.js → src/components/Tabs.jsx src/components/UploadButton.js → src/components/UploadButton.jsx src/components/View.js → src/components/View.tsx+39−14 src/components/ViewHeader.js → src/components/ViewHeader.jsx src/components/WarningBox.js → src/components/WarningBox.jsx src/components/WithErrorBoundary.js → src/components/WithErrorBoundary.jsx src/components/WithTooltip.js−23 src/components/WithTooltip.tsx+56 src/components/alerts/L2VulnAlert.tsx+49 src/components/copiable/CopiableAddress.jsx+19 src/components/copiable/CopiableAddressWrap.jsx+10 src/components/CopiableWithTooltip.js → src/components/copiable/CopiableWithTooltip.jsx+8−7 src/components/CopyButton.js → src/components/copiable/CopyButton.jsx+1−29 src/components/copiable/CopyButtonWide.tsx+28 src/components/form/TicketInputAccessory.scss+7 src/components/form/TicketInputAccessory.tsx+17 src/form/BridgeForm.js → src/form/BridgeForm.tsx+27−4 src/form/ColorInput.js → src/form/ColorInput.jsx src/form/EmailChipInput.js → src/form/EmailChipInput.jsx+1−1 src/form/FormError.js → src/form/FormError.jsx src/form/Inputs.js → src/form/Inputs.tsx+147−11 src/form/SubmitButton.js → src/form/SubmitButton.jsx src/form/UploadInput.js → src/form/UploadInput.jsx src/form/formatters.test.ts+45 src/form/formatters.js → src/form/formatters.ts+56−8 src/form/validators.js+8−1 src/index.js−10 src/index.tsx+7 src/indigo-react/components/AccessoryIcon.js → src/indigo-react/components/AccessoryIcon.jsx src/indigo-react/components/Button.js → src/indigo-react/components/Button.jsx+2−2 src/indigo-react/components/CheckboxInput.js−72 src/indigo-react/components/CheckboxInput.jsx+54 src/indigo-react/components/Flex.d.ts+1 src/indigo-react/components/Flex.js → src/indigo-react/components/Flex.jsx src/indigo-react/components/Grid.d.ts+1 src/indigo-react/components/Grid.js → src/indigo-react/components/Grid.jsx+10−2 src/indigo-react/components/IconButton.js → src/indigo-react/components/IconButton.jsx src/indigo-react/components/IndigoApp.js → src/indigo-react/components/IndigoApp.jsx+2−2 src/indigo-react/components/Input.js → src/indigo-react/components/Input.jsx+3−14 src/indigo-react/components/LinkButton.js → src/indigo-react/components/LinkButton.jsx src/indigo-react/components/SelectInput.js → src/indigo-react/components/SelectInput.jsx+1−1 src/indigo-react/components/ToggleInput.js → src/indigo-react/components/ToggleInput.jsx src/indigo-react/components/Typography.js → src/indigo-react/components/Typography.jsx src/indigo-react/index.js+1−1 src/indigo-react/indigo.css+16 src/lib/LocalRouter.js → src/lib/LocalRouter.ts+2−1 src/lib/MediaQuery.js → src/lib/MediaQuery.jsx src/lib/SolarisClient.js−2 src/lib/WalletConnect.ts+63 src/lib/authToken.js−44 src/lib/authToken.ts+120 src/lib/capitalize.js+1−1 src/lib/constants.js−93 src/lib/constants.ts+287 src/lib/contracts.js+5−11 src/lib/convertToInt.js+1−1 src/lib/expiredPlanetsWithInviteCodes.json+1445 src/lib/explorer.js+2−2 src/lib/flags.js+13−1 src/lib/flowCommand.ts+113 src/lib/getSuggestedGasPrice.js+107−30 src/lib/invite.js+7−3 src/lib/inviteMail.js+4−1 src/lib/isPromise.js+1−1 src/lib/keys.js+62−8 src/lib/ledger.js−41 src/lib/lib.js+5−1 src/lib/maybeGetResult.ts+12 src/lib/metamask.js−28 src/lib/metamask.ts+79 src/lib/need.js+4 src/lib/nest.js+1−1 src/lib/network.js+32−11 src/lib/networkCode.js+5 src/lib/patp2dec.js+2−2 src/lib/pluralize.js+1−1 src/lib/proxy.js+19−2 src/lib/reticket.js+64−26 src/lib/routeNames.js−30 src/lib/routeNames.ts+39 src/lib/router.js → src/lib/router.ts+28−11 src/lib/starRelease.js+52−18 src/lib/tank.js+17−8 src/lib/timeout.js+1−1 src/lib/trezor.js−54 src/lib/txn.js−228 src/lib/txn.ts+284 src/lib/types/BridgeWallet.ts+6 src/lib/types/ITxData.ts+9 src/lib/types/Invite.ts+14 src/lib/types/Keypair.ts+7 src/lib/types/L1Point.ts+20 src/lib/types/L2Transaction.ts+85 src/lib/types/NetworkKeys.ts+11 src/lib/types/PendingL1Transaction.ts+24 src/lib/types/Point.ts+255 src/lib/types/PointLayer.ts+4 src/lib/types/ValueOf.ts+1 src/lib/types/WalletConnectWallet.ts+5 src/lib/useBreakpoints.js−5 src/lib/useBreakpoints.tsx+6 src/lib/useBrowser.ts+32 src/lib/useCopiable.js → src/lib/useCopiable.ts+5−5 src/lib/useEthereumTransaction.js+48−20 src/lib/useGasPrice.js+36−24 src/lib/useHasNetworkKeysSet.tsx+25 src/lib/useImpliedTicket.js−14 src/lib/useImpliedTicket.test.ts+77 src/lib/useImpliedTicket.ts+40 src/lib/useInviter.js−229 src/lib/useInvites.js−7 src/lib/useIsEclipticOwner.js+1−1 src/lib/useIsExpiredInvite.ts+23 src/lib/useKeyfileGenerator.js−136 src/lib/useKeyfileGenerator.ts+256 src/lib/useLifecycle.js+1 src/lib/useMailer.js+2−2 src/lib/useOnClickOutside.ts+34 src/lib/usePermissionsForPoint.js+1−1 src/lib/usePointBirthday.js−7 src/lib/useReticketL2Spawn.ts+136 src/lib/useRoller.ts+857 src/lib/useRollerOptions.ts+59 src/lib/useRollerPoller.ts+44 src/lib/useRouter.js → src/lib/useRouter.tsx+54−13 src/lib/useSeenMissingKeys.js+7 src/lib/useSyncPoints.js+9−9 src/lib/useWalletConnect.ts+360 src/lib/utils/address.test.ts+19 src/lib/utils/address.ts+34 src/lib/utils/array.ts+2 src/lib/utils/date.ts+19 src/lib/utils/hex.ts+11 src/lib/utils/invite.ts+34 src/lib/utils/notifications.ts+5 src/lib/utils/point.ts+43 src/lib/utils/roller.ts+404 src/lib/utils/wallet.ts+7 src/lib/validators.js−124 src/lib/validators.ts+166 src/lib/wallet.js−120 src/lib/wallet.ts+47 src/lib/walletgen.js → src/lib/walletgen.ts+35−16 src/nockjs/TODO−42 src/nockjs/bits.js−333 src/nockjs/compiler.js−726 src/nockjs/hamt.js−137 src/nockjs/list.js−40 src/nockjs/noun.js−367 src/nockjs/serial.js−167 src/nockjs/test/ack.js−51 src/nockjs/test/add.js−40 src/nockjs/test/bits.js−15 src/nockjs/test/decrement.js−37 src/nockjs/test/hamt.js−16 src/nockjs/test/noun.js−88 src/nockjs/test/serial.js−22 src/react-app-env.d.ts+7 src/setupTests.ts+1 src/store/Provider.js+1−3 src/store/history.js → src/store/history.tsx+23−6 src/store/hosting.js−37 src/store/lib/useBirthdaysStore.js−59 src/store/lib/useControlledPointsStore.js+92−21 src/store/lib/useDetailsStore.js−50 src/store/lib/useDetailsStore.ts+74 src/store/lib/useHostingStore.js−244 src/store/lib/useInvitesStore.js−71 src/store/lib/usePointStore.js+9−36 src/store/lib/useRekeyDateStore.js+1−1 src/store/lib/useResidentsStore.js → src/store/lib/useResidentsStore.ts+18−8 src/store/lib/useStarReleaseStore.js+10−3 src/store/network.js−131 src/store/network.jsx+162 src/store/online.js → src/store/online.jsx src/store/pointCache.js−28 src/store/pointCache.jsx+53 src/store/pointCursor.js → src/store/pointCursor.jsx+25−3 src/store/rollerStore.ts+106 src/store/starRelease.js → src/store/starRelease.jsx src/store/storage/roller.ts+57 src/store/timerStore.ts+16 src/store/txnCursor.js → src/store/txnCursor.jsx src/store/wallet.js → src/store/wallet.jsx+73−8 src/style/anim.css+8−10 src/style/bridge.scss+21 src/style/fadeable.scss+21 src/style/form-reset.scss+2−2 src/style/index.scss+4 src/style/master-key.scss+37 src/style/pulsating-circle-bg.scss+18 src/style/shared/variables.scss+16 src/urbit-key-generation.d.ts+125 src/urbit-ob.d.ts+1 src/views/AcceptLockup.jsx+156 src/views/AcceptTransfer.js−93 src/views/AcceptTransfer.tsx+206 src/views/Activate.js → src/views/Activate.jsx+6−8 src/views/Activate/ActivateButton.tsx+45 src/views/Activate/ActivateCode.js−222 src/views/Activate/ActivateCode.tsx+100 src/views/Activate/ActivateCodeForm.tsx+249 src/views/Activate/ActivateHeader.tsx+29 src/views/Activate/ActivateMasterKey.tsx+38 src/views/Activate/ActivateParagraph.tsx+33 src/views/Activate/ActivatePassport.js−84 src/views/Activate/ActivateSteps.tsx+49 src/views/Activate/ActivateView.scss+34 src/views/Activate/ActivateView.tsx+82 src/views/Activate/CodeExpired.scss+3 src/views/Activate/CodeExpired.tsx+47 src/views/Activate/DangerBox.tsx+28 src/views/Activate/MasterKey.tsx+122 src/views/Activate/MasterKeyConfirm.scss+72 src/views/Activate/MasterKeyConfirm.tsx+189 src/views/Activate/MasterKeyCopy.tsx+37 src/views/Activate/MasterKeyDownload.tsx+161 src/views/Activate/MasterKeyPresenter.tsx+63 src/views/Activate/MasterKeyReveal.tsx+108 src/views/Activate/MasterKeyTransfer.tsx+153 src/views/Activate/PassportDownload.js−91 src/views/Activate/PassportTransfer.js−203 src/views/Activate/PassportVerify.js−103 src/views/Activate/PassportView.js−27 src/views/Activate/PointPresenter.tsx+65 src/views/Activate/ActivateFlow.js → src/views/Activate/useActivateFlow.js src/views/Activate/useActivateFlowState.js+56−11 src/views/Activate/useFadeIn.ts+16 src/views/Activate/withFadeable.tsx+28 src/views/Admin.js−73 src/views/Admin/AdminCancelTransfer.js−84 src/views/Adopt.js−88 src/views/Bitcoin/Bitcoin.scss+29 src/views/Bitcoin/Bitcoin.tsx+213 src/views/CancelTransfer.js−95 src/views/CancelTransfer.tsx+166 src/views/CreateGalaxy.js → src/views/CreateGalaxy.jsx+5−5 src/views/Disclaimer.js−108 src/views/Disclaimer.jsx+143 src/views/Invite/CSVButton.tsx+54 src/views/Invite/Cohort.js−401 src/views/Invite/Cohort.scss+236 src/views/Invite/Cohort.tsx+203 src/views/Invite/Email.js−225 src/views/Invite/GenerateInvites.tsx+152 src/views/Invite/GeneratingModal.tsx+88 src/views/Invite/Inviter.js−54 src/views/Invite/Url.js−108 src/views/Invite/useInvites.ts+383 src/views/IssueChild.js−197 src/views/Login.js−113 src/views/Login.scss+3 src/views/Login.tsx+104 src/views/Login/Advanced.js−37 src/views/Login/Hardware.js−52 src/views/Login/Keystore.js−92 src/views/Login/Ledger.js−230 src/views/Login/LoginSelector.scss+120 src/views/Login/LoginSelector.tsx+333 src/views/Login/Metamask.js−85 src/views/Login/Metamask.jsx+128 src/views/Login/Mnemonic.js−123 src/views/Login/Mnemonic.tsx+153 src/views/Login/Other.js−72 src/views/Login/Other.tsx+77 src/views/Login/PrivateKey.js−63 src/views/Login/Ticket.js−287 src/views/Login/Ticket.tsx+292 src/views/Login/Trezor.js−154 src/views/Login/WalletConnect.tsx+123 src/views/Ops/Ops.scss+14 src/views/Ops/Ops.tsx+126 src/views/Ops/RequestRow.tsx+47 src/views/Ops/Requests.scss+91 src/views/Ops/Requests.tsx+96 src/views/Ops/ResidentRow.tsx+64 src/views/Ops/Residents.scss+123 src/views/Ops/Residents.tsx+82 src/views/Party/PartySetPoolSize.js → src/views/Party/PartySetPoolSize.jsx+7−7 src/views/Point.js−306 src/views/Point/IssueChild.scss+59 src/views/Point/IssueChild.tsx+349 src/views/Point/MigrateL2.scss+192 src/views/Point/MigrateL2.tsx+378 src/views/Point/PatpBadge.tsx+28 src/views/Point/Point.scss+76 src/views/Point/Point.tsx+216 src/views/Point/Senate.jsx+40 src/views/Point/UrbitID.jsx+62 src/views/UrbitOS.js → src/views/Point/UrbitOS.jsx+18−18 src/views/Points.js−371 src/views/Points.scss+28 src/views/Points.tsx+392 src/views/Points/StarReleaseButton.scss+27 src/views/Points/StarReleaseButton.tsx+31 src/views/Release.js−86 src/views/Release/Active.js−101 src/views/Release/Locked.js−179 src/views/Release/StarRelease.scss+65 src/views/Release/StarRelease.tsx+61 src/views/Release/TransferForm.tsx+156 src/views/Release/WithdrawForm.tsx+137 src/views/Release/useTransferLockup.ts+24 src/views/Release/useWithdrawStars.ts+19 src/views/Residents.js−233 src/views/Senate.js → src/views/Senate/Documents.jsx+66−80 src/views/Senate/Upgrades.jsx+199 src/views/Transactions/AddressRow.tsx+18 src/views/Transactions/PatpRow.tsx+33 src/views/Transactions/TransactionHistory.scss+333 src/views/Transactions/TransactionHistory.tsx+186 src/views/Transactions/TransactionRow.tsx+116 src/views/UrbitID.js−88 src/views/UrbitID/DownloadKeys.js−72 src/views/UrbitID/DownloadKeys.jsx+82 src/views/UrbitID/Home.js−164 src/views/UrbitID/Home.tsx+219 src/views/UrbitID/ResetKeys.js → src/views/UrbitID/ResetKeys.jsx+16−8 src/views/UrbitID/ResetKeys/ResetConfirm.js → src/views/UrbitID/ResetKeys/ResetConfirm.jsx+1−1 src/views/UrbitID/ResetKeys/ResetDownload.js → src/views/UrbitID/ResetKeys/ResetDownload.jsx+2−2 src/views/UrbitID/ResetKeys/ResetExecute.js−193 src/views/UrbitID/ResetKeys/ResetExecute.tsx+306 src/views/UrbitID/ResetKeys/ResetVerify.js → src/views/UrbitID/ResetKeys/ResetVerify.jsx+1−1 src/views/UrbitID/SetProxy.js−227 src/views/UrbitID/SetProxy.jsx+339 src/views/UrbitID/SetProxy.scss+9 src/views/UrbitID/SigilGenerator.js−123 src/views/UrbitID/SigilGenerator.jsx+131 src/views/UrbitID/Transfer.js−122 src/views/UrbitID/Transfer.tsx+217 src/views/UrbitID/UrbitID.scss+21 src/views/UrbitOS/AccessCode.test.tsx+28 src/views/UrbitOS/AccessCode.tsx+24 src/views/UrbitOS/ChangeSponsor.js−199 src/views/UrbitOS/ChangeSponsor.tsx+273 src/views/UrbitOS/Home.js−275 src/views/UrbitOS/Home.tsx+162 src/views/UrbitOS/NetworkKeys.scss+56 src/views/UrbitOS/NetworkKeys.tsx+452 src/views/UrbitOS/NetworkingKeys.js−285 src/views/UrbitOS/UrbitOS.scss+15 src/worker/index.ts+7 src/worker/worker.ts+9 truffle-config.js+4−8 tsconfig.json+24 vite-env.d.ts+2 vite.config.ts+104 window.d.ts+9 xcode-select
.env+2−2
@@ -1,2 +1,2 @@
1−REACT_APP_INFURA_ENDPOINT='2599df54929b47099bda360958d75aaf'
2−
1+VITE_INFURA_ENDPOINT='2599df54929b47099bda360958d75aaf'
2+VITE_WALLET_CONNECT_PROJECT_ID=''
.env.development+5−5
@@ -1,5 +1,5 @@
1−REACT_APP_DEV_MNEMONIC='benefit crew supreme gesture quantum web media hazard theory mercy wing kitten'
2−REACT_APP_DEV_GALAXY_TICKET='~wacfus-dabpex-danted-mosfep-pasrud-lavmer-nodtex-taslus-pactyp-milpub-pildeg-fornev-ralmed-dinfeb-fopbyr-sanbet-sovmyl-dozsut-mogsyx-mapwyc-sorrup-ricnec-marnys-lignex'
3−REACT_APP_ROPSTEN_KEY='b7d2af9f01534031ba773374f766ef65'
4−REACT_APP_HD_PATH="m/44'/60'/0'/0/0"
5−REACT_APP_STUB_LOCAL='false'
1+VITE_DEV_MNEMONIC='benefit crew supreme gesture quantum web media hazard theory mercy wing kitten'
2+VITE_DEV_GALAXY_TICKET='~wacfus-dabpex-danted-mosfep-pasrud-lavmer-nodtex-taslus-pactyp-milpub-pildeg-fornev-ralmed-dinfeb-fopbyr-sanbet-sovmyl-dozsut-mogsyx-mapwyc-sorrup-ricnec-marnys-lignex'
3+VITE_GOERLI_KEY='b7d2af9f01534031ba773374f766ef65'
4+VITE_HD_PATH="m/44'/60'/0'/0/0"
5+VITE_STUB_LOCAL='false'
.eslintrc+1−1
@@ -9,6 +9,6 @@
99 "react-hooks"
1010 ],
1111 "rules": {
12− "prettier/prettier": "error"
12+ "prettier/prettier": "warn"
1313 }
1414}
.github/ISSUE_TEMPLATE/bridge-bug-report → .github/ISSUE_TEMPLATE/bridge-bug-report.mdrenamed+2−1
@@ -2,7 +2,7 @@
22name: Bridge Bug report
33about: 'Use this template to file a bug for Bridge'
44title: ''
5−labels: landscape
5+labels: bridge
66assignees: ''
77
88---
@@ -34,6 +34,7 @@ If applicable, add screenshots to help explain your problem. If possible, please
3434
3535**Login method (please complete the following information):**
3636How you were logged into bridge when the error occured. e.g. Metamask, Mnemonic, Master Ticket etc.
37+What Ethereum address were you logged in with?
3738
3839
3940**Additional context**
.github/ISSUE_TEMPLATE/l2-bug-report.mdnew file+41
@@ -0,0 +1,41 @@
1+---
2+name: ~2021.12 L2 Bridge QA
3+about: 'Use this template to file a bug for Bridge with L2 functionality'
4+title: ''
5+labels: L2
6+assignees: ''
7+---
8+
9+**Describe the bug:**
10+A clear and concise description of what the bug is.
11+
12+**To reproduce:**
13+Steps to reproduce the behavior:
14+1. Go to '...'
15+2. Click on '....'
16+3. Scroll down to '....'
17+4. See error
18+
19+**Expected behavior:**
20+A clear and concise description of what you expected to happen.
21+
22+**Screenshot or console log:**
23+If applicable, add screenshots to help explain your problem. If possible, please also copy and paste any errors that appear in your browser's dev console. Here are [Chrome's docs](https://developers.google.com/web/tools/chrome-devtools/open) for using this feature.
24+
25+**Ethereum network:**
26+Were you testing on Goerli or mainnet?
27+
28+**Desktop (please complete the following information):**
29+ - OS: [e.g. MacOS 10.15.3]
30+ - Browser [e.g. chrome, safari]
31+
32+**Smartphone (please complete the following information):**
33+ - Device: [e.g. iPhone6]
34+ - OS: [e.g. iOS8.1]
35+ - Browser [e.g. stock browser, safari]
36+
37+**Login method (please complete the following information):**
38+How you were logged into Bridge when the error occured (e.g. Metamask, Mnemonic, Master Ticket etc.)? What Ethereum address were you logged in with?
39+
40+**Additional context:**
41+Add any other context about the problem here.
.gitignore+2
@@ -11,6 +11,7 @@
1111
1212# misc
1313.DS_Store
14+.env
1415.env.local
1516.env.development.local
1617.env.test.local
@@ -28,3 +29,4 @@ bridge*.tar.gz
2829checksums.txt
2930
3031*.pem
32+localhost+2*
.nvmrcnew file+1
@@ -0,0 +1 @@
1+16.18.0
.vscode/settings.jsonnew file+3
@@ -0,0 +1,3 @@
1+{
2+ "svg.preview.background": "white"
3+}
DEVELOPMENT.md+127−12
@@ -17,8 +17,8 @@ on node 11.1.0, so make sure you're using some other node version.
1717You can use [nvm](https://github.com/creationix/nvm), for example, and do:
1818
1919```
20−$ nvm install 11.0.0
21−$ nvm use v11.0.0
20+$ nvm install 14.17.0
21+$ nvm use v14.17.0
2222```
2323
2424before running `npm run pilot`.
@@ -65,9 +65,9 @@ of having to re-authenticate whenever you make a change or refresh the page):
6565
6666- The `.env.development` file contains environment variables that you can
6767 provide to the application when it's running in development. You can access
68− them via `process.env.REACT_APP_<whatever>`.
68+ them via `import.meta.env.VITE_<whatever>`.
6969
70−- Set `REACT_APP_STUB_LOCAL='true'` in `.env.development` to enabled stubbing of
70+- Set `VITE_STUB_LOCAL='true'` in `.env.development` to enabled stubbing of
7171 certain methods throughout the app.
7272
7373- The top of the Bridge component in `src/Bridge.js` can be tweaked for setting
@@ -80,19 +80,97 @@ of having to re-authenticate whenever you make a change or refresh the page):
8080
8181## HTTPS
8282
83−For development, you can enable HTTPS on localhost without a certificate for
84−Chrome by pasting the following into the URL bar:
83+For development, Bridge will not run unless you access localhost via HTTPS. To do this, you will want to set up a self-signed cert using `mkcert`:
8584
85+1. Install `mkcert`:
8686```
87−chrome://flags/#allow-insecure-localhost
87+# on MacOS using homebrew
88+brew install mkcert
89+
90+# on Linux using apt # TODO Confirm functionality
91+sudo apt install libnss3-tools
92+wget -O mkcert https://github.com/FiloSottile/mkcert/releases/latest/download/mkcert-v*-linux-amd64
93+chmod +x mkcert
94+sudo mv mkcert /usr/local/bin/
8895```
8996
90−In Firefox, you may need to allow connecting to the unsecured local node
91−websocket. Do this by going to `about:config` and setting the
92−`network.websocket.allowInsecureFromHTTPS` flag to `true`.
97+2. Create certificate authority:
98+```
99+# install local cert authority
100+mkcert -install
101+```
102+
103+3. Generate localhost Cert:
104+```
105+# Navigate to your bridge project directory
106+cd /path/to/urbit/bridge
107+
108+# Generate certificate for localhost
109+mkcert localhost 127.0.0.1 ::1
110+```
111+
112+This creates two files:
113+- `localhost+2.pem` (certificate)
114+- `localhost+2-key.pem` (private key)
115+
116+
117+Note: as of 3.3.0, Bridge is deprecating explicit support for Firefox. Privacy focused users are recommended to use Brave Browser.
118+
119+## WalletConnect
120+
121+To get WalletConnect working you need to set the `VITE_WALLET_CONNECT_PROJECT_ID`
122+environment variable with a project id that you can get at https://cloud.walletconnect.com/sign-in
93123
94−Additionally you need to run with the `HTTPS` environment variable set to
95−`true`. Note that `npm run pilot` will handle this automatically.
124+## Testing
125+
126+Automated tests for critical user journeys are coming Soon™️. Until then, here are several manual test cases to consider when making changes. It's worth noting that what to test depends on what the changes are. These test cases have limited utility when you are making a small change on a single screen; however, they are certainly a good idea when touching critical pieces such as transaction sending or secrets derivation.
127+
128+### Mnemonic Login
129+
130+"As a user, I can log into Bridge using a BIP39 mnemonic phrase"
131+
132+1. Click the 'Mnemonic, Metamask, Hardware Wallet ...' Button, then click 'Mnemonic (BIP 39)'
133+2. Paste the mnemonic above (in 'Useful Accounts') into the text area, then click 'Login'
134+3. Confirm that you are able to view the Points list view. Since no points have been created yet, you should see the following message:
135+> No points to display. This wallet is not the owner or proxy for any points.
136+
137+### Planet Creation
138+
139+"As a user, I can create a new planet"
140+
141+1. Once a star has been created, click it in the points list
142+2. Click "Issue Point", enter one of the suggested planet names, and sign and send the transaction
143+3. Log out and back into Bridge, confirm that the newly created planet is rendered in the points list
144+
145+### Invite Issuance
146+
147+"As a user, I can create a new invite"
148+
149+First, in `Bridge.js`, set the `INITIAL_NETWORK_TYPE` to Goerli:
150+```js
151+const INITIAL_NETWORK_TYPE = NETWORK_TYPES.GOERLI;
152+```
153+
154+Then, in `tank.js`, set the port to `3011`:
155+```js
156+const baseUrl = 'https://gas-tank.urbit.org:3011';
157+```
158+
159+1. Ask one of the Collaborators of this project for an Invite code :)
160+
161+(If you're generating a code, don't forget to set `inviteMail.js` port to `:3012` for testnet)
162+
163+### Invite Acceptance
164+
165+"As a new Urbit user, I can set up a new ID with an activation code"
166+
167+1. On the Bridge landing page, click the small "Activate" link
168+2. Paste the Invite code from the previous test case, and click "Go"
169+3. Download the Passport file, then use the enclosed Master Ticket and ID to login to Bridge again
170+
171+### Known Issues
172+
173+When testing the invite acceptance and login flow on Goerli, some of the Azimuth API calls will fail (e.g., `getConditional`).
96174
97175## Releases
98176
@@ -101,3 +179,40 @@ To generate a release `bridge-$VERSION.zip` file, use a simple `npm run release`
101179This will pack the build directory together with the README, `bridge-https.py`
102180script, and also generate a set of checksums for the build directory. You can
103181verify the checksums on e.g. MacOS via `shasum -c checksums.txt`.
182+
183+## L2 Local Environment
184+
185+To work with the L2 aggregator locally, set up the local environment like so:
186+
187+```sh
188+# Start Bridge with local blockchain preloaded with L1 and L2 points, all owned by the address 0x6DEfFb0caFDB11D175F123F6891AA64F01c24F7d
189+
190+npm run pilot-l2
191+```
192+
193+Start a local fake ship from the master branch in the [urbit repo](https://github.com/urbit/urbit)
194+
195+```sh
196+/path/to/urbit -F zod -B ./bin/solid.pill -A ./pkg/arvo -c zod --http-port 8080
197+```
198+
199+```dojo
200+:: Run these in the dojo:
201+::
202+> |mount /=base=
203+> |nuke %azimuth
204+> |rein %base [%.y %azimuth]
205+> :azimuth|watch 'http://0.0.0.0:8545' %local
206+> :azimuth %resub
207+> :azimuth &azimuth-poke [%kick ~]
208+> |rein %base [& %roller] [& %roller-rpc] [& %azimuth-rpc]
209+> :roller|local
210+> :roller|setkey '58d62eb79797502bc0f66cd3e7a49d00287bff53a2734b799ef09cb746340ed0'
211+> :roller|quota 9.999
212+:: If you run into issues, also add 'https://localhost:3000' the the eyre CORS approvals
213+> |eyre/cors/approve 'https://127.0.0.1:3000'
214+::
215+:: Once L2 txs have been sent via Bridge, this will manually commit and batch them, avoiding waiting for the timer
216+::
217+> :roller|commit
218+```
README.md+17−1
@@ -35,7 +35,7 @@ Optionally, to validate your downloaded file's integrity, compare the lines in c
3535
36361. `cd` into the `bridge-$version` directory
37372. Run `python3 -m http.server 5000 --bind 127.0.0.1`
38−3. Navigate to http://localhost:5000 using a web browser to access Bridge (we recommend using Firefox or Chrome)
38+3. Navigate to http://127.0.0.1:5000 using a web browser to access Bridge (we recommend using Firefox or Chrome)
3939
4040#### Ledger support
4141
@@ -54,3 +54,19 @@ A proper "offline mode" for the latest iteration of Bridge is still being worked
5454## Development
5555
5656See [development.md](DEVELOPMENT.md).
57+
58+
59+## Configurable Roller Endpoint
60+
61+By default, Bridge uses Tlon's L2 Roller, but can also be configured to use your own.
62+
63+For example:
64+
65+```sh
66+VITE_ROLLER_HOST=my-personal-roller.net npm run pilot-mainnet
67+```
68+
69+The following are configurable, and will otherwise fallback to the defaults in `constants`:
70+- `VITE_ROLLER_HOST` - host
71+- `VITE_ROLLER_PORT` - port
72+- `VITE_ROLLER_TRANSPORT_TYPE` - transport type (e.g., `http` or `https`)
bridge-npm-audit.txtnew file+697
@@ -0,0 +1,697 @@
1+# npm audit report
2+
3+@babel/helpers <7.26.10
4+Severity: moderate
5+Babel has inefficient RegExp complexity in generated code with .replace when transpiling named capturing groups - https://github.com/advisories/GHSA-968p-4wvh-cqc8
6+fix available via `npm audit fix`
7+node_modules/@babel/helpers
8+
9+@babel/runtime-corejs3 <7.26.10
10+Severity: moderate
11+Babel has inefficient RegExp complexity in generated code with .replace when transpiling named capturing groups - https://github.com/advisories/GHSA-968p-4wvh-cqc8
12+fix available via `npm audit fix`
13+node_modules/@babel/runtime-corejs3
14+
15+@babel/traverse <7.23.2
16+Severity: critical
17+Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code - https://github.com/advisories/GHSA-67hx-6x53-jw92
18+fix available via `npm audit fix`
19+node_modules/@babel/traverse
20+
21+ajv <6.12.3
22+Severity: moderate
23+Prototype Pollution in Ajv - https://github.com/advisories/GHSA-v88g-cgmw-v5xw
24+fix available via `npm audit fix --force`
25+Will install serve@14.2.5, which is a breaking change
26+node_modules/serve/node_modules/ajv
27+ serve 5.0.4 - 14.2.4
28+ Depends on vulnerable versions of ajv
29+ Depends on vulnerable versions of boxen
30+ Depends on vulnerable versions of clipboardy
31+ Depends on vulnerable versions of compression
32+ Depends on vulnerable versions of serve-handler
33+ node_modules/serve
34+
35+ansi-regex 3.0.0
36+Severity: high
37+Inefficient Regular Expression Complexity in chalk/ansi-regex - https://github.com/advisories/GHSA-93q8-gq69-wqmw
38+fix available via `npm audit fix`
39+node_modules/ansi-align/node_modules/ansi-regex
40+node_modules/boxen/node_modules/ansi-regex
41+node_modules/widest-line/node_modules/ansi-regex
42+
43+axios 1.0.0 - 1.11.0
44+Severity: high
45+Axios Cross-Site Request Forgery Vulnerability - https://github.com/advisories/GHSA-wf5p-g6vw-rhxx
46+Server-Side Request Forgery in axios - https://github.com/advisories/GHSA-8hc4-vh64-cxmj
47+axios Requests Vulnerable To Possible SSRF and Credential Leakage via Absolute URL - https://github.com/advisories/GHSA-jr5f-v2jv-69x6
48+Axios is vulnerable to DoS attack through lack of data size check - https://github.com/advisories/GHSA-4hjh-wcwx-xvwj
49+fix available via `npm audit fix --force`
50+Will install truffle@5.5.7, which is a breaking change
51+node_modules/axios
52+ @truffle/dashboard-message-bus-client >=0.1.10
53+ Depends on vulnerable versions of axios
54+ node_modules/@truffle/dashboard-message-bus-client
55+ @truffle/events >=0.1.21
56+ Depends on vulnerable versions of @truffle/dashboard-message-bus-client
57+ node_modules/@truffle/events
58+ @truffle/config *
59+ Depends on vulnerable versions of @truffle/events
60+ Depends on vulnerable versions of @truffle/provider
61+ node_modules/@truffle/config
62+ @truffle/db >=2.0.13
63+ Depends on vulnerable versions of @truffle/config
64+ node_modules/@truffle/db
65+ @truffle/db-loader >=0.2.13
66+ Depends on vulnerable versions of @truffle/db
67+ node_modules/@truffle/db-loader
68+ truffle 5.1.9-nodeLTS.0 || 5.1.14-alphaTez.0 - 5.1.14-truffleLogger.0 || >=5.1.66
69+ Depends on vulnerable versions of @truffle/db
70+ Depends on vulnerable versions of @truffle/db-loader
71+ Depends on vulnerable versions of @truffle/debugger
72+ Depends on vulnerable versions of ganache
73+ Depends on vulnerable versions of mocha
74+ node_modules/truffle
75+
76+babel-traverse *
77+Severity: critical
78+Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code - https://github.com/advisories/GHSA-67hx-6x53-jw92
79+fix available via `npm audit fix --force`
80+Will install azimuth-js@0.15.0, which is a breaking change
81+node_modules/babel-traverse
82+ babel-core 5.8.20 - 7.0.0-beta.3
83+ Depends on vulnerable versions of babel-helpers
84+ Depends on vulnerable versions of babel-register
85+ Depends on vulnerable versions of babel-template
86+ Depends on vulnerable versions of babel-traverse
87+ Depends on vulnerable versions of json5
88+ node_modules/babel-core
89+ babel-register *
90+ Depends on vulnerable versions of babel-core
91+ node_modules/babel-register
92+ azimuth-solidity *
93+ Depends on vulnerable versions of babel-register
94+ node_modules/azimuth-solidity
95+ azimuth-js *
96+ Depends on vulnerable versions of azimuth-solidity
97+ Depends on vulnerable versions of web3
98+ node_modules/azimuth-js
99+ babel-template *
100+ Depends on vulnerable versions of babel-traverse
101+ node_modules/babel-template
102+ babel-helpers *
103+ Depends on vulnerable versions of babel-template
104+ node_modules/babel-helpers
105+
106+base-x <=3.0.10
107+Severity: high
108+Homograph attack allows Unicode lookalike characters to bypass validation. - https://github.com/advisories/GHSA-xq7p-g2vc-g82p
109+fix available via `npm audit fix`
110+node_modules/base-x
111+
112+brace-expansion 1.0.0 - 1.1.11
113+brace-expansion Regular Expression Denial of Service vulnerability - https://github.com/advisories/GHSA-v6h2-p8h4-qcjw
114+fix available via `npm audit fix`
115+node_modules/brace-expansion
116+node_modules/ganache/node_modules/brace-expansion
117+node_modules/truffle/node_modules/ganache/node_modules/brace-expansion
118+
119+braces <3.0.3
120+Severity: high
121+Uncontrolled resource consumption in braces - https://github.com/advisories/GHSA-grv7-fg5c-xmjg
122+fix available via `npm audit fix`
123+node_modules/braces
124+node_modules/ganache/node_modules/braces
125+node_modules/truffle/node_modules/ganache/node_modules/braces
126+
127+browserify-sign 2.6.0 - 4.2.1
128+Severity: high
129+browserify-sign upper bound check issue in `dsaVerify` leads to a signature forgery attack - https://github.com/advisories/GHSA-x9w5-v3q2-3rhw
130+fix available via `npm audit fix`
131+node_modules/browserify-sign
132+node_modules/ganache/node_modules/browserify-sign
133+node_modules/truffle/node_modules/ganache/node_modules/browserify-sign
134+
135+cipher-base <=1.0.4
136+Severity: critical
137+cipher-base is missing type checks, leading to hash rewind and passing on crafted data - https://github.com/advisories/GHSA-cpq7-6gpm-g9rc
138+fix available via `npm audit fix`
139+node_modules/cipher-base
140+node_modules/ganache/node_modules/cipher-base
141+node_modules/truffle/node_modules/ganache/node_modules/cipher-base
142+
143+cross-spawn <6.0.6 || >=7.0.0 <7.0.5
144+Severity: high
145+Regular Expression Denial of Service (ReDoS) in cross-spawn - https://github.com/advisories/GHSA-3xgq-45jj-v275
146+Regular Expression Denial of Service (ReDoS) in cross-spawn - https://github.com/advisories/GHSA-3xgq-45jj-v275
147+fix available via `npm audit fix --force`
148+Will install serve@14.2.5, which is a breaking change
149+node_modules/clipboardy/node_modules/cross-spawn
150+node_modules/cross-spawn
151+node_modules/eslint/node_modules/cross-spawn
152+node_modules/ganache/node_modules/cross-spawn
153+node_modules/term-size/node_modules/cross-spawn
154+node_modules/truffle/node_modules/ganache/node_modules/cross-spawn
155+ execa 0.5.0 - 0.9.0
156+ Depends on vulnerable versions of cross-spawn
157+ node_modules/clipboardy/node_modules/execa
158+ node_modules/term-size/node_modules/execa
159+ clipboardy <=1.2.3
160+ Depends on vulnerable versions of execa
161+ node_modules/clipboardy
162+ term-size 1.0.0 - 1.2.0
163+ Depends on vulnerable versions of execa
164+ node_modules/term-size
165+ boxen 1.2.0 - 3.2.0
166+ Depends on vulnerable versions of term-size
167+ node_modules/boxen
168+
169+crypto-js <4.2.0
170+Severity: critical
171+crypto-js PBKDF2 1,000 times weaker than specified in 1993 and 1.3M times weaker than current standard - https://github.com/advisories/GHSA-xwcq-pm8m-c4vf
172+fix available via `npm audit fix --force`
173+Will install secure-ls@2.0.0, which is a breaking change
174+node_modules/crypto-js
175+ secure-ls <=1.2.6
176+ Depends on vulnerable versions of crypto-js
177+ node_modules/secure-ls
178+
179+ejs <=3.1.9
180+Severity: critical
181+ejs template injection vulnerability - https://github.com/advisories/GHSA-phwq-j96m-2c2q
182+ejs lacks certain pollution protection - https://github.com/advisories/GHSA-ghr5-ch3p-vcr6
183+fix available via `npm audit fix`
184+node_modules/source-map-explorer/node_modules/ejs
185+
186+elliptic <=6.6.0
187+Severity: critical
188+Elliptic's verify function omits uniqueness validation - https://github.com/advisories/GHSA-434g-2637-qmqr
189+Elliptic's private key extraction in ECDSA upon signing a malformed input (e.g. a string) - https://github.com/advisories/GHSA-vjh7-7g9h-fjfh
190+Valid ECDSA signatures erroneously rejected in Elliptic - https://github.com/advisories/GHSA-fc9h-whq2-v747
191+Elliptic's EDDSA missing signature length check - https://github.com/advisories/GHSA-f7q4-pwc6-w24p
192+Elliptic's ECDSA missing check for whether leading bit of r and s is zero - https://github.com/advisories/GHSA-977x-g7h5-7qgw
193+Elliptic allows BER-encoded signatures - https://github.com/advisories/GHSA-49q7-c7j4-3p7m
194+fix available via `npm audit fix --force`
195+Will install truffle@5.5.7, which is a breaking change
196+node_modules/elliptic
197+node_modules/ganache/node_modules/elliptic
198+node_modules/truffle/node_modules/ganache/node_modules/elliptic
199+ ethers 3.0.0 - 4.0.49
200+ Depends on vulnerable versions of elliptic
201+ node_modules/@truffle/interface-adapter/node_modules/ethers
202+ @truffle/interface-adapter *
203+ Depends on vulnerable versions of ethers
204+ Depends on vulnerable versions of web3
205+ node_modules/@truffle/interface-adapter
206+ @truffle/provider *
207+ Depends on vulnerable versions of @truffle/interface-adapter
208+ Depends on vulnerable versions of web3
209+ node_modules/@truffle/provider
210+
211+esbuild <=0.24.2
212+Severity: moderate
213+esbuild enables any website to send any requests to the development server and read the response - https://github.com/advisories/GHSA-67mh-4wv8-2f99
214+fix available via `npm audit fix --force`
215+Will install vite@3.2.11, which is outside the stated dependency range
216+node_modules/esbuild
217+ vite <=6.1.6
218+ Depends on vulnerable versions of esbuild
219+ Depends on vulnerable versions of rollup
220+ node_modules/vite
221+
222+fast-redact *
223+fast-redact vulnerable to prototype pollution - https://github.com/advisories/GHSA-ffrw-9mx8-89p8
224+fix available via `npm audit fix`
225+node_modules/fast-redact
226+ pino 5.0.0-rc.1 - 9.11.0
227+ Depends on vulnerable versions of fast-redact
228+ node_modules/pino
229+ @walletconnect/logger <=2.1.3
230+ Depends on vulnerable versions of pino
231+ node_modules/@walletconnect/logger
232+ @walletconnect/core 2.0.0-2.0.0-beta.102 - 2.22.2
233+ Depends on vulnerable versions of @walletconnect/logger
234+ Depends on vulnerable versions of @walletconnect/types
235+ Depends on vulnerable versions of @walletconnect/utils
236+ node_modules/@walletconnect/sign-client/node_modules/@walletconnect/core
237+ @walletconnect/sign-client <=2.22.2
238+ Depends on vulnerable versions of @walletconnect/core
239+ Depends on vulnerable versions of @walletconnect/logger
240+ Depends on vulnerable versions of @walletconnect/types
241+ Depends on vulnerable versions of @walletconnect/utils
242+ node_modules/@walletconnect/sign-client
243+ @walletconnect/types 2.1.2-eaa4818c - 2.22.2
244+ Depends on vulnerable versions of @walletconnect/logger
245+ node_modules/@walletconnect/types
246+ @walletconnect/utils 2.1.2-eaa4818c - 2.22.2
247+ Depends on vulnerable versions of @walletconnect/types
248+ node_modules/@walletconnect/sign-client/node_modules/@walletconnect/utils
249+
250+form-data <2.5.4
251+Severity: critical
252+form-data uses unsafe random function in form-data for choosing boundary - https://github.com/advisories/GHSA-fjxv-7rqg-78g4
253+fix available via `npm audit fix`
254+node_modules/form-data
255+ request *
256+ Depends on vulnerable versions of form-data
257+ Depends on vulnerable versions of tough-cookie
258+ node_modules/request
259+ jsdom 0.1.20 || 0.2.0 - 16.5.3
260+ Depends on vulnerable versions of request
261+ Depends on vulnerable versions of tough-cookie
262+ node_modules/jsdom
263+ servify *
264+ Depends on vulnerable versions of request
265+ node_modules/servify
266+ eth-lib <=0.1.29
267+ Depends on vulnerable versions of servify
268+ Depends on vulnerable versions of ws
269+ node_modules/eth-lib
270+ swarm-js >=0.1.36
271+ Depends on vulnerable versions of eth-lib
272+ Depends on vulnerable versions of tar
273+ node_modules/swarm-js
274+ web3-bzz *
275+ Depends on vulnerable versions of swarm-js
276+ node_modules/@truffle/debugger/node_modules/web3-bzz
277+ node_modules/@truffle/interface-adapter/node_modules/web3-bzz
278+ node_modules/@truffle/provider/node_modules/web3-bzz
279+ node_modules/web3-bzz
280+
281+get-func-name <2.0.1
282+Severity: high
283+Chaijs/get-func-name vulnerable to ReDoS - https://github.com/advisories/GHSA-4q6p-r6v2-jvc5
284+fix available via `npm audit fix`
285+node_modules/get-func-name
286+
287+js-yaml <3.14.2 || >=4.0.0 <4.1.1
288+Severity: moderate
289+js-yaml has prototype pollution in merge (<<) - https://github.com/advisories/GHSA-mh29-5h37-fv8m
290+js-yaml has prototype pollution in merge (<<) - https://github.com/advisories/GHSA-mh29-5h37-fv8m
291+fix available via `npm audit fix --force`
292+Will install truffle@5.5.7, which is a breaking change
293+node_modules/@eslint/eslintrc/node_modules/js-yaml
294+node_modules/eslint/node_modules/js-yaml
295+node_modules/ganache/node_modules/js-yaml
296+node_modules/js-yaml
297+node_modules/mocha/node_modules/js-yaml
298+node_modules/truffle/node_modules/ganache/node_modules/js-yaml
299+ mocha 5.1.0 - 10.5.2
300+ Depends on vulnerable versions of js-yaml
301+ Depends on vulnerable versions of minimatch
302+ Depends on vulnerable versions of nanoid
303+ Depends on vulnerable versions of serialize-javascript
304+ node_modules/ganache/node_modules/mocha
305+ node_modules/mocha
306+ node_modules/truffle/node_modules/ganache/node_modules/mocha
307+
308+json-schema <0.4.0
309+Severity: critical
310+json-schema is vulnerable to Prototype Pollution - https://github.com/advisories/GHSA-896r-f27r-55mw
311+fix available via `npm audit fix`
312+node_modules/json-schema
313+ jsprim 0.3.0 - 1.4.1 || 2.0.0 - 2.0.1
314+ Depends on vulnerable versions of json-schema
315+ node_modules/jsprim
316+
317+json5 <1.0.2 || >=2.0.0 <2.2.2
318+Severity: high
319+Prototype Pollution in JSON5 via Parse Method - https://github.com/advisories/GHSA-9c47-m6qq-7p4h
320+Prototype Pollution in JSON5 via Parse Method - https://github.com/advisories/GHSA-9c47-m6qq-7p4h
321+fix available via `npm audit fix --force`
322+Will install azimuth-js@0.15.0, which is a breaking change
323+node_modules/@babel/core/node_modules/json5
324+node_modules/ganache/node_modules/json5
325+node_modules/json5
326+node_modules/truffle/node_modules/ganache/node_modules/json5
327+node_modules/vite-plugin-comlink/node_modules/json5
328+ vite-plugin-comlink 3.0.3 - 3.0.5
329+ Depends on vulnerable versions of json5
330+ node_modules/vite-plugin-comlink
331+
332+jszip <3.8.0
333+Severity: moderate
334+JSZip contains Path Traversal via loadAsync - https://github.com/advisories/GHSA-36fh-84j7-cv5h
335+fix available via `npm audit fix`
336+node_modules/jszip
337+
338+markdown-to-jsx <7.4.0
339+Severity: moderate
340+Cross site scripting in markdown-to-jsx - https://github.com/advisories/GHSA-4wx3-54gh-9fr9
341+fix available via `npm audit fix`
342+node_modules/markdown-to-jsx
343+
344+micromatch <4.0.8
345+Severity: moderate
346+Regular Expression Denial of Service (ReDoS) in micromatch - https://github.com/advisories/GHSA-952p-6rrq-rcjv
347+fix available via `npm audit fix`
348+node_modules/ganache/node_modules/micromatch
349+node_modules/micromatch
350+node_modules/truffle/node_modules/ganache/node_modules/micromatch
351+
352+minimatch <3.0.5
353+Severity: high
354+minimatch ReDoS vulnerability - https://github.com/advisories/GHSA-f8q6-p94x-37v3
355+fix available via `npm audit fix --force`
356+Will install truffle@5.5.7, which is a breaking change
357+node_modules/ganache/node_modules/minimatch
358+node_modules/minimatch
359+node_modules/truffle/node_modules/ganache/node_modules/minimatch
360+ serve-handler <=6.1.5
361+ Depends on vulnerable versions of minimatch
362+ Depends on vulnerable versions of path-to-regexp
363+ node_modules/serve-handler
364+
365+nanoid <=3.3.7
366+Severity: moderate
367+Predictable results in nanoid generation when given non-integer values - https://github.com/advisories/GHSA-mwcw-c2x4-8c55
368+Exposure of Sensitive Information to an Unauthorized Actor in nanoid - https://github.com/advisories/GHSA-qrpm-p2h7-hrv2
369+fix available via `npm audit fix --force`
370+Will install truffle@5.5.7, which is a breaking change
371+node_modules/ganache/node_modules/nanoid
372+node_modules/nanoid
373+node_modules/truffle/node_modules/ganache/node_modules/nanoid
374+node_modules/vite/node_modules/nanoid
375+
376+on-headers <1.1.0
377+on-headers is vulnerable to http response header manipulation - https://github.com/advisories/GHSA-76c9-3jph-rj3q
378+fix available via `npm audit fix --force`
379+Will install serve@14.2.5, which is a breaking change
380+node_modules/on-headers
381+ compression 1.0.3 - 1.8.0
382+ Depends on vulnerable versions of on-headers
383+ node_modules/serve/node_modules/compression
384+
385+path-to-regexp 2.0.0 - 3.2.0
386+Severity: high
387+path-to-regexp outputs backtracking regular expressions - https://github.com/advisories/GHSA-9wv6-86v2-598j
388+fix available via `npm audit fix --force`
389+Will install serve@14.2.5, which is a breaking change
390+node_modules/serve-handler/node_modules/path-to-regexp
391+
392+pbkdf2 <=3.1.2
393+Severity: critical
394+pbkdf2 silently disregards Uint8Array input, returning static keys - https://github.com/advisories/GHSA-v62p-rq8g-8h59
395+pbkdf2 returns predictable uninitialized/zero-filled memory for non-normalized or unimplemented algos - https://github.com/advisories/GHSA-h7cp-r72f-jxh6
396+fix available via `npm audit fix`
397+node_modules/ganache/node_modules/pbkdf2
398+node_modules/pbkdf2
399+node_modules/truffle/node_modules/ganache/node_modules/pbkdf2
400+
401+postcss <8.4.31
402+Severity: moderate
403+PostCSS line return parsing error - https://github.com/advisories/GHSA-7fh5-64p2-3v2j
404+fix available via `npm audit fix`
405+node_modules/vite/node_modules/postcss
406+
407+qs 6.5.0 - 6.5.2
408+Severity: high
409+qs vulnerable to Prototype Pollution - https://github.com/advisories/GHSA-hrpp-h998-j3pp
410+fix available via `npm audit fix`
411+node_modules/request/node_modules/qs
412+
413+
414+rollup <2.79.2
415+Severity: high
416+DOM Clobbering Gadget found in rollup bundled scripts that leads to XSS - https://github.com/advisories/GHSA-gcx4-mw62-g8wm
417+fix available via `npm audit fix --force`
418+Will install vite@3.2.11, which is outside the stated dependency range
419+node_modules/vite/node_modules/rollup
420+
421+secp256k1 <=3.8.0 || 4.0.0 - 4.0.3
422+Severity: high
423+secp256k1-node allows private key extraction over ECDH - https://github.com/advisories/GHSA-584q-6j8j-r5pm
424+secp256k1-node allows private key extraction over ECDH - https://github.com/advisories/GHSA-584q-6j8j-r5pm
425+fix available via `npm audit fix --force`
426+Will install ganache@6.4.5, which is a breaking change
427+node_modules/ganache/node_modules/secp256k1
428+node_modules/secp256k1
429+node_modules/truffle/node_modules/ganache/node_modules/secp256k1
430+node_modules/urbit-key-generation/node_modules/secp256k1
431+ ganache <=3.0.0-internal.16 || >=7.0.0-alpha.0
432+ Depends on vulnerable versions of @trufflesuite/uws-js-unofficial
433+ Depends on vulnerable versions of secp256k1
434+ node_modules/ganache
435+ node_modules/truffle/node_modules/ganache
436+ keythereum 1.2.0
437+ Depends on vulnerable versions of secp256k1
438+ node_modules/keythereum
439+
440+semver <=5.7.1 || 6.0.0 - 6.3.0 || 7.0.0 - 7.5.1
441+Severity: high
442+semver vulnerable to Regular Expression Denial of Service - https://github.com/advisories/GHSA-c2qf-rxjj-qqgw
443+semver vulnerable to Regular Expression Denial of Service - https://github.com/advisories/GHSA-c2qf-rxjj-qqgw
444+semver vulnerable to Regular Expression Denial of Service - https://github.com/advisories/GHSA-c2qf-rxjj-qqgw
445+fix available via `npm audit fix`
446+node_modules/@babel/core/node_modules/semver
447+node_modules/cross-spawn/node_modules/semver
448+node_modules/ganache/node_modules/semver
449+node_modules/normalize-package-data/node_modules/semver
450+node_modules/truffle/node_modules/ganache/node_modules/semver
451+ @microsoft/api-extractor 7.9.1 - 7.36.2
452+ Depends on vulnerable versions of @microsoft/api-extractor-model
453+ Depends on vulnerable versions of @rushstack/node-core-library
454+ Depends on vulnerable versions of semver
455+ node_modules/ganache/node_modules/@microsoft/api-extractor
456+ node_modules/truffle/node_modules/ganache/node_modules/@microsoft/api-extractor
457+ @rushstack/node-core-library 3.25.0 - 3.59.5
458+ Depends on vulnerable versions of semver
459+ node_modules/ganache/node_modules/@rushstack/node-core-library
460+ node_modules/truffle/node_modules/ganache/node_modules/@rushstack/node-core-library
461+ @microsoft/api-extractor-model 7.8.12 - 7.27.4
462+ Depends on vulnerable versions of @rushstack/node-core-library
463+ node_modules/ganache/node_modules/@microsoft/api-extractor-model
464+ node_modules/truffle/node_modules/ganache/node_modules/@microsoft/api-extractor-model
465+
466+serialize-javascript 6.0.0 - 6.0.1
467+Severity: moderate
468+Cross-site Scripting (XSS) in serialize-javascript - https://github.com/advisories/GHSA-76p7-773f-r4q5
469+fix available via `npm audit fix --force`
470+Will install truffle@5.5.7, which is a breaking change
471+node_modules/ganache/node_modules/serialize-javascript
472+node_modules/serialize-javascript
473+node_modules/truffle/node_modules/ganache/node_modules/serialize-javascript
474+
475+sha.js <=2.4.11
476+Severity: critical
477+sha.js is missing type checks leading to hash rewind and passing on crafted data - https://github.com/advisories/GHSA-95m3-7q98-8xr5
478+fix available via `npm audit fix`
479+node_modules/ganache/node_modules/sha.js
480+node_modules/sha.js
481+node_modules/truffle/node_modules/ganache/node_modules/sha.js
482+
483+shell-quote 1.6.3 - 1.7.2
484+Severity: critical
485+Improper Neutralization of Special Elements used in a Command in Shell-quote - https://github.com/advisories/GHSA-g4rg-993r-mgx7
486+fix available via `npm audit fix`
487+node_modules/shell-quote
488+
489+tar <6.2.1
490+Severity: moderate
491+Denial of service while parsing a tar file due to lack of folders count validation - https://github.com/advisories/GHSA-f5x3-32g6-xq36
492+fix available via `npm audit fix`
493+node_modules/tar
494+
495+tiny-secp256k1 <=1.1.6
496+Severity: high
497+tiny-secp256k1 allows for verify() bypass when running in bundled environment - https://github.com/advisories/GHSA-5vhg-9xg4-cv9m
498+tiny-secp256k1 vulnerable to private key extraction when signing a malicious JSON-stringifyable message in bundled environment - https://github.com/advisories/GHSA-7mc2-6phr-23xc
499+fix available via `npm audit fix`
500+node_modules/tiny-secp256k1
501+
502+tough-cookie <4.1.3
503+Severity: moderate
504+tough-cookie Prototype Pollution vulnerability - https://github.com/advisories/GHSA-72xf-g2v4-qvf3
505+fix available via `npm audit fix`
506+node_modules/tough-cookie
507+
508+validator <13.15.20
509+Severity: moderate
510+validator.js has a URL validation bypass vulnerability in its isURL function - https://github.com/advisories/GHSA-9965-vmph-33xx
511+fix available via `npm audit fix`
512+node_modules/ganache/node_modules/validator
513+node_modules/truffle/node_modules/ganache/node_modules/validator
514+
515+
516+web3-core-method <=2.0.0-alpha.1
517+web3-core-method is vulnerable to prototype pollution - https://github.com/advisories/GHSA-2j4c-9qqq-896r
518+Depends on vulnerable versions of web3-core-subscriptions
519+fix available via `npm audit fix --force`
520+Will install web3-core@4.7.1, which is a breaking change
521+node_modules/@truffle/debugger/node_modules/web3-core-method
522+node_modules/@truffle/interface-adapter/node_modules/web3-core-method
523+node_modules/@truffle/provider/node_modules/web3-core-method
524+node_modules/web3-core-method
525+ web3-core <=2.0.0-alpha.1
526+ Depends on vulnerable versions of web3-core-method
527+ Depends on vulnerable versions of web3-core-method
528+ node_modules/@truffle/debugger/node_modules/web3-core
529+ node_modules/@truffle/interface-adapter/node_modules/web3-core
530+ node_modules/@truffle/provider/node_modules/web3-core
531+ node_modules/web3-core
532+ web3-eth-ens <=2.0.0-alpha.1
533+ Depends on vulnerable versions of web3-core
534+ Depends on vulnerable versions of web3-core
535+ Depends on vulnerable versions of web3-eth-contract
536+ Depends on vulnerable versions of web3-eth-contract
537+ node_modules/@truffle/debugger/node_modules/web3-eth-ens
538+ node_modules/@truffle/interface-adapter/node_modules/web3-eth-ens
539+ node_modules/@truffle/provider/node_modules/web3-eth-ens
540+ node_modules/web3-eth-ens
541+ web3-eth-personal <=2.0.0-alpha.1 || 4.0.9-dev.408125.0
542+ Depends on vulnerable versions of web3-core
543+ Depends on vulnerable versions of web3-core
544+ Depends on vulnerable versions of web3-core-method
545+ Depends on vulnerable versions of web3-core-method
546+ Depends on vulnerable versions of web3-net
547+ Depends on vulnerable versions of web3-net
548+ node_modules/@truffle/debugger/node_modules/web3-eth-personal
549+ node_modules/@truffle/interface-adapter/node_modules/web3-eth-personal
550+ node_modules/@truffle/provider/node_modules/web3-eth-personal
551+ node_modules/web3-eth-personal
552+ web3-net 1.2.0 - 2.0.0-alpha.1 || 4.0.8-dev.408125.0
553+ Depends on vulnerable versions of web3-core
554+ Depends on vulnerable versions of web3-core
555+ Depends on vulnerable versions of web3-core-method
556+ Depends on vulnerable versions of web3-core-method
557+ node_modules/@truffle/debugger/node_modules/web3-net
558+ node_modules/@truffle/interface-adapter/node_modules/web3-net
559+ node_modules/@truffle/provider/node_modules/web3-net
560+ node_modules/web3-net
561+ web3 1.0.0-beta.1 - 3.0.0-rc.0
562+ Depends on vulnerable versions of web3-bzz
563+ Depends on vulnerable versions of web3-core
564+ Depends on vulnerable versions of web3-core
565+ Depends on vulnerable versions of web3-eth
566+ Depends on vulnerable versions of web3-eth
567+ Depends on vulnerable versions of web3-eth-personal
568+ Depends on vulnerable versions of web3-eth-personal
569+ Depends on vulnerable versions of web3-net
570+ Depends on vulnerable versions of web3-net
571+ Depends on vulnerable versions of web3-shh
572+ Depends on vulnerable versions of web3-shh
573+ node_modules/@truffle/debugger/node_modules/web3
574+ node_modules/@truffle/interface-adapter/node_modules/web3
575+ node_modules/@truffle/provider/node_modules/web3
576+ node_modules/web3
577+ @truffle/debugger *
578+ Depends on vulnerable versions of @ensdomains/ensjs
579+ Depends on vulnerable versions of web3
580+ node_modules/@truffle/debugger
581+ web3-eth <=2.0.0-alpha.1
582+ Depends on vulnerable versions of web3-core
583+ Depends on vulnerable versions of web3-core
584+ Depends on vulnerable versions of web3-core-method
585+ Depends on vulnerable versions of web3-core-method
586+ Depends on vulnerable versions of web3-core-subscriptions
587+ Depends on vulnerable versions of web3-eth-accounts
588+ Depends on vulnerable versions of web3-eth-accounts
589+ Depends on vulnerable versions of web3-eth-contract
590+ Depends on vulnerable versions of web3-eth-contract
591+ Depends on vulnerable versions of web3-eth-ens
592+ Depends on vulnerable versions of web3-eth-ens
593+ Depends on vulnerable versions of web3-eth-personal
594+ Depends on vulnerable versions of web3-eth-personal
595+ Depends on vulnerable versions of web3-net
596+ Depends on vulnerable versions of web3-net
597+ node_modules/@truffle/debugger/node_modules/web3-eth
598+ node_modules/@truffle/interface-adapter/node_modules/web3-eth
599+ node_modules/@truffle/provider/node_modules/web3-eth
600+ node_modules/web3-eth
601+ web3-shh *
602+ Depends on vulnerable versions of web3-core
603+ Depends on vulnerable versions of web3-core
604+ Depends on vulnerable versions of web3-core-method
605+ Depends on vulnerable versions of web3-core-method
606+ Depends on vulnerable versions of web3-core-subscriptions
607+ Depends on vulnerable versions of web3-net
608+ Depends on vulnerable versions of web3-net
609+ node_modules/@truffle/debugger/node_modules/web3-shh
610+ node_modules/@truffle/interface-adapter/node_modules/web3-shh
611+ node_modules/@truffle/provider/node_modules/web3-shh
612+ node_modules/web3-shh
613+ web3-eth-accounts <=2.0.0-alpha.1
614+ Depends on vulnerable versions of web3-core
615+ Depends on vulnerable versions of web3-core
616+ Depends on vulnerable versions of web3-core-method
617+ Depends on vulnerable versions of web3-core-method
618+ node_modules/@truffle/debugger/node_modules/web3-eth-accounts
619+ node_modules/@truffle/interface-adapter/node_modules/web3-eth-accounts
620+ node_modules/@truffle/provider/node_modules/web3-eth-accounts
621+ node_modules/web3-eth-accounts
622+ web3-eth-contract <=2.0.0-alpha.1
623+ Depends on vulnerable versions of web3-core
624+ Depends on vulnerable versions of web3-core
625+ Depends on vulnerable versions of web3-core-method
626+ Depends on vulnerable versions of web3-core-method
627+ Depends on vulnerable versions of web3-core-subscriptions
628+ node_modules/@truffle/debugger/node_modules/web3-eth-contract
629+ node_modules/@truffle/interface-adapter/node_modules/web3-eth-contract
630+ node_modules/@truffle/provider/node_modules/web3-eth-contract
631+ node_modules/web3-eth-contract
632+
633+web3-core-subscriptions <=2.0.0-alpha.1
634+web3-core-subscriptions has a Prototype Pollution vulnerability - https://github.com/advisories/GHSA-hhf6-3xpg-pggx
635+fix available via `npm audit fix --force`
636+Will install web3-core@4.7.1, which is a breaking change
637+node_modules/@truffle/debugger/node_modules/web3-core-subscriptions
638+node_modules/@truffle/interface-adapter/node_modules/web3-core-subscriptions
639+node_modules/@truffle/provider/node_modules/web3-core-subscriptions
640+node_modules/web3-core-subscriptions
641+
642+webpack 5.0.0-alpha.0 - 5.93.0
643+Severity: critical
644+Cross-realm object access in Webpack 5 - https://github.com/advisories/GHSA-hc6q-2mpp-qw7j
645+Webpack's AutoPublicPathRuntimeModule has a DOM Clobbering Gadget that leads to XSS - https://github.com/advisories/GHSA-4vvj-4cpr-p986
646+fix available via `npm audit fix`
647+node_modules/ganache/node_modules/webpack
648+node_modules/truffle/node_modules/ganache/node_modules/webpack
649+
650+word-wrap <1.2.4
651+Severity: moderate
652+word-wrap vulnerable to Regular Expression Denial of Service - https://github.com/advisories/GHSA-j8xg-fqg3-53r7
653+fix available via `npm audit fix`
654+node_modules/word-wrap
655+
656+ws 2.1.0 - 5.2.3 || 7.0.0 - 7.5.9 || 8.0.0 - 8.17.0
657+Severity: high
658+ws affected by a DoS when handling a request with many HTTP headers - https://github.com/advisories/GHSA-3h5v-q93c-6h6q
659+ws affected by a DoS when handling a request with many HTTP headers - https://github.com/advisories/GHSA-3h5v-q93c-6h6q
660+ws affected by a DoS when handling a request with many HTTP headers - https://github.com/advisories/GHSA-3h5v-q93c-6h6q
661+fix available via `npm audit fix --force`
662+Will install ganache@6.4.5, which is a breaking change
663+node_modules/eth-lib/node_modules/ws
664+node_modules/ganache/node_modules/@trufflesuite/uws-js-unofficial/node_modules/ws
665+node_modules/truffle/node_modules/ganache/node_modules/@trufflesuite/uws-js-unofficial/node_modules/ws
666+node_modules/ws
667+ @trufflesuite/uws-js-unofficial *
668+ Depends on vulnerable versions of ws
669+ node_modules/ganache/node_modules/@trufflesuite/uws-js-unofficial
670+ node_modules/truffle/node_modules/ganache/node_modules/@trufflesuite/uws-js-unofficial
671+
672+yargs-parser <=5.0.0
673+Severity: moderate
674+yargs-parser Vulnerable to Prototype Pollution - https://github.com/advisories/GHSA-p9pc-299p-vxgp
675+fix available via `npm audit fix --force`
676+Will install truffle@5.5.7, which is a breaking change
677+node_modules/solc/node_modules/yargs-parser
678+ yargs 4.0.0-alpha1 - 7.0.0-alpha.3 || 7.1.1
679+ Depends on vulnerable versions of yargs-parser
680+ node_modules/solc/node_modules/yargs
681+ solc 0.3.6 - 0.4.26
682+ Depends on vulnerable versions of yargs
683+ node_modules/solc
684+ @ensdomains/ens *
685+ Depends on vulnerable versions of solc
686+ node_modules/@ensdomains/ens
687+ @ensdomains/ensjs <=2.1.0
688+ Depends on vulnerable versions of @ensdomains/ens
689+ node_modules/@ensdomains/ensjs
690+
691+108 vulnerabilities (23 low, 25 moderate, 42 high, 18 critical)
692+
693+To address issues that do not require attention, run:
694+ npm audit fix
695+
696+To address all issues (including breaking changes), run:
697+ npm audit fix --force
config-overrides.jsdeleted−13
@@ -1,13 +0,0 @@
1−const rewireReactHotLoader = require('react-app-rewire-hot-loader');
2−const rewireAliases = require('react-app-rewire-aliases');
3−
4−const alias = rewireAliases.aliasesOptions({
5− 'react-dom': '@hot-loader/react-dom',
6−});
7−
8−module.exports = function override(config, env) {
9− config = rewireReactHotLoader(config, env);
10− config = alias(config, env);
11−
12− return config;
13−};
config/env.jsdeleted−93
@@ -1,93 +0,0 @@
1−'use strict';
2−
3−const fs = require('fs');
4−const path = require('path');
5−const paths = require('./paths');
6−
7−// Make sure that including paths.js after env.js will read .env variables.
8−delete require.cache[require.resolve('./paths')];
9−
10−const NODE_ENV = process.env.NODE_ENV;
11−if (!NODE_ENV) {
12− throw new Error(
13− 'The NODE_ENV environment variable is required but was not specified.'
14− );
15−}
16−
17−// https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use
18−var dotenvFiles = [
19− `${paths.dotenv}.${NODE_ENV}.local`,
20− `${paths.dotenv}.${NODE_ENV}`,
21− // Don't include `.env.local` for `test` environment
22− // since normally you expect tests to produce the same
23− // results for everyone
24− NODE_ENV !== 'test' && `${paths.dotenv}.local`,
25− paths.dotenv,
26−].filter(Boolean);
27−
28−// Load environment variables from .env* files. Suppress warnings using silent
29−// if this file is missing. dotenv will never modify any environment variables
30−// that have already been set. Variable expansion is supported in .env files.
31−// https://github.com/motdotla/dotenv
32−// https://github.com/motdotla/dotenv-expand
33−dotenvFiles.forEach(dotenvFile => {
34− if (fs.existsSync(dotenvFile)) {
35− require('dotenv-expand')(
36− require('dotenv').config({
37− path: dotenvFile,
38− })
39− );
40− }
41−});
42−
43−// We support resolving modules according to `NODE_PATH`.
44−// This lets you use absolute paths in imports inside large monorepos:
45−// https://github.com/facebook/create-react-app/issues/253.
46−// It works similar to `NODE_PATH` in Node itself:
47−// https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
48−// Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored.
49−// Otherwise, we risk importing Node.js core modules into an app instead of Webpack shims.
50−// https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421
51−// We also resolve them to make sure all tools using them work consistently.
52−const appDirectory = fs.realpathSync(process.cwd());
53−process.env.NODE_PATH = (process.env.NODE_PATH || '')
54− .split(path.delimiter)
55− .filter(folder => folder && !path.isAbsolute(folder))
56− .map(folder => path.resolve(appDirectory, folder))
57− .join(path.delimiter);
58−
59−// Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be
60−// injected into the application via DefinePlugin in Webpack configuration.
61−const REACT_APP = /^REACT_APP_/i;
62−
63−function getClientEnvironment(publicUrl) {
64− const raw = Object.keys(process.env)
65− .filter(key => REACT_APP.test(key))
66− .reduce(
67− (env, key) => {
68− env[key] = process.env[key];
69− return env;
70− },
71− {
72− // Useful for determining whether we’re running in production mode.
73− // Most importantly, it switches React into the correct mode.
74− NODE_ENV: process.env.NODE_ENV || 'development',
75− // Useful for resolving the correct path to static assets in `public`.
76− // For example, <img src={process.env.PUBLIC_URL + '/img/logo.png'} />.
77− // This should only be used as an escape hatch. Normally you would put
78− // images into the `src` and `import` them in code to get their paths.
79− PUBLIC_URL: publicUrl,
80− }
81− );
82− // Stringify all values so we can feed into Webpack DefinePlugin
83− const stringified = {
84− 'process.env': Object.keys(raw).reduce((env, key) => {
85− env[key] = JSON.stringify(raw[key]);
86− return env;
87− }, {}),
88− };
89−
90− return { raw, stringified };
91−}
92−
93−module.exports = getClientEnvironment;
config/jest/cssTransform.jsdeleted−14
@@ -1,14 +0,0 @@
1−'use strict';
2−
3−// This is a custom Jest transformer turning style imports into empty objects.
4−// http://facebook.github.io/jest/docs/en/webpack.html
5−
6−module.exports = {
7− process() {
8− return 'module.exports = {};';
9− },
10− getCacheKey() {
11− // The output is always the same.
12− return 'cssTransform';
13− },
14−};
config/jest/fileTransform.jsdeleted−40
@@ -1,40 +0,0 @@
1−'use strict';
2−
3−const path = require('path');
4−const camelcase = require('camelcase');
5−
6−// This is a custom Jest transformer turning file imports into filenames.
7−// http://facebook.github.io/jest/docs/en/webpack.html
8−
9−module.exports = {
10− process(src, filename) {
11− const assetFilename = JSON.stringify(path.basename(filename));
12−
13− if (filename.match(/\.svg$/)) {
14− // Based on how SVGR generates a component name:
15− // https://github.com/smooth-code/svgr/blob/01b194cf967347d43d4cbe6b434404731b87cf27/packages/core/src/state.js#L6
16− const pascalCaseFileName = camelcase(path.parse(filename).name, {
17− pascalCase: true,
18− });
19− const componentName = `Svg${pascalCaseFileName}`;
20− return `const React = require('react');
21− module.exports = {
22− __esModule: true,
23− default: ${assetFilename},
24− ReactComponent: React.forwardRef(function ${componentName}(props, ref) {
25− return {
26− $$typeof: Symbol.for('react.element'),
27− type: 'svg',
28− ref: ref,
29− key: null,
30− props: Object.assign({}, props, {
31− children: ${assetFilename}
32− })
33− };
34− }),
35− };`;
36− }
37−
38− return `module.exports = ${assetFilename};`;
39− },
40−};
config/modules.jsdeleted−84
@@ -1,84 +0,0 @@
1−'use strict';
2−
3−const fs = require('fs');
4−const path = require('path');
5−const paths = require('./paths');
6−const chalk = require('react-dev-utils/chalk');
7−
8−/**
9− * Get the baseUrl of a compilerOptions object.
10− *
11− * @param {Object} options
12− */
13−function getAdditionalModulePaths(options = {}) {
14− const baseUrl = options.baseUrl;
15−
16− // We need to explicitly check for null and undefined (and not a falsy value) because
17− // TypeScript treats an empty string as `.`.
18− if (baseUrl == null) {
19− // If there's no baseUrl set we respect NODE_PATH
20− // Note that NODE_PATH is deprecated and will be removed
21− // in the next major release of create-react-app.
22−
23− const nodePath = process.env.NODE_PATH || '';
24− return nodePath.split(path.delimiter).filter(Boolean);
25− }
26−
27− const baseUrlResolved = path.resolve(paths.appPath, baseUrl);
28−
29− // We don't need to do anything if `baseUrl` is set to `node_modules`. This is
30− // the default behavior.
31− if (path.relative(paths.appNodeModules, baseUrlResolved) === '') {
32− return null;
33− }
34−
35− // Allow the user set the `baseUrl` to `appSrc`.
36− if (path.relative(paths.appSrc, baseUrlResolved) === '') {
37− return [paths.appSrc];
38− }
39−
40− // Otherwise, throw an error.
41− throw new Error(
42− chalk.red.bold(
43− "Your project's `baseUrl` can only be set to `src` or `node_modules`." +
44− ' Create React App does not support other values at this time.'
45− )
46− );
47−}
48−
49−function getModules() {
50− // Check if TypeScript is setup
51− const hasTsConfig = fs.existsSync(paths.appTsConfig);
52− const hasJsConfig = fs.existsSync(paths.appJsConfig);
53−
54− if (hasTsConfig && hasJsConfig) {
55− throw new Error(
56− 'You have both a tsconfig.json and a jsconfig.json. If you are using TypeScript please remove your jsconfig.json file.'
57− );
58− }
59−
60− let config;
61−
62− // If there's a tsconfig.json we assume it's a
63− // TypeScript project and set up the config
64− // based on tsconfig.json
65− if (hasTsConfig) {
66− config = require(paths.appTsConfig);
67− // Otherwise we'll check if there is jsconfig.json
68− // for non TS projects.
69− } else if (hasJsConfig) {
70− config = require(paths.appJsConfig);
71− }
72−
73− config = config || {};
74− const options = config.compilerOptions || {};
75−
76− const additionalModulePaths = getAdditionalModulePaths(options);
77−
78− return {
79− additionalModulePaths: additionalModulePaths,
80− hasTsConfig,
81− };
82−}
83−
84−module.exports = getModules();
config/paths.jsdeleted−90
@@ -1,90 +0,0 @@
1−'use strict';
2−
3−const path = require('path');
4−const fs = require('fs');
5−const url = require('url');
6−
7−// Make sure any symlinks in the project folder are resolved:
8−// https://github.com/facebook/create-react-app/issues/637
9−const appDirectory = fs.realpathSync(process.cwd());
10−const resolveApp = relativePath => path.resolve(appDirectory, relativePath);
11−
12−const envPublicUrl = process.env.PUBLIC_URL;
13−
14−function ensureSlash(inputPath, needsSlash) {
15− const hasSlash = inputPath.endsWith('/');
16− if (hasSlash && !needsSlash) {
17− return inputPath.substr(0, inputPath.length - 1);
18− } else if (!hasSlash && needsSlash) {
19− return `${inputPath}/`;
20− } else {
21− return inputPath;
22− }
23−}
24−
25−const getPublicUrl = appPackageJson =>
26− envPublicUrl || require(appPackageJson).homepage;
27−
28−// We use `PUBLIC_URL` environment variable or "homepage" field to infer
29−// "public path" at which the app is served.
30−// Webpack needs to know it to put the right <script> hrefs into HTML even in
31−// single-page apps that may serve index.html for nested URLs like /todos/42.
32−// We can't use a relative path in HTML because we don't want to load something
33−// like /todos/42/static/js/bundle.7289d.js. We have to know the root.
34−function getServedPath(appPackageJson) {
35− const publicUrl = getPublicUrl(appPackageJson);
36− const servedUrl =
37− envPublicUrl || (publicUrl ? url.parse(publicUrl).pathname : '/');
38− return ensureSlash(servedUrl, true);
39−}
40−
41−const moduleFileExtensions = [
42− 'web.mjs',
43− 'mjs',
44− 'web.js',
45− 'js',
46− 'web.ts',
47− 'ts',
48− 'web.tsx',
49− 'tsx',
50− 'json',
51− 'web.jsx',
52− 'jsx',
53−];
54−
55−// Resolve file paths in the same order as webpack
56−const resolveModule = (resolveFn, filePath) => {
57− const extension = moduleFileExtensions.find(extension =>
58− fs.existsSync(resolveFn(`${filePath}.${extension}`))
59− );
60−
61− if (extension) {
62− return resolveFn(`${filePath}.${extension}`);
63− }
64−
65− return resolveFn(`${filePath}.js`);
66−};
67−
68−// config after eject: we're in ./config/
69−module.exports = {
70− dotenv: resolveApp('.env'),
71− appPath: resolveApp('.'),
72− appBuild: resolveApp('build'),
73− appPublic: resolveApp('public'),
74− appHtml: resolveApp('public/index.html'),
75− appIndexJs: resolveModule(resolveApp, 'src/index'),
76− appPackageJson: resolveApp('package.json'),
77− appSrc: resolveApp('src'),
78− appTsConfig: resolveApp('tsconfig.json'),
79− appJsConfig: resolveApp('jsconfig.json'),
80− yarnLockFile: resolveApp('yarn.lock'),
81− testsSetup: resolveModule(resolveApp, 'src/setupTests'),
82− proxySetup: resolveApp('src/setupProxy.js'),
83− appNodeModules: resolveApp('node_modules'),
84− publicUrl: getPublicUrl(resolveApp('package.json')),
85− servedPath: getServedPath(resolveApp('package.json')),
86−};
87−
88−
89−
90−module.exports.moduleFileExtensions = moduleFileExtensions;
config/pnpTs.jsdeleted−35
@@ -1,35 +0,0 @@
1−'use strict';
2−
3−const { resolveModuleName } = require('ts-pnp');
4−
5−exports.resolveModuleName = (
6− typescript,
7− moduleName,
8− containingFile,
9− compilerOptions,
10− resolutionHost
11−) => {
12− return resolveModuleName(
13− moduleName,
14− containingFile,
15− compilerOptions,
16− resolutionHost,
17− typescript.resolveModuleName
18− );
19−};
20−
21−exports.resolveTypeReferenceDirective = (
22− typescript,
23− moduleName,
24− containingFile,
25− compilerOptions,
26− resolutionHost
27−) => {
28− return resolveModuleName(
29− moduleName,
30− containingFile,
31− compilerOptions,
32− resolutionHost,
33− typescript.resolveTypeReferenceDirective
34− );
35−};
config/webpack.config.jsdeleted−628
@@ -1,628 +0,0 @@
1−'use strict';
2−
3−const fs = require('fs');
4−const isWsl = require('is-wsl');
5−const path = require('path');
6−const webpack = require('webpack');
7−const resolve = require('resolve');
8−const PnpWebpackPlugin = require('pnp-webpack-plugin');
9−const HtmlWebpackPlugin = require('html-webpack-plugin');
10−const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');
11−const InlineChunkHtmlPlugin = require('react-dev-utils/InlineChunkHtmlPlugin');
12−const TerserPlugin = require('terser-webpack-plugin');
13−const MiniCssExtractPlugin = require('mini-css-extract-plugin');
14−const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
15−const safePostCssParser = require('postcss-safe-parser');
16−const ManifestPlugin = require('webpack-manifest-plugin');
17−const InterpolateHtmlPlugin = require('react-dev-utils/InterpolateHtmlPlugin');
18−const WorkboxWebpackPlugin = require('workbox-webpack-plugin');
19−const WatchMissingNodeModulesPlugin = require('react-dev-utils/WatchMissingNodeModulesPlugin');
20−const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin');
21−const getCSSModuleLocalIdent = require('react-dev-utils/getCSSModuleLocalIdent');
22−const paths = require('./paths');
23−const modules = require('./modules');
24−const getClientEnvironment = require('./env');
25−const ModuleNotFoundPlugin = require('react-dev-utils/ModuleNotFoundPlugin');
26−const ForkTsCheckerWebpackPlugin = require('react-dev-utils/ForkTsCheckerWebpackPlugin');
27−const typescriptFormatter = require('react-dev-utils/typescriptFormatter');
28−
29−const postcssNormalize = require('postcss-normalize');
30−
31−// Source maps are resource heavy and can cause out of memory issue for large source files.
32−const shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';
33−// Some apps do not need the benefits of saving a web request, so not inlining the chunk
34−// makes for a smoother build process.
35−const shouldInlineRuntimeChunk = process.env.INLINE_RUNTIME_CHUNK !== 'false';
36−
37−// Check if TypeScript is setup
38−const useTypeScript = fs.existsSync(paths.appTsConfig);
39−
40−// style files regexes
41−const cssRegex = /\.css$/;
42−const cssModuleRegex = /\.module\.css$/;
43−const sassRegex = /\.(scss|sass)$/;
44−const sassModuleRegex = /\.module\.(scss|sass)$/;
45−
46−// This is the production and development configuration.
47−// It is focused on developer experience, fast rebuilds, and a minimal bundle.
48−module.exports = function(webpackEnv) {
49− const isEnvDevelopment = webpackEnv === 'development';
50− const isEnvProduction = webpackEnv === 'production';
51−
52− // Webpack uses `publicPath` to determine where the app is being served from.
53− // It requires a trailing slash, or the file assets will get an incorrect path.
54− // In development, we always serve from the root. This makes config easier.
55− const publicPath = isEnvProduction
56− ? paths.servedPath
57− : isEnvDevelopment && '/';
58− // Some apps do not use client-side routing with pushState.
59− // For these, "homepage" can be set to "." to enable relative asset paths.
60− const shouldUseRelativeAssetPaths = publicPath === './';
61−
62− // `publicUrl` is just like `publicPath`, but we will provide it to our app
63− // as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript.
64− // Omit trailing slash as %PUBLIC_URL%/xyz looks better than %PUBLIC_URL%xyz.
65− const publicUrl = isEnvProduction
66− ? publicPath.slice(0, -1)
67− : isEnvDevelopment && '';
68− // Get environment variables to inject into our app.
69− const env = getClientEnvironment(publicUrl);
70−
71− // common function to get style loaders
72− const getStyleLoaders = (cssOptions, preProcessor) => {
73− const loaders = [
74− isEnvDevelopment && require.resolve('style-loader'),
75− isEnvProduction && {
76− loader: MiniCssExtractPlugin.loader,
77− options: shouldUseRelativeAssetPaths ? { publicPath: '../../' } : {},
78− },
79− {
80− loader: require.resolve('css-loader'),
81− options: cssOptions,
82− },
83− {
84− // Options for PostCSS as we reference these options twice
85− // Adds vendor prefixing based on your specified browser support in
86− // package.json
87− loader: require.resolve('postcss-loader'),
88− options: {
89− // Necessary for external CSS imports to work
90− // https://github.com/facebook/create-react-app/issues/2677
91− ident: 'postcss',
92− plugins: () => [
93− require('postcss-flexbugs-fixes'),
94− require('postcss-preset-env')({
95− autoprefixer: {
96− flexbox: 'no-2009',
97− },
98− stage: 3,
99− }),
100− // Adds PostCSS Normalize as the reset css with default options,
101− // so that it honors browserslist config in package.json
102− // which in turn let's users customize the target behavior as per their needs.
103− postcssNormalize(),
104− ],
105− sourceMap: isEnvProduction && shouldUseSourceMap,
106− },
107− },
108− ].filter(Boolean);
109− if (preProcessor) {
110− loaders.push({
111− loader: require.resolve(preProcessor),
112− options: {
113− sourceMap: isEnvProduction && shouldUseSourceMap,
114− },
115− });
116− }
117− return loaders;
118− };
119−
120− return {
121− mode: isEnvProduction ? 'production' : isEnvDevelopment && 'development',
122− // Stop compilation early in production
123− bail: isEnvProduction,
124− devtool: isEnvProduction
125− ? shouldUseSourceMap
126− ? 'source-map'
127− : false
128− : isEnvDevelopment && 'cheap-module-source-map',
129− // These are the "entry points" to our application.
130− // This means they will be the "root" imports that are included in JS bundle.
131− entry: [
132− // Include an alternative client for WebpackDevServer. A client's job is to
133− // connect to WebpackDevServer by a socket and get notified about changes.
134− // When you save a file, the client will either apply hot updates (in case
135− // of CSS changes), or refresh the page (in case of JS changes). When you
136− // make a syntax error, this client will display a syntax error overlay.
137− // Note: instead of the default WebpackDevServer client, we use a custom one
138− // to bring better experience for Create React App users. You can replace
139− // the line below with these two lines if you prefer the stock client:
140− // require.resolve('webpack-dev-server/client') + '?/',
141− // require.resolve('webpack/hot/dev-server'),
142− isEnvDevelopment &&
143− require.resolve('react-dev-utils/webpackHotDevClient'),
144− // Finally, this is your app's code:
145− paths.appIndexJs,
146− // We include the app code last so that if there is a runtime error during
147− // initialization, it doesn't blow up the WebpackDevServer client, and
148− // changing JS code would still trigger a refresh.
149− ].filter(Boolean),
150− output: {
151− // The build folder.
152− path: isEnvProduction ? paths.appBuild : undefined,
153− // Add /* filename */ comments to generated require()s in the output.
154− pathinfo: isEnvDevelopment,
155− // There will be one main bundle, and one file per asynchronous chunk.
156− // In development, it does not produce real files.
157− filename: isEnvProduction
158− ? 'static/js/[name].[contenthash:8].js'
159− : isEnvDevelopment && 'static/js/bundle.js',
160− // TODO: remove this when upgrading to webpack 5
161− futureEmitAssets: true,
162− // There are also additional JS chunk files if you use code splitting.
163− chunkFilename: isEnvProduction
164− ? 'static/js/[name].[contenthash:8].chunk.js'
165− : isEnvDevelopment && 'static/js/[name].chunk.js',
166− // We inferred the "public path" (such as / or /my-project) from homepage.
167− // We use "/" in development.
168− publicPath: publicPath,
169− // Point sourcemap entries to original disk location (format as URL on Windows)
170− devtoolModuleFilenameTemplate: isEnvProduction
171− ? info =>
172− path
173− .relative(paths.appSrc, info.absoluteResourcePath)
174− .replace(/\\/g, '/')
175− : isEnvDevelopment &&
176− (info => path.resolve(info.absoluteResourcePath).replace(/\\/g, '/')),
177− },
178− optimization: {
179− minimize: isEnvProduction,
180− minimizer: [
181− // This is only used in production mode
182− new TerserPlugin({
183− terserOptions: {
184− parse: {
185− // we want terser to parse ecma 8 code. However, we don't want it
186− // to apply any minfication steps that turns valid ecma 5 code
187− // into invalid ecma 5 code. This is why the 'compress' and 'output'
188− // sections only apply transformations that are ecma 5 safe
189− // https://github.com/facebook/create-react-app/pull/4234
190− ecma: 8,
191− },
192− compress: {
193− ecma: 5,
194− warnings: false,
195− // Disabled because of an issue with Uglify breaking seemingly valid code:
196− // https://github.com/facebook/create-react-app/issues/2376
197− // Pending further investigation:
198− // https://github.com/mishoo/UglifyJS2/issues/2011
199− comparisons: false,
200− // Disabled because of an issue with Terser breaking valid code:
201− // https://github.com/facebook/create-react-app/issues/5250
202− // Pending futher investigation:
203− // https://github.com/terser-js/terser/issues/120
204− inline: 2,
205− },
206− mangle: {
207− safari10: true,
208− },
209− output: {
210− ecma: 5,
211− comments: false,
212− // Turned on because emoji and regex is not minified properly using default
213− // https://github.com/facebook/create-react-app/issues/2488
214− ascii_only: true,
215− },
216− },
217− // Use multi-process parallel running to improve the build speed
218− // Default number of concurrent runs: os.cpus().length - 1
219− // Disabled on WSL (Windows Subsystem for Linux) due to an issue with Terser
220− // https://github.com/webpack-contrib/terser-webpack-plugin/issues/21
221− parallel: !isWsl,
222− // Enable file caching
223− cache: true,
224− sourceMap: shouldUseSourceMap,
225− }),
226− // This is only used in production mode
227− new OptimizeCSSAssetsPlugin({
228− cssProcessorOptions: {
229− parser: safePostCssParser,
230− map: shouldUseSourceMap
231− ? {
232− // `inline: false` forces the sourcemap to be output into a
233− // separate file
234− inline: false,
235− // `annotation: true` appends the sourceMappingURL to the end of
236− // the css file, helping the browser find the sourcemap
237− annotation: true,
238− }
239− : false,
240− },
241− }),
242− ],
243− // Automatically split vendor and commons
244− // https://twitter.com/wSokra/status/969633336732905474
245− // https://medium.com/webpack/webpack-4-code-splitting-chunk-graph-and-the-splitchunks-optimization-be739a861366
246− splitChunks: {
247− chunks: 'all',
248− name: false,
249− },
250− // Keep the runtime chunk separated to enable long term caching
251− // https://twitter.com/wSokra/status/969679223278505985
252− runtimeChunk: true,
253− },
254− resolve: {
255− // This allows you to set a fallback for where Webpack should look for modules.
256− // We placed these paths second because we want `node_modules` to "win"
257− // if there are any conflicts. This matches Node resolution mechanism.
258− // https://github.com/facebook/create-react-app/issues/253
259− modules: ['node_modules', paths.appNodeModules].concat(
260− modules.additionalModulePaths || []
261− ),
262− // These are the reasonable defaults supported by the Node ecosystem.
263− // We also include JSX as a common component filename extension to support
264− // some tools, although we do not recommend using it, see:
265− // https://github.com/facebook/create-react-app/issues/290
266− // `web` extension prefixes have been added for better support
267− // for React Native Web.
268− extensions: paths.moduleFileExtensions
269− .map(ext => `.${ext}`)
270− .filter(ext => useTypeScript || !ext.includes('ts')),
271− alias: {
272− // Support React Native Web
273− // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/
274− 'react-native': 'react-native-web',
275− },
276− plugins: [
277− // Adds support for installing with Plug'n'Play, leading to faster installs and adding
278− // guards against forgotten dependencies and such.
279− PnpWebpackPlugin,
280− // Prevents users from importing files from outside of src/ (or node_modules/).
281− // This often causes confusion because we only process files within src/ with babel.
282− // To fix this, we prevent you from importing files out of src/ -- if you'd like to,
283− // please link the files into your node_modules/ and let module-resolution kick in.
284− // Make sure your source files are compiled, as they will not be processed in any way.
285− new ModuleScopePlugin(paths.appSrc, [paths.appPackageJson]),
286− ],
287− },
288− resolveLoader: {
289− plugins: [
290− // Also related to Plug'n'Play, but this time it tells Webpack to load its loaders
291− // from the current package.
292− PnpWebpackPlugin.moduleLoader(module),
293− ],
294− },
295− module: {
296− strictExportPresence: true,
297− rules: [
298− // Disable require.ensure as it's not a standard language feature.
299− { parser: { requireEnsure: false } },
300−
301− // First, run the linter.
302− // It's important to do this before Babel processes the JS.
303− {
304− test: /\.(js|mjs|jsx|ts|tsx)$/,
305− enforce: 'pre',
306− use: [
307− {
308− options: {
309− formatter: require.resolve('react-dev-utils/eslintFormatter'),
310− eslintPath: require.resolve('eslint'),
311−
312− },
313− loader: require.resolve('eslint-loader'),
314− },
315− ],
316− include: paths.appSrc,
317− },
318− {
319− // "oneOf" will traverse all following loaders until one will
320− // match the requirements. When no loader matches it will fall
321− // back to the "file" loader at the end of the loader list.
322− oneOf: [
323− // "url" loader works like "file" loader except that it embeds assets
324− // smaller than specified limit in bytes as data URLs to avoid requests.
325− // A missing `test` is equivalent to a match.
326− {
327− test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
328− loader: require.resolve('url-loader'),
329− options: {
330− limit: 10000,
331− name: 'static/media/[name].[hash:8].[ext]',
332− },
333− },
334− // Process application JS with Babel.
335− // The preset includes JSX, Flow, TypeScript, and some ESnext features.
336− {
337− test: /\.(js|mjs|jsx|ts|tsx)$/,
338− include: paths.appSrc,
339− loader: require.resolve('babel-loader'),
340− options: {
341− customize: require.resolve(
342− 'babel-preset-react-app/webpack-overrides'
343− ),
344−
345− plugins: [
346− [
347− require.resolve('babel-plugin-named-asset-import'),
348− {
349− loaderMap: {
350− svg: {
351− ReactComponent: '@svgr/webpack?-svgo,+ref![path]',
352− },
353− },
354− },
355− ],
356− ],
357− // This is a feature of `babel-loader` for webpack (not Babel itself).
358− // It enables caching results in ./node_modules/.cache/babel-loader/
359− // directory for faster rebuilds.
360− cacheDirectory: true,
361− cacheCompression: isEnvProduction,
362− compact: isEnvProduction,
363− },
364− },
365− // Process any JS outside of the app with Babel.
366− // Unlike the application JS, we only compile the standard ES features.
367− {
368− test: /\.(js|mjs)$/,
369− exclude: /@babel(?:\/|\\{1,2})runtime/,
370− loader: require.resolve('babel-loader'),
371− options: {
372− babelrc: false,
373− configFile: false,
374− compact: false,
375− presets: [
376− [
377− require.resolve('babel-preset-react-app/dependencies'),
378− { helpers: true },
379− ],
380− ],
381− cacheDirectory: true,
382− cacheCompression: isEnvProduction,
383−
384− // If an error happens in a package, it's possible to be
385− // because it was compiled. Thus, we don't want the browser
386− // debugger to show the original code. Instead, the code
387− // being evaluated would be much more helpful.
388− sourceMaps: false,
389− },
390− },
391− // "postcss" loader applies autoprefixer to our CSS.
392− // "css" loader resolves paths in CSS and adds assets as dependencies.
393− // "style" loader turns CSS into JS modules that inject <style> tags.
394− // In production, we use MiniCSSExtractPlugin to extract that CSS
395− // to a file, but in development "style" loader enables hot editing
396− // of CSS.
397− // By default we support CSS Modules with the extension .module.css
398− {
399− test: cssRegex,
400− exclude: cssModuleRegex,
401− use: getStyleLoaders({
402− importLoaders: 1,
403− sourceMap: isEnvProduction && shouldUseSourceMap,
404− }),
405− // Don't consider CSS imports dead code even if the
406− // containing package claims to have no side effects.
407− // Remove this when webpack adds a warning or an error for this.
408− // See https://github.com/webpack/webpack/issues/6571
409− sideEffects: true,
410− },
411− // Adds support for CSS Modules (https://github.com/css-modules/css-modules)
412− // using the extension .module.css
413− {
414− test: cssModuleRegex,
415− use: getStyleLoaders({
416− importLoaders: 1,
417− sourceMap: isEnvProduction && shouldUseSourceMap,
418− modules: true,
419− getLocalIdent: getCSSModuleLocalIdent,
420− }),
421− },
422− // Opt-in support for SASS (using .scss or .sass extensions).
423− // By default we support SASS Modules with the
424− // extensions .module.scss or .module.sass
425− {
426− test: sassRegex,
427− exclude: sassModuleRegex,
428− use: getStyleLoaders(
429− {
430− importLoaders: 2,
431− sourceMap: isEnvProduction && shouldUseSourceMap,
432− },
433− 'sass-loader'
434− ),
435− // Don't consider CSS imports dead code even if the
436− // containing package claims to have no side effects.
437− // Remove this when webpack adds a warning or an error for this.
438− // See https://github.com/webpack/webpack/issues/6571
439− sideEffects: true,
440− },
441− // Adds support for CSS Modules, but using SASS
442− // using the extension .module.scss or .module.sass
443− {
444− test: sassModuleRegex,
445− use: getStyleLoaders(
446− {
447− importLoaders: 2,
448− sourceMap: isEnvProduction && shouldUseSourceMap,
449− modules: true,
450− getLocalIdent: getCSSModuleLocalIdent,
451− },
452− 'sass-loader'
453− ),
454− },
455− // "file" loader makes sure those assets get served by WebpackDevServer.
456− // When you `import` an asset, you get its (virtual) filename.
457− // In production, they would get copied to the `build` folder.
458− // This loader doesn't use a "test" so it will catch all modules
459− // that fall through the other loaders.
460− {
461− loader: require.resolve('file-loader'),
462− // Exclude `js` files to keep "css" loader working as it injects
463− // its runtime that would otherwise be processed through "file" loader.
464− // Also exclude `html` and `json` extensions so they get processed
465− // by webpacks internal loaders.
466− exclude: [/\.(js|mjs|jsx|ts|tsx)$/, /\.html$/, /\.json$/],
467− options: {
468− name: 'static/media/[name].[hash:8].[ext]',
469− },
470− },
471− // ** STOP ** Are you adding a new loader?
472− // Make sure to add the new loader(s) before the "file" loader.
473− ],
474− },
475− ],
476− },
477− plugins: [
478− // Generates an `index.html` file with the <script> injected.
479− new HtmlWebpackPlugin(
480− Object.assign(
481− {},
482− {
483− inject: true,
484− template: paths.appHtml,
485− },
486− isEnvProduction
487− ? {
488− minify: {
489− removeComments: true,
490− collapseWhitespace: true,
491− removeRedundantAttributes: true,
492− useShortDoctype: true,
493− removeEmptyAttributes: true,
494− removeStyleLinkTypeAttributes: true,
495− keepClosingSlash: true,
496− minifyJS: true,
497− minifyCSS: true,
498− minifyURLs: true,
499− },
500− }
501− : undefined
502− )
503− ),
504− // Inlines the webpack runtime script. This script is too small to warrant
505− // a network request.
506− isEnvProduction &&
507− shouldInlineRuntimeChunk &&
508− new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/runtime~.+[.]js/]),
509− // Makes some environment variables available in index.html.
510− // The public URL is available as %PUBLIC_URL% in index.html, e.g.:
511− // <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
512− // In production, it will be an empty string unless you specify "homepage"
513− // in `package.json`, in which case it will be the pathname of that URL.
514− // In development, this will be an empty string.
515− new InterpolateHtmlPlugin(HtmlWebpackPlugin, env.raw),
516− // This gives some necessary context to module not found errors, such as
517− // the requesting resource.
518− new ModuleNotFoundPlugin(paths.appPath),
519− // Makes some environment variables available to the JS code, for example:
520− // if (process.env.NODE_ENV === 'production') { ... }. See `./env.js`.
521− // It is absolutely essential that NODE_ENV is set to production
522− // during a production build.
523− // Otherwise React will be compiled in the very slow development mode.
524− new webpack.DefinePlugin(env.stringified),
525− // This is necessary to emit hot updates (currently CSS only):
526− isEnvDevelopment && new webpack.HotModuleReplacementPlugin(),
527− // Watcher doesn't work well if you mistype casing in a path so we use
528− // a plugin that prints an error when you attempt to do this.
529− // See https://github.com/facebook/create-react-app/issues/240
530− isEnvDevelopment && new CaseSensitivePathsPlugin(),
531− // If you require a missing module and then `npm install` it, you still have
532− // to restart the development server for Webpack to discover it. This plugin
533− // makes the discovery automatic so you don't have to restart.
534− // See https://github.com/facebook/create-react-app/issues/186
535− isEnvDevelopment &&
536− new WatchMissingNodeModulesPlugin(paths.appNodeModules),
537− isEnvProduction &&
538− new MiniCssExtractPlugin({
539− // Options similar to the same options in webpackOptions.output
540− // both options are optional
541− filename: 'static/css/[name].[contenthash:8].css',
542− chunkFilename: 'static/css/[name].[contenthash:8].chunk.css',
543− }),
544− // Generate a manifest file which contains a mapping of all asset filenames
545− // to their corresponding output file so that tools can pick it up without
546− // having to parse `index.html`.
547− new ManifestPlugin({
548− fileName: 'asset-manifest.json',
549− publicPath: publicPath,
550− generate: (seed, files) => {
551− const manifestFiles = files.reduce(function(manifest, file) {
552− manifest[file.name] = file.path;
553− return manifest;
554− }, seed);
555−
556− return {
557− files: manifestFiles,
558− };
559− },
560− }),
561− // Moment.js is an extremely popular library that bundles large locale files
562− // by default due to how Webpack interprets its code. This is a practical
563− // solution that requires the user to opt into importing specific locales.
564− // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack
565− // You can remove this if you don't use Moment.js:
566− new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
567− // Generate a service worker script that will precache, and keep up to date,
568− // the HTML & assets that are part of the Webpack build.
569− isEnvProduction &&
570− new WorkboxWebpackPlugin.GenerateSW({
571− clientsClaim: true,
572− exclude: [/\.map$/, /asset-manifest\.json$/],
573− importWorkboxFrom: 'cdn',
574− navigateFallback: publicUrl + '/index.html',
575− navigateFallbackBlacklist: [
576− // Exclude URLs starting with /_, as they're likely an API call
577− new RegExp('^/_'),
578− // Exclude URLs containing a dot, as they're likely a resource in
579− // public/ and not a SPA route
580− new RegExp('/[^/]+\\.[^/]+$'),
581− ],
582− }),
583− // TypeScript type checking
584− useTypeScript &&
585− new ForkTsCheckerWebpackPlugin({
586− typescript: resolve.sync('typescript', {
587− basedir: paths.appNodeModules,
588− }),
589− async: isEnvDevelopment,
590− useTypescriptIncrementalApi: true,
591− checkSyntacticErrors: true,
592− resolveModuleNameModule: process.versions.pnp
593− ? `${__dirname}/pnpTs.js`
594− : undefined,
595− resolveTypeReferenceDirectiveModule: process.versions.pnp
596− ? `${__dirname}/pnpTs.js`
597− : undefined,
598− tsconfig: paths.appTsConfig,
599− reportFiles: [
600− '**',
601− '!**/__tests__/**',
602− '!**/?(*.)(spec|test).*',
603− '!**/src/setupProxy.*',
604− '!**/src/setupTests.*',
605− ],
606− watch: paths.appSrc,
607− silent: true,
608− // The formatter is invoked directly in WebpackDevServerUtils during development
609− formatter: isEnvProduction ? typescriptFormatter : undefined,
610− }),
611− ].filter(Boolean),
612− // Some libraries import Node modules but don't use them in the browser.
613− // Tell Webpack to provide empty mocks for them so importing them works.
614− node: {
615− module: 'empty',
616− dgram: 'empty',
617− dns: 'mock',
618− fs: 'empty',
619− http2: 'empty',
620− net: 'empty',
621− tls: 'empty',
622− child_process: 'empty',
623− },
624− // Turn off performance processing because we utilize
625− // our own hints via the FileSizeReporter
626− performance: false,
627− };
628−};
config/webpackDevServer.config.jsdeleted−104
@@ -1,104 +0,0 @@
1−'use strict';
2−
3−const errorOverlayMiddleware = require('react-dev-utils/errorOverlayMiddleware');
4−const evalSourceMapMiddleware = require('react-dev-utils/evalSourceMapMiddleware');
5−const noopServiceWorkerMiddleware = require('react-dev-utils/noopServiceWorkerMiddleware');
6−const ignoredFiles = require('react-dev-utils/ignoredFiles');
7−const paths = require('./paths');
8−const fs = require('fs');
9−
10−const protocol = process.env.HTTPS === 'true' ? 'https' : 'http';
11−const host = process.env.HOST || '0.0.0.0';
12−
13−module.exports = function(proxy, allowedHost) {
14− return {
15− // WebpackDevServer 2.4.3 introduced a security fix that prevents remote
16− // websites from potentially accessing local content through DNS rebinding:
17− // https://github.com/webpack/webpack-dev-server/issues/887
18− // https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a
19− // However, it made several existing use cases such as development in cloud
20− // environment or subdomains in development significantly more complicated:
21− // https://github.com/facebook/create-react-app/issues/2271
22− // https://github.com/facebook/create-react-app/issues/2233
23− // While we're investigating better solutions, for now we will take a
24− // compromise. Since our WDS configuration only serves files in the `public`
25− // folder we won't consider accessing them a vulnerability. However, if you
26− // use the `proxy` feature, it gets more dangerous because it can expose
27− // remote code execution vulnerabilities in backends like Django and Rails.
28− // So we will disable the host check normally, but enable it if you have
29− // specified the `proxy` setting. Finally, we let you override it if you
30− // really know what you're doing with a special environment variable.
31− disableHostCheck:
32− !proxy || process.env.DANGEROUSLY_DISABLE_HOST_CHECK === 'true',
33− // Enable gzip compression of generated files.
34− compress: true,
35− // Silence WebpackDevServer's own logs since they're generally not useful.
36− // It will still show compile warnings and errors with this setting.
37− clientLogLevel: 'none',
38− // By default WebpackDevServer serves physical files from current directory
39− // in addition to all the virtual build products that it serves from memory.
40− // This is confusing because those files won’t automatically be available in
41− // production build folder unless we copy them. However, copying the whole
42− // project directory is dangerous because we may expose sensitive files.
43− // Instead, we establish a convention that only files in `public` directory
44− // get served. Our build script will copy `public` into the `build` folder.
45− // In `index.html`, you can get URL of `public` folder with %PUBLIC_URL%:
46− // <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
47− // In JavaScript code, you can access it with `process.env.PUBLIC_URL`.
48− // Note that we only recommend to use `public` folder as an escape hatch
49− // for files like `favicon.ico`, `manifest.json`, and libraries that are
50− // for some reason broken when imported through Webpack. If you just want to
51− // use an image, put it in `src` and `import` it from JavaScript instead.
52− contentBase: paths.appPublic,
53− // By default files from `contentBase` will not trigger a page reload.
54− watchContentBase: true,
55− // Enable hot reloading server. It will provide /sockjs-node/ endpoint
56− // for the WebpackDevServer client so it can learn when the files were
57− // updated. The WebpackDevServer client is included as an entry point
58− // in the Webpack development configuration. Note that only changes
59− // to CSS are currently hot reloaded. JS changes will refresh the browser.
60− hot: true,
61− // It is important to tell WebpackDevServer to use the same "root" path
62− // as we specified in the config. In development, we always serve from /.
63− publicPath: '/',
64− // WebpackDevServer is noisy by default so we emit custom message instead
65− // by listening to the compiler events with `compiler.hooks[...].tap` calls above.
66− quiet: true,
67− // Reportedly, this avoids CPU overload on some systems.
68− // https://github.com/facebook/create-react-app/issues/293
69− // src/node_modules is not ignored to support absolute imports
70− // https://github.com/facebook/create-react-app/issues/1065
71− watchOptions: {
72− ignored: ignoredFiles(paths.appSrc),
73− },
74− // Enable HTTPS if the HTTPS environment variable is set to 'true'
75− https: protocol === 'https',
76− host,
77− overlay: false,
78− historyApiFallback: {
79− // Paths with dots should still use the history fallback.
80− // See https://github.com/facebook/create-react-app/issues/387.
81− disableDotRule: true,
82− },
83− public: allowedHost,
84− proxy,
85− before(app, server) {
86− if (fs.existsSync(paths.proxySetup)) {
87− // This registers user provided middleware for proxy reasons
88− require(paths.proxySetup)(app);
89− }
90−
91− // This lets us fetch source contents from webpack for the error overlay
92− app.use(evalSourceMapMiddleware(server));
93− // This lets us open files from the runtime error overlay.
94− app.use(errorOverlayMiddleware());
95−
96− // This service worker file is effectively a 'no-op' that will reset any
97− // previous service worker registered for the same host:port combination.
98− // We do this in development to avoid hitting the production cache if
99− // it used the same host and port.
100− // https://github.com/facebook/create-react-app/issues/2272#issuecomment-302832432
101− app.use(noopServiceWorkerMiddleware());
102− },
103− };
104−};
contracts/Naive.solnew file+15
@@ -0,0 +1,15 @@
1+pragma solidity 0.4.24;
2+
3+contract Naive {
4+ event Batch();
5+
6+ // This function is called for all messages sent to
7+ // this contract (there is no other function).
8+ // Sending Ether to this contract will cause an exception,
9+ // because the fallback function does not have the `payable`
10+ // modifier.
11+ //
12+ function() external {
13+ emit Batch();
14+ }
15+}
globals.d.tsnew file+13
@@ -0,0 +1,13 @@
1+declare module "\*.svg" {
2+ import React = require("react");
3+ export const ReactComponent: React.FC<React.SVGProps<SVGSVGElement>>;
4+ const src: string;
5+ export default src;
6+}
7+
8+declare module "\*.png" {
9+ import React = require("react");
10+ export const ReactComponent: React.FC<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>>>;
11+ const src: string;
12+ export default src;
13+}
index.htmlnew file+107
@@ -0,0 +1,107 @@
1+<!DOCTYPE html>
2+<html lang="en">
3+ <head>
4+ <meta charset="utf-8" />
5+ <meta
6+ name="viewport"
7+ content="width=device-width, initial-scale=1, shrink-to-fit=no"
8+ />
9+ <meta name="theme-color" content="#fff" />
10+ <link rel="manifest" href="/manifest.json" />
11+ <link rel="shortcut icon" href="/favicon.ico" />
12+
13+ <meta
14+ name="description"
15+ content="Bridge is Urbit ID's identity management interface, wallet navigator, and governance portal."
16+ />
17+ <meta property="og:title" content="Bridge" />
18+ <meta property="og:type" content="website" />
19+ <meta property="og:url" content="https://bridge.urbit.org/" />
20+ <meta
21+ property="og:description"
22+ content="Bridge is Urbit ID's identity management interface, wallet navigator, and governance portal."
23+ />
24+ <meta
25+ property="og:image"
26+ content="https://media.urbit.org/logo/urbit-logo-card.png"
27+ />
28+ <meta name="twitter:site" content="@urbit" key="twitter-site" />
29+ <meta name="twitter:creator" content="@urbit" key="twitter-creator" />
30+ <meta
31+ name="twitter:card"
32+ content="summary_large_image"
33+ key="twitter-card"
34+ />
35+ <meta
36+ name="twitter:image"
37+ content="https://media.urbit.org/logo/urbit-logo-card.png"
38+ key="image"
39+ />
40+
41+ <title>Bridge</title>
42+ <style type="text/css">
43+ .font-hidden {
44+ position: absolute;
45+ overflow: hidden;
46+ clip: rect(0 0 0 0);
47+ height: 1px;
48+ width: 1px;
49+ margin: -1px;
50+ padding: 0;
51+ border: 0;
52+ }
53+ </style>
54+ <script type="module">
55+ import { Buffer } from "buffer";
56+ window.global = window;
57+ window.Buffer = Buffer;
58+ </script>
59+ </head>
60+ <body>
61+ <div id="root"></div>
62+ <script type="module" src="/src/index.tsx"></script>
63+ <!-- Force load all fonts -->
64+ <div
65+ aria-visibility="hidden"
66+ class="font-hidden"
67+ style="font-family:Inter; font-weight:400"
68+ >
69+ &nbsp;
70+ </div>
71+ <div
72+ aria-visibility="hidden"
73+ class="font-hidden"
74+ style="font-family:Inter; font-weight:500"
75+ >
76+ &nbsp;
77+ </div>
78+ <div
79+ aria-visibility="hidden"
80+ class="font-hidden"
81+ style="font-family:Inter; font-weight:600"
82+ >
83+ &nbsp;
84+ </div>
85+ <div
86+ aria-visibility="hidden"
87+ class="font-hidden"
88+ style="font-family:Source Code Pro; font-weight:400"
89+ >
90+ &nbsp;
91+ </div>
92+ <div
93+ aria-visibility="hidden"
94+ class="font-hidden"
95+ style="font-family:Source Code Pro; font-weight:500"
96+ >
97+ &nbsp;
98+ </div>
99+ <div
100+ aria-visibility="hidden"
101+ class="font-hidden"
102+ style="font-family:Source Code Pro; font-weight:600"
103+ >
104+ &nbsp;
105+ </div>
106+ </body>
107+</html>
jsconfig.jsondeleted−5
@@ -1,5 +0,0 @@
1−{
2− "compilerOptions": {
3− "baseUrl": "src"
4− }
5−}
legal/privacy policy.md+11−11
@@ -1,7 +1,7 @@
11
2−Effective date: June 01, 2018
2+Effective date: December 11, 2025
33
4−Tlon Corporation ("us", "we", or "our") operates the website and the Urbit mobile application (the "Service").
4+The Urbit Foundation in cooperation with Tlon Corporation, ("us", "we", or "our") operate the bridge.urbit.org website (the "Service").
55
66This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data.
77
@@ -11,7 +11,7 @@ We use your data to provide and improve the Service. By using the Service, you a
1111
1212**Service**
1313
14−Service means the website and the Urbit mobile application operated by Tlon Corporation
14+Service means the bridge.urbit.org website.
1515
1616**Personal Data**
1717
@@ -81,7 +81,7 @@ Security Cookies. We use Security Cookies for security purposes.
8181
8282**Use of Data**
8383
84−Tlon Corporation uses the collected data for various purposes:
84+We use the collected data for various purposes:
8585
8686- To provide and maintain our Service
8787
@@ -99,13 +99,13 @@ Tlon Corporation uses the collected data for various purposes:
9999
100100- Legal Basis for Processing Personal Data Under General Data Protection Regulation (GDPR)
101101
102−If you are from the European Economic Area (EEA), Tlon Corporation legal basis for collecting and using the personal information described in this Privacy Policy depends on the Personal Data we collect and the specific context in which we collect it.
102+If you are from the European Economic Area (EEA), our legal basis for collecting and using the personal information described in this Privacy Policy depends on the Personal Data we collect and the specific context in which we collect it.
103103
104−**Tlon Corporation may process your Personal Data because:**
104+**Tlon Corporation and The Urbit Foundation may process your Personal Data because:**
105105
106106- We need to perform a contract with you
107107
108−- You have given us permission to do so
108+- You have given us permission to do so as a part of using The Service,
109109
110110- The processing is in our legitimate interests and it's not overridden by your rights
111111
@@ -113,9 +113,9 @@ If you are from the European Economic Area (EEA), Tlon Corporation legal basis f
113113
114114- Retention of Data
115115
116−Tlon Corporation will retain your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.
116+We will retain your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.
117117
118−Tlon Corporation will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of our Service, or we are legally obligated to retain this data for longer time periods.
118+We will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of our Service, or we are legally obligated to retain this data for longer time periods.
119119
120120**Transfer of Data**
121121
@@ -131,7 +131,7 @@ Tlon Corporation will take all steps reasonably necessary to ensure that your da
131131
132132Legal Requirements
133133
134−Tlon Corporation may disclose your Personal Data in the good faith belief that such action is necessary to:
134+We may disclose your Personal Data in the good faith belief that such action is necessary to:
135135
136136- To comply with a legal obligation
137137
@@ -207,4 +207,4 @@ You are advised to review this Privacy Policy periodically for any changes. Chan
207207
208208If you have any questions about this Privacy Policy, please contact us:
209209
210−By email: support@urbit.org
210+By email: support@urbit.org & support@tlon.io
migrations/1_migration.js+52−16
@@ -1,17 +1,13 @@
1−var Azimuth = artifacts.require('azimuth-solidity/contracts/Azimuth.sol');
2−var Polls = artifacts.require('azimuth-solidity/contracts/Polls.sol');
3−var Claims = artifacts.require('azimuth-solidity/contracts/Claims.sol');
4−var Censures = artifacts.require('azimuth-solidity/contracts/Censures.sol');
5−var Ecliptic = artifacts.require('azimuth-solidity/contracts/Ecliptic.sol');
6−var DelegatedSending = artifacts.require(
7− 'azimuth-solidity/contracts/DelegatedSending.sol'
8−);
9−var LinearStarRelease = artifacts.require(
10− 'azimuth-solidity/contracts/LinearStarRelease.sol'
11−);
12−var CSR = artifacts.require(
13− 'azimuth-solidity/contracts/ConditionalStarRelease.sol'
14−);
1+var Azimuth = artifacts.require('azimuth-solidity/Azimuth');
2+var Polls = artifacts.require('azimuth-solidity/Polls');
3+var Claims = artifacts.require('azimuth-solidity/Claims');
4+var Censures = artifacts.require('azimuth-solidity/Censures');
5+var Ecliptic = artifacts.require('azimuth-solidity/Ecliptic');
6+var DelegatedSending = artifacts.require('azimuth-solidity/DelegatedSending');
7+var LSR = artifacts.require('azimuth-solidity/LinearStarRelease');
8+var CSR = artifacts.require('azimuth-solidity/ConditionalStarRelease');
9+// TODO: replace when https://github.com/urbit/azimuth/pull/43 is merged
10+var Naive = artifacts.require('Naive');
1511
1612const user1 = '0xD53208cf45fC9bd7938B200BFf8814A26146688f';
1713const rateUnit = 50;
@@ -67,7 +63,8 @@ module.exports = async function(deployer) {
6763 '0x0000000000000000000000000000000000000000',
6864 azimuth.address,
6965 polls.address,
70− claims.address
66+ claims.address,
67+ '0x0000000000000000000000000000000000000000' // treasury
7168 );
7269
7370 // configure contract ownership
@@ -91,7 +88,10 @@ module.exports = async function(deployer) {
9188 escapeHatchDate
9289 );
9390
94− const lsr = await deployer.deploy(LinearStarRelease, azimuth.address);
91+ const lsr = await deployer.deploy(LSR, azimuth.address);
92+
93+ // deploy naive contract
94+ const naive = await deployer.deploy(Naive);
9595
9696 const own = await ecliptic.owner();
9797 switch (process.env.WITH_TEST_STATE) {
@@ -119,6 +119,7 @@ module.exports = async function(deployer) {
119119 await lsr.deposit(user1, offset);
120120 await csr.deposit(user1, offset + 1);
121121 }
122+ break;
122123 case 'INVITES':
123124 await ecliptic.createGalaxy(0, own);
124125 await ecliptic.configureKeys(0, '0x123', '0x456', 1, false);
@@ -130,6 +131,7 @@ module.exports = async function(deployer) {
130131 await ecliptic.spawn(131328, own);
131132 await ecliptic.spawn(512, own);
132133 await sending.setPoolSize(256, 65792, 1000);
134+ break;
133135 case 'RESIDENTS':
134136 await ecliptic.createGalaxy(0, own);
135137 await ecliptic.configureKeys(0, '0x123', '0x456', 1, false);
@@ -141,6 +143,40 @@ module.exports = async function(deployer) {
141143 await ecliptic.spawn(offset + 256, own);
142144 await ecliptic.transferPoint(offset + 256, user1, false);
143145 }
146+ break;
147+ case 'L2':
148+ // all ships will have as owner:
149+ // 0x6deffb0cafdb11d175f123f6891aa64f01c24f7d
150+ //
151+ // ~zod -> L1
152+ await ecliptic.createGalaxy(0, own);
153+ await ecliptic.configureKeys(0, '0xffff', '0xffff', 1, false);
154+ // ~marzod -> L1
155+ await ecliptic.spawn(256, own);
156+ await ecliptic.configureKeys(256, '0xffff', '0xffff', 1, false);
157+ // ~wanzod -> L1
158+ await ecliptic.spawn(768, own);
159+ await ecliptic.configureKeys(768, '0xffff', '0xffff', 1, false);
160+ // ~wanzod sets spawn-proxy to L2
161+ await ecliptic.setSpawnProxy(
162+ 768,
163+ '0x1111111111111111111111111111111111111111'
164+ );
165+ // ~wicdev-wisryt -> L1
166+ await ecliptic.spawn(65792, own);
167+ // ~panret-tocsel -> L1
168+ await ecliptic.spawn(131328, own);
169+ // ~binzod -> L1
170+ await ecliptic.spawn(512, own);
171+ // ~norsyr-torryn -> L1
172+ await ecliptic.spawn(99549440, own);
173+ // ~norsyr-torryn -> L2
174+ await ecliptic.transferPoint(
175+ 99549440,
176+ '0x1111111111111111111111111111111111111111',
177+ true
178+ );
179+ break;
144180
145181 default:
146182 return;
notes.mdnew file+1
@@ -0,0 +1 @@
1+WIP notes
package-lock.json+49785−16311

This diff is too big to show here.

package.json+101−45

This diff is too big to show here.

public/index.htmldeleted−26

This diff is too big to show here.

scripts/build.jsdeleted−191

This diff is too big to show here.

scripts/start.jsdeleted−145

This diff is too big to show here.

scripts/test.jsdeleted−52

This diff is too big to show here.

src/Bridge.jsdeleted−87

This diff is too big to show here.

src/Bridge.tsxnew file+128

This diff is too big to show here.

src/assets/blank-planet-sigil.svgnew file+39

This diff is too big to show here.

src/assets/history.svgnew file+6

This diff is too big to show here.

src/assets/invite.svgnew file+3

This diff is too big to show here.

src/assets/keyfile.svgnew file+5

This diff is too big to show here.

src/assets/metamask.pngnew file

Binary file not shown.

src/assets/metamask.svgnew file+9

This diff is too big to show here.

src/assets/star.svgnew file+3

This diff is too big to show here.

src/assets/wallet-connect.pngnew file

Binary file not shown.

src/assets/wallet-connect.svgnew file+3

This diff is too big to show here.

src/assets/wallet.svgnew file+3

This diff is too big to show here.

src/azimuth-js.d.tsnew file+2

This diff is too big to show here.

src/components/Accordion.js → src/components/Accordion.jsxrenamed

The content is the same.

src/components/AddressButton.tsxnew file+36

This diff is too big to show here.

src/components/AlertBox.tsxnew file+25

This diff is too big to show here.

src/components/AspectRatio.js → src/components/AspectRatio.jsxrenamed

The content is the same.

src/components/BarGraph.js → src/components/BarGraph.jsxrenamed

The content is the same.

src/components/Blinky.js → src/components/Blinky.jsxrenamed

The content is the same.

src/components/BrowserWarning.tsxnew file+27

This diff is too big to show here.

src/components/Buttons.js → src/components/Buttons.jsxrenamed+8

This diff is too big to show here.

src/components/Chip.js → src/components/Chip.jsxrenamed

The content is the same.

src/components/CopiableAddress.jsdeleted−8

This diff is too big to show here.

src/components/Crumbs.js → src/components/Crumbs.jsxrenamed

The content is the same.

src/components/DownloadKeyfileButton.js → src/components/DownloadKeyfileButton.jsxrenamed+2−2

This diff is too big to show here.

src/components/DownloadSigilButton.js → src/components/DownloadSigilButton.jsxrenamed

The content is the same.

src/components/Footer.js → src/components/Footer.jsxrenamed+4−1

This diff is too big to show here.

src/components/FooterButton.js → src/components/FooterButton.jsxrenamed

The content is the same.

src/components/GlobalErrorBoundary.js → src/components/GlobalErrorBoundary.tsxrenamed+14−7

This diff is too big to show here.

src/components/Greeting.jsdeleted−60

This diff is too big to show here.

src/components/Greeting.jsxnew file+109

This diff is too big to show here.

src/components/Header.js → src/components/Header.jsxrenamed

The content is the same.

src/components/Highlighted.js → src/components/Highlighted.jsxrenamed+1−1

This diff is too big to show here.

src/components/InlineEthereumTransaction.js → src/components/InlineEthereumTransaction.jsxrenamed+111−106

This diff is too big to show here.

src/components/InlineEthereumTransaction.scssnew file+27

This diff is too big to show here.

src/components/InputSigil.js → src/components/InputSigil.jsxrenamed−1

This diff is too big to show here.

src/components/InviteSigilList.js → src/components/InviteSigilList.jsxrenamed

The content is the same.

src/components/L2/Card.scssnew file+46

This diff is too big to show here.

src/components/L2/Card.tsxnew file+43

This diff is too big to show here.

src/components/L2/CreatingInvitesModal.tsxnew file+85

This diff is too big to show here.

src/components/L2/Dropdowns/AccountsDropdown.scssnew file+137

This diff is too big to show here.

src/components/L2/Dropdowns/AccountsDropdown.tsxnew file+145

This diff is too big to show here.

src/components/L2/Dropdowns/Dropdown.scssnew file+65

This diff is too big to show here.

src/components/L2/Dropdowns/Dropdown.tsxnew file+37

This diff is too big to show here.

src/components/L2/Dropdowns/FeeDropdown.scssnew file+71

This diff is too big to show here.

src/components/L2/Dropdowns/FeeDropdown.tsxnew file+136

This diff is too big to show here.

src/components/L2/Headers/AdvancedOptions.scssnew file+54

This diff is too big to show here.

src/components/L2/Headers/AdvancedOptions.tsxnew file+71

This diff is too big to show here.

src/components/L2/Headers/HeaderButton.scssnew file+10

This diff is too big to show here.

src/components/L2/Headers/HeaderButton.tsxnew file+23

This diff is too big to show here.

src/components/L2/Headers/L2BackHeader.scssnew file+40

This diff is too big to show here.

src/components/L2/Headers/L2BackHeader.tsxnew file+77

This diff is too big to show here.

src/components/L2/Headers/L2PointHeader.scssnew file+90

This diff is too big to show here.

src/components/L2/Headers/L2PointHeader.tsxnew file+102

This diff is too big to show here.

src/components/L2/InviteConverter.tsxnew file+292

This diff is too big to show here.

src/components/L2/LayerIndicator.scssnew file+59

This diff is too big to show here.

src/components/L2/LayerIndicator.tsxnew file+26

This diff is too big to show here.

src/components/L2/LoadingOverlay.scssnew file+40

This diff is too big to show here.

src/components/L2/LoadingOverlay.tsxnew file+26

This diff is too big to show here.

src/components/L2/Modal.scssnew file+53

This diff is too big to show here.

src/components/L2/Modal.tsxnew file+41

This diff is too big to show here.

src/components/L2/Paginator.scssnew file+30

This diff is too big to show here.

src/components/L2/Paginator.tsxnew file+41

This diff is too big to show here.

src/components/L2/PendingTransaction.scssnew file+64

This diff is too big to show here.

src/components/L2/PendingTransaction.tsxnew file+46

This diff is too big to show here.

src/components/L2/PermissionIndicator.scssnew file+15

This diff is too big to show here.

src/components/L2/PermissionIndicator.tsxnew file+35

This diff is too big to show here.

src/components/L2/PointList.tsxnew file+65

This diff is too big to show here.

src/components/L2/Points/IncomingPoint.scssnew file+47

This diff is too big to show here.

src/components/L2/Points/IncomingPoint.tsxnew file+46

This diff is too big to show here.

src/components/L2/Window/BodyPane.scssnew file+89

This diff is too big to show here.

src/components/L2/Window/BodyPane.tsxnew file+28

This diff is too big to show here.

src/components/L2/Window/HeaderPane.scssnew file+54

This diff is too big to show here.

src/components/L2/Window/HeaderPane.tsxnew file+14

This diff is too big to show here.

src/components/L2/Window/Window.scssnew file+9

This diff is too big to show here.

src/components/L2/Window/Window.tsxnew file+14

This diff is too big to show here.

src/components/LoadingBar.js → src/components/LoadingBar.jsxrenamed

The content is the same.

src/components/LoginButton.js → src/components/LoginButton.jsxrenamed

The content is the same.

src/components/MaybeSigil.js → src/components/MaybeSigil.jsxrenamed

The content is the same.

src/components/MiniBackButton.jsdeleted−11

This diff is too big to show here.

src/components/MiniBackButton.jsxnew file+14

This diff is too big to show here.

src/components/MiniBackButton.scssnew file+10

This diff is too big to show here.

src/components/NavHeader.js → src/components/NavHeader.jsxrenamed+4−1

This diff is too big to show here.

src/components/NeedFundsNotice.js → src/components/NeedFundsNotice.jsxrenamed+4−2

This diff is too big to show here.

src/components/NetworkKeys.jsxnew file+98

This diff is too big to show here.

src/components/NetworkingKeys.jsdeleted−115

This diff is too big to show here.

src/components/NoticeBox.js → src/components/NoticeBox.jsxrenamed

The content is the same.

src/components/PaperBuilder.js → src/components/PaperBuilder.jsxrenamed

The content is the same.

src/components/Passport.js → src/components/Passport.jsxrenamed+40−112

This diff is too big to show here.

src/components/ProgressButton.js → src/components/ProgressButton.jsxrenamed

The content is the same.

src/components/Router.js → src/components/Router.jsxrenamed

The content is the same.

src/components/Sigil.js → src/components/Sigil.jsxrenamed+2−2

This diff is too big to show here.

src/components/SigilMini.scssnew file+46

This diff is too big to show here.

src/components/Steps.js → src/components/Steps.jsxrenamed

The content is the same.

src/components/Tabs.js → src/components/Tabs.jsxrenamed

The content is the same.

src/components/UploadButton.js → src/components/UploadButton.jsxrenamed

The content is the same.

src/components/View.js → src/components/View.tsxrenamed+39−14

This diff is too big to show here.

src/components/ViewHeader.js → src/components/ViewHeader.jsxrenamed

The content is the same.

src/components/WarningBox.js → src/components/WarningBox.jsxrenamed

The content is the same.

src/components/WithErrorBoundary.js → src/components/WithErrorBoundary.jsxrenamed

The content is the same.

src/components/WithTooltip.jsdeleted−23

This diff is too big to show here.

src/components/WithTooltip.tsxnew file+56

This diff is too big to show here.

src/components/alerts/L2VulnAlert.tsxnew file+49

This diff is too big to show here.

src/components/copiable/CopiableAddress.jsxnew file+19

This diff is too big to show here.

src/components/copiable/CopiableAddressWrap.jsxnew file+10

This diff is too big to show here.

src/components/CopiableWithTooltip.js → src/components/copiable/CopiableWithTooltip.jsxrenamed+8−7

This diff is too big to show here.

src/components/CopyButton.js → src/components/copiable/CopyButton.jsxrenamed+1−29

This diff is too big to show here.

src/components/copiable/CopyButtonWide.tsxnew file+28

This diff is too big to show here.

src/components/form/TicketInputAccessory.scssnew file+7

This diff is too big to show here.

src/components/form/TicketInputAccessory.tsxnew file+17

This diff is too big to show here.

src/form/BridgeForm.js → src/form/BridgeForm.tsxrenamed+27−4

This diff is too big to show here.

src/form/ColorInput.js → src/form/ColorInput.jsxrenamed

The content is the same.

src/form/EmailChipInput.js → src/form/EmailChipInput.jsxrenamed+1−1

This diff is too big to show here.

src/form/FormError.js → src/form/FormError.jsxrenamed

The content is the same.

src/form/Inputs.js → src/form/Inputs.tsxrenamed+147−11

This diff is too big to show here.

src/form/SubmitButton.js → src/form/SubmitButton.jsxrenamed

The content is the same.

src/form/UploadInput.js → src/form/UploadInput.jsxrenamed

The content is the same.

src/form/formatters.test.tsnew file+45

This diff is too big to show here.

src/form/formatters.js → src/form/formatters.tsrenamed+56−8

This diff is too big to show here.

src/form/validators.js+8−1

This diff is too big to show here.

src/index.jsdeleted−10

This diff is too big to show here.

src/index.tsxnew file+7

This diff is too big to show here.

src/indigo-react/components/AccessoryIcon.js → src/indigo-react/components/AccessoryIcon.jsxrenamed

The content is the same.

src/indigo-react/components/Button.js → src/indigo-react/components/Button.jsxrenamed+2−2

This diff is too big to show here.

src/indigo-react/components/CheckboxInput.jsdeleted−72

This diff is too big to show here.

src/indigo-react/components/CheckboxInput.jsxnew file+54

This diff is too big to show here.

src/indigo-react/components/Flex.d.tsnew file+1

This diff is too big to show here.

src/indigo-react/components/Flex.js → src/indigo-react/components/Flex.jsxrenamed

The content is the same.

src/indigo-react/components/Grid.d.tsnew file+1

This diff is too big to show here.

src/indigo-react/components/Grid.js → src/indigo-react/components/Grid.jsxrenamed+10−2

This diff is too big to show here.

src/indigo-react/components/IconButton.js → src/indigo-react/components/IconButton.jsxrenamed

The content is the same.

src/indigo-react/components/IndigoApp.js → src/indigo-react/components/IndigoApp.jsxrenamed+2−2

This diff is too big to show here.

src/indigo-react/components/Input.js → src/indigo-react/components/Input.jsxrenamed+3−14

This diff is too big to show here.

src/indigo-react/components/LinkButton.js → src/indigo-react/components/LinkButton.jsxrenamed

The content is the same.

src/indigo-react/components/SelectInput.js → src/indigo-react/components/SelectInput.jsxrenamed+1−1

This diff is too big to show here.

src/indigo-react/components/ToggleInput.js → src/indigo-react/components/ToggleInput.jsxrenamed

The content is the same.

src/indigo-react/components/Typography.js → src/indigo-react/components/Typography.jsxrenamed

The content is the same.

src/indigo-react/index.js+1−1

This diff is too big to show here.

src/indigo-react/indigo.css+16

This diff is too big to show here.

src/lib/LocalRouter.js → src/lib/LocalRouter.tsrenamed+2−1

This diff is too big to show here.

src/lib/MediaQuery.js → src/lib/MediaQuery.jsxrenamed

The content is the same.

src/lib/SolarisClient.js−2

This diff is too big to show here.

src/lib/WalletConnect.tsnew file+63

This diff is too big to show here.

src/lib/authToken.jsdeleted−44

This diff is too big to show here.

src/lib/authToken.tsnew file+120

This diff is too big to show here.

src/lib/capitalize.js+1−1

This diff is too big to show here.

src/lib/constants.jsdeleted−93

This diff is too big to show here.

src/lib/constants.tsnew file+287

This diff is too big to show here.

src/lib/contracts.js+5−11

This diff is too big to show here.

src/lib/convertToInt.js+1−1

This diff is too big to show here.

src/lib/expiredPlanetsWithInviteCodes.jsonnew file+1445

This diff is too big to show here.

src/lib/explorer.js+2−2

This diff is too big to show here.

src/lib/flags.js+13−1

This diff is too big to show here.

src/lib/flowCommand.tsnew file+113

This diff is too big to show here.

src/lib/getSuggestedGasPrice.js+107−30

This diff is too big to show here.

src/lib/invite.js+7−3

This diff is too big to show here.

src/lib/inviteMail.js+4−1

This diff is too big to show here.

src/lib/isPromise.js+1−1

This diff is too big to show here.

src/lib/keys.js+62−8

This diff is too big to show here.

src/lib/ledger.jsdeleted−41

This diff is too big to show here.

src/lib/lib.js+5−1

This diff is too big to show here.

src/lib/maybeGetResult.tsnew file+12

This diff is too big to show here.

src/lib/metamask.jsdeleted−28

This diff is too big to show here.

src/lib/metamask.tsnew file+79

This diff is too big to show here.

src/lib/need.js+4

This diff is too big to show here.

src/lib/nest.js+1−1

This diff is too big to show here.

src/lib/network.js+32−11

This diff is too big to show here.

src/lib/networkCode.js+5

This diff is too big to show here.

src/lib/patp2dec.js+2−2

This diff is too big to show here.

src/lib/pluralize.js+1−1

This diff is too big to show here.

src/lib/proxy.js+19−2

This diff is too big to show here.

src/lib/reticket.js+64−26

This diff is too big to show here.

src/lib/routeNames.jsdeleted−30

This diff is too big to show here.

src/lib/routeNames.tsnew file+39

This diff is too big to show here.

src/lib/router.js → src/lib/router.tsrenamed+28−11

This diff is too big to show here.

src/lib/starRelease.js+52−18

This diff is too big to show here.

src/lib/tank.js+17−8

This diff is too big to show here.

src/lib/timeout.js+1−1

This diff is too big to show here.

src/lib/trezor.jsdeleted−54

This diff is too big to show here.

src/lib/txn.jsdeleted−228

This diff is too big to show here.

src/lib/txn.tsnew file+284

This diff is too big to show here.

src/lib/types/BridgeWallet.tsnew file+6

This diff is too big to show here.

src/lib/types/ITxData.tsnew file+9

This diff is too big to show here.

src/lib/types/Invite.tsnew file+14

This diff is too big to show here.

src/lib/types/Keypair.tsnew file+7

This diff is too big to show here.

src/lib/types/L1Point.tsnew file+20

This diff is too big to show here.

src/lib/types/L2Transaction.tsnew file+85

This diff is too big to show here.

src/lib/types/NetworkKeys.tsnew file+11

This diff is too big to show here.

src/lib/types/PendingL1Transaction.tsnew file+24

This diff is too big to show here.

src/lib/types/Point.tsnew file+255

This diff is too big to show here.

src/lib/types/PointLayer.tsnew file+4

This diff is too big to show here.

src/lib/types/ValueOf.tsnew file+1

This diff is too big to show here.

src/lib/types/WalletConnectWallet.tsnew file+5

This diff is too big to show here.

src/lib/useBreakpoints.jsdeleted−5

This diff is too big to show here.

src/lib/useBreakpoints.tsxnew file+6

This diff is too big to show here.

src/lib/useBrowser.tsnew file+32

This diff is too big to show here.

src/lib/useCopiable.js → src/lib/useCopiable.tsrenamed+5−5

This diff is too big to show here.

src/lib/useEthereumTransaction.js+48−20

This diff is too big to show here.

src/lib/useGasPrice.js+36−24

This diff is too big to show here.

src/lib/useHasNetworkKeysSet.tsxnew file+25

This diff is too big to show here.

src/lib/useImpliedTicket.jsdeleted−14

This diff is too big to show here.

src/lib/useImpliedTicket.test.tsnew file+77

This diff is too big to show here.

src/lib/useImpliedTicket.tsnew file+40

This diff is too big to show here.

src/lib/useInviter.jsdeleted−229

This diff is too big to show here.

src/lib/useInvites.jsdeleted−7

This diff is too big to show here.

src/lib/useIsEclipticOwner.js+1−1

This diff is too big to show here.

src/lib/useIsExpiredInvite.tsnew file+23

This diff is too big to show here.

src/lib/useKeyfileGenerator.jsdeleted−136

This diff is too big to show here.

src/lib/useKeyfileGenerator.tsnew file+256

This diff is too big to show here.

src/lib/useLifecycle.js+1

This diff is too big to show here.

src/lib/useMailer.js+2−2

This diff is too big to show here.

src/lib/useOnClickOutside.tsnew file+34

This diff is too big to show here.

src/lib/usePermissionsForPoint.js+1−1

This diff is too big to show here.

src/lib/usePointBirthday.jsdeleted−7

This diff is too big to show here.

src/lib/useReticketL2Spawn.tsnew file+136

This diff is too big to show here.

src/lib/useRoller.tsnew file+857

This diff is too big to show here.

src/lib/useRollerOptions.tsnew file+59

This diff is too big to show here.

src/lib/useRollerPoller.tsnew file+44

This diff is too big to show here.

src/lib/useRouter.js → src/lib/useRouter.tsxrenamed+54−13

This diff is too big to show here.

src/lib/useSeenMissingKeys.jsnew file+7

This diff is too big to show here.

src/lib/useSyncPoints.js+9−9

This diff is too big to show here.

src/lib/useWalletConnect.tsnew file+360

This diff is too big to show here.

src/lib/utils/address.test.tsnew file+19

This diff is too big to show here.

src/lib/utils/address.tsnew file+34

This diff is too big to show here.

src/lib/utils/array.tsnew file+2

This diff is too big to show here.

src/lib/utils/date.tsnew file+19

This diff is too big to show here.

src/lib/utils/hex.tsnew file+11

This diff is too big to show here.

src/lib/utils/invite.tsnew file+34

This diff is too big to show here.

src/lib/utils/notifications.tsnew file+5

This diff is too big to show here.

src/lib/utils/point.tsnew file+43

This diff is too big to show here.

src/lib/utils/roller.tsnew file+404

This diff is too big to show here.

src/lib/utils/wallet.tsnew file+7

This diff is too big to show here.

src/lib/validators.jsdeleted−124

This diff is too big to show here.

src/lib/validators.tsnew file+166

This diff is too big to show here.

src/lib/wallet.jsdeleted−120

This diff is too big to show here.

src/lib/wallet.tsnew file+47

This diff is too big to show here.

src/lib/walletgen.js → src/lib/walletgen.tsrenamed+35−16

This diff is too big to show here.

src/nockjs/TODOdeleted−42

This diff is too big to show here.

src/nockjs/bits.jsdeleted−333

This diff is too big to show here.

src/nockjs/compiler.jsdeleted−726

This diff is too big to show here.

src/nockjs/hamt.jsdeleted−137

This diff is too big to show here.

src/nockjs/list.jsdeleted−40

This diff is too big to show here.

src/nockjs/noun.jsdeleted−367

This diff is too big to show here.

src/nockjs/serial.jsdeleted−167

This diff is too big to show here.

src/nockjs/test/ack.jsdeleted−51

This diff is too big to show here.

src/nockjs/test/add.jsdeleted−40

This diff is too big to show here.

src/nockjs/test/bits.jsdeleted−15

This diff is too big to show here.

src/nockjs/test/decrement.jsdeleted−37

This diff is too big to show here.

src/nockjs/test/hamt.jsdeleted−16

This diff is too big to show here.

src/nockjs/test/noun.jsdeleted−88

This diff is too big to show here.

src/nockjs/test/serial.jsdeleted−22

This diff is too big to show here.

src/react-app-env.d.tsnew file+7

This diff is too big to show here.

src/setupTests.tsnew file+1

This diff is too big to show here.

src/store/Provider.js+1−3

This diff is too big to show here.

src/store/history.js → src/store/history.tsxrenamed+23−6

This diff is too big to show here.

src/store/hosting.jsdeleted−37

This diff is too big to show here.

src/store/lib/useBirthdaysStore.jsdeleted−59

This diff is too big to show here.

src/store/lib/useControlledPointsStore.js+92−21

This diff is too big to show here.

src/store/lib/useDetailsStore.jsdeleted−50

This diff is too big to show here.

src/store/lib/useDetailsStore.tsnew file+74

This diff is too big to show here.

src/store/lib/useHostingStore.jsdeleted−244

This diff is too big to show here.

src/store/lib/useInvitesStore.jsdeleted−71

This diff is too big to show here.

src/store/lib/usePointStore.js+9−36

This diff is too big to show here.

src/store/lib/useRekeyDateStore.js+1−1

This diff is too big to show here.

src/store/lib/useResidentsStore.js → src/store/lib/useResidentsStore.tsrenamed+18−8

This diff is too big to show here.

src/store/lib/useStarReleaseStore.js+10−3

This diff is too big to show here.

src/store/network.jsdeleted−131

This diff is too big to show here.

src/store/network.jsxnew file+162

This diff is too big to show here.

src/store/online.js → src/store/online.jsxrenamed

The content is the same.

src/store/pointCache.jsdeleted−28

This diff is too big to show here.

src/store/pointCache.jsxnew file+53

This diff is too big to show here.

src/store/pointCursor.js → src/store/pointCursor.jsxrenamed+25−3

This diff is too big to show here.

src/store/rollerStore.tsnew file+106

This diff is too big to show here.

src/store/starRelease.js → src/store/starRelease.jsxrenamed

The content is the same.

src/store/storage/roller.tsnew file+57

This diff is too big to show here.

src/store/timerStore.tsnew file+16

This diff is too big to show here.

src/store/txnCursor.js → src/store/txnCursor.jsxrenamed

The content is the same.

src/store/wallet.js → src/store/wallet.jsxrenamed+73−8

This diff is too big to show here.

src/style/anim.css+8−10

This diff is too big to show here.

src/style/bridge.scss+21

This diff is too big to show here.

src/style/fadeable.scssnew file+21

This diff is too big to show here.

src/style/form-reset.scss+2−2

This diff is too big to show here.

src/style/index.scss+4

This diff is too big to show here.

src/style/master-key.scssnew file+37

This diff is too big to show here.

src/style/pulsating-circle-bg.scssnew file+18

This diff is too big to show here.

src/style/shared/variables.scssnew file+16

This diff is too big to show here.

src/urbit-key-generation.d.tsnew file+125

This diff is too big to show here.

src/urbit-ob.d.tsnew file+1

This diff is too big to show here.

src/views/AcceptLockup.jsxnew file+156

This diff is too big to show here.

src/views/AcceptTransfer.jsdeleted−93

This diff is too big to show here.

src/views/AcceptTransfer.tsxnew file+206

This diff is too big to show here.

src/views/Activate.js → src/views/Activate.jsxrenamed+6−8

This diff is too big to show here.

src/views/Activate/ActivateButton.tsxnew file+45

This diff is too big to show here.

src/views/Activate/ActivateCode.jsdeleted−222

This diff is too big to show here.

src/views/Activate/ActivateCode.tsxnew file+100

This diff is too big to show here.

src/views/Activate/ActivateCodeForm.tsxnew file+249

This diff is too big to show here.

src/views/Activate/ActivateHeader.tsxnew file+29

This diff is too big to show here.

src/views/Activate/ActivateMasterKey.tsxnew file+38

This diff is too big to show here.

src/views/Activate/ActivateParagraph.tsxnew file+33

This diff is too big to show here.

src/views/Activate/ActivatePassport.jsdeleted−84

This diff is too big to show here.

src/views/Activate/ActivateSteps.tsxnew file+49

This diff is too big to show here.

src/views/Activate/ActivateView.scssnew file+34

This diff is too big to show here.

src/views/Activate/ActivateView.tsxnew file+82

This diff is too big to show here.

src/views/Activate/CodeExpired.scssnew file+3

This diff is too big to show here.

src/views/Activate/CodeExpired.tsxnew file+47

This diff is too big to show here.

src/views/Activate/DangerBox.tsxnew file+28

This diff is too big to show here.

src/views/Activate/MasterKey.tsxnew file+122

This diff is too big to show here.

src/views/Activate/MasterKeyConfirm.scssnew file+72

This diff is too big to show here.

src/views/Activate/MasterKeyConfirm.tsxnew file+189

This diff is too big to show here.

src/views/Activate/MasterKeyCopy.tsxnew file+37

This diff is too big to show here.

src/views/Activate/MasterKeyDownload.tsxnew file+161

This diff is too big to show here.

src/views/Activate/MasterKeyPresenter.tsxnew file+63

This diff is too big to show here.

src/views/Activate/MasterKeyReveal.tsxnew file+108

This diff is too big to show here.

src/views/Activate/MasterKeyTransfer.tsxnew file+153

This diff is too big to show here.

src/views/Activate/PassportDownload.jsdeleted−91

This diff is too big to show here.

src/views/Activate/PassportTransfer.jsdeleted−203

This diff is too big to show here.

src/views/Activate/PassportVerify.jsdeleted−103

This diff is too big to show here.

src/views/Activate/PassportView.jsdeleted−27

This diff is too big to show here.

src/views/Activate/PointPresenter.tsxnew file+65

This diff is too big to show here.

src/views/Activate/ActivateFlow.js → src/views/Activate/useActivateFlow.jsrenamed

The content is the same.

src/views/Activate/useActivateFlowState.js+56−11

This diff is too big to show here.

src/views/Activate/useFadeIn.tsnew file+16

This diff is too big to show here.

src/views/Activate/withFadeable.tsxnew file+28

This diff is too big to show here.

src/views/Admin.jsdeleted−73

This diff is too big to show here.

src/views/Admin/AdminCancelTransfer.jsdeleted−84

This diff is too big to show here.

src/views/Adopt.jsdeleted−88

This diff is too big to show here.

src/views/Bitcoin/Bitcoin.scssnew file+29

This diff is too big to show here.

src/views/Bitcoin/Bitcoin.tsxnew file+213

This diff is too big to show here.

src/views/CancelTransfer.jsdeleted−95

This diff is too big to show here.

src/views/CancelTransfer.tsxnew file+166

This diff is too big to show here.

src/views/CreateGalaxy.js → src/views/CreateGalaxy.jsxrenamed+5−5

This diff is too big to show here.

src/views/Disclaimer.jsdeleted−108

This diff is too big to show here.

src/views/Disclaimer.jsxnew file+143

This diff is too big to show here.

src/views/Invite/CSVButton.tsxnew file+54

This diff is too big to show here.

src/views/Invite/Cohort.jsdeleted−401

This diff is too big to show here.

src/views/Invite/Cohort.scssnew file+236

This diff is too big to show here.

src/views/Invite/Cohort.tsxnew file+203

This diff is too big to show here.

src/views/Invite/Email.jsdeleted−225

This diff is too big to show here.

src/views/Invite/GenerateInvites.tsxnew file+152

This diff is too big to show here.

src/views/Invite/GeneratingModal.tsxnew file+88

This diff is too big to show here.

src/views/Invite/Inviter.jsdeleted−54

This diff is too big to show here.

src/views/Invite/Url.jsdeleted−108

This diff is too big to show here.

src/views/Invite/useInvites.tsnew file+383

This diff is too big to show here.

src/views/IssueChild.jsdeleted−197

This diff is too big to show here.

src/views/Login.jsdeleted−113

This diff is too big to show here.

src/views/Login.scssnew file+3

This diff is too big to show here.

src/views/Login.tsxnew file+104

This diff is too big to show here.

src/views/Login/Advanced.jsdeleted−37

This diff is too big to show here.

src/views/Login/Hardware.jsdeleted−52

This diff is too big to show here.

src/views/Login/Keystore.jsdeleted−92

This diff is too big to show here.

src/views/Login/Ledger.jsdeleted−230

This diff is too big to show here.

src/views/Login/LoginSelector.scssnew file+120

This diff is too big to show here.

src/views/Login/LoginSelector.tsxnew file+333

This diff is too big to show here.

src/views/Login/Metamask.jsdeleted−85

This diff is too big to show here.

src/views/Login/Metamask.jsxnew file+128

This diff is too big to show here.

src/views/Login/Mnemonic.jsdeleted−123

This diff is too big to show here.

src/views/Login/Mnemonic.tsxnew file+153

This diff is too big to show here.

src/views/Login/Other.jsdeleted−72

This diff is too big to show here.

src/views/Login/Other.tsxnew file+77

This diff is too big to show here.

src/views/Login/PrivateKey.jsdeleted−63

This diff is too big to show here.

src/views/Login/Ticket.jsdeleted−287

This diff is too big to show here.

src/views/Login/Ticket.tsxnew file+292

This diff is too big to show here.

src/views/Login/Trezor.jsdeleted−154

This diff is too big to show here.

src/views/Login/WalletConnect.tsxnew file+123

This diff is too big to show here.

src/views/Ops/Ops.scssnew file+14

This diff is too big to show here.

src/views/Ops/Ops.tsxnew file+126

This diff is too big to show here.

src/views/Ops/RequestRow.tsxnew file+47

This diff is too big to show here.

src/views/Ops/Requests.scssnew file+91

This diff is too big to show here.

src/views/Ops/Requests.tsxnew file+96

This diff is too big to show here.

src/views/Ops/ResidentRow.tsxnew file+64

This diff is too big to show here.

src/views/Ops/Residents.scssnew file+123

This diff is too big to show here.

src/views/Ops/Residents.tsxnew file+82

This diff is too big to show here.

src/views/Party/PartySetPoolSize.js → src/views/Party/PartySetPoolSize.jsxrenamed+7−7

This diff is too big to show here.

src/views/Point.jsdeleted−306

This diff is too big to show here.

src/views/Point/IssueChild.scssnew file+59

This diff is too big to show here.

src/views/Point/IssueChild.tsxnew file+349

This diff is too big to show here.

src/views/Point/MigrateL2.scssnew file+192

This diff is too big to show here.

src/views/Point/MigrateL2.tsxnew file+378

This diff is too big to show here.

src/views/Point/PatpBadge.tsxnew file+28

This diff is too big to show here.

src/views/Point/Point.scssnew file+76

This diff is too big to show here.

src/views/Point/Point.tsxnew file+216

This diff is too big to show here.

src/views/Point/Senate.jsxnew file+40

This diff is too big to show here.

src/views/Point/UrbitID.jsxnew file+62

This diff is too big to show here.

src/views/UrbitOS.js → src/views/Point/UrbitOS.jsxrenamed+18−18

This diff is too big to show here.

src/views/Points.jsdeleted−371

This diff is too big to show here.

src/views/Points.scssnew file+28

This diff is too big to show here.

src/views/Points.tsxnew file+392

This diff is too big to show here.

src/views/Points/StarReleaseButton.scssnew file+27

This diff is too big to show here.

src/views/Points/StarReleaseButton.tsxnew file+31

This diff is too big to show here.

src/views/Release.jsdeleted−86

This diff is too big to show here.

src/views/Release/Active.jsdeleted−101

This diff is too big to show here.

src/views/Release/Locked.jsdeleted−179

This diff is too big to show here.

src/views/Release/StarRelease.scssnew file+65

This diff is too big to show here.

src/views/Release/StarRelease.tsxnew file+61

This diff is too big to show here.

src/views/Release/TransferForm.tsxnew file+156

This diff is too big to show here.

src/views/Release/WithdrawForm.tsxnew file+137

This diff is too big to show here.

src/views/Release/useTransferLockup.tsnew file+24

This diff is too big to show here.

src/views/Release/useWithdrawStars.tsnew file+19

This diff is too big to show here.

src/views/Residents.jsdeleted−233

This diff is too big to show here.

src/views/Senate.js → src/views/Senate/Documents.jsxrenamed+66−80

This diff is too big to show here.

src/views/Senate/Upgrades.jsxnew file+199

This diff is too big to show here.

src/views/Transactions/AddressRow.tsxnew file+18

This diff is too big to show here.

src/views/Transactions/PatpRow.tsxnew file+33

This diff is too big to show here.

src/views/Transactions/TransactionHistory.scssnew file+333

This diff is too big to show here.

src/views/Transactions/TransactionHistory.tsxnew file+186

This diff is too big to show here.

src/views/Transactions/TransactionRow.tsxnew file+116

This diff is too big to show here.

src/views/UrbitID.jsdeleted−88

This diff is too big to show here.

src/views/UrbitID/DownloadKeys.jsdeleted−72

This diff is too big to show here.

src/views/UrbitID/DownloadKeys.jsxnew file+82

This diff is too big to show here.

src/views/UrbitID/Home.jsdeleted−164

This diff is too big to show here.

src/views/UrbitID/Home.tsxnew file+219

This diff is too big to show here.

src/views/UrbitID/ResetKeys.js → src/views/UrbitID/ResetKeys.jsxrenamed+16−8

This diff is too big to show here.

src/views/UrbitID/ResetKeys/ResetConfirm.js → src/views/UrbitID/ResetKeys/ResetConfirm.jsxrenamed+1−1

This diff is too big to show here.

src/views/UrbitID/ResetKeys/ResetDownload.js → src/views/UrbitID/ResetKeys/ResetDownload.jsxrenamed+2−2

This diff is too big to show here.

src/views/UrbitID/ResetKeys/ResetExecute.jsdeleted−193

This diff is too big to show here.

src/views/UrbitID/ResetKeys/ResetExecute.tsxnew file+306

This diff is too big to show here.

src/views/UrbitID/ResetKeys/ResetVerify.js → src/views/UrbitID/ResetKeys/ResetVerify.jsxrenamed+1−1

This diff is too big to show here.

src/views/UrbitID/SetProxy.jsdeleted−227

This diff is too big to show here.

src/views/UrbitID/SetProxy.jsxnew file+339

This diff is too big to show here.

src/views/UrbitID/SetProxy.scssnew file+9

This diff is too big to show here.

src/views/UrbitID/SigilGenerator.jsdeleted−123

This diff is too big to show here.

src/views/UrbitID/SigilGenerator.jsxnew file+131

This diff is too big to show here.

src/views/UrbitID/Transfer.jsdeleted−122

This diff is too big to show here.

src/views/UrbitID/Transfer.tsxnew file+217

This diff is too big to show here.

src/views/UrbitID/UrbitID.scssnew file+21

This diff is too big to show here.

src/views/UrbitOS/AccessCode.test.tsxnew file+28

This diff is too big to show here.

src/views/UrbitOS/AccessCode.tsxnew file+24

This diff is too big to show here.

src/views/UrbitOS/ChangeSponsor.jsdeleted−199

This diff is too big to show here.

src/views/UrbitOS/ChangeSponsor.tsxnew file+273

This diff is too big to show here.

src/views/UrbitOS/Home.jsdeleted−275

This diff is too big to show here.

src/views/UrbitOS/Home.tsxnew file+162

This diff is too big to show here.

src/views/UrbitOS/NetworkKeys.scssnew file+56

This diff is too big to show here.

src/views/UrbitOS/NetworkKeys.tsxnew file+452

This diff is too big to show here.

src/views/UrbitOS/NetworkingKeys.jsdeleted−285

This diff is too big to show here.

src/views/UrbitOS/UrbitOS.scssnew file+15

This diff is too big to show here.

src/worker/index.tsnew file+7

This diff is too big to show here.

src/worker/worker.tsnew file+9

This diff is too big to show here.

truffle-config.js+4−8

This diff is too big to show here.

tsconfig.jsonnew file+24

This diff is too big to show here.

vite-env.d.tsnew file+2

This diff is too big to show here.

vite.config.tsnew file+104

This diff is too big to show here.

window.d.tsnew file+9

This diff is too big to show here.

xcode-selectnew file

No changes to the content.