@pezkuwi/ui-settings 3.16.9 → 3.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/build/README.md +40 -0
  2. package/build/Settings.js +172 -0
  3. package/{bundle-pezkuwi-ui-settings.js → build/bundle-pezkuwi-ui-settings.js} +2 -2
  4. package/build/bundle.js +5 -0
  5. package/build/cjs/Settings.d.ts +40 -0
  6. package/build/cjs/Settings.js +177 -0
  7. package/build/cjs/bundle.d.ts +5 -0
  8. package/build/cjs/bundle.js +19 -0
  9. package/build/cjs/defaults/chains.js +8 -0
  10. package/build/cjs/defaults/crypto.js +35 -0
  11. package/build/cjs/defaults/endpoints.js +11 -0
  12. package/build/cjs/defaults/index.js +80 -0
  13. package/build/cjs/defaults/ledger.js +45 -0
  14. package/build/cjs/defaults/ss58.js +16 -0
  15. package/build/cjs/defaults/type.js +5 -0
  16. package/build/cjs/defaults/ui.js +58 -0
  17. package/build/cjs/index.js +6 -0
  18. package/build/cjs/packageDetect.js +5 -0
  19. package/build/cjs/packageInfo.js +4 -0
  20. package/build/cjs/types.js +2 -0
  21. package/build/defaults/chains.d.ts +3 -0
  22. package/build/defaults/chains.js +5 -0
  23. package/build/defaults/crypto.d.ts +4 -0
  24. package/build/defaults/crypto.js +32 -0
  25. package/build/defaults/endpoints.d.ts +3 -0
  26. package/build/defaults/endpoints.js +8 -0
  27. package/build/defaults/index.d.ts +15 -0
  28. package/build/defaults/index.js +58 -0
  29. package/build/defaults/ledger.d.ts +5 -0
  30. package/build/defaults/ledger.js +42 -0
  31. package/build/defaults/ss58.d.ts +3 -0
  32. package/build/defaults/ss58.js +13 -0
  33. package/build/defaults/type.d.ts +2 -0
  34. package/build/defaults/type.js +2 -0
  35. package/build/defaults/ui.d.ts +10 -0
  36. package/build/defaults/ui.js +55 -0
  37. package/build/index.d.ts +3 -0
  38. package/build/index.js +3 -0
  39. package/build/package.json +254 -0
  40. package/build/packageDetect.d.ts +1 -0
  41. package/build/packageDetect.js +3 -0
  42. package/build/packageInfo.d.ts +6 -0
  43. package/build/packageInfo.js +1 -0
  44. package/build/types.d.ts +35 -0
  45. package/build/types.js +1 -0
  46. package/{cjs → build-tsc-cjs}/defaults/ledger.js +1 -1
  47. package/{cjs → build-tsc-cjs}/packageInfo.js +1 -1
  48. package/{defaults → build-tsc-esm/defaults}/ledger.js +1 -1
  49. package/{packageInfo.js → build-tsc-esm/packageInfo.js} +1 -1
  50. package/package.json +6 -223
  51. package/src/Settings.ts +236 -0
  52. package/src/bundle.ts +10 -0
  53. package/src/defaults/chains.ts +11 -0
  54. package/src/defaults/crypto.ts +39 -0
  55. package/src/defaults/endpoints.ts +14 -0
  56. package/src/defaults/index.ts +72 -0
  57. package/src/defaults/ledger.ts +50 -0
  58. package/src/defaults/ss58.ts +22 -0
  59. package/src/defaults/type.ts +8 -0
  60. package/src/defaults/ui.ts +69 -0
  61. package/src/index.ts +8 -0
  62. package/src/packageDetect.ts +11 -0
  63. package/src/packageInfo.ts +6 -0
  64. package/src/types.ts +42 -0
  65. package/tsconfig.build.json +9 -0
  66. package/tsconfig.build.tsbuildinfo +1 -0
  67. /package/{LICENSE → build/LICENSE} +0 -0
  68. /package/{cjs → build}/Settings.d.ts +0 -0
  69. /package/{cjs → build}/bundle.d.ts +0 -0
  70. /package/{defaults → build/cjs/defaults}/chains.d.ts +0 -0
  71. /package/{defaults → build/cjs/defaults}/crypto.d.ts +0 -0
  72. /package/{defaults → build/cjs/defaults}/endpoints.d.ts +0 -0
  73. /package/{defaults → build/cjs/defaults}/index.d.ts +0 -0
  74. /package/{defaults → build/cjs/defaults}/ledger.d.ts +0 -0
  75. /package/{defaults → build/cjs/defaults}/ss58.d.ts +0 -0
  76. /package/{defaults → build/cjs/defaults}/type.d.ts +0 -0
  77. /package/{defaults → build/cjs/defaults}/ui.d.ts +0 -0
  78. /package/{index.d.ts → build/cjs/index.d.ts} +0 -0
  79. /package/{cjs → build/cjs}/package.json +0 -0
  80. /package/{packageDetect.d.ts → build/cjs/packageDetect.d.ts} +0 -0
  81. /package/{packageInfo.d.ts → build/cjs/packageInfo.d.ts} +0 -0
  82. /package/{types.d.ts → build/cjs/types.d.ts} +0 -0
  83. /package/{Settings.d.ts → build-tsc/Settings.d.ts} +0 -0
  84. /package/{bundle.d.ts → build-tsc/bundle.d.ts} +0 -0
  85. /package/{cjs → build-tsc}/defaults/chains.d.ts +0 -0
  86. /package/{cjs → build-tsc}/defaults/crypto.d.ts +0 -0
  87. /package/{cjs → build-tsc}/defaults/endpoints.d.ts +0 -0
  88. /package/{cjs → build-tsc}/defaults/index.d.ts +0 -0
  89. /package/{cjs → build-tsc}/defaults/ledger.d.ts +0 -0
  90. /package/{cjs → build-tsc}/defaults/ss58.d.ts +0 -0
  91. /package/{cjs → build-tsc}/defaults/type.d.ts +0 -0
  92. /package/{cjs → build-tsc}/defaults/ui.d.ts +0 -0
  93. /package/{cjs → build-tsc}/index.d.ts +0 -0
  94. /package/{cjs → build-tsc}/packageDetect.d.ts +0 -0
  95. /package/{cjs → build-tsc}/packageInfo.d.ts +0 -0
  96. /package/{cjs → build-tsc}/types.d.ts +0 -0
  97. /package/{cjs → build-tsc-cjs}/Settings.js +0 -0
  98. /package/{cjs → build-tsc-cjs}/bundle.js +0 -0
  99. /package/{cjs → build-tsc-cjs}/defaults/chains.js +0 -0
  100. /package/{cjs → build-tsc-cjs}/defaults/crypto.js +0 -0
  101. /package/{cjs → build-tsc-cjs}/defaults/endpoints.js +0 -0
  102. /package/{cjs → build-tsc-cjs}/defaults/index.js +0 -0
  103. /package/{cjs → build-tsc-cjs}/defaults/ss58.js +0 -0
  104. /package/{cjs → build-tsc-cjs}/defaults/type.js +0 -0
  105. /package/{cjs → build-tsc-cjs}/defaults/ui.js +0 -0
  106. /package/{cjs → build-tsc-cjs}/index.js +0 -0
  107. /package/{cjs → build-tsc-cjs}/packageDetect.js +0 -0
  108. /package/{cjs → build-tsc-cjs}/types.js +0 -0
  109. /package/{Settings.js → build-tsc-esm/Settings.js} +0 -0
  110. /package/{bundle.js → build-tsc-esm/bundle.js} +0 -0
  111. /package/{defaults → build-tsc-esm/defaults}/chains.js +0 -0
  112. /package/{defaults → build-tsc-esm/defaults}/crypto.js +0 -0
  113. /package/{defaults → build-tsc-esm/defaults}/endpoints.js +0 -0
  114. /package/{defaults → build-tsc-esm/defaults}/index.js +0 -0
  115. /package/{defaults → build-tsc-esm/defaults}/ss58.js +0 -0
  116. /package/{defaults → build-tsc-esm/defaults}/type.js +0 -0
  117. /package/{defaults → build-tsc-esm/defaults}/ui.js +0 -0
  118. /package/{index.js → build-tsc-esm/index.js} +0 -0
  119. /package/{packageDetect.js → build-tsc-esm/packageDetect.js} +0 -0
  120. /package/{types.js → build-tsc-esm/types.js} +0 -0
