@notabene/javascript-sdk 1.35.2 → 2.0.0-RC

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 (46) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +498 -268
  3. package/dist/notabene.cjs +1 -0
  4. package/dist/notabene.d.ts +1565 -0
  5. package/dist/notabene.js +343 -0
  6. package/dist/tsdoc-metadata.json +11 -0
  7. package/package.json +50 -63
  8. package/src/__tests__/notabene.test.ts +270 -0
  9. package/src/components/EmbeddedComponent.ts +237 -0
  10. package/src/components/__tests__/EmbeddedComponent.test.ts +530 -0
  11. package/src/ivms/types.ts +232 -152
  12. package/src/locales.ts +47 -0
  13. package/src/notabene.ts +292 -293
  14. package/src/types.ts +1068 -78
  15. package/src/utils/MessageEventManager.ts +115 -0
  16. package/src/utils/__tests__/MessageEventManager.test.ts +119 -0
  17. package/src/utils/__tests__/urls.test.ts +112 -0
  18. package/src/utils/arbitraries.ts +244 -0
  19. package/src/utils/caip.ts +16 -0
  20. package/src/utils/urls.ts +40 -0
  21. package/.editorconfig +0 -10
  22. package/.envrc.template +0 -1
  23. package/.eslintignore +0 -3
  24. package/.eslintrc.js +0 -13
  25. package/.gitlab-ci.yml +0 -74
  26. package/.husky/commit-msg +0 -4
  27. package/.husky/pre-commit +0 -4
  28. package/.husky/pre-push +0 -4
  29. package/.nvmrc +0 -1
  30. package/.prettierrc +0 -4
  31. package/.releaserc.json +0 -16
  32. package/.tool-versions +0 -3
  33. package/.vscode/extensions.json +0 -7
  34. package/.vscode/settings.json +0 -11
  35. package/.yarn/releases/yarn-3.2.2.cjs +0 -783
  36. package/.yarnrc.yml +0 -5
  37. package/CODEOWNERS +0 -1
  38. package/dist/lib/index.js +0 -379
  39. package/jest.config.js +0 -5
  40. package/public/index.html +0 -93
  41. package/src/lib/index.ts +0 -2
  42. package/src/module/index.ts +0 -10
  43. package/src/zoidComponentProps.ts +0 -81
  44. package/tsconfig.json +0 -18
  45. /package/dist/{es/index.js → js/notabene.js} +0 -0
  46. /package/{public/js/.gitkeep → src/arbitraries.ts} +0 -0
