fintoc 1.1.2 → 1.2.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.
- package/README.md +75 -296
- package/build/main/index.d.ts +3 -0
- package/build/main/index.js +13 -2
- package/build/main/interfaces/client/constructorOptions.d.ts +1 -0
- package/build/main/interfaces/client/index.js +6 -2
- package/build/main/interfaces/client/requestOptions.d.ts +1 -0
- package/build/main/interfaces/mixins/index.js +6 -2
- package/build/main/interfaces/paginator/index.js +6 -2
- package/build/main/interfaces/paginator/paginationOptions.d.ts +1 -0
- package/build/main/lib/client.d.ts +6 -1
- package/build/main/lib/client.js +50 -24
- package/build/main/lib/core.d.ts +18 -2
- package/build/main/lib/core.js +23 -6
- package/build/main/lib/errors.d.ts +2 -0
- package/build/main/lib/errors.js +5 -2
- package/build/main/lib/jws.d.ts +25 -0
- package/build/main/lib/jws.js +130 -0
- package/build/main/lib/managers/accountsManager.d.ts +4 -0
- package/build/main/lib/managers/accountsManager.js +7 -2
- package/build/main/lib/managers/index.js +6 -2
- package/build/main/lib/managers/invoicesManager.js +2 -2
- package/build/main/lib/managers/linksManager.js +2 -2
- package/build/main/lib/managers/movementsManager.js +2 -2
- package/build/main/lib/managers/paymentIntentsManager.js +2 -2
- package/build/main/lib/managers/refreshIntentsManager.js +2 -2
- package/build/main/lib/managers/subscriptionsManager.js +2 -2
- package/build/main/lib/managers/taxReturnsManager.js +2 -2
- package/build/main/lib/managers/v2/accountNumbersManager.d.ts +6 -0
- package/build/main/lib/managers/v2/accountNumbersManager.js +10 -0
- package/build/main/lib/managers/v2/accountsManager.d.ts +6 -0
- package/build/main/lib/managers/v2/accountsManager.js +10 -0
- package/build/main/lib/managers/v2/index.d.ts +4 -0
- package/build/main/lib/managers/v2/index.js +21 -0
- package/build/main/lib/managers/v2/simulateManager.d.ts +8 -0
- package/build/main/lib/managers/v2/simulateManager.js +15 -0
- package/build/main/lib/managers/v2/transfersManager.d.ts +6 -0
- package/build/main/lib/managers/v2/transfersManager.js +10 -0
- package/build/main/lib/managers/webhookEndpointsManager.js +2 -2
- package/build/main/lib/mixins/index.js +6 -2
- package/build/main/lib/mixins/managerMixin.d.ts +21 -6
- package/build/main/lib/mixins/managerMixin.js +35 -19
- package/build/main/lib/mixins/resourceMixin.js +10 -11
- package/build/main/lib/paginator.d.ts +1 -1
- package/build/main/lib/paginator.js +16 -13
- package/build/main/lib/resourceHandlers.d.ts +1 -1
- package/build/main/lib/resourceHandlers.js +15 -14
- package/build/main/lib/resources/account.d.ts +4 -0
- package/build/main/lib/resources/account.js +7 -2
- package/build/main/lib/resources/link.d.ts +20 -0
- package/build/main/lib/resources/link.js +31 -6
- package/build/main/lib/resources/v2/account.d.ts +3 -0
- package/build/main/lib/resources/v2/account.js +8 -0
- package/build/main/lib/resources/v2/accountNumber.d.ts +3 -0
- package/build/main/lib/resources/v2/accountNumber.js +8 -0
- package/build/main/lib/resources/v2/index.d.ts +3 -0
- package/build/main/lib/resources/v2/index.js +20 -0
- package/build/main/lib/resources/v2/transfer.d.ts +3 -0
- package/build/main/lib/resources/v2/transfer.js +8 -0
- package/build/main/lib/utils.d.ts +3 -3
- package/build/main/lib/utils.js +36 -23
- package/build/main/lib/version.js +1 -1
- package/build/main/lib/webhook.d.ts +17 -0
- package/build/main/lib/webhook.js +109 -0
- package/build/main/spec/client/creationFunctionality.spec.js +11 -11
- package/build/main/spec/client/requestFunctionality.spec.js +36 -11
- package/build/main/spec/core.spec.js +2 -2
- package/build/main/spec/integration.spec.d.ts +1 -0
- package/build/main/spec/integration.spec.js +587 -0
- package/build/main/spec/jws.spec.d.ts +1 -0
- package/build/main/spec/jws.spec.js +185 -0
- package/build/main/spec/managers/linkManagers.spec.js +5 -5
- package/build/main/spec/mixins/managerMixin/creation.spec.js +9 -9
- package/build/main/spec/mixins/managerMixin/handlers.spec.js +10 -14
- package/build/main/spec/mixins/managerMixin/methods.spec.js +10 -10
- package/build/main/spec/mixins/managerMixin/mocks/complexMockManager.d.ts +1 -1
- package/build/main/spec/mixins/managerMixin/mocks/complexMockManager.js +4 -4
- package/build/main/spec/mixins/managerMixin/mocks/emptyMockManager.js +2 -2
- package/build/main/spec/mixins/resourceMixin/creation.spec.js +6 -6
- package/build/main/spec/mixins/resourceMixin/methods.spec.js +7 -7
- package/build/main/spec/mixins/resourceMixin/serialization.spec.js +5 -5
- package/build/main/spec/mocks/client/axiosInstance.js +6 -5
- package/build/main/spec/mocks/client/response.d.ts +3 -0
- package/build/main/spec/mocks/client/response.js +8 -3
- package/build/main/spec/mocks/initializers.d.ts +1 -1
- package/build/main/spec/mocks/initializers.js +4 -5
- package/build/main/spec/paginator/paginate.spec.js +7 -7
- package/build/main/spec/paginator/parseLink.spec.js +13 -13
- package/build/main/spec/paginator/parseLinkHeaders.spec.js +8 -8
- package/build/main/spec/paginator/request.spec.js +10 -8
- package/build/main/spec/resources/account.spec.js +2 -2
- package/build/main/spec/resources/link.spec.js +6 -6
- package/build/main/spec/shared/utils.js +3 -4
- package/build/main/spec/utils/canRaiseHTTPError.spec.js +4 -4
- package/build/main/spec/utils/getErrorClass.spec.js +5 -5
- package/build/main/spec/utils/getResourceClass.spec.js +13 -13
- package/build/main/spec/utils/isISODate.spec.js +5 -5
- package/build/main/spec/utils/objetize.spec.js +14 -14
- package/build/main/spec/utils/objetizeGenerator.spec.js +6 -6
- package/build/main/spec/utils/serialize.spec.js +14 -14
- package/build/main/spec/utils/shared/getGenerator.js +2 -3
- package/build/main/spec/utils/singularize.spec.js +7 -7
- package/build/main/spec/utils/snakeToPascal.spec.js +7 -7
- package/build/main/spec/webhook.spec.d.ts +1 -0
- package/build/main/spec/webhook.spec.js +120 -0
- package/build/main/types/genericFunction.d.ts +1 -1
- package/build/main/types/index.js +6 -2
- package/build/main/types/resourceArguments.d.ts +1 -1
- package/build/module/index.d.ts +3 -0
- package/build/module/index.js +4 -1
- package/build/module/interfaces/client/constructorOptions.d.ts +1 -0
- package/build/module/interfaces/client/requestOptions.d.ts +1 -0
- package/build/module/interfaces/paginator/paginationOptions.d.ts +1 -0
- package/build/module/lib/client.d.ts +6 -1
- package/build/module/lib/client.js +41 -14
- package/build/module/lib/core.d.ts +18 -2
- package/build/module/lib/core.js +35 -8
- package/build/module/lib/errors.d.ts +2 -0
- package/build/module/lib/errors.js +3 -1
- package/build/module/lib/jws.d.ts +25 -0
- package/build/module/lib/jws.js +94 -0
- package/build/module/lib/managers/accountsManager.d.ts +4 -0
- package/build/module/lib/managers/accountsManager.js +8 -2
- package/build/module/lib/managers/invoicesManager.js +2 -2
- package/build/module/lib/managers/linksManager.js +2 -2
- package/build/module/lib/managers/movementsManager.js +2 -2
- package/build/module/lib/managers/paymentIntentsManager.js +2 -2
- package/build/module/lib/managers/refreshIntentsManager.js +2 -2
- package/build/module/lib/managers/subscriptionsManager.js +2 -2
- package/build/module/lib/managers/taxReturnsManager.js +2 -2
- package/build/module/lib/managers/v2/accountNumbersManager.d.ts +6 -0
- package/build/module/lib/managers/v2/accountNumbersManager.js +6 -0
- package/build/module/lib/managers/v2/accountsManager.d.ts +6 -0
- package/build/module/lib/managers/v2/accountsManager.js +6 -0
- package/build/module/lib/managers/v2/index.d.ts +4 -0
- package/build/module/lib/managers/v2/index.js +5 -0
- package/build/module/lib/managers/v2/simulateManager.d.ts +8 -0
- package/build/module/lib/managers/v2/simulateManager.js +11 -0
- package/build/module/lib/managers/v2/transfersManager.d.ts +6 -0
- package/build/module/lib/managers/v2/transfersManager.js +6 -0
- package/build/module/lib/managers/webhookEndpointsManager.js +2 -2
- package/build/module/lib/mixins/managerMixin.d.ts +21 -6
- package/build/module/lib/mixins/managerMixin.js +32 -16
- package/build/module/lib/mixins/resourceMixin.js +2 -3
- package/build/module/lib/paginator.d.ts +1 -1
- package/build/module/lib/paginator.js +12 -8
- package/build/module/lib/resourceHandlers.d.ts +1 -1
- package/build/module/lib/resourceHandlers.js +5 -3
- package/build/module/lib/resources/account.d.ts +4 -0
- package/build/module/lib/resources/account.js +7 -2
- package/build/module/lib/resources/link.d.ts +20 -0
- package/build/module/lib/resources/link.js +31 -6
- package/build/module/lib/resources/v2/account.d.ts +3 -0
- package/build/module/lib/resources/v2/account.js +4 -0
- package/build/module/lib/resources/v2/accountNumber.d.ts +3 -0
- package/build/module/lib/resources/v2/accountNumber.js +4 -0
- package/build/module/lib/resources/v2/index.d.ts +3 -0
- package/build/module/lib/resources/v2/index.js +4 -0
- package/build/module/lib/resources/v2/transfer.d.ts +3 -0
- package/build/module/lib/resources/v2/transfer.js +4 -0
- package/build/module/lib/utils.d.ts +3 -3
- package/build/module/lib/utils.js +1 -1
- package/build/module/lib/version.js +1 -1
- package/build/module/lib/webhook.d.ts +17 -0
- package/build/module/lib/webhook.js +72 -0
- package/build/module/spec/client/creationFunctionality.spec.js +6 -6
- package/build/module/spec/client/requestFunctionality.spec.js +26 -1
- package/build/module/spec/integration.spec.d.ts +1 -0
- package/build/module/spec/integration.spec.js +582 -0
- package/build/module/spec/jws.spec.d.ts +1 -0
- package/build/module/spec/jws.spec.js +147 -0
- package/build/module/spec/mixins/managerMixin/handlers.spec.js +6 -10
- package/build/module/spec/mixins/managerMixin/methods.spec.js +1 -1
- package/build/module/spec/mixins/managerMixin/mocks/complexMockManager.d.ts +1 -1
- package/build/module/spec/mixins/managerMixin/mocks/complexMockManager.js +4 -4
- package/build/module/spec/mixins/managerMixin/mocks/emptyMockManager.js +2 -2
- package/build/module/spec/mocks/client/axiosInstance.js +4 -3
- package/build/module/spec/mocks/client/response.d.ts +3 -0
- package/build/module/spec/mocks/client/response.js +9 -3
- package/build/module/spec/mocks/initializers.d.ts +1 -1
- package/build/module/spec/paginator/paginate.spec.js +2 -2
- package/build/module/spec/paginator/request.spec.js +6 -4
- package/build/module/spec/utils/objetizeGenerator.spec.js +1 -1
- package/build/module/spec/utils/shared/getGenerator.js +1 -1
- package/build/module/spec/webhook.spec.d.ts +1 -0
- package/build/module/spec/webhook.spec.js +115 -0
- package/build/module/types/genericFunction.d.ts +1 -1
- package/build/module/types/resourceArguments.d.ts +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,582 @@
|
|
|
1
|
+
import test from 'ava';
|
|
2
|
+
import { Fintoc } from '../lib/core';
|
|
3
|
+
import { mockAxios, restore } from './mocks/initializers';
|
|
4
|
+
test.before((t) => {
|
|
5
|
+
const ctx = t.context;
|
|
6
|
+
ctx.axiosMock = mockAxios();
|
|
7
|
+
});
|
|
8
|
+
test.after((t) => {
|
|
9
|
+
const ctx = t.context;
|
|
10
|
+
restore(ctx.axiosMock);
|
|
11
|
+
});
|
|
12
|
+
test.beforeEach((t) => {
|
|
13
|
+
const ctx = t.context;
|
|
14
|
+
const apiKey = 'super_secret_api_key';
|
|
15
|
+
ctx.fintoc = new Fintoc(apiKey);
|
|
16
|
+
});
|
|
17
|
+
test('fintoc.paymentIntents.list()', async (t) => {
|
|
18
|
+
const ctx = t.context;
|
|
19
|
+
const paymentIntents = await ctx.fintoc.paymentIntents.list();
|
|
20
|
+
let count = 0;
|
|
21
|
+
for await (const paymentIntent of paymentIntents) {
|
|
22
|
+
count += 1;
|
|
23
|
+
t.is(paymentIntent.method, 'get');
|
|
24
|
+
t.is(paymentIntent.url, 'v1/payment_intents');
|
|
25
|
+
}
|
|
26
|
+
t.true(count > 0);
|
|
27
|
+
});
|
|
28
|
+
test('fintoc.paymentIntents.all() - deprecated', async (t) => {
|
|
29
|
+
const ctx = t.context;
|
|
30
|
+
const paymentIntents = await ctx.fintoc.paymentIntents.all();
|
|
31
|
+
let count = 0;
|
|
32
|
+
for await (const paymentIntent of paymentIntents) {
|
|
33
|
+
count += 1;
|
|
34
|
+
t.is(paymentIntent.method, 'get');
|
|
35
|
+
t.is(paymentIntent.url, 'v1/payment_intents');
|
|
36
|
+
}
|
|
37
|
+
t.true(count > 0);
|
|
38
|
+
});
|
|
39
|
+
test('fintoc.paymentIntents.get()', async (t) => {
|
|
40
|
+
const ctx = t.context;
|
|
41
|
+
const paymentId = 'payment_id';
|
|
42
|
+
const paymentIntent = await ctx.fintoc.paymentIntents.get(paymentId);
|
|
43
|
+
t.is(paymentIntent.method, 'get');
|
|
44
|
+
t.is(paymentIntent.url, `v1/payment_intents/${paymentId}`);
|
|
45
|
+
});
|
|
46
|
+
test('fintoc.paymentIntents.create()', async (t) => {
|
|
47
|
+
const ctx = t.context;
|
|
48
|
+
const paymentData = {
|
|
49
|
+
amount: 1000,
|
|
50
|
+
currency: 'USD',
|
|
51
|
+
payment_method: 'bank_transfer ',
|
|
52
|
+
};
|
|
53
|
+
const paymentIntent = await ctx.fintoc.paymentIntents.create(paymentData);
|
|
54
|
+
t.is(paymentIntent.method, 'post');
|
|
55
|
+
t.is(paymentIntent.url, 'v1/payment_intents');
|
|
56
|
+
t.is(paymentIntent.json.amount, paymentData.amount);
|
|
57
|
+
t.is(paymentIntent.json.currency, paymentData.currency);
|
|
58
|
+
t.is(paymentIntent.json.payment_method, paymentData.payment_method);
|
|
59
|
+
});
|
|
60
|
+
test('fintoc.links.list()', async (t) => {
|
|
61
|
+
const ctx = t.context;
|
|
62
|
+
const links = await ctx.fintoc.links.list();
|
|
63
|
+
let count = 0;
|
|
64
|
+
for await (const link of links) {
|
|
65
|
+
count += 1;
|
|
66
|
+
t.is(link.method, 'get');
|
|
67
|
+
t.is(link.url, 'v1/links');
|
|
68
|
+
}
|
|
69
|
+
t.true(count > 0);
|
|
70
|
+
});
|
|
71
|
+
test('fintoc.links.all() - deprecated', async (t) => {
|
|
72
|
+
const ctx = t.context;
|
|
73
|
+
const links = await ctx.fintoc.links.all();
|
|
74
|
+
let count = 0;
|
|
75
|
+
for await (const link of links) {
|
|
76
|
+
count += 1;
|
|
77
|
+
t.is(link.method, 'get');
|
|
78
|
+
t.is(link.url, 'v1/links');
|
|
79
|
+
}
|
|
80
|
+
t.true(count > 0);
|
|
81
|
+
});
|
|
82
|
+
test('fintoc.links.get()', async (t) => {
|
|
83
|
+
const ctx = t.context;
|
|
84
|
+
const linkToken = 'link_token_example';
|
|
85
|
+
const link = await ctx.fintoc.links.get(linkToken);
|
|
86
|
+
t.is(link.method, 'get');
|
|
87
|
+
t.is(link.url, `v1/links/${linkToken}`);
|
|
88
|
+
});
|
|
89
|
+
test('fintoc.links.update()', async (t) => {
|
|
90
|
+
const ctx = t.context;
|
|
91
|
+
const linkToken = 'link_token_example';
|
|
92
|
+
const updateData = {
|
|
93
|
+
username: 'updated_username',
|
|
94
|
+
};
|
|
95
|
+
const link = await ctx.fintoc.links.update(linkToken, updateData);
|
|
96
|
+
t.is(link.method, 'patch');
|
|
97
|
+
t.is(link.url, `v1/links/${linkToken}`);
|
|
98
|
+
t.is(link.json.username, updateData.username);
|
|
99
|
+
});
|
|
100
|
+
test('fintoc.links.delete()', async (t) => {
|
|
101
|
+
const ctx = t.context;
|
|
102
|
+
const linkId = 'link_id';
|
|
103
|
+
const deletedIdentifier = await ctx.fintoc.links.delete(linkId);
|
|
104
|
+
t.is(deletedIdentifier, linkId);
|
|
105
|
+
});
|
|
106
|
+
test('fintoc.accounts.list()', async (t) => {
|
|
107
|
+
const ctx = t.context;
|
|
108
|
+
const accounts = await ctx.fintoc.accounts.list();
|
|
109
|
+
let count = 0;
|
|
110
|
+
for await (const account of accounts) {
|
|
111
|
+
count += 1;
|
|
112
|
+
t.is(account.method, 'get');
|
|
113
|
+
t.is(account.url, 'v1/accounts');
|
|
114
|
+
}
|
|
115
|
+
t.true(count > 0);
|
|
116
|
+
});
|
|
117
|
+
test('fintoc.accounts.all() - deprecated', async (t) => {
|
|
118
|
+
const ctx = t.context;
|
|
119
|
+
const accounts = await ctx.fintoc.accounts.all();
|
|
120
|
+
let count = 0;
|
|
121
|
+
for await (const account of accounts) {
|
|
122
|
+
count += 1;
|
|
123
|
+
t.is(account.method, 'get');
|
|
124
|
+
t.is(account.url, 'v1/accounts');
|
|
125
|
+
}
|
|
126
|
+
t.true(count > 0);
|
|
127
|
+
});
|
|
128
|
+
test('fintoc.accounts.get()', async (t) => {
|
|
129
|
+
const ctx = t.context;
|
|
130
|
+
const accountId = 'account_id';
|
|
131
|
+
const account = await ctx.fintoc.accounts.get(accountId);
|
|
132
|
+
t.is(account.method, 'get');
|
|
133
|
+
t.is(account.url, `v1/accounts/${accountId}`);
|
|
134
|
+
});
|
|
135
|
+
test('fintoc.accounts.movements.list()', async (t) => {
|
|
136
|
+
const ctx = t.context;
|
|
137
|
+
const linkToken = 'link_token_example';
|
|
138
|
+
const accountId = 'account_id';
|
|
139
|
+
const movements = await ctx.fintoc.accounts.movements.list({
|
|
140
|
+
account_id: accountId,
|
|
141
|
+
link_token: linkToken,
|
|
142
|
+
});
|
|
143
|
+
let count = 0;
|
|
144
|
+
for await (const movement of movements) {
|
|
145
|
+
count += 1;
|
|
146
|
+
t.is(movement.method, 'get');
|
|
147
|
+
t.is(movement.url, `v1/accounts/${accountId}/movements`);
|
|
148
|
+
t.is(movement.params.link_token, linkToken);
|
|
149
|
+
t.is(movement.params.account_id, accountId);
|
|
150
|
+
}
|
|
151
|
+
t.true(count > 0);
|
|
152
|
+
});
|
|
153
|
+
test('fintoc.accounts.movements.all() - deprecated', async (t) => {
|
|
154
|
+
const ctx = t.context;
|
|
155
|
+
const linkToken = 'link_token_example';
|
|
156
|
+
const accountId = 'account_id';
|
|
157
|
+
const movements = await ctx.fintoc.accounts.movements.all({
|
|
158
|
+
account_id: accountId,
|
|
159
|
+
link_token: linkToken,
|
|
160
|
+
});
|
|
161
|
+
let count = 0;
|
|
162
|
+
for await (const movement of movements) {
|
|
163
|
+
count += 1;
|
|
164
|
+
t.is(movement.method, 'get');
|
|
165
|
+
t.is(movement.url, `v1/accounts/${accountId}/movements`);
|
|
166
|
+
t.is(movement.params.link_token, linkToken);
|
|
167
|
+
t.is(movement.params.account_id, accountId);
|
|
168
|
+
}
|
|
169
|
+
t.true(count > 0);
|
|
170
|
+
});
|
|
171
|
+
test('fintoc.accounts.movements.get()', async (t) => {
|
|
172
|
+
const ctx = t.context;
|
|
173
|
+
const linkToken = 'link_token_example';
|
|
174
|
+
const accountId = 'account_id';
|
|
175
|
+
const movementId = 'movement_id';
|
|
176
|
+
const movement = await ctx.fintoc.accounts.movements.get(movementId, {
|
|
177
|
+
account_id: accountId,
|
|
178
|
+
link_token: linkToken,
|
|
179
|
+
});
|
|
180
|
+
t.is(movement.method, 'get');
|
|
181
|
+
t.is(movement.url, `v1/accounts/${accountId}/movements/${movementId}`);
|
|
182
|
+
t.is(movement.params.link_token, linkToken);
|
|
183
|
+
t.is(movement.params.account_id, accountId);
|
|
184
|
+
});
|
|
185
|
+
test('fintoc.webhookEndpoints.list()', async (t) => {
|
|
186
|
+
const ctx = t.context;
|
|
187
|
+
const webhookEndpoints = await ctx.fintoc.webhookEndpoints.list();
|
|
188
|
+
let count = 0;
|
|
189
|
+
for await (const webhookEndpoint of webhookEndpoints) {
|
|
190
|
+
count += 1;
|
|
191
|
+
t.is(webhookEndpoint.method, 'get');
|
|
192
|
+
t.is(webhookEndpoint.url, 'v1/webhook_endpoints');
|
|
193
|
+
}
|
|
194
|
+
t.true(count > 0);
|
|
195
|
+
});
|
|
196
|
+
test('fintoc.webhookEndpoints.all() - deprecated', async (t) => {
|
|
197
|
+
const ctx = t.context;
|
|
198
|
+
const webhookEndpoints = await ctx.fintoc.webhookEndpoints.all();
|
|
199
|
+
let count = 0;
|
|
200
|
+
for await (const webhookEndpoint of webhookEndpoints) {
|
|
201
|
+
count += 1;
|
|
202
|
+
t.is(webhookEndpoint.method, 'get');
|
|
203
|
+
t.is(webhookEndpoint.url, 'v1/webhook_endpoints');
|
|
204
|
+
}
|
|
205
|
+
t.true(count > 0);
|
|
206
|
+
});
|
|
207
|
+
test('fintoc.webhookEndpoints.get()', async (t) => {
|
|
208
|
+
const ctx = t.context;
|
|
209
|
+
const webhookEndpointId = 'we_example_id';
|
|
210
|
+
const webhookEndpoint = await ctx.fintoc.webhookEndpoints.get(webhookEndpointId);
|
|
211
|
+
t.is(webhookEndpoint.method, 'get');
|
|
212
|
+
t.is(webhookEndpoint.url, `v1/webhook_endpoints/${webhookEndpointId}`);
|
|
213
|
+
});
|
|
214
|
+
test('fintoc.webhookEndpoints.create()', async (t) => {
|
|
215
|
+
const ctx = t.context;
|
|
216
|
+
const webhookData = {
|
|
217
|
+
url: 'https://example.com/webhook',
|
|
218
|
+
enabled_events: ['payment_intent.succeeded'],
|
|
219
|
+
};
|
|
220
|
+
const webhookEndpoint = await ctx.fintoc.webhookEndpoints.create(webhookData);
|
|
221
|
+
t.is(webhookEndpoint.method, 'post');
|
|
222
|
+
t.is(webhookEndpoint.url, 'v1/webhook_endpoints');
|
|
223
|
+
t.is(webhookEndpoint.json.url, webhookData.url);
|
|
224
|
+
t.deepEqual(webhookEndpoint.json.enabled_events, webhookData.enabled_events);
|
|
225
|
+
});
|
|
226
|
+
test('fintoc.webhookEndpoints.update()', async (t) => {
|
|
227
|
+
const ctx = t.context;
|
|
228
|
+
const webhookEndpointId = 'we_example_id';
|
|
229
|
+
const updateData = {
|
|
230
|
+
enabled_events: ['payment_intent.failed', 'refund.succeeded'],
|
|
231
|
+
};
|
|
232
|
+
const webhookEndpoint = await ctx.fintoc.webhookEndpoints.update(webhookEndpointId, updateData);
|
|
233
|
+
t.is(webhookEndpoint.method, 'patch');
|
|
234
|
+
t.is(webhookEndpoint.url, `v1/webhook_endpoints/${webhookEndpointId}`);
|
|
235
|
+
t.deepEqual(webhookEndpoint.json.enabled_events, updateData.enabled_events);
|
|
236
|
+
});
|
|
237
|
+
test('fintoc.webhookEndpoints.delete()', async (t) => {
|
|
238
|
+
const ctx = t.context;
|
|
239
|
+
const webhookEndpointId = 'we_example_id';
|
|
240
|
+
const deletedIdentifier = await ctx.fintoc.webhookEndpoints.delete(webhookEndpointId);
|
|
241
|
+
t.is(deletedIdentifier, webhookEndpointId);
|
|
242
|
+
});
|
|
243
|
+
test('fintoc.invoices.list()', async (t) => {
|
|
244
|
+
const ctx = t.context;
|
|
245
|
+
const invoices = await ctx.fintoc.invoices.list();
|
|
246
|
+
let count = 0;
|
|
247
|
+
for await (const invoice of invoices) {
|
|
248
|
+
count += 1;
|
|
249
|
+
t.is(invoice.method, 'get');
|
|
250
|
+
t.is(invoice.url, 'v1/invoices');
|
|
251
|
+
}
|
|
252
|
+
t.true(count > 0);
|
|
253
|
+
});
|
|
254
|
+
test('fintoc.invoices.all() - deprecated', async (t) => {
|
|
255
|
+
const ctx = t.context;
|
|
256
|
+
const invoices = await ctx.fintoc.invoices.all();
|
|
257
|
+
let count = 0;
|
|
258
|
+
for await (const invoice of invoices) {
|
|
259
|
+
count += 1;
|
|
260
|
+
t.is(invoice.method, 'get');
|
|
261
|
+
t.is(invoice.url, 'v1/invoices');
|
|
262
|
+
}
|
|
263
|
+
t.true(count > 0);
|
|
264
|
+
});
|
|
265
|
+
test('fintoc.refreshIntents.list()', async (t) => {
|
|
266
|
+
const ctx = t.context;
|
|
267
|
+
const refreshIntents = await ctx.fintoc.refreshIntents.list();
|
|
268
|
+
let count = 0;
|
|
269
|
+
for await (const refreshIntent of refreshIntents) {
|
|
270
|
+
count += 1;
|
|
271
|
+
t.is(refreshIntent.method, 'get');
|
|
272
|
+
t.is(refreshIntent.url, 'v1/refresh_intents');
|
|
273
|
+
}
|
|
274
|
+
t.true(count > 0);
|
|
275
|
+
});
|
|
276
|
+
test('fintoc.refreshIntents.all() - deprecated', async (t) => {
|
|
277
|
+
const ctx = t.context;
|
|
278
|
+
const refreshIntents = await ctx.fintoc.refreshIntents.all();
|
|
279
|
+
let count = 0;
|
|
280
|
+
for await (const refreshIntent of refreshIntents) {
|
|
281
|
+
count += 1;
|
|
282
|
+
t.is(refreshIntent.method, 'get');
|
|
283
|
+
t.is(refreshIntent.url, 'v1/refresh_intents');
|
|
284
|
+
}
|
|
285
|
+
t.true(count > 0);
|
|
286
|
+
});
|
|
287
|
+
test('fintoc.refreshIntents.get()', async (t) => {
|
|
288
|
+
const ctx = t.context;
|
|
289
|
+
const refreshIntentId = 'refresh_intent_id';
|
|
290
|
+
const refreshIntent = await ctx.fintoc.refreshIntents.get(refreshIntentId);
|
|
291
|
+
t.is(refreshIntent.method, 'get');
|
|
292
|
+
t.is(refreshIntent.url, `v1/refresh_intents/${refreshIntentId}`);
|
|
293
|
+
});
|
|
294
|
+
test('fintoc.refreshIntents.create()', async (t) => {
|
|
295
|
+
const ctx = t.context;
|
|
296
|
+
const refreshData = {
|
|
297
|
+
link_token: 'link_token_example',
|
|
298
|
+
refresh_type: 'only_last',
|
|
299
|
+
};
|
|
300
|
+
const refreshIntent = await ctx.fintoc.refreshIntents.create(refreshData);
|
|
301
|
+
t.is(refreshIntent.method, 'post');
|
|
302
|
+
t.is(refreshIntent.url, 'v1/refresh_intents');
|
|
303
|
+
t.is(refreshIntent.json.link_token, refreshData.link_token);
|
|
304
|
+
t.is(refreshIntent.json.refresh_type, refreshData.refresh_type);
|
|
305
|
+
});
|
|
306
|
+
test('fintoc.subscriptions.list()', async (t) => {
|
|
307
|
+
const ctx = t.context;
|
|
308
|
+
const subscriptions = await ctx.fintoc.subscriptions.list();
|
|
309
|
+
let count = 0;
|
|
310
|
+
for await (const subscription of subscriptions) {
|
|
311
|
+
count += 1;
|
|
312
|
+
t.is(subscription.method, 'get');
|
|
313
|
+
t.is(subscription.url, 'v1/subscriptions');
|
|
314
|
+
}
|
|
315
|
+
t.true(count > 0);
|
|
316
|
+
});
|
|
317
|
+
test('fintoc.subscriptions.all() - deprecated', async (t) => {
|
|
318
|
+
const ctx = t.context;
|
|
319
|
+
const subscriptions = await ctx.fintoc.subscriptions.all();
|
|
320
|
+
let count = 0;
|
|
321
|
+
for await (const subscription of subscriptions) {
|
|
322
|
+
count += 1;
|
|
323
|
+
t.is(subscription.method, 'get');
|
|
324
|
+
t.is(subscription.url, 'v1/subscriptions');
|
|
325
|
+
}
|
|
326
|
+
t.true(count > 0);
|
|
327
|
+
});
|
|
328
|
+
test('fintoc.subscriptions.get()', async (t) => {
|
|
329
|
+
const ctx = t.context;
|
|
330
|
+
const subscriptionId = 'subscription_id';
|
|
331
|
+
const subscription = await ctx.fintoc.subscriptions.get(subscriptionId);
|
|
332
|
+
t.is(subscription.method, 'get');
|
|
333
|
+
t.is(subscription.url, `v1/subscriptions/${subscriptionId}`);
|
|
334
|
+
});
|
|
335
|
+
test('fintoc.taxReturns.list()', async (t) => {
|
|
336
|
+
const ctx = t.context;
|
|
337
|
+
const taxReturns = await ctx.fintoc.taxReturns.list();
|
|
338
|
+
let count = 0;
|
|
339
|
+
for await (const taxReturn of taxReturns) {
|
|
340
|
+
count += 1;
|
|
341
|
+
t.is(taxReturn.method, 'get');
|
|
342
|
+
t.is(taxReturn.url, 'v1/tax_returns');
|
|
343
|
+
}
|
|
344
|
+
t.true(count > 0);
|
|
345
|
+
});
|
|
346
|
+
test('fintoc.taxReturns.all() - deprecated', async (t) => {
|
|
347
|
+
const ctx = t.context;
|
|
348
|
+
const taxReturns = await ctx.fintoc.taxReturns.all();
|
|
349
|
+
let count = 0;
|
|
350
|
+
for await (const taxReturn of taxReturns) {
|
|
351
|
+
count += 1;
|
|
352
|
+
t.is(taxReturn.method, 'get');
|
|
353
|
+
t.is(taxReturn.url, 'v1/tax_returns');
|
|
354
|
+
}
|
|
355
|
+
t.true(count > 0);
|
|
356
|
+
});
|
|
357
|
+
test('fintoc.taxReturns.get()', async (t) => {
|
|
358
|
+
const ctx = t.context;
|
|
359
|
+
const taxReturnId = 'tax_return_id';
|
|
360
|
+
const taxReturn = await ctx.fintoc.taxReturns.get(taxReturnId);
|
|
361
|
+
t.is(taxReturn.method, 'get');
|
|
362
|
+
t.is(taxReturn.url, `v1/tax_returns/${taxReturnId}`);
|
|
363
|
+
});
|
|
364
|
+
test('link.accounts.list()', async (t) => {
|
|
365
|
+
const ctx = t.context;
|
|
366
|
+
const linkToken = 'link_token_example';
|
|
367
|
+
const link = await ctx.fintoc.links.get(linkToken);
|
|
368
|
+
const accounts = await link.accounts.list();
|
|
369
|
+
t.is(link.accounts._client.params.link_token, linkToken);
|
|
370
|
+
let count = 0;
|
|
371
|
+
for await (const account of accounts) {
|
|
372
|
+
count += 1;
|
|
373
|
+
t.is(account.method, 'get');
|
|
374
|
+
t.is(account.url, 'v1/accounts');
|
|
375
|
+
}
|
|
376
|
+
t.true(count > 0);
|
|
377
|
+
});
|
|
378
|
+
test('link.accounts.all() - deprecated', async (t) => {
|
|
379
|
+
const ctx = t.context;
|
|
380
|
+
const linkToken = 'link_token_example';
|
|
381
|
+
const link = await ctx.fintoc.links.get(linkToken);
|
|
382
|
+
const accounts = await link.accounts.all();
|
|
383
|
+
t.is(link.accounts._client.params.link_token, linkToken);
|
|
384
|
+
let count = 0;
|
|
385
|
+
for await (const account of accounts) {
|
|
386
|
+
count += 1;
|
|
387
|
+
t.is(account.method, 'get');
|
|
388
|
+
t.is(account.url, 'v1/accounts');
|
|
389
|
+
}
|
|
390
|
+
t.true(count > 0);
|
|
391
|
+
});
|
|
392
|
+
test('link.accounts.get()', async (t) => {
|
|
393
|
+
const ctx = t.context;
|
|
394
|
+
const linkToken = 'link_token_example';
|
|
395
|
+
const link = await ctx.fintoc.links.get(linkToken);
|
|
396
|
+
const accountId = 'account_id';
|
|
397
|
+
const account = await link.accounts.get(accountId);
|
|
398
|
+
t.is(account.method, 'get');
|
|
399
|
+
t.is(account.url, `v1/accounts/${accountId}`);
|
|
400
|
+
t.is(link.accounts._client.params.link_token, linkToken);
|
|
401
|
+
t.is(account._client.params.link_token, linkToken);
|
|
402
|
+
});
|
|
403
|
+
test('account.movements.list()', async (t) => {
|
|
404
|
+
const ctx = t.context;
|
|
405
|
+
const linkToken = 'link_token_example';
|
|
406
|
+
const link = await ctx.fintoc.links.get(linkToken);
|
|
407
|
+
const accountId = 'account_id';
|
|
408
|
+
const account = await link.accounts.get(accountId);
|
|
409
|
+
const movements = await account.movements.list();
|
|
410
|
+
t.is(account.movements._client.params.link_token, linkToken);
|
|
411
|
+
let count = 0;
|
|
412
|
+
for await (const movement of movements) {
|
|
413
|
+
count += 1;
|
|
414
|
+
t.is(movement.method, 'get');
|
|
415
|
+
t.is(movement.url, `v1/accounts/${accountId}/movements`);
|
|
416
|
+
t.is(movement._client.params.link_token, linkToken);
|
|
417
|
+
}
|
|
418
|
+
t.true(count > 0);
|
|
419
|
+
});
|
|
420
|
+
test('account.movements.all() - deprecated', async (t) => {
|
|
421
|
+
const ctx = t.context;
|
|
422
|
+
const linkToken = 'link_token_example';
|
|
423
|
+
const link = await ctx.fintoc.links.get(linkToken);
|
|
424
|
+
const accountId = 'account_id';
|
|
425
|
+
const account = await link.accounts.get(accountId);
|
|
426
|
+
const movements = await account.movements.all();
|
|
427
|
+
t.is(account.movements._client.params.link_token, linkToken);
|
|
428
|
+
let count = 0;
|
|
429
|
+
for await (const movement of movements) {
|
|
430
|
+
count += 1;
|
|
431
|
+
t.is(movement.method, 'get');
|
|
432
|
+
t.is(movement.url, `v1/accounts/${accountId}/movements`);
|
|
433
|
+
t.is(movement._client.params.link_token, linkToken);
|
|
434
|
+
}
|
|
435
|
+
t.true(count > 0);
|
|
436
|
+
});
|
|
437
|
+
test('account.movements.get()', async (t) => {
|
|
438
|
+
const ctx = t.context;
|
|
439
|
+
const linkToken = 'link_token_example';
|
|
440
|
+
const link = await ctx.fintoc.links.get(linkToken);
|
|
441
|
+
const accountId = 'account_id';
|
|
442
|
+
const account = await link.accounts.get(accountId);
|
|
443
|
+
const movementId = 'movement_id';
|
|
444
|
+
const movement = await account.movements.get(movementId);
|
|
445
|
+
t.is(movement.method, 'get');
|
|
446
|
+
t.is(movement.url, `v1/accounts/${accountId}/movements/${movementId}`);
|
|
447
|
+
t.is(movement._client.params.link_token, linkToken);
|
|
448
|
+
});
|
|
449
|
+
test('fintoc.v2.transfers.list()', async (t) => {
|
|
450
|
+
const ctx = t.context;
|
|
451
|
+
const transfers = await ctx.fintoc.v2.transfers.list();
|
|
452
|
+
let count = 0;
|
|
453
|
+
for await (const transfer of transfers) {
|
|
454
|
+
count += 1;
|
|
455
|
+
t.is(transfer.method, 'get');
|
|
456
|
+
t.is(transfer.url, 'v2/transfers');
|
|
457
|
+
}
|
|
458
|
+
t.true(count > 0);
|
|
459
|
+
});
|
|
460
|
+
test('fintoc.v2.transfers.get()', async (t) => {
|
|
461
|
+
const ctx = t.context;
|
|
462
|
+
const transferId = 'transfer_id';
|
|
463
|
+
const transfer = await ctx.fintoc.v2.transfers.get(transferId);
|
|
464
|
+
t.is(transfer.method, 'get');
|
|
465
|
+
t.is(transfer.url, `v2/transfers/${transferId}`);
|
|
466
|
+
});
|
|
467
|
+
test('fintoc.v2.transfers.create()', async (t) => {
|
|
468
|
+
const ctx = t.context;
|
|
469
|
+
const transferData = {
|
|
470
|
+
amount: 10000,
|
|
471
|
+
currency: 'MXN',
|
|
472
|
+
counterparty: {
|
|
473
|
+
account_number: '012969100000000026',
|
|
474
|
+
},
|
|
475
|
+
};
|
|
476
|
+
const transfer = await ctx.fintoc.v2.transfers.create(transferData);
|
|
477
|
+
t.is(transfer.method, 'post');
|
|
478
|
+
t.is(transfer.url, 'v2/transfers');
|
|
479
|
+
t.is(transfer.json.amount, transferData.amount);
|
|
480
|
+
t.is(transfer.json.currency, transferData.currency);
|
|
481
|
+
t.is(transfer.json.counterparty.account_number, transferData.counterparty.account_number);
|
|
482
|
+
t.true(transfer.headers['Idempotency-Key'] && transfer.headers['Idempotency-Key'].length > 0);
|
|
483
|
+
});
|
|
484
|
+
test('fintoc.v2.transfers.create() with idempotency key', async (t) => {
|
|
485
|
+
const ctx = t.context;
|
|
486
|
+
const transferData = {
|
|
487
|
+
amount: 10000,
|
|
488
|
+
currency: 'MXN',
|
|
489
|
+
idempotency_key: 'idempotency_key_123',
|
|
490
|
+
counterparty: {
|
|
491
|
+
account_number: '012969100000000026',
|
|
492
|
+
},
|
|
493
|
+
};
|
|
494
|
+
const transfer = await ctx.fintoc.v2.transfers.create(transferData);
|
|
495
|
+
t.is(transfer.method, 'post');
|
|
496
|
+
t.is(transfer.url, 'v2/transfers');
|
|
497
|
+
t.is(transfer.headers['Idempotency-Key'], transferData.idempotency_key);
|
|
498
|
+
});
|
|
499
|
+
test('fintoc.v2.accounts.list()', async (t) => {
|
|
500
|
+
const ctx = t.context;
|
|
501
|
+
const accounts = await ctx.fintoc.v2.accounts.list();
|
|
502
|
+
let count = 0;
|
|
503
|
+
for await (const account of accounts) {
|
|
504
|
+
count += 1;
|
|
505
|
+
t.is(account.method, 'get');
|
|
506
|
+
t.is(account.url, 'v2/accounts');
|
|
507
|
+
}
|
|
508
|
+
t.true(count > 0);
|
|
509
|
+
});
|
|
510
|
+
test('fintoc.v2.accounts.get()', async (t) => {
|
|
511
|
+
const ctx = t.context;
|
|
512
|
+
const accountId = 'account_id';
|
|
513
|
+
const account = await ctx.fintoc.v2.accounts.get(accountId);
|
|
514
|
+
t.is(account.method, 'get');
|
|
515
|
+
t.is(account.url, `v2/accounts/${accountId}`);
|
|
516
|
+
});
|
|
517
|
+
test('fintoc.v2.accounts.create()', async (t) => {
|
|
518
|
+
const ctx = t.context;
|
|
519
|
+
const accountData = {
|
|
520
|
+
description: 'Test Account',
|
|
521
|
+
};
|
|
522
|
+
const account = await ctx.fintoc.v2.accounts.create(accountData);
|
|
523
|
+
t.is(account.method, 'post');
|
|
524
|
+
t.is(account.url, 'v2/accounts');
|
|
525
|
+
t.is(account.json.description, accountData.description);
|
|
526
|
+
});
|
|
527
|
+
test('fintoc.v2.accountNumbers.list()', async (t) => {
|
|
528
|
+
const ctx = t.context;
|
|
529
|
+
const accountNumbers = await ctx.fintoc.v2.accountNumbers.list();
|
|
530
|
+
let count = 0;
|
|
531
|
+
for await (const accountNumber of accountNumbers) {
|
|
532
|
+
count += 1;
|
|
533
|
+
t.is(accountNumber.method, 'get');
|
|
534
|
+
t.is(accountNumber.url, 'v2/account_numbers');
|
|
535
|
+
}
|
|
536
|
+
t.true(count > 0);
|
|
537
|
+
});
|
|
538
|
+
test('fintoc.v2.accountNumbers.get()', async (t) => {
|
|
539
|
+
const ctx = t.context;
|
|
540
|
+
const accountNumberId = 'account_number_id';
|
|
541
|
+
const accountNumber = await ctx.fintoc.v2.accountNumbers.get(accountNumberId);
|
|
542
|
+
t.is(accountNumber.method, 'get');
|
|
543
|
+
t.is(accountNumber.url, `v2/account_numbers/${accountNumberId}`);
|
|
544
|
+
});
|
|
545
|
+
test('fintoc.v2.accountNumbers.create()', async (t) => {
|
|
546
|
+
const ctx = t.context;
|
|
547
|
+
const accountNumberData = {
|
|
548
|
+
account_id: 'account_123',
|
|
549
|
+
description: 'test acc number',
|
|
550
|
+
};
|
|
551
|
+
const accountNumber = await ctx.fintoc.v2.accountNumbers.create(accountNumberData);
|
|
552
|
+
t.is(accountNumber.method, 'post');
|
|
553
|
+
t.is(accountNumber.url, 'v2/account_numbers');
|
|
554
|
+
t.is(accountNumber.json.account_id, accountNumberData.account_id);
|
|
555
|
+
t.is(accountNumber.json.description, accountNumberData.description);
|
|
556
|
+
});
|
|
557
|
+
test('fintoc.v2.accountNumbers.update()', async (t) => {
|
|
558
|
+
const ctx = t.context;
|
|
559
|
+
const accountNumberId = 'account_number_id';
|
|
560
|
+
const updateData = {
|
|
561
|
+
status: 'enabled',
|
|
562
|
+
};
|
|
563
|
+
const accountNumber = await ctx.fintoc.v2.accountNumbers.update(accountNumberId, updateData);
|
|
564
|
+
t.is(accountNumber.method, 'patch');
|
|
565
|
+
t.is(accountNumber.url, `v2/account_numbers/${accountNumberId}`);
|
|
566
|
+
t.is(accountNumber.json.status, updateData.status);
|
|
567
|
+
});
|
|
568
|
+
test('fintoc.v2.simulate.receiveTransfer()', async (t) => {
|
|
569
|
+
const ctx = t.context;
|
|
570
|
+
const transferData = {
|
|
571
|
+
amount: 50000,
|
|
572
|
+
currency: 'MXN',
|
|
573
|
+
account_number_id: 'account_number_123',
|
|
574
|
+
};
|
|
575
|
+
const result = await ctx.fintoc.v2.simulate.receiveTransfer(transferData);
|
|
576
|
+
t.is(result.method, 'post');
|
|
577
|
+
t.is(result.url, 'v2/simulate/receive_transfer');
|
|
578
|
+
t.is(result.json.amount, transferData.amount);
|
|
579
|
+
t.is(result.json.currency, transferData.currency);
|
|
580
|
+
t.is(result.json.account_number_id, transferData.account_number_id);
|
|
581
|
+
});
|
|
582
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24uc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zcGVjL2ludGVncmF0aW9uLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sS0FBSyxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDaEIsTUFBTSxHQUFHLEdBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzQixHQUFHLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDO0FBQzlCLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ2YsTUFBTSxHQUFHLEdBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3BCLE1BQU0sR0FBRyxHQUFRLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUM7SUFDdEMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDL0MsTUFBTSxHQUFHLEdBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzQixNQUFNLGNBQWMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElB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RSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdEMsTUFBTSxHQUFHLEdBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzQixNQUFNLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTVDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQy9CLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEQsTUFBTSxHQUFHLEdBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzQixNQUFNLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTNDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQy9CLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxD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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|