@@ -0,0 +1,40 @@
1
+ # @pezkuwi/ui-settings
2
+
3
+ Manages app settings including endpoints, themes and prefixes
4
+
5
+ ## Usage Examples
6
+
7
+ User preferences are set as a settings object in the browser's local storage.
8
+
9
+ ```js
10
+ import settings from '@pezkuwi/ui-settings';
11
+
12
+ render () {
13
+ // get api endpoint for the selected chain
14
+ const WS_URL = settings.apiUrl();
15
+
16
+ // get the selected il8n language
17
+ const language = settings.il8nLang();
18
+
19
+ // get all available il8n languages
20
+ const languages = settings.availableLanguages();
21
+
22
+ // update settings
23
+ const updatedSettings = {
24
+ ...settings,
25
+ i18nLang: 'Arabic'
26
+ }
27
+ settings.set(updatedSettings);
28
+
29
+ // NOTE: API currently does not handle hot reconnecting properly,
30
+ so you need to manually reload the page after updating settings.
31
+ window.location.reload();
32
+ }
33
+ ```
34
+
35
+ ## Used by
36
+
37
+ Apps that currently use the settings package
38
+
39
+ * [pezkuwichain/apps](https://www.github.com/pezkuwichain/apps)
40
+ * [paritytech/substrate-light-ui](https://github.com/paritytech/substrate-light-ui)
@@ -0,0 +1,172 @@
1
+ import { EventEmitter } from 'eventemitter3';
2
+ import store from 'store';
3
+ import { hasProcess, isUndefined } from '@pezkuwi/util';
4
+ import { CAMERA, CAMERA_DEFAULT, CRYPTOS, CRYPTOS_ETH, CRYPTOS_LEDGER, ENDPOINT_DEFAULT, ENDPOINTS, ICON_DEFAULT, ICONS, LANGUAGE_DEFAULT, LEDGER_APP, LEDGER_APP_DEFAULT, LEDGER_CONN, LEDGER_CONN_DEFAULT, LOCKING, LOCKING_DEFAULT, METADATA_UP, METADATA_UP_DEFAULT, NOTIFICATION_DEFAULT, PREFIX_DEFAULT, PREFIXES, STORAGE, STORAGE_DEFAULT, UIMODE_DEFAULT, UIMODES, UITHEME_DEFAULT, UITHEMES } from './defaults/index.js';
5
+ function withDefault(options, option, fallback) {
6
+ const _option = option || fallback;
7
+ return options.some(({ value }) => value === _option)
8
+ ? _option
9
+ : fallback;
10
+ }
11
+ export class Settings {
12
+ #emitter;
13
+ #apiType;
14
+ // will become deprecated for supporting substrate connect light clients. apiType structure should be used instead
15
+ #apiUrl;
16
+ #camera;
17
+ #i18nLang;
18
+ #icon;
19
+ #ledgerApp;
20
+ #ledgerConn;
21
+ #locking;
22
+ #metadataUp;
23
+ #prefix;
24
+ #storage;
25
+ #uiMode;
26
+ #uiTheme;
27
+ #notification;
28
+ constructor() {
29
+ const settings = store.get('settings') || {};
30
+ this.#emitter = new EventEmitter();
31
+ // will become deprecated for supporting substrate connect light clients. apiType structure should be used instead
32
+ this.#apiUrl = (typeof settings.apiUrl === 'string' && settings.apiUrl) || (hasProcess && process.env?.['WS_URL']) || ENDPOINT_DEFAULT.value;
33
+ this.#apiType = { param: this.#apiUrl, type: 'json-rpc' };
34
+ this.#camera = withDefault(CAMERA, settings.camera, CAMERA_DEFAULT);
35
+ this.#ledgerApp = withDefault(LEDGER_APP, settings.ledgerApp, LEDGER_APP_DEFAULT);
36
+ this.#ledgerConn = withDefault(LEDGER_CONN, settings.ledgerConn, LEDGER_CONN_DEFAULT);
37
+ this.#i18nLang = settings.i18nLang || LANGUAGE_DEFAULT;
38
+ this.#icon = settings.icon || ICON_DEFAULT;
39
+ this.#locking = settings.locking || LOCKING_DEFAULT;
40
+ this.#metadataUp = withDefault(METADATA_UP, settings.storage, METADATA_UP_DEFAULT);
41
+ this.#notification = settings.notification || NOTIFICATION_DEFAULT;
42
+ this.#prefix = isUndefined(settings.prefix) ? PREFIX_DEFAULT : settings.prefix;
43
+ this.#storage = withDefault(STORAGE, settings.storage, STORAGE_DEFAULT);
44
+ this.#uiMode = settings.uiMode || UIMODE_DEFAULT;
45
+ this.#uiTheme = settings.uiTheme || UITHEME_DEFAULT;
46
+ }
47
+ get camera() {
48
+ return this.#camera;
49
+ }
50
+ get apiType() {
51
+ return this.#apiType;
52
+ }
53
+ get apiUrl() {
54
+ return this.#apiUrl;
55
+ }
56
+ get i18nLang() {
57
+ return this.#i18nLang;
58
+ }
59
+ get icon() {
60
+ return this.#icon;
61
+ }
62
+ get notification() {
63
+ return this.#notification;
64
+ }
65
+ get ledgerApp() {
66
+ return this.#ledgerApp;
67
+ }
68
+ get ledgerConn() {
69
+ return this.#ledgerConn;
70
+ }
71
+ get locking() {
72
+ return this.#locking;
73
+ }
74
+ get metadataUp() {
75
+ return this.#metadataUp;
76
+ }
77
+ get prefix() {
78
+ return this.#prefix;
79
+ }
80
+ get storage() {
81
+ return this.#storage;
82
+ }
83
+ get uiMode() {
84
+ return this.#uiMode;
85
+ }
86
+ get uiTheme() {
87
+ return this.#uiTheme;
88
+ }
89
+ get availableCamera() {
90
+ return CAMERA;
91
+ }
92
+ get availableCryptos() {
93
+ return CRYPTOS;
94
+ }
95
+ get availableCryptosEth() {
96
+ return CRYPTOS_ETH;
97
+ }
98
+ get availableCryptosLedger() {
99
+ return CRYPTOS_LEDGER;
100
+ }
101
+ get availableIcons() {
102
+ return ICONS;
103
+ }
104
+ get availableLedgerApp() {
105
+ return LEDGER_APP;
106
+ }
107
+ get availableLedgerConn() {
108
+ return LEDGER_CONN;
109
+ }
110
+ get availableLocking() {
111
+ return LOCKING;
112
+ }
113
+ get availableMetadataUp() {
114
+ return METADATA_UP;
115
+ }
116
+ get availableNodes() {
117
+ return ENDPOINTS;
118
+ }
119
+ get availablePrefixes() {
120
+ return PREFIXES;
121
+ }
122
+ get availableStorage() {
123
+ return STORAGE;
124
+ }
125
+ get availableUIModes() {
126
+ return UIMODES;
127
+ }
128
+ get availableUIThemes() {
129
+ return UITHEMES;
130
+ }
131
+ get() {
132
+ return {
133
+ apiType: this.#apiType,
134
+ apiUrl: this.#apiUrl,
135
+ camera: this.#camera,
136
+ i18nLang: this.#i18nLang,
137
+ icon: this.#icon,
138
+ ledgerApp: this.#ledgerApp,
139
+ ledgerConn: this.#ledgerConn,
140
+ locking: this.#locking,
141
+ metadataUp: this.#metadataUp,
142
+ notification: this.#notification,
143
+ prefix: this.#prefix,
144
+ storage: this.#storage,
145
+ uiMode: this.#uiMode,
146
+ uiTheme: this.#uiTheme
147
+ };
148
+ }
149
+ set(settings) {
150
+ this.#apiType = settings.apiType || this.#apiType;
151
+ this.#apiUrl = settings.apiUrl || this.#apiUrl;
152
+ this.#camera = settings.camera || this.#camera;
153
+ this.#ledgerConn = settings.ledgerConn || this.#ledgerConn;
154
+ this.#ledgerApp = settings.ledgerApp || this.#ledgerApp;
155
+ this.#i18nLang = settings.i18nLang || this.#i18nLang;
156
+ this.#icon = settings.icon || this.#icon;
157
+ this.#locking = settings.locking || this.#locking;
158
+ this.#metadataUp = settings.metadataUp || this.#metadataUp;
159
+ this.#notification = settings.notification || this.#notification;
160
+ this.#prefix = isUndefined(settings.prefix) ? this.#prefix : settings.prefix;
161
+ this.#storage = settings.storage || this.#storage;
162
+ this.#uiMode = settings.uiMode || this.#uiMode;
163
+ this.#uiTheme = settings.uiTheme || this.#uiTheme;
164
+ const newValues = this.get();
165
+ store.set('settings', newValues);
166
+ this.#emitter.emit('change', newValues);
167
+ }
168
+ on(type, cb) {
169
+ this.#emitter.on(type, cb);
170
+ }
171
+ }
172
+ export const settings = new Settings();
@@ -1033,7 +1033,7 @@
1033
1033
  const LEDGER_APP = [
1034
1034
  {
1035
1035
  info: 'generic',
1036
- text: 'Use the Ledger Polkadot Generic App',
1036
+ text: 'Use the Ledger Pezkuwi Generic App',
1037
1037
  value: 'generic'
1038
1038
  },
1039
1039
  {
@@ -1343,7 +1343,7 @@
1343
1343
  .filter((n) => n.genesisHash.length)
1344
1344
  .reduce((chains, { genesisHash, network }) => util$7.objectSpread(chains, { [network]: genesisHash }), {});
1345
1345
 
1346
- const packageInfo = { name: '@pezkuwi/ui-settings', path: (({ url: (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-ui-settings.js', document.baseURI).href)) }) && (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-ui-settings.js', document.baseURI).href))) ? new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-ui-settings.js', document.baseURI).href))).pathname.substring(0, new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-ui-settings.js', document.baseURI).href))).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '3.16.9' };
1346
+ const packageInfo = { name: '@pezkuwi/ui-settings', path: (({ url: (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-ui-settings.js', document.baseURI).href)) }) && (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-ui-settings.js', document.baseURI).href))) ? new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-ui-settings.js', document.baseURI).href))).pathname.substring(0, new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-ui-settings.js', document.baseURI).href))).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '3.17.0' };
1347
1347
 