package/.yarnrc.yml DELETED
@@ -1,5 +0,0 @@
1
- npmAuthToken: "${NPM_TOKEN:-}"
2
-
3
- npmPublishRegistry: "https://registry.npmjs.org/"
4
-
5
- yarnPath: .yarn/releases/yarn-3.2.2.cjs
package/CODEOWNERS DELETED
@@ -1 +0,0 @@
1
- * @ajunge @brunosimplicio @dw1284 @richardcrosby @david1250 @marieh_mai @timothy4915912 @graham9961840
package/dist/lib/index.js DELETED
@@ -1,379 +0,0 @@
1
- var $4mxld$jsxpragmatic = require("jsx-pragmatic");
2
- var $4mxld$zoid = require("zoid");
3
-
4
- function $parcel$export(e, n, v, s) {
5
- Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
6
- }
7
- function $parcel$exportWildcard(dest, source) {
8
- Object.keys(source).forEach(function(key) {
9
- if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
10
- return;
11
- }
12
-
13
- Object.defineProperty(dest, key, {
14
- enumerable: true,
15
- get: function get() {
16
- return source[key];
17
- }
18
- });
19
- });
20
-
21
- return dest;
22
- }
23
- function $parcel$interopDefault(a) {
24
- return a && a.__esModule ? a.default : a;
25
- }
26
-
27
- $parcel$export(module.exports, "Notabene", () => $fef5d623a19b12b5$export$2e2bcd8739ae039);
28
-
29
-
30
- var $48505191f6b4c91c$exports = {};
31
-
32
- $parcel$export($48505191f6b4c91c$exports, "WidgetType", () => $48505191f6b4c91c$export$95cdd842edb044c5);
33
- let $48505191f6b4c91c$export$95cdd842edb044c5;
34
- (function($48505191f6b4c91c$export$95cdd842edb044c5) {
35
- $48505191f6b4c91c$export$95cdd842edb044c5["WITHDRAWAL"] = "WITHDRAWAL";
36
- $48505191f6b4c91c$export$95cdd842edb044c5["POST_DEPOSIT"] = "POST_DEPOSIT";
37
- })($48505191f6b4c91c$export$95cdd842edb044c5 || ($48505191f6b4c91c$export$95cdd842edb044c5 = {}));
38
-
39
-
40
- const $fd25ee12f453fb93$var$generalProps = {
41
- vaspDID: {
42
- type: 'string',
43
- required: true
44
- },
45
- transaction: {
46
- type: 'object',
47
- required: false
48
- },
49
- error: {
50
- type: 'object',
51
- required: false
52
- },
53
- onError: {
54
- type: 'function',
55
- required: true
56
- },
57
- storeTransaction: {
58
- type: 'function',
59
- required: true
60
- },
61
- theme: {
62
- type: 'object',
63
- required: false
64
- },
65
- dictionary: {
66
- type: 'object',
67
- required: false
68
- },
69
- transactionTypeAllowed: {
70
- type: 'string',
71
- required: false
72
- },
73
- nonCustodialDeclarationType: {
74
- type: 'string',
75
- required: false
76
- },
77
- beneficiaryDetails: {
78
- type: 'array',
79
- required: false
80
- },
81
- fieldsProps: {
82
- type: 'object',
83
- required: false
84
- },
85
- fallbacks: {
86
- type: 'array',
87
- required: false
88
- },
89
- optInFeatures: {
90
- type: 'array',
91
- required: false
92
- }
93
- };
94
- const $fd25ee12f453fb93$export$1aafbfc7f973e450 = {
95
- ...$fd25ee12f453fb93$var$generalProps,
96
- onRequireAdditionalInformation: {
97
- type: 'function',
98
- required: true
99
- },
100
- onValidStateChange: {
101
- type: 'function',
102
- required: true
103
- }
104
- };
105
- const $fd25ee12f453fb93$export$73ab9d0d47d71b0c = {
106
- ...$fd25ee12f453fb93$var$generalProps,
107
- close: {
108
- type: 'function'
109
- },
110
- popupOpen: {
111
- type: 'boolean',
112
- required: true
113
- },
114
- setPopupOpen: {
115
- type: 'function',
116
- required: true
117
- }
118
- };
119
-
120
-
121
- class $fef5d623a19b12b5$export$2e2bcd8739ae039 {
122
- constructor(config){
123
- this.config = config;
124
- this.config.nonCustodialDeclarationType = config.nonCustodialDeclarationType || 'SIGNATURE';
125
- this.config.transactionTypeAllowed = config.transactionTypeAllowed || 'ALL';
126
- this.widgetRendered = false;
127
- this.shouldBeDestroyed = false;
128
- this.popupRendered = false;
129
- this.config.fallbacks = this.config.fallbacks || [
130
- {
131
- flow: 'WALLET_NOT_SUPPORTED',
132
- action: 'DECLARATION'
133
- },
134
- ];
135
- this.config.counterpartyManualEntry = this.config.counterpartyManualEntry !== undefined ? this.config.counterpartyManualEntry : true;
136
- }
137
- /**
138
- * Renders a new widget
139
- * @param type - the type of widget to render
140
- */ async renderWidget(type = $48505191f6b4c91c$export$95cdd842edb044c5.WITHDRAWAL) {
141
- this._renderWidget(type);
142
- }
143
- async _renderWidget(type) {
144
- if (this.widgetRendered) {
145
- console.error('Notabene: Widget already rendered, please destroy it first');
146
- this.config.onError(new Error('Widget already rendered, please destroy it first'));
147
- return;
148
- }
149
- this.widget = await this.buildWidget();
150
- this.popup = await this.buildPopup();
151
- this.widget.updateProps({
152
- transaction: this.tx,
153
- type: type
154
- });
155
- this.popup.updateProps({
156
- transaction: this.tx,
157
- type: type
158
- });
159
- this.popup.hide();
160
- await this.widget.render(this.config.container);
161
- await this.renderPopup();
162
- }
163
- async renderPopup() {
164
- if (!this.popup) return;
165
- if (!this.popupRendered) {
166
- await this.popup.render(this.config.container);
167
- this.popupRendered = true;
168
- }
169
- }
170
- async destroyWidget() {
171
- if (!this.widgetRendered || !this.popupRendered) {
172
- this.shouldBeDestroyed = true;
173
- return;
174
- }
175
- await $4mxld$zoid.destroy();
176
- this.shouldBeDestroyed = false;
177
- this.widgetRendered = false;
178
- this.popupRendered = false;
179
- }
180
- setTransaction(tx) {
181
- this.tx = tx;
182
- if (this.widgetRendered) {
183
- this.widget.updateProps({
184
- transaction: tx
185
- });
186
- this.popup.updateProps({
187
- transaction: tx
188
- });
189
- }
190
- }
191
- cleanUpDestroyedComponents() {
192
- if (!this.shouldBeDestroyed) return;
193
- this.destroyWidget();
194
- }
195
- getWidgetUrl() {
196
- const url = new URL(this.config.widget);
197
- url.hash = `authToken=${this.config.authToken}`;
198
- return url.toString();
199
- }
200
- getAdditionalInfoUrl() {
201
- const url = new URL(this.config.widget);
202
- url.search = 'popup=true';
203
- url.hash = `authToken=${this.config.authToken}`;
204
- return url.toString();
205
- }
206
- handleError(err) {
207
- this.error = err;
208
- if (this.widget && this.popup) {
209
- this.widget.updateProps({
210
- error: err
211
- });
212
- this.popup.updateProps({
213
- error: err
214
- });
215
- }
216
- if (!err || !this.config.onError) return;
217
- this.config.onError(err);
218
- }
219
- buildWidget() {
220
- if (!this.config.authToken) {
221
- console.error('Notabene: authToken is required');
222
- return;
223
- }
224
- const builtWidget = ($parcel$interopDefault($4mxld$zoid)).create({
225
- tag: 'widget',
226
- url: this.getWidgetUrl(),
227
- dimensions: {
228
- width: '100%',
229
- height: '280px'
230
- },
231
- attributes: {
232
- iframe: {
233
- allow: 'usb *;bluetooth *'
234
- }
235
- },
236
- props: $fd25ee12f453fb93$export$1aafbfc7f973e450
237
- })({
238
- vaspDID: this.config.vaspDID,
239
- transaction: {},
240
- theme: this.config.theme,
241
- dictionary: this.config.dictionary,
242
- transactionTypeAllowed: this.config.transactionTypeAllowed,
243
- nonCustodialDeclarationType: this.config.nonCustodialDeclarationType,
244
- beneficiaryDetails: this.config.beneficiaryDetails,
245
- fieldsProps: this.config.fieldsProps,
246
- fallbacks: this.config.fallbacks,
247
- optInFeatures: this.config.optInFeatures,
248
- counterpartyManualEntry: this.config.counterpartyManualEntry,
249
- onRequireAdditionalInformation: ()=>{
250
- this.popup.updateProps({
251
- popupOpen: true
252
- });
253
- this.popup.show();
254
- },
255
- onValidStateChange: (isValid)=>{
256
- this.config.onValidStateChange(isValid);
257
- },
258
- error: this.error,
259
- onError: (err)=>{
260
- this.handleError(err);
261
- console.debug('Notabene: Error handler called');
262
- },
263
- storeTransaction: (tx)=>{
264
- this.setTransaction(tx);
265
- }
266
- });
267
- builtWidget.event.on(($parcel$interopDefault($4mxld$zoid)).EVENT.RENDERED, ()=>{
268
- this.widgetRendered = true;
269
- this.cleanUpDestroyedComponents();
270
- });
271
- return builtWidget;
272
- }
273
- buildPopup() {
274
- if (!this.config.authToken) {
275
- console.error('Notabene: authToken is required');
276
- return;
277
- }
278
- const builtPopup = ($parcel$interopDefault($4mxld$zoid)).create({
279
- tag: 'popup',
280
- url: this.getAdditionalInfoUrl(),
281
- children: ()=>{
282
- return {
283
- Transaction: this.tx
284
- };
285
- },
286
- dimensions: {
287
- width: '100%',
288
- height: '100%'
289
- },
290
- attributes: {
291
- iframe: {
292
- allow: 'usb *;bluetooth *'
293
- }
294
- },
295
- props: $fd25ee12f453fb93$export$73ab9d0d47d71b0c,
296
- containerTemplate: ({ uid: uid , doc: doc , frame: frame , prerenderFrame: prerenderFrame })=>{
297
- return $4mxld$jsxpragmatic.node('div', {
298
- id: uid,
299
- class: 'nb-container'
300
- }, $4mxld$jsxpragmatic.node('style', null, `
301
- #${uid}.container {
302
- border: 5px solid red;
303
- }
304
- .nb-overlay {
305
- position: fixed;
306
- width: 100vw;
307
- height: 100vh;
308
- top: 0;
309
- left: 0;
310
- display: flex;
311
- align-items: center;
312
- justify-content: center;
313
- background-color: rgba(0,0,0,0.5);
314
- }
315
- .nb-popup {
316
- width: 100%;
317
- height: 100%;
318
- }
319
- .nb-preloader {
320
- display: none;
321
- }
322
- `), $4mxld$jsxpragmatic.node('div', {
323
- class: 'nb-overlay'
324
- }, $4mxld$jsxpragmatic.node('node', {
325
- el: frame,
326
- class: 'nb-popup'
327
- }), $4mxld$jsxpragmatic.node('node', {
328
- el: prerenderFrame,
329
- class: 'nb-preloader'
330
- }))).render($4mxld$jsxpragmatic.dom({
331
- doc: doc
332
- }));
333
- }
334
- })({
335
- vaspDID: this.config.vaspDID,
336
- transaction: this.tx,
337
- beneficiaryDetails: this.config.beneficiaryDetails,
338
- fieldsProps: this.config.fieldsProps,
339
- counterpartyManualEntry: this.config.counterpartyManualEntry,
340
- storeTransaction: (tx)=>{
341
- this.setTransaction(tx);
342
- console.debug('Notabene: Transaction stored');
343
- },
344
- close: ()=>{
345
- this.popup.close();
346
- console.debug('Notabene: Popup closing');
347
- },
348
- setPopupOpen: (isOpen)=>{
349
- this.popup.updateProps({
350
- popupOpen: isOpen
351
- });
352
- },
353
- error: this.error,
354
- onError: (err)=>{
355
- this.handleError(err);
356
- console.debug('Notabene: Error handler called');
357
- },
358
- popupOpen: false,
359
- theme: this.config.theme,
360
- dictionary: this.config.dictionary,
361
- transactionTypeAllowed: this.config.transactionTypeAllowed,
362
- nonCustodialDeclarationType: this.config.nonCustodialDeclarationType,
363
- fallbacks: this.config.fallbacks,
364
- optInFeatures: this.config.optInFeatures
365
- });
366
- builtPopup.event.on(($parcel$interopDefault($4mxld$zoid)).EVENT.RENDERED, ()=>{
367
- this.popupRendered = true;
368
- this.cleanUpDestroyedComponents();
369
- });
370
- return builtPopup;
371
- }
372
- }
373
- if (window) window.Notabene = $fef5d623a19b12b5$export$2e2bcd8739ae039;
374
-
375
-
376
-
377
- $parcel$exportWildcard(module.exports, $48505191f6b4c91c$exports);
378
-
379
-
package/jest.config.js DELETED
@@ -1,5 +0,0 @@
1
- /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
2
- module.exports = {
3
- preset: 'ts-jest',
4
- testEnvironment: 'node',
5
- };
package/public/index.html DELETED
@@ -1,93 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- ​
4
- <head>
5
- <meta charset="UTF-8" />
6
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
7
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
- <title>Notabene Widget Example</title>
9
- <script id="notabene" async src="http://localhost:3002/js/notabene.js"></script>
10
- <script>
11
- document.querySelector('#notabene').addEventListener('load', function () {
12
- const nb = new Notabene({
13
- widget: 'http://localhost:8080',
14
- container: '#container',
15
- authToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NkstUiJ9.eyJpYXQiOjE2NzI2ODY0ODMsImV4cCI6bnVsbCwidmMiOnsiQGNvbnRleHQiOlsiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvdjEiLCJodHRwczovL2FwaS5ub3RhYmVuZS5pZC9zY2hlbWFzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJBY2Nlc3NUb2tlbiJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJub25jZSI6ImFlZDY4YjllLWUxODEtNDRkMy1hOTdkLTYyODBjODA0NDZlMiIsInNjb3BlIjoiY3VzdG9tZXIifX0sInN1YiI6ImRpZDpldGhyOjB4YzZiMGRiYTRjOGYzNmQ3NjQxYjU4MjEwYzg1ZjI3Mjk1NDcyZmQxMyIsImlzcyI6ImRpZDpldGhyOjB4YzZiMGRiYTRjOGYzNmQ3NjQxYjU4MjEwYzg1ZjI3Mjk1NDcyZmQxMyJ9.-qdoEeJrRcYvtleGJhPDXD-crS0xDLjz3idUevEZKCevD64wjFugKaSP5ncenRSPVezHTNHdIRWlh7Cy6gX8jwE',
16
- onValidStateChange: (isValid) => {
17
- console.log(nb.tx);
18
- if(isValid){
19
- console.log('tx: %o',nb.tx)
20
- }
21
- },
22
- onError: (err) => {
23
- // If any errors are encountered, this function will be called.
24
- console.error(err.message);
25
- },
26
- vaspDID: 'did:ethr:0x8e73ea19a72e89f20339f5a9e4cda8e4b230455c',
27
- theme:{
28
- // primaryColor: '#fff',
29
- // primaryFontColor: '#fff',
30
- // secondaryFontColor: '#fff',
31
- // backgroundColor: 'black',
32
- // mode: 'dark',
33
- },
34
- // transactionTypeAllowed: 'VASP_2_VASP_ONLY',
35
- nonCustodialDeclarationType: 'DECLARATION',
36
- optInFeatures: ['REUSE_ADDRESS_OWNERSHIP_PROOF'],
37
-
38
- // @deprecated
39
- // beneficiaryDetails: ['beneficiaryNationalIdentification'],
40
-
41
- // fieldsProps: {
42
- // nationalIdentification: {
43
- // forceDisplay: true,
44
- // },
45
- // dateAndPlaceOfBirth: {
46
- // forceDisplay: true,
47
- // },
48
- // geographicAddress: {
49
- // forceDisplay: true,
50
- // optional: true
51
- // },
52
- // counterparty: {
53
- // optional: true
54
- // }
55
- // }
56
- fallbacks: [{flow: "WALLET_NOT_SUPPORTED", action: "REJECT"}]
57
- });
58
- nb.setTransaction({
59
- transactionAsset: 'BTC',
60
- // originatorAccountNumber: '0xdc0fF33a148031FasdfD1DE1e18e23456b25E1d8',
61
- beneficiaryAccountNumber: '0x8e73ea19a72e89f20339f5a9e4cda8e4b230455c',
62
- transactionAmount: '400000000000',
63
- });
64
-
65
- switch (window.location.hash.substr(1)) {
66
- case "post_deposit":
67
- nb.renderWidget('POST_DEPOSIT');
68
- break;
69
- case "withdrawal":
70
- default:
71
- nb.renderWidget('WITHDRAWAL');
72
- break;
73
- }
74
- });
75
- </script>
76
- </head>
77
- ​
78
- <body>
79
- <div id="container">
80
- </body>
81
- ​
82
- </html>
83
-
84
- <style>
85
- body{
86
- margin: 0;
87
- padding: 0;
88
- }
89
- #container{
90
- max-width: 100vw;
91
-
92
- }
93
- </style>
package/src/lib/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export { default as Notabene } from '../notabene';
2
- export * from '../types';
@@ -1,10 +0,0 @@
1
- import Notabene from '../notabene';
2
- export * from '../types';
3
-
4
- declare global {
5
- interface Window {
6
- Notabene: typeof Notabene;
7
- }
8
- }
9
-
10
- if (window) window.Notabene = Notabene;
@@ -1,81 +0,0 @@
1
- const generalProps = {
2
- vaspDID: {
3
- type: 'string',
4
- required: true,
5
- },
6
- transaction: {
7
- type: 'object',
8
- required: false,
9
- },
10
- error: {
11
- type: 'object',
12
- required: false,
13
- },
14
- onError: {
15
- type: 'function',
16
- required: true,
17
- },
18
- storeTransaction: {
19
- type: 'function',
20
- required: true,
21
- },
22
- theme: {
23
- type: 'object',
24
- required: false,
25
- },
26
- dictionary: {
27
- type: 'object',
28
- required: false,
29
- },
30
- transactionTypeAllowed: {
31
- type: 'string',
32
- required: false,
33
- },
34
- nonCustodialDeclarationType: {
35
- type: 'string',
36
- required: false,
37
- },
38
- beneficiaryDetails: {
39
- type: 'array',
40
- required: false,
41
- },
42
- fieldsProps: {
43
- type: 'object',
44
- required: false,
45
- },
46
- fallbacks: {
47
- type: 'array',
48
- required: false,
49
- },
50
- optInFeatures: {
51
- type: 'array',
52
- required: false,
53
- },
54
- };
55
-
56
- export const widgetProps = {
57
- ...generalProps,
58
- onRequireAdditionalInformation: {
59
- type: 'function',
60
- required: true,
61
- },
62
- onValidStateChange: {
63
- type: 'function',
64
- required: true,
65
- },
66
- };
67
-
68
- export const popupProps = {
69
- ...generalProps,
70
- close: {
71
- type: 'function',
72
- },
73
- popupOpen: {
74
- type: 'boolean',
75
- required: true,
76
- },
77
- setPopupOpen: {
78
- type: 'function',
79
- required: true,
80
- },
81
- };
package/tsconfig.json DELETED
@@ -1,18 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "es2020",
4
- "module": "ES2020",
5
- "strict": true,
6
- "esModuleInterop": true,
7
- "forceConsistentCasingInFileNames": true,
8
- "outDir": "./dist",
9
- "declaration": true,
10
- "moduleResolution": "node",
11
- "sourceMap": false,
12
- "baseUrl": "src",
13
- "resolveJsonModule": true,
14
- "lib": ["dom", "es2016"]
15
- },
16
- "include": ["./src"],
17
- "exclude": [".git", "node_modules"]
18
- }
File without changes
File without changes