diff --git a/packages/all-config/.skip-build b/packages/all-config/.skip-build new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/all-config/.skip-npm b/packages/all-config/.skip-npm new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/all-config/LICENSE b/packages/all-config/LICENSE new file mode 100644 index 0000000000..0d381b2e97 --- /dev/null +++ b/packages/all-config/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/packages/all-config/README.md b/packages/all-config/README.md new file mode 100644 index 0000000000..21cb500530 --- /dev/null +++ b/packages/all-config/README.md @@ -0,0 +1,3 @@ +# @polkadot/apps-config + +General config for various services, including settings, external links & types diff --git a/packages/all-config/package.json b/packages/all-config/package.json new file mode 100644 index 0000000000..699d80fc20 --- /dev/null +++ b/packages/all-config/package.json @@ -0,0 +1,18 @@ +{ + "name": "@polkadot/apps-config", + "private": true, + "version": "0.40.0-beta.62", + "main": "index.js", + "repository": "https://github.com/polkadot-js/apps.git", + "author": "Jaco Greeff ", + "maintainers": [ + "Jaco Greeff " + ], + "contributors": [], + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.8.4", + "@polkadot/ui-assets": "^0.52.0-beta.4", + "edgeware-node-types": "^1.2.0" + } +} diff --git a/packages/react-api/src/overrides/chain/index.ts b/packages/all-config/src/api/chain/index.ts similarity index 74% rename from packages/react-api/src/overrides/chain/index.ts rename to packages/all-config/src/api/chain/index.ts index 34083667fb..660efd1146 100644 --- a/packages/react-api/src/overrides/chain/index.ts +++ b/packages/all-config/src/api/chain/index.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2020 @polkadot/react-api authors & contributors +// Copyright 2017-2020 @polkadot/apps-config authors & contributors // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. diff --git a/packages/react-api/src/overrides/chain/westend.ts b/packages/all-config/src/api/chain/westend.ts similarity index 80% rename from packages/react-api/src/overrides/chain/westend.ts rename to packages/all-config/src/api/chain/westend.ts index 4c2a5c3f6c..2f4b6013e3 100644 --- a/packages/react-api/src/overrides/chain/westend.ts +++ b/packages/all-config/src/api/chain/westend.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2020 @polkadot/react-api authors & contributors +// Copyright 2017-2020 @polkadot/apps-config authors & contributors // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. diff --git a/packages/all-config/src/api/index.ts b/packages/all-config/src/api/index.ts new file mode 100644 index 0000000000..2116c8dc13 --- /dev/null +++ b/packages/all-config/src/api/index.ts @@ -0,0 +1,11 @@ +// Copyright 2017-2020 @polkadot/apps-config authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +import typesChain from './chain'; +import typesSpec from './spec'; + +export { + typesChain, + typesSpec +}; diff --git a/packages/react-api/src/overrides/spec/centrifuge-chain.ts b/packages/all-config/src/api/spec/centrifuge-chain.ts similarity index 89% rename from packages/react-api/src/overrides/spec/centrifuge-chain.ts rename to packages/all-config/src/api/spec/centrifuge-chain.ts index 3c5a96d472..c448637042 100644 --- a/packages/react-api/src/overrides/spec/centrifuge-chain.ts +++ b/packages/all-config/src/api/spec/centrifuge-chain.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2020 @polkadot/react-api authors & contributors +// Copyright 2017-2020 @polkadot/apps-config authors & contributors // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. diff --git a/packages/react-api/src/overrides/spec/edgeware-node-types/identity.ts b/packages/all-config/src/api/spec/edgeware-node-types/identity.ts similarity index 100% rename from packages/react-api/src/overrides/spec/edgeware-node-types/identity.ts rename to packages/all-config/src/api/spec/edgeware-node-types/identity.ts diff --git a/packages/react-api/src/overrides/spec/edgeware-node-types/index.ts b/packages/all-config/src/api/spec/edgeware-node-types/index.ts similarity index 100% rename from packages/react-api/src/overrides/spec/edgeware-node-types/index.ts rename to packages/all-config/src/api/spec/edgeware-node-types/index.ts diff --git a/packages/react-api/src/overrides/spec/edgeware-node-types/signaling.ts b/packages/all-config/src/api/spec/edgeware-node-types/signaling.ts similarity index 100% rename from packages/react-api/src/overrides/spec/edgeware-node-types/signaling.ts rename to packages/all-config/src/api/spec/edgeware-node-types/signaling.ts diff --git a/packages/react-api/src/overrides/spec/edgeware-node-types/treasuryReward.ts b/packages/all-config/src/api/spec/edgeware-node-types/treasuryReward.ts similarity index 100% rename from packages/react-api/src/overrides/spec/edgeware-node-types/treasuryReward.ts rename to packages/all-config/src/api/spec/edgeware-node-types/treasuryReward.ts diff --git a/packages/react-api/src/overrides/spec/edgeware-node-types/voting.ts b/packages/all-config/src/api/spec/edgeware-node-types/voting.ts similarity index 100% rename from packages/react-api/src/overrides/spec/edgeware-node-types/voting.ts rename to packages/all-config/src/api/spec/edgeware-node-types/voting.ts diff --git a/packages/react-api/src/overrides/spec/edgeware.ts b/packages/all-config/src/api/spec/edgeware.ts similarity index 84% rename from packages/react-api/src/overrides/spec/edgeware.ts rename to packages/all-config/src/api/spec/edgeware.ts index 1c80f41d06..c08d1fad6a 100644 --- a/packages/react-api/src/overrides/spec/edgeware.ts +++ b/packages/all-config/src/api/spec/edgeware.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2020 @polkadot/react-api authors & contributors +// Copyright 2017-2020 @polkadot/apps-config authors & contributors // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. diff --git a/packages/react-api/src/overrides/spec/index.ts b/packages/all-config/src/api/spec/index.ts similarity index 82% rename from packages/react-api/src/overrides/spec/index.ts rename to packages/all-config/src/api/spec/index.ts index 2309e42c89..8ce56f273b 100644 --- a/packages/react-api/src/overrides/spec/index.ts +++ b/packages/all-config/src/api/spec/index.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2020 @polkadot/react-api authors & contributors +// Copyright 2017-2020 @polkadot/apps-config authors & contributors // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. diff --git a/packages/react-api/src/overrides/spec/kulupu.ts b/packages/all-config/src/api/spec/kulupu.ts similarity index 88% rename from packages/react-api/src/overrides/spec/kulupu.ts rename to packages/all-config/src/api/spec/kulupu.ts index c532e8ebdd..8629c57c96 100644 --- a/packages/react-api/src/overrides/spec/kulupu.ts +++ b/packages/all-config/src/api/spec/kulupu.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2020 @polkadot/react-api authors & contributors +// Copyright 2017-2020 @polkadot/apps-config authors & contributors // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. diff --git a/packages/all-config/src/links/commonwealth.ts b/packages/all-config/src/links/commonwealth.ts new file mode 100644 index 0000000000..1172018d46 --- /dev/null +++ b/packages/all-config/src/links/commonwealth.ts @@ -0,0 +1,22 @@ +// Copyright 2017-2020 @polkadot/apps-config authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +import BN from 'bn.js'; + +export default { + isActive: true, + chains: { + Edgeware: 'edgeware', + Kusama: 'kusama', + 'Kusama CC3': 'kusama' + }, + paths: { + council: 'proposal/councilmotion', + proposal: 'proposal/democracyproposal', + referendum: 'proposal/referendum', + treasury: 'proposal/treasuryproposal' + }, + create: (chain: string, path: string, data: BN | number | string): string => + `https://commonwealth.im/${chain}/${path}/${data.toString()}` +}; diff --git a/packages/all-config/src/links/index.ts b/packages/all-config/src/links/index.ts new file mode 100644 index 0000000000..5f044aa1c7 --- /dev/null +++ b/packages/all-config/src/links/index.ts @@ -0,0 +1,17 @@ +// Copyright 2017-2020 @polkadot/apps-config authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +import { ExternalDef } from './types'; + +import Commonwealth from './commonwealth'; +import Polkascan from './polkascan'; +import Subscan from './subscan'; + +const externals: Record = { + Commonwealth, + Polkascan, + Subscan +}; + +export default externals; diff --git a/packages/all-config/src/links/polkascan.ts b/packages/all-config/src/links/polkascan.ts new file mode 100644 index 0000000000..016fcc0f55 --- /dev/null +++ b/packages/all-config/src/links/polkascan.ts @@ -0,0 +1,27 @@ +// Copyright 2017-2020 @polkadot/apps-config authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +import BN from 'bn.js'; + +export default { + isActive: true, + chains: { + Edgeware: 'edgeware', + Kulupu: 'kulupu', + Kusama: 'kusama', + 'Kusama CC3': 'kusama', + Westend: 'westend' + }, + paths: { + address: 'module/account', + block: 'system/block', + council: 'council/motion', + extrinsic: 'system/extrinsic', + proposal: 'democracy/proposal', + referendum: 'democracy/referendum', + treasury: 'treasury/proposal' + }, + create: (chain: string, path: string, data: BN | number | string): string => + `https://polkascan.io/pre/${chain}/${path}/${data.toString()}` +}; diff --git a/packages/all-config/src/links/subscan.ts b/packages/all-config/src/links/subscan.ts new file mode 100644 index 0000000000..69d485f25c --- /dev/null +++ b/packages/all-config/src/links/subscan.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2020 @polkadot/apps-config authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +import BN from 'bn.js'; + +export default { + isActive: false, + chains: { + Kusama: 'kusama', + 'Kusama CC3': 'kusama' + }, + paths: { + address: 'account', + block: 'block', + extrinsic: 'extrinsic' + }, + create: (chain: string, path: string, data: BN | number | string): string => + `https://${chain}.subscan.io/${path}/${data.toString()}` +}; diff --git a/packages/all-config/src/links/types.ts b/packages/all-config/src/links/types.ts new file mode 100644 index 0000000000..d11ce996f3 --- /dev/null +++ b/packages/all-config/src/links/types.ts @@ -0,0 +1,14 @@ +// Copyright 2017-2020 @polkadot/apps-config authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +import BN from 'bn.js'; + +export type LinkTypes = 'address' | 'block' | 'council' | 'extrinsic' | 'proposal' | 'referendum' | 'treasury'; + +export interface ExternalDef { + isActive: boolean; + chains: Record; + paths: Partial>; + create: (chain: string, path: string, data: BN | number | string) => string; +} diff --git a/packages/all-config/src/logos/index.ts b/packages/all-config/src/logos/index.ts new file mode 100644 index 0000000000..9a1d38fabd --- /dev/null +++ b/packages/all-config/src/logos/index.ts @@ -0,0 +1,56 @@ +// Copyright 2017-2020 @polkadot/apps-config authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +// the imports here as a bit all-over, non-aphabetical as a whole - since we expect this to grow, +// rather organize based on type, grouping chains and nodes as opposed to location + +// last-resort fallback, just something empty +import emptyLogo from '@polkadot/ui-assets/empty.svg'; + +// anything for a specific chain, most would probably fit into the node category (but allow for chain-specific) +import chainKusama from '@polkadot/ui-assets/chains/kusama-128.gif'; + +// defaults for the node type, assuming we don't have a specific chain, but rather match on the implementation +import nodeCentrifuge from '@polkadot/ui-assets/centrifuge.png'; +import nodeEdgeware from '@polkadot/ui-assets/edgeware-circle.svg'; +import nodePolkadot from '@polkadot/ui-assets/polkadot-circle.svg'; +import nodePolkadotJs from '@polkadot/ui-assets/polkadot-js.svg'; +import nodeSubstrate from '@polkadot/ui-assets/substrate-hexagon.svg'; + +// overrides based on the actual matched chain name +const chainLogos: Record = { + kusama: chainKusama, // new name after CC3 + 'kusama cc1': chainKusama, + 'kusama cc2': chainKusama, + 'kusama cc3': chainKusama +}; + +// overrides based on the actual software node type (all '-' converted to ' ') +const nodeLogos: Record = { + 'centrifuge chain': nodeCentrifuge, + 'edgeware node': nodeEdgeware, + 'node template': nodeSubstrate, + 'parity polkadot': nodePolkadot, + 'polkadot js': nodePolkadotJs, + 'substrate node': nodeSubstrate +}; + +// overrides when we pass an explicit logo name +const namedLogos: Record = { + centrifuge: nodeCentrifuge, + empty: emptyLogo, + edgeware: nodeEdgeware, + alexander: nodePolkadot, + kusama: chainKusama, + polkadot: nodePolkadot, + substrate: nodeSubstrate, + westend: nodePolkadot +}; + +export { + chainLogos, + emptyLogo, + namedLogos, + nodeLogos +}; diff --git a/packages/app-settings/src/available/endpoints.ts b/packages/all-config/src/settings/endpoints.ts similarity index 92% rename from packages/app-settings/src/available/endpoints.ts rename to packages/all-config/src/settings/endpoints.ts index 2e9eb1a621..d23e68395e 100644 --- a/packages/app-settings/src/available/endpoints.ts +++ b/packages/all-config/src/settings/endpoints.ts @@ -1,8 +1,8 @@ -// Copyright 2017-2020 @polkadot/app-settings authors & contributors +// Copyright 2017-2020 @polkadot/apps-config authors & contributors // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { Option } from '../types'; +import { Option } from './types'; export default [ { diff --git a/packages/app-settings/src/available/index.ts b/packages/all-config/src/settings/index.ts similarity index 80% rename from packages/app-settings/src/available/index.ts rename to packages/all-config/src/settings/index.ts index 30b3d36ae2..8c3395274d 100644 --- a/packages/app-settings/src/available/index.ts +++ b/packages/all-config/src/settings/index.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2020 @polkadot/app-settings authors & contributors +// Copyright 2017-2020 @polkadot/apps-config authors & contributors // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. diff --git a/packages/app-settings/src/available/languages.ts b/packages/all-config/src/settings/languages.ts similarity index 82% rename from packages/app-settings/src/available/languages.ts rename to packages/all-config/src/settings/languages.ts index 368bf8c1ae..5179bcbfdc 100644 --- a/packages/app-settings/src/available/languages.ts +++ b/packages/all-config/src/settings/languages.ts @@ -1,8 +1,8 @@ -// Copyright 2017-2020 @polkadot/app-settings authors & contributors +// Copyright 2017-2020 @polkadot/apps-config authors & contributors // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { Option } from '../types'; +import { Option } from './types'; export default [ { diff --git a/packages/app-settings/src/types.ts b/packages/all-config/src/settings/types.ts similarity index 78% rename from packages/app-settings/src/types.ts rename to packages/all-config/src/settings/types.ts index 46d70c42ff..de14a07825 100644 --- a/packages/app-settings/src/types.ts +++ b/packages/all-config/src/settings/types.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2020 @polkadot/app-settings authors & contributors +// Copyright 2017-2020 @polkadot/apps-config authors & contributors // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. diff --git a/packages/app-settings/src/General.tsx b/packages/app-settings/src/General.tsx index 00311f2c20..04739a4a89 100644 --- a/packages/app-settings/src/General.tsx +++ b/packages/app-settings/src/General.tsx @@ -2,14 +2,14 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { Option } from './types'; +import { Option } from '@polkadot/apps-config/settings/types'; import React, { useEffect, useState, useMemo } from 'react'; +import { availableLanguages } from '@polkadot/apps-config/settings'; import { isLedgerCapable } from '@polkadot/react-api'; import { Button, ButtonCancel, Dropdown } from '@polkadot/react-components'; import uiSettings, { SettingsStruct } from '@polkadot/ui-settings'; -import { availableLanguages } from './available'; import { useTranslation } from './translate'; import { createIdenticon, createOption, save, saveAndReload } from './util'; import SelectUrl from './SelectUrl'; diff --git a/packages/app-settings/src/SelectUrl.tsx b/packages/app-settings/src/SelectUrl.tsx index d8780d9fe5..2815c6d52a 100644 --- a/packages/app-settings/src/SelectUrl.tsx +++ b/packages/app-settings/src/SelectUrl.tsx @@ -2,14 +2,14 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { Option } from './types'; +import { Option } from '@polkadot/apps-config/settings/types'; import React, { useEffect, useMemo, useState } from 'react'; import styled from 'styled-components'; +import { availableEndpoints } from '@polkadot/apps-config/settings'; import { Dropdown, Input, Toggle } from '@polkadot/react-components'; import uiSettings from '@polkadot/ui-settings'; -import { availableEndpoints } from './available'; import { useTranslation } from './translate'; import { createOption } from './util'; diff --git a/packages/app-settings/src/util.tsx b/packages/app-settings/src/util.tsx index 7fb5fd8d58..fbc86ca561 100644 --- a/packages/app-settings/src/util.tsx +++ b/packages/app-settings/src/util.tsx @@ -2,8 +2,8 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. +import { Option } from '@polkadot/apps-config/settings/types'; import { SettingsStruct } from '@polkadot/ui-settings/types'; -import { Option } from './types'; import React from 'react'; import { ChainImg, IdentityIcon } from '@polkadot/react-components'; diff --git a/packages/apps/src/initSettings.ts b/packages/apps/src/initSettings.ts index 5171568ed2..33d609fb51 100644 --- a/packages/apps/src/initSettings.ts +++ b/packages/apps/src/initSettings.ts @@ -4,9 +4,9 @@ import queryString from 'query-string'; import store from 'store'; +import { availableEndpoints } from '@polkadot/apps-config/settings'; import { registry } from '@polkadot/react-api'; import settings from '@polkadot/ui-settings'; -import endpoints from '@polkadot/app-settings/available/endpoints'; // we split here so that both these forms are allowed // - http://localhost:3000/?rpc=wss://substrate-rpc.parity.io/#/explorer @@ -22,7 +22,7 @@ const apiUrl = urlOptions.rpc // we have a supplied value ? urlOptions.rpc.split('#')[0] // https://polkadot.js.org/apps/?rpc=ws://127.0.0.1:9944#/explorer : [stored.apiUrl, process.env.WS_URL].includes(settings.apiUrl) // overridden, or stored ? settings.apiUrl // keep as-is - : endpoints[0].value as string; // grab first available + : availableEndpoints[0].value as string; // grab first available // set the default as retrieved here settings.set({ apiUrl }); diff --git a/packages/react-api/package.json b/packages/react-api/package.json index e16410aeba..da660204c6 100644 --- a/packages/react-api/package.json +++ b/packages/react-api/package.json @@ -33,7 +33,6 @@ "@babel/runtime": "^7.8.4", "@polkadot/api": "^1.5.0-beta.17", "@polkadot/extension-dapp": "^0.22.0-beta.9", - "edgeware-node-types": "^1.2.0", "rxjs-compat": "^6.5.4" } } diff --git a/packages/react-api/src/Api.tsx b/packages/react-api/src/Api.tsx index 06945f7284..776ab2ee65 100644 --- a/packages/react-api/src/Api.tsx +++ b/packages/react-api/src/Api.tsx @@ -6,6 +6,7 @@ import { ApiState } from './types'; import React, { useContext, useEffect, useState } from 'react'; import ApiPromise from '@polkadot/api/promise'; +import { typesChain, typesSpec } from '@polkadot/apps-config/api'; import { isWeb3Injected, web3Accounts, web3Enable } from '@polkadot/extension-dapp'; import { WsProvider } from '@polkadot/rpc-provider'; import { StatusContext } from '@polkadot/react-components/Status'; @@ -18,8 +19,6 @@ import { formatBalance, isTestChain } from '@polkadot/util'; import { setSS58Format } from '@polkadot/util-crypto'; import addressDefaults from '@polkadot/util-crypto/address/defaults'; -import typesChain from './overrides/chain'; -import typesSpec from './overrides/spec'; import ApiContext from './ApiContext'; import registry from './typeRegistry'; diff --git a/packages/react-components/src/ChainImg.tsx b/packages/react-components/src/ChainImg.tsx index c80c54c48e..631ddc51f4 100644 --- a/packages/react-components/src/ChainImg.tsx +++ b/packages/react-components/src/ChainImg.tsx @@ -4,57 +4,12 @@ import React, { useMemo } from 'react'; import styled from 'styled-components'; +import { chainLogos, emptyLogo, namedLogos, nodeLogos } from '@polkadot/apps-config/logos'; import { useApi } from '@polkadot/react-hooks'; -// the imports here as a bit all-over, non-aphabetical - since we expect this to grow, -// rather organise based on type, grouping chains and nodes as opposed to location - -// last-resort fallback, just something empty -import EMPTY from '@polkadot/ui-assets/empty.svg'; - -// anything fopr a specific chain, most items will probably go in here -import chainKusama from '@polkadot/ui-assets/chains/kusama-128.gif'; - -// defaults for the node type, assuming we don't have a specific chain -import centrifuge from '@polkadot/ui-assets/centrifuge.png'; -import edgeware from '@polkadot/ui-assets/edgeware-circle.svg'; -import polkadot from '@polkadot/ui-assets/polkadot-circle.svg'; -import polkadotJs from '@polkadot/ui-assets/polkadot-js.svg'; -import substrate from '@polkadot/ui-assets/substrate-hexagon.svg'; - -// overrides based on the actual matched chain name -const CHAINS: Record = { - kusama: chainKusama, // old name, the W3F nodes still has these - 'kusama cc1': chainKusama, - 'kusama cc2': chainKusama, - 'kusama cc3': chainKusama -}; - -// overrides based on the actual software node type -const NODES: Record = { - 'centrifuge chain': centrifuge, - 'edgeware node': edgeware, - 'node template': substrate, - 'parity polkadot': polkadot, - 'polkadot js': polkadotJs, - 'substrate node': substrate -}; - -// overrides as specified -const LOGOS: Record = { - centrifuge, - empty: EMPTY, - edgeware, - alexander: polkadot, - kusama: chainKusama, - polkadot, - substrate, - westend: polkadot -}; - interface Props { className?: string; - logo?: keyof typeof LOGOS; + logo?: keyof typeof namedLogos; onClick?: () => any; } @@ -65,7 +20,7 @@ function sanitize (value?: string): string { function ChainImg ({ className, logo, onClick }: Props): React.ReactElement { const { systemChain, systemName } = useApi(); const img = useMemo((): any => { - return LOGOS[logo || ''] || CHAINS[sanitize(systemChain)] || NODES[sanitize(systemName)] || EMPTY; + return namedLogos[logo || ''] || chainLogos[sanitize(systemChain)] || nodeLogos[sanitize(systemName)] || emptyLogo; }, [logo, systemChain, systemName]); return ( diff --git a/packages/react-components/src/LinkExternal.tsx b/packages/react-components/src/LinkExternal.tsx index 704d05caec..f5a6494741 100644 --- a/packages/react-components/src/LinkExternal.tsx +++ b/packages/react-components/src/LinkExternal.tsx @@ -2,17 +2,18 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. +import { LinkTypes } from '@polkadot/apps-config/links/types'; + import BN from 'bn.js'; import React, { useMemo } from 'react'; import styled from 'styled-components'; +import linked from '@polkadot/apps-config/links'; import { useApi } from '@polkadot/react-hooks'; import { useTranslation } from './translate'; import Icon from './Icon'; import Tooltip from './Tooltip'; -export type LinkTypes = 'address' | 'block' | 'council' | 'extrinsic' | 'proposal' | 'referendum' | 'treasury'; - interface Props { className?: string; data: BN | number | string; @@ -20,70 +21,9 @@ interface Props { withShort?: boolean; } -interface Explorer { - isActive: boolean; - chains: Record; - paths: Partial>; - create: (chain: string, path: string, data: BN | number | string) => string; -} - -const EXPLORERS: Record = { - Commonwealth: { - isActive: true, - chains: { - Edgeware: 'edgeware', - Kusama: 'kusama', - 'Kusama CC3': 'kusama' - }, - paths: { - council: 'proposal/councilmotion', - proposal: 'proposal/democracyproposal', - referendum: 'proposal/referendum', - treasury: 'proposal/treasuryproposal' - }, - create: (chain: string, path: string, data: BN | number | string): string => - `https://commonwealth.im/${chain}/${path}/${data.toString()}` - }, - Polkascan: { - isActive: true, - chains: { - Edgeware: 'edgeware', - Kulupu: 'kulupu', - Kusama: 'kusama', - 'Kusama CC3': 'kusama', - Westend: 'westend' - }, - paths: { - address: 'module/account', - block: 'system/block', - council: 'council/motion', - extrinsic: 'system/extrinsic', - proposal: 'democracy/proposal', - referendum: 'democracy/referendum', - treasury: 'treasury/proposal' - }, - create: (chain: string, path: string, data: BN | number | string): string => - `https://polkascan.io/pre/${chain}/${path}/${data.toString()}` - }, - Subscan: { - isActive: false, - chains: { - Kusama: 'kusama', - 'Kusama CC3': 'kusama' - }, - paths: { - address: 'account', - block: 'block', - extrinsic: 'extrinsic' - }, - create: (chain: string, path: string, data: BN | number | string): string => - `https://${chain}.subscan.io/${path}/${data.toString()}` - } -}; - function genLinks (systemChain: string, { data, type, withShort }: Props): React.ReactNode[] { return Object - .entries(EXPLORERS) + .entries(linked) .map(([name, { isActive, chains, paths, create }]): React.ReactNode | null => { const extChain = chains[systemChain]; const extPath = paths[type]; diff --git a/tsconfig.json b/tsconfig.json index 7a744dc657..ec128ff55c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -51,6 +51,7 @@ "@polkadot/app-transfer/*": [ "packages/app-transfer/src/*" ], "@polkadot/app-treasury": [ "packages/app-treasury/src" ], "@polkadot/app-treasury/*": [ "packages/app-treasury/src/*" ], + "@polkadot/apps-config/*": [ "packages/all-config/src/*" ], "@polkadot/apps-routing": [ "packages/apps-routing/src" ], "@polkadot/apps-routing/*": [ "packages/apps-routing/src/*" ], "@polkadot/react-api": [ "packages/react-api/src" ], diff --git a/yarn.lock b/yarn.lock index 85cdaf7396..28de2746b3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3025,6 +3025,16 @@ __metadata: languageName: unknown linkType: soft +"@polkadot/apps-config@workspace:packages/all-config": + version: 0.0.0-use.local + resolution: "@polkadot/apps-config@workspace:packages/all-config" + dependencies: + "@babel/runtime": ^7.8.4 + "@polkadot/ui-assets": ^0.52.0-beta.4 + edgeware-node-types: ^1.2.0 + languageName: unknown + linkType: soft + "@polkadot/apps-routing@0.40.0-beta.62, @polkadot/apps-routing@workspace:packages/apps-routing": version: 0.0.0-use.local resolution: "@polkadot/apps-routing@workspace:packages/apps-routing" @@ -3199,7 +3209,6 @@ __metadata: "@babel/runtime": ^7.8.4 "@polkadot/api": ^1.5.0-beta.17 "@polkadot/extension-dapp": ^0.22.0-beta.9 - edgeware-node-types: ^1.2.0 rxjs-compat: ^6.5.4 languageName: unknown linkType: soft