1348
1348
  exports.ENDPOINT_DEFAULT = ENDPOINT_DEFAULT;
1349
1349
  exports.ICON_DEFAULT = ICON_DEFAULT;
@@ -0,0 +1,5 @@
1
+ import { Settings, settings } from './Settings.js';
2
+ export { chains } from './defaults/chains.js';
3
+ export { ENDPOINT_DEFAULT, ICON_DEFAULT, ICON_DEFAULT_HOST, LANGUAGE_DEFAULT, LOCKING_DEFAULT, PREFIX_DEFAULT, UIMODE_DEFAULT, UITHEME_DEFAULT } from './defaults/index.js';
4
+ export { packageInfo } from './packageInfo.js';
5
+ export { Settings, settings };
@@ -0,0 +1,40 @@
1
+ import type { Endpoint, Option, SettingsStruct } from './types.js';
2
+ type ChangeCallback = (settings: SettingsStruct) => void;
3
+ type OnTypes = 'change';
4
+ export declare class Settings implements SettingsStruct {
5
+ #private;
6
+ constructor();
7
+ get camera(): string;
8
+ get apiType(): Endpoint;
9
+ get apiUrl(): string;
10
+ get i18nLang(): string;
11
+ get icon(): string;
12
+ get notification(): string;
13
+ get ledgerApp(): string;
14
+ get ledgerConn(): string;
15
+ get locking(): string;
16
+ get metadataUp(): string;
17
+ get prefix(): number;
18
+ get storage(): string;
19
+ get uiMode(): string;
20
+ get uiTheme(): string;
21
+ get availableCamera(): Option[];
22
+ get availableCryptos(): Option[];
23
+ get availableCryptosEth(): Option[];
24
+ get availableCryptosLedger(): Option[];
25
+ get availableIcons(): Option[];
26
+ get availableLedgerApp(): Option[];
27
+ get availableLedgerConn(): Option[];
28
+ get availableLocking(): Option[];
29
+ get availableMetadataUp(): Option[];
30
+ get availableNodes(): Option[];
31
+ get availablePrefixes(): Option[];
32
+ get availableStorage(): Option[];
33
+ get availableUIModes(): Option[];
34
+ get availableUIThemes(): Option[];
35
+ get(): SettingsStruct;
36
+ set(settings: Partial<SettingsStruct>): void;
37
+ on(type: OnTypes, cb: ChangeCallback): void;
38
+ }
39
+ export declare const settings: Settings;
40
+ export {};
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.settings = exports.Settings = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const eventemitter3_1 = require("eventemitter3");
6
+ const store_1 = tslib_1.__importDefault(require("store"));
7
+ const util_1 = require("@pezkuwi/util");
8
+ const index_js_1 = require("./defaults/index.js");
9
+ function withDefault(options, option, fallback) {
10
+ const _option = option || fallback;
11
+ return options.some(({ value }) => value === _option)
12
+ ? _option
13
+ : fallback;
14
+ }
15
+ class Settings {
16
+ #emitter;
17
+ #apiType;
18
+ // will become deprecated for supporting substrate connect light clients. apiType structure should be used instead
19
+ #apiUrl;
20
+ #camera;
21
+ #i18nLang;
22
+ #icon;
23
+ #ledgerApp;
24
+ #ledgerConn;
25
+ #locking;
26
+ #metadataUp;
27
+ #prefix;
28
+ #storage;
29
+ #uiMode;
30
+ #uiTheme;
31
+ #notification;
32
+ constructor() {
33
+ const settings = store_1.default.get('settings') || {};
34
+ this.#emitter = new eventemitter3_1.EventEmitter();
35
+ // will become deprecated for supporting substrate connect light clients. apiType structure should be used instead
36
+ this.#apiUrl = (typeof settings.apiUrl === 'string' && settings.apiUrl) || (util_1.hasProcess && process.env?.['WS_URL']) || index_js_1.ENDPOINT_DEFAULT.value;
37
+ this.#apiType = { param: this.#apiUrl, type: 'json-rpc' };
38
+ this.#camera = withDefault(index_js_1.CAMERA, settings.camera, index_js_1.CAMERA_DEFAULT);
39
+ this.#ledgerApp = withDefault(index_js_1.LEDGER_APP, settings.ledgerApp, index_js_1.LEDGER_APP_DEFAULT);
40
+ this.#ledgerConn = withDefault(index_js_1.LEDGER_CONN, settings.ledgerConn, index_js_1.LEDGER_CONN_DEFAULT);
41
+ this.#i18nLang = settings.i18nLang || index_js_1.LANGUAGE_DEFAULT;
42
+ this.#icon = settings.icon || index_js_1.ICON_DEFAULT;
43
+ this.#locking = settings.locking || index_js_1.LOCKING_DEFAULT;
44
+ this.#metadataUp = withDefault(index_js_1.METADATA_UP, settings.storage, index_js_1.METADATA_UP_DEFAULT);
45
+ this.#notification = settings.notification || index_js_1.NOTIFICATION_DEFAULT;
46
+ this.#prefix = (0, util_1.isUndefined)(settings.prefix) ? index_js_1.PREFIX_DEFAULT : settings.prefix;
47
+ this.#storage = withDefault(index_js_1.STORAGE, settings.storage, index_js_1.STORAGE_DEFAULT);
48
+ this.#uiMode = settings.uiMode || index_js_1.UIMODE_DEFAULT;
49
+ this.#uiTheme = settings.uiTheme || index_js_1.UITHEME_DEFAULT;
50
+ }
51
+ get camera() {
52
+ return this.#camera;
53
+ }
54
+ get apiType() {
55
+ return this.#apiType;
56
+ }
57
+ get apiUrl() {
58
+ return this.#apiUrl;
59
+ }
60
+ get i18nLang() {
61
+ return this.#i18nLang;
62
+ }
63
+ get icon() {
64
+ return this.#icon;
65
+ }
66
+ get notification() {
67
+ return this.#notification;
68
+ }
69
+ get ledgerApp() {
70
+ return this.#ledgerApp;
71
+ }
72
+ get ledgerConn() {
73
+ return this.#ledgerConn;
74
+ }
75
+ get locking() {
76
+ return this.#locking;
77
+ }
78
+ get metadataUp() {
79
+ return this.#metadataUp;
80
+ }
81
+ get prefix() {
82
+ return this.#prefix;
83
+ }
84
+ get storage() {
85
+ return this.#storage;
86
+ }
87
+ get uiMode() {
88
+ return this.#uiMode;
89
+ }
90
+ get uiTheme() {
91
+ return this.#uiTheme;
92
+ }
93
+ get availableCamera() {
94
+ return index_js_1.CAMERA;
95
+ }
96
+ get availableCryptos() {
97
+ return index_js_1.CRYPTOS;
98
+ }
99
+ get availableCryptosEth() {
100
+ return index_js_1.CRYPTOS_ETH;
101
+ }
102
+ get availableCryptosLedger() {
103
+ return index_js_1.CRYPTOS_LEDGER;
104
+ }
105
+ get availableIcons() {
106
+ return index_js_1.ICONS;
107
+ }
108
+ get availableLedgerApp() {
109
+ return index_js_1.LEDGER_APP;
110
+ }
111
+ get availableLedgerConn() {
112
+ return index_js_1.LEDGER_CONN;
113
+ }
114
+ get availableLocking() {
115
+ return index_js_1.LOCKING;
116
+ }
117
+ get availableMetadataUp() {
118
+ return index_js_1.METADATA_UP;
119
+ }
120
+ get availableNodes() {
121
+ return index_js_1.ENDPOINTS;
122
+ }
123
+ get availablePrefixes() {
124
+ return index_js_1.PREFIXES;
125
+ }
126
+ get availableStorage() {
127
+ return index_js_1.STORAGE;
128
+ }
129
+ get availableUIModes() {
130
+ return index_js_1.UIMODES;
131
+ }
132
+ get availableUIThemes() {
133
+ return index_js_1.UITHEMES;
134
+ }
135
+ get() {
136
+ return {
137
+ apiType: this.#apiType,
138
+ apiUrl: this.#apiUrl,
139
+ camera: this.#camera,
140
+ i18nLang: this.#i18nLang,
141
+ icon: this.#icon,
142
+ ledgerApp: this.#ledgerApp,
143
+ ledgerConn: this.#ledgerConn,
144
+ locking: this.#locking,
145
+ metadataUp: this.#metadataUp,
146
+ notification: this.#notification,
147
+ prefix: this.#prefix,
148
+ storage: this.#storage,
149
+ uiMode: this.#uiMode,
150
+ uiTheme: this.#uiTheme
151
+ };
152
+ }
153
+ set(settings) {
154
+ this.#apiType = settings.apiType || this.#apiType;
155
+ this.#apiUrl = settings.apiUrl || this.#apiUrl;
156
+ this.#camera = settings.camera || this.#camera;
157
+ this.#ledgerConn = settings.ledgerConn || this.#ledgerConn;
158
+ this.#ledgerApp = settings.ledgerApp || this.#ledgerApp;
159
+ this.#i18nLang = settings.i18nLang || this.#i18nLang;
160
+ this.#icon = settings.icon || this.#icon;
161
+ this.#locking = settings.locking || this.#locking;
162
+ this.#metadataUp = settings.metadataUp || this.#metadataUp;
163
+ this.#notification = settings.notification || this.#notification;
164
+ this.#prefix = (0, util_1.isUndefined)(settings.prefix) ? this.#prefix : settings.prefix;
165
+ this.#storage = settings.storage || this.#storage;
166
+ this.#uiMode = settings.uiMode || this.#uiMode;
167
+ this.#uiTheme = settings.uiTheme || this.#uiTheme;
168
+ const newValues = this.get();
169
+ store_1.default.set('settings', newValues);
170
+ this.#emitter.emit('change', newValues);
171
+ }
172
+ on(type, cb) {
173
+ this.#emitter.on(type, cb);
174
+ }
175
+ }
176
+ exports.Settings = Settings;
177
+ exports.settings = new Settings();
@@ -0,0 +1,5 @@
1
+ import { Settings, settings } from './Settings.js';
2
+ export { chains } from './defaults/chains.js';
3
+ export { ENDPOINT_DEFAULT, ICON_DEFAULT, ICON_DEFAULT_HOST, LANGUAGE_DEFAULT, LOCKING_DEFAULT, PREFIX_DEFAULT, UIMODE_DEFAULT, UITHEME_DEFAULT } from './defaults/index.js';
4
+ export { packageInfo } from './packageInfo.js';
5
+ export { Settings, settings };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.settings = exports.Settings = exports.packageInfo = exports.UITHEME_DEFAULT = exports.UIMODE_DEFAULT = exports.PREFIX_DEFAULT = exports.LOCKING_DEFAULT = exports.LANGUAGE_DEFAULT = exports.ICON_DEFAULT_HOST = exports.ICON_DEFAULT = exports.ENDPOINT_DEFAULT = exports.chains = void 0;
4
+ const Settings_js_1 = require("./Settings.js");
5
+ Object.defineProperty(exports, "Settings", { enumerable: true, get: function () { return Settings_js_1.Settings; } });
6
+ Object.defineProperty(exports, "settings", { enumerable: true, get: function () { return Settings_js_1.settings; } });
7
+ var chains_js_1 = require("./defaults/chains.js");
8
+ Object.defineProperty(exports, "chains", { enumerable: true, get: function () { return chains_js_1.chains; } });
9
+ var index_js_1 = require("./defaults/index.js");
10
+ Object.defineProperty(exports, "ENDPOINT_DEFAULT", { enumerable: true, get: function () { return index_js_1.ENDPOINT_DEFAULT; } });
11
+ Object.defineProperty(exports, "ICON_DEFAULT", { enumerable: true, get: function () { return index_js_1.ICON_DEFAULT; } });
12
+ Object.defineProperty(exports, "ICON_DEFAULT_HOST", { enumerable: true, get: function () { return index_js_1.ICON_DEFAULT_HOST; } });
13
+ Object.defineProperty(exports, "LANGUAGE_DEFAULT", { enumerable: true, get: function () { return index_js_1.LANGUAGE_DEFAULT; } });
14
+ Object.defineProperty(exports, "LOCKING_DEFAULT", { enumerable: true, get: function () { return index_js_1.LOCKING_DEFAULT; } });
15
+ Object.defineProperty(exports, "PREFIX_DEFAULT", { enumerable: true, get: function () { return index_js_1.PREFIX_DEFAULT; } });
16
+ Object.defineProperty(exports, "UIMODE_DEFAULT", { enumerable: true, get: function () { return index_js_1.UIMODE_DEFAULT; } });
17
+ Object.defineProperty(exports, "UITHEME_DEFAULT", { enumerable: true, get: function () { return index_js_1.UITHEME_DEFAULT; } });
18
+ var packageInfo_js_1 = require("./packageInfo.js");
19
+ Object.defineProperty(exports, "packageInfo", { enumerable: true, get: function () { return packageInfo_js_1.packageInfo; } });
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chains = void 0;
4
+ const networks_1 = require("@pezkuwi/networks");
5
+ const util_1 = require("@pezkuwi/util");
6
+ exports.chains = networks_1.selectableNetworks
7
+ .filter((n) => n.genesisHash.length)
8
+ .reduce((chains, { genesisHash, network }) => (0, util_1.objectSpread)(chains, { [network]: genesisHash }), {});
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CRYPTOS_LEDGER = exports.CRYPTOS_ETH = exports.CRYPTOS = void 0;
4
+ exports.CRYPTOS = [
5
+ {
6
+ info: 'sr25519',
7
+ text: 'Schnorrkel (sr25519, recommended)',
8
+ value: 'sr25519'
9
+ },
10
+ {
11
+ info: 'ed25519',
12
+ text: 'Edwards (ed25519, alternative)',
13
+ value: 'ed25519'
14
+ },
15
+ {
16
+ info: 'ecdsa',
17
+ text: 'ECDSA (Non BTC/ETH compatible)',
18
+ value: 'ecdsa'
19
+ }
20
+ ];
21
+ exports.CRYPTOS_ETH = [
22
+ {
23
+ info: 'ethereum',
24
+ text: 'ECDSA (ETH compatible)',
25
+ value: 'ethereum'
26
+ }
27
+ ];
28
+ exports.CRYPTOS_LEDGER = [
29
+ ...exports.CRYPTOS,
30
+ {
31
+ info: 'ed25519-ledger',
32
+ text: 'Ledger (ed25519, BIP32 derivation)',
33
+ value: 'ed25519-ledger'
34
+ }
35
+ ];
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ENDPOINT_DEFAULT = exports.ENDPOINTS = void 0;
4
+ exports.ENDPOINTS = [
5
+ {
6
+ info: 'local',
7
+ text: 'Local Node (Own, 127.0.0.1:9944)',
8
+ value: 'ws://127.0.0.1:9944/'
9
+ }
10
+ ];
11
+ exports.ENDPOINT_DEFAULT = exports.ENDPOINTS[0];
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STORAGE = exports.STORAGE_DEFAULT = exports.METADATA_UP = exports.METADATA_UP_DEFAULT = exports.LOCKING = exports.LOCKING_DEFAULT = exports.LANGUAGE_DEFAULT = exports.CAMERA = exports.CAMERA_DEFAULT = exports.UITHEMES = exports.UITHEME_DEFAULT = exports.UIMODES = exports.UIMODE_DEFAULT = exports.NOTIFICATION_DEFAULT = exports.ICONS = exports.ICON_DEFAULT_HOST = exports.ICON_DEFAULT = exports.PREFIXES = exports.PREFIX_DEFAULT = exports.LEDGER_CONN_DEFAULT = exports.LEDGER_CONN = exports.LEDGER_APP_DEFAULT = exports.LEDGER_APP = exports.ENDPOINTS = exports.ENDPOINT_DEFAULT = exports.CRYPTOS_LEDGER = exports.CRYPTOS_ETH = exports.CRYPTOS = void 0;
4
+ var crypto_js_1 = require("./crypto.js");
5
+ Object.defineProperty(exports, "CRYPTOS", { enumerable: true, get: function () { return crypto_js_1.CRYPTOS; } });
6
+ Object.defineProperty(exports, "CRYPTOS_ETH", { enumerable: true, get: function () { return crypto_js_1.CRYPTOS_ETH; } });
7
+ Object.defineProperty(exports, "CRYPTOS_LEDGER", { enumerable: true, get: function () { return crypto_js_1.CRYPTOS_LEDGER; } });
8
+ var endpoints_js_1 = require("./endpoints.js");
9
+ Object.defineProperty(exports, "ENDPOINT_DEFAULT", { enumerable: true, get: function () { return endpoints_js_1.ENDPOINT_DEFAULT; } });
10
+ Object.defineProperty(exports, "ENDPOINTS", { enumerable: true, get: function () { return endpoints_js_1.ENDPOINTS; } });
11
+ var ledger_js_1 = require("./ledger.js");
12
+ Object.defineProperty(exports, "LEDGER_APP", { enumerable: true, get: function () { return ledger_js_1.LEDGER_APP; } });
13
+ Object.defineProperty(exports, "LEDGER_APP_DEFAULT", { enumerable: true, get: function () { return ledger_js_1.LEDGER_APP_DEFAULT; } });
14
+ Object.defineProperty(exports, "LEDGER_CONN", { enumerable: true, get: function () { return ledger_js_1.LEDGER_CONN; } });
15
+ Object.defineProperty(exports, "LEDGER_CONN_DEFAULT", { enumerable: true, get: function () { return ledger_js_1.LEDGER_CONN_DEFAULT; } });
16
+ var ss58_js_1 = require("./ss58.js");
17
+ Object.defineProperty(exports, "PREFIX_DEFAULT", { enumerable: true, get: function () { return ss58_js_1.PREFIX_DEFAULT; } });
18
+ Object.defineProperty(exports, "PREFIXES", { enumerable: true, get: function () { return ss58_js_1.PREFIXES; } });
19
+ var ui_js_1 = require("./ui.js");
20
+ Object.defineProperty(exports, "ICON_DEFAULT", { enumerable: true, get: function () { return ui_js_1.ICON_DEFAULT; } });
21
+ Object.defineProperty(exports, "ICON_DEFAULT_HOST", { enumerable: true, get: function () { return ui_js_1.ICON_DEFAULT_HOST; } });
22
+ Object.defineProperty(exports, "ICONS", { enumerable: true, get: function () { return ui_js_1.ICONS; } });
23
+ Object.defineProperty(exports, "NOTIFICATION_DEFAULT", { enumerable: true, get: function () { return ui_js_1.NOTIFICATION_DEFAULT; } });
24
+ Object.defineProperty(exports, "UIMODE_DEFAULT", { enumerable: true, get: function () { return ui_js_1.UIMODE_DEFAULT; } });
25
+ Object.defineProperty(exports, "UIMODES", { enumerable: true, get: function () { return ui_js_1.UIMODES; } });
26
+ Object.defineProperty(exports, "UITHEME_DEFAULT", { enumerable: true, get: function () { return ui_js_1.UITHEME_DEFAULT; } });
27
+ Object.defineProperty(exports, "UITHEMES", { enumerable: true, get: function () { return ui_js_1.UITHEMES; } });
28
+ exports.CAMERA_DEFAULT = 'off';
29
+ exports.CAMERA = [
30
+ {
31
+ info: 'on',
32
+ text: 'Allow camera access',
33
+ value: 'on'
34
+ },
35
+ {
36
+ info: 'off',
37
+ text: 'Do not allow camera access',
38
+ value: 'off'
39
+ }
40
+ ];
41
+ exports.LANGUAGE_DEFAULT = 'default';
42
+ exports.LOCKING_DEFAULT = 'session';
43
+ exports.LOCKING = [
44
+ {
45
+ info: 'session',
46
+ text: 'Once per session',
47
+ value: 'session'
48
+ },
49
+ {
50
+ info: 'tx',
51
+ text: 'On each transaction',
52
+ value: 'tx'
53
+ }
54
+ ];
55
+ exports.METADATA_UP_DEFAULT = 'off';
56
+ exports.METADATA_UP = [
57
+ {
58
+ info: 'off',
59
+ text: 'Do not auto-update extension metadata',
60
+ value: 'off'
61
+ },
62
+ {
63
+ info: 'on',
64
+ text: 'Auto-update extension metadata',
65
+ value: 'on'
66
+ }
67
+ ];
68
+ exports.STORAGE_DEFAULT = 'off';
69
+ exports.STORAGE = [
70
+ {
71
+ info: 'on',
72
+ text: 'Allow local in-browser account storage',
73
+ value: 'on'
74
+ },
75
+ {
76
+ info: 'off',
77
+ text: 'Do not allow local in-browser account storage',
78
+ value: 'off'
79
+ }
80
+ ];
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LEDGER_APP = exports.LEDGER_APP_DEFAULT = exports.LEDGER_CONN = exports.LEDGER_CONN_DEFAULT = void 0;
4
+ exports.LEDGER_CONN_DEFAULT = 'none';
5
+ exports.LEDGER_CONN = [
6
+ {
7
+ info: 'none',
8
+ text: 'Do not attach Ledger devices',
9
+ value: 'none'
10
+ },
11
+ // Deprecated
12
+ // {
13
+ // info: 'u2f',
14
+ // text: 'Attach Ledger via U2F',
15
+ // value: 'u2f'
16
+ // },
17
+ {
18
+ info: 'webusb',
19
+ text: 'Attach Ledger via WebUSB (Chrome, recommended)',
20
+ value: 'webusb'
21
+ },
22
+ {
23
+ info: 'hid',
24
+ text: 'Attach Ledger via WebHID (Chrome, experimental)',
25
+ value: 'hid'
26
+ }
27
+ ];
28
+ exports.LEDGER_APP_DEFAULT = 'generic';
29
+ exports.LEDGER_APP = [
30
+ {
31
+ info: 'generic',
32
+ text: 'Use the Ledger Pezkuwi Generic App',
33
+ value: 'generic'
34
+ },
35
+ {
36
+ info: 'migration',
37
+ text: 'Use the Ledger Migration App',
38
+ value: 'migration'
39
+ },
40
+ {
41
+ info: 'chainSpecific',
42
+ text: 'Use the Chain Specific Ledger App',
43
+ value: 'chainSpecific'
44
+ }
45
+ ];