-
Notifications
You must be signed in to change notification settings - Fork 0
/
deep.json
212 lines (212 loc) · 32 KB
/
deep.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
{
"package": {
"name": "@deep-foundation/payments-tinkoff-c2b-test",
"version": "0.7.6"
},
"data": [
{
"package": {
"dependencyId": 0,
"containValue": "SyncTextFile"
},
"id": 1
},
{
"package": {
"dependencyId": 0,
"containValue": "Type"
},
"id": 2
},
{
"package": {
"dependencyId": 0,
"containValue": "Any"
},
"id": 3
},
{
"package": {
"dependencyId": 0,
"containValue": "Value"
},
"id": 4
},
{
"package": {
"dependencyId": 0,
"containValue": "String"
},
"id": 5
},
{
"package": {
"dependencyId": 0,
"containValue": "Number"
},
"id": 6
},
{
"package": {
"dependencyId": 1,
"containValue": "Dependency"
},
"id": 7
},
{
"package": {
"dependencyId": 2,
"containValue": "Payment"
},
"id": 8
},
{
"package": {
"dependencyId": 3,
"containValue": "DoTest"
},
"id": 9
},
{
"package": {
"dependencyId": 0,
"containValue": "Handler"
},
"id": 10
},
{
"package": {
"dependencyId": 0,
"containValue": "dockerSupportsJs"
},
"id": 11
},
{
"package": {
"dependencyId": 0,
"containValue": "HandleInsert"
},
"id": 12
},
{
"id": "DoTestInsertHandlerCode",
"type": 1,
"value": {
"value": "async ({ deep, require, data: { triggeredByLinkId } }) => {\r\n const { execSync } = require('child_process');\r\n const assert = require('assert');\r\n const puppeteer = require('puppeteer');\r\n const {\r\n createSerialOperation,\r\n } = require('@deep-foundation/deeplinks/imports/gql/serial.js');\r\n\r\n await installDependencies();\r\n\r\n const containTypeLinkId = await deep.id('@deep-foundation/core', 'Contain');\r\n\r\n const routeLink = await getRouteLink();\r\n const route = routeLink.value.value;\r\n const portLink = await getPort();\r\n const port = portLink.value.value;\r\n const terminalKeyLink = await getTerminalKeyLink();\r\n const terminalKey = terminalKeyLink.value.value;\r\n const terminalPasswordLink = await getTerminalPasswordLink();\r\n const terminalPassword = terminalPasswordLink.value.value;\r\n const sum = await getSum();\r\n const notificationUrl = await getNotificationUrl();\r\n\r\n const reservedIds = await deep.reserve(13);\r\n\r\n const routeLinkId = reservedIds.pop();\r\n const routerStringUseLinkId = reservedIds.pop();\r\n const routerLinkId = reservedIds.pop();\r\n const portLinkId = reservedIds.pop();\r\n\r\n await insertRouteHandler();\r\n\r\n const storageBusinessLinkId = reservedIds.pop();\r\n const terminalKeyLinkId = reservedIds.pop();\r\n const terminalPasswordLinkId = reservedIds.pop();\r\n const notificationUrlLinkId = reservedIds.pop();\r\n const productLinkId = reservedIds.pop();\r\n\r\n const storageBusinessInsertSerialOperationData =\r\n await getStorageBusinessInsertSerialOperationData({\r\n storageBusinessLinkId,\r\n });\r\n\r\n const terminalPasswordInsertSerialOperationData =\r\n await getTerminalPasswordInsertSerialOperationData({\r\n terminalPasswordLinkId,\r\n storageBusinessLinkId,\r\n });\r\n\r\n const terminalPasswordValueInsertSerialOperationData =\r\n await getTerminalPasswordValueInsertSerialOperationData({\r\n terminalPasswordLinkId,\r\n terminalPassword,\r\n });\r\n\r\n const usesTerminalPasswordInsertSerialOperationData =\r\n await getUsesTerminalPasswordInsertSerialOperationData({\r\n storageBusinessLinkId,\r\n terminalPasswordLinkId,\r\n });\r\n\r\n const terminalKeyInsertSerialOperationData =\r\n await getTerminalKeyInsertSerialOperationData({\r\n storageBusinessLinkId,\r\n terminalKeyLinkId,\r\n });\r\n\r\n const terminalKeyValueInsertSerialOperationData =\r\n await getTerminalKeyValueInsertSerialOperationData({\r\n terminalKeyLinkId,\r\n terminalKey,\r\n });\r\n\r\n const usesTerminalKeyInsertSerialOperationData =\r\n await getUsesTerminalKeyInsertSerialOperationData({\r\n storageBusinessLinkId,\r\n terminalKeyLinkId,\r\n });\r\n\r\n const notificatoinUrlInsertSerialOperationData =\r\n await getNotificationUrlInsertSerialOperationData({\r\n notificationUrlLinkId,\r\n storageBusinessLinkId,\r\n });\r\n\r\n const notificationUrlValueInsertSerialOperationData =\r\n await getNotificationUrlValueInsertSerialOperationData({\r\n notificationUrl,\r\n notificationUrlLinkId\r\n });\r\n\r\n const usesNotificationUrlInsertSerialOperationData =\r\n await getUsesNotificationUrlInsertSerialOperationData({\r\n notificationUrlLinkId,\r\n storageBusinessLinkId,\r\n });\r\n\r\n const productInsertSerialOperationData =\r\n await getProductInsertSerialOperationData({\r\n productLinkId,\r\n });\r\n\r\n console.log('serialOperations0', [\r\n storageBusinessInsertSerialOperationData,\r\n terminalPasswordInsertSerialOperationData,\r\n terminalPasswordValueInsertSerialOperationData,\r\n usesTerminalPasswordInsertSerialOperationData,\r\n terminalKeyInsertSerialOperationData,\r\n terminalKeyValueInsertSerialOperationData,\r\n usesTerminalKeyInsertSerialOperationData,\r\n notificatoinUrlInsertSerialOperationData,\r\n notificationUrlValueInsertSerialOperationData,\r\n usesNotificationUrlInsertSerialOperationData,\r\n productInsertSerialOperationData,\r\n ]);\r\n\r\n await deep.serial({\r\n operations: [\r\n storageBusinessInsertSerialOperationData,\r\n terminalPasswordInsertSerialOperationData,\r\n terminalPasswordValueInsertSerialOperationData,\r\n usesTerminalPasswordInsertSerialOperationData,\r\n terminalKeyInsertSerialOperationData,\r\n terminalKeyValueInsertSerialOperationData,\r\n usesTerminalKeyInsertSerialOperationData,\r\n notificatoinUrlInsertSerialOperationData,\r\n notificationUrlValueInsertSerialOperationData,\r\n usesNotificationUrlInsertSerialOperationData,\r\n productInsertSerialOperationData,\r\n ],\r\n });\r\n\r\n const paymentLinkId = reservedIds.pop();\r\n const sumLinkId = reservedIds.pop();\r\n const objectLinkId = reservedIds.pop();\r\n const payLinkId = reservedIds.pop();\r\n\r\n const paymentInsertData = await getPaymentInsertSerialOperationData({\r\n paymentLinkId,\r\n storageBusinessLinkId,\r\n });\r\n\r\n const sumInsertData = await getSumInsertSerialOperationData({\r\n paymentLinkId,\r\n sumLinkId,\r\n });\r\n\r\n const sumValueInsertData = await getSumValueInsertSerialOperationData({\r\n sum,\r\n sumLinkId,\r\n });\r\n\r\n const objectInsertData = await getObjectInsertSerialOperationData({\r\n objectLinkId,\r\n paymentLinkId,\r\n productLinkId,\r\n });\r\n\r\n const payInsertData = await getPayInsertSerialOperationData({\r\n payLinkId,\r\n sumLinkId,\r\n });\r\n\r\n console.log('serialOperations1', [\r\n paymentInsertData,\r\n sumInsertData,\r\n sumValueInsertData,\r\n objectInsertData,\r\n payInsertData,\r\n ]);\r\n\r\n await deep.serial({\r\n operations: [\r\n paymentInsertData,\r\n sumInsertData,\r\n sumValueInsertData,\r\n objectInsertData,\r\n payInsertData,\r\n ],\r\n });\r\n\r\n const { link: urlLink } = await tryGetLink({\r\n delayMs: 1000,\r\n attemptsCount: 10,\r\n selectData: {\r\n type_id: {\r\n _id: ['@deep-foundation/payments-tinkoff-c2b', 'Url'],\r\n },\r\n to_id: payLinkId,\r\n },\r\n });\r\n assert.notStrictEqual(urlLink, undefined);\r\n\r\n const url = urlLink.value.value;\r\n assert.notStrictEqual(url, undefined);\r\n\r\n const browser = await puppeteer.launch({ args: ['--no-sandbox'] });\r\n const page = await browser.newPage();\r\n await payInBrowser({\r\n browser,\r\n page,\r\n url,\r\n });\r\n\r\n const { link: payedLink } = await tryGetLink({\r\n delayMs: 1000,\r\n attemptsCount: 10,\r\n selectData: {\r\n type_id: {\r\n _id: ['@deep-foundation/payments-tinkoff-c2b', 'Payed'],\r\n },\r\n to_id: payLinkId,\r\n },\r\n });\r\n assert.notEqual(payedLink, undefined);\r\n\r\n async function sleep(ms) {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n }\r\n\r\n async function payInBrowser({ page, browser, url }) {\r\n await page.goto(url, { waitUntil: 'networkidle2' });\r\n await sleep(5000);\r\n const oldForm = await page.evaluate(() => {\r\n return !!document.querySelector(\r\n 'input[automation-id=\"tui-input-card-grouped__card\"]'\r\n );\r\n });\r\n if (oldForm) {\r\n console.log('OLD FORM!!!!!!!');\r\n // Старая форма используется на тестовом сервере\r\n const cvc1 = await page.evaluate(() => {\r\n return !!document.querySelector(\r\n 'button[automation-id=\"pay-card__submit\"]'\r\n );\r\n });\r\n\r\n if (cvc1) {\r\n await page.waitForSelector(\r\n 'input[automation-id=\"tui-input-card-grouped__card\"]'\r\n );\r\n await sleep(300);\r\n await page.type(\r\n 'input[automation-id=\"tui-input-card-grouped__card\"]',\r\n process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS\r\n ); // card number\r\n await sleep(300);\r\n await page.keyboard.press('Tab');\r\n await sleep(300);\r\n await page.type(\r\n 'input[automation-id=\"tui-input-card-grouped__expire\"]',\r\n process.env.PAYMENTS_C2B_CARD_EXPDATE\r\n ); // expired date\r\n await sleep(300);\r\n await page.keyboard.press('Tab');\r\n await sleep(300);\r\n await page.type(\r\n 'input[automation-id=\"tui-input-card-grouped__cvc\"]',\r\n process.env.PAYMENTS_C2B_CARD_CVC\r\n ); // CVC code\r\n await sleep(300);\r\n await page.click('button[automation-id=\"pay-card__submit\"]'); // submit button\r\n } else {\r\n await page.waitForSelector(\r\n 'input[automation-id=\"tui-input-card-grouped__card\"]'\r\n );\r\n await sleep(300);\r\n await page.type(\r\n 'input[automation-id=\"tui-input-card-grouped__card\"]',\r\n process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS\r\n ); // card number\r\n await sleep(300);\r\n await page.keyboard.press('Tab');\r\n await sleep(300);\r\n await page.type(\r\n 'input[automation-id=\"tui-input-card-grouped__expire\"]',\r\n process.env.PAYMENTS_C2B_CARD_EXPDATE\r\n ); // expired date\r\n await sleep(300);\r\n await page.keyboard.press('Tab');\r\n await sleep(300);\r\n await page.type(\r\n 'input[automation-id=\"tui-input-card-grouped__cvc\"]',\r\n process.env.PAYMENTS_C2B_CARD_CVC\r\n ); // CVC code\r\n await sleep(300);\r\n await page.click('button[automation-id=\"card-form__submit\"]'); // submit button\r\n }\r\n // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен\r\n await sleep(1000);\r\n } else {\r\n console.log('NEW FORM!!!!!!!');\r\n await page.type('#pan', process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS); // card number\r\n await page.type('#expDate', process.env.PAYMENTS_C2B_CARD_EXPDATE); // expired date\r\n await page.type('#card_cvc', process.env.PAYMENTS_C2B_CARD_CVC); // CVC code\r\n await page.click('button[type=submit]'); // submit button\r\n await page.waitForSelector('input[name=\"password\"]');\r\n const code = prompt('enter code ');\r\n console.log('code', code);\r\n await page.type('input[name=\"password\"]', code);\r\n await sleep(3000);\r\n }\r\n await browser.close();\r\n }\r\n\r\n async function getRouteLink() {\r\n const selectData = {\r\n type_id: {\r\n _id: [deep.id, 'Route'],\r\n },\r\n in: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n };\r\n\r\n const {\r\n data: [routeLink],\r\n } = await deep.select(selectData);\r\n\r\n if (!routeLink) {\r\n throw new Error(`Select with data ${selectData} returned empty result`);\r\n }\r\n\r\n if (!routeLink.value?.value) {\r\n throw new Error(`${routeLink.id} must have a value`);\r\n }\r\n\r\n return routeLink;\r\n }\r\n\r\n async function getPort() {\r\n const selectData = {\r\n type_id: {\r\n _id: [deep.id, 'Port'],\r\n },\r\n in: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n };\r\n\r\n const {\r\n data: [port],\r\n } = await deep.select(selectData);\r\n\r\n if (!port) {\r\n throw new Error(`Select with data ${selectData} returned empty result`);\r\n }\r\n\r\n if (!port.value?.value) {\r\n throw new Error(`${port.id} must have a value`);\r\n }\r\n\r\n return port;\r\n }\r\n\r\n async function installDependencies() {\r\n execSync(\r\n `npm install puppeteer && apt update && apt install -y libgbm-dev chromium gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget`\r\n );\r\n }\r\n\r\n async function insertRouteHandler() {\r\n const notificationHandlerLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b',\r\n 'NotificationHandler'\r\n );\r\n const routeTypeLinkId = await deep.id('@deep-foundation/core', 'Route');\r\n const routerTypeLinkId = await deep.id('@deep-foundation/core', 'Router');\r\n const portTypeLinkId = await deep.id('@deep-foundation/core', 'Port');\r\n const routerStringUseTypeLinkId = await deep.id(\r\n '@deep-foundation/core',\r\n 'RouterStringUse'\r\n );\r\n const routerListeningTypeLinkId = await deep.id(\r\n '@deep-foundation/core',\r\n 'RouterListening'\r\n );\r\n\r\n await deep.serial({\r\n operations: [\r\n createSerialOperation({\r\n table: 'links',\r\n type: 'insert',\r\n objects: {\r\n id: routeLinkId,\r\n type_id: routeTypeLinkId,\r\n in: {\r\n data: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n },\r\n },\r\n }),\r\n createSerialOperation({\r\n table: 'links',\r\n type: 'insert',\r\n objects: {\r\n type_id: await deep.id('@deep-foundation/core', 'HandleRoute'),\r\n from_id: routeLinkId,\r\n to_id: notificationHandlerLinkId,\r\n in: {\r\n data: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n },\r\n },\r\n }),\r\n createSerialOperation({\r\n table: 'links',\r\n type: 'insert',\r\n objects: {\r\n id: routerLinkId,\r\n type_id: routerTypeLinkId,\r\n in: {\r\n data: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n },\r\n },\r\n }),\r\n createSerialOperation({\r\n table: 'links',\r\n type: 'insert',\r\n objects: {\r\n id: routerStringUseLinkId,\r\n type_id: routerStringUseTypeLinkId,\r\n from_id: routeLinkId,\r\n to_id: routerLinkId,\r\n in: {\r\n data: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n },\r\n },\r\n }),\r\n createSerialOperation({\r\n table: 'strings',\r\n type: 'insert',\r\n objects: {\r\n link_id: routerStringUseLinkId,\r\n value: route,\r\n },\r\n }),\r\n createSerialOperation({\r\n table: 'links',\r\n type: 'insert',\r\n objects: {\r\n id: portLinkId,\r\n type_id: portTypeLinkId,\r\n in: {\r\n data: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n },\r\n },\r\n }),\r\n createSerialOperation({\r\n table: 'numbers',\r\n type: 'insert',\r\n objects: {\r\n link_id: portLinkId,\r\n value: port,\r\n },\r\n }),\r\n createSerialOperation({\r\n table: 'links',\r\n type: 'insert',\r\n objects: {\r\n type_id: routerListeningTypeLinkId,\r\n from_id: routerLinkId,\r\n to_id: portLinkId,\r\n in: {\r\n data: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n },\r\n },\r\n }),\r\n ],\r\n });\r\n }\r\n\r\n async function getStorageBusinessInsertSerialOperationData({\r\n storageBusinessLinkId,\r\n }) {\r\n const storageBusinessTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b',\r\n 'StorageBusiness'\r\n );\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'links',\r\n objects: {\r\n id: storageBusinessLinkId,\r\n type_id: storageBusinessTypeLinkId,\r\n in: {\r\n data: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n },\r\n },\r\n });\r\n }\r\n\r\n async function getTerminalPasswordInsertSerialOperationData({\r\n terminalPasswordLinkId,\r\n storageBusinessLinkId,\r\n }) {\r\n const terminalPasswordTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b',\r\n 'TerminalPassword'\r\n );\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'links',\r\n objects: {\r\n id: terminalPasswordLinkId,\r\n type_id: terminalPasswordTypeLinkId,\r\n in: {\r\n data: [\r\n {\r\n type_id: containTypeLinkId,\r\n from_id: storageBusinessLinkId,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n }\r\n\r\n async function getTerminalPasswordValueInsertSerialOperationData({\r\n terminalPassword,\r\n terminalPasswordLinkId,\r\n }) {\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'strings',\r\n objects: {\r\n link_id: terminalPasswordLinkId,\r\n value: terminalPassword,\r\n },\r\n });\r\n }\r\n\r\n async function getUsesTerminalPasswordInsertSerialOperationData({\r\n terminalPasswordLinkId,\r\n storageBusinessLinkId,\r\n }) {\r\n const usesTerminalPasswordTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b',\r\n 'UsesTerminalPassword'\r\n );\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'links',\r\n objects: {\r\n type_id: usesTerminalPasswordTypeLinkId,\r\n from_id: storageBusinessLinkId,\r\n to_id: terminalPasswordLinkId,\r\n in: {\r\n data: {\r\n type_id: containTypeLinkId,\r\n from_id: storageBusinessLinkId,\r\n },\r\n },\r\n },\r\n });\r\n }\r\n\r\n async function getTerminalKeyInsertSerialOperationData({\r\n terminalKeyLinkId,\r\n storageBusinessLinkId,\r\n }) {\r\n const terminalKeyTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b',\r\n 'TerminalKey'\r\n );\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'links',\r\n objects: {\r\n id: terminalKeyLinkId,\r\n type_id: terminalKeyTypeLinkId,\r\n in: {\r\n data: [\r\n {\r\n type_id: containTypeLinkId,\r\n from_id: storageBusinessLinkId,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n }\r\n\r\n async function getTerminalKeyValueInsertSerialOperationData({\r\n terminalKeyLinkId,\r\n terminalKey,\r\n }) {\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'strings',\r\n objects: {\r\n link_id: terminalKeyLinkId,\r\n value: terminalKey,\r\n },\r\n });\r\n }\r\n\r\n async function getUsesTerminalKeyInsertSerialOperationData({\r\n terminalKeyLinkId,\r\n storageBusinessLinkId,\r\n }) {\r\n const usesTerminalKeyTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b',\r\n 'UsesTerminalKey'\r\n );\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'links',\r\n objects: {\r\n type_id: usesTerminalKeyTypeLinkId,\r\n from_id: storageBusinessLinkId,\r\n to_id: terminalKeyLinkId,\r\n in: {\r\n data: {\r\n type_id: containTypeLinkId,\r\n from_id: storageBusinessLinkId,\r\n },\r\n },\r\n },\r\n });\r\n }\r\n\r\n async function getNotificationUrlInsertSerialOperationData({\r\n notificationUrlLinkId,\r\n storageBusinessLinkId,\r\n }) {\r\n const notificationUrlTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b',\r\n 'NotificationUrl'\r\n );\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'links',\r\n objects: {\r\n id: notificationUrlLinkId,\r\n type_id: notificationUrlTypeLinkId,\r\n in: {\r\n data: [\r\n {\r\n type_id: containTypeLinkId,\r\n from_id: storageBusinessLinkId,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n }\r\n\r\n async function getNotificationUrlValueInsertSerialOperationData({\r\n notificationUrlLinkId,\r\n notificationUrl,\r\n }) {\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'strings',\r\n objects: {\r\n link_id: notificationUrlLinkId,\r\n value: notificationUrl,\r\n },\r\n });\r\n }\r\n\r\n async function getUsesNotificationUrlInsertSerialOperationData({\r\n notificationUrlLinkId,\r\n storageBusinessLinkId,\r\n }) {\r\n const usesNotificationUrlTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b',\r\n 'UsesNotificationUrl'\r\n );\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'links',\r\n objects: {\r\n type_id: usesNotificationUrlTypeLinkId,\r\n from_id: storageBusinessLinkId,\r\n to_id: notificationUrlLinkId,\r\n in: {\r\n data: {\r\n type_id: containTypeLinkId,\r\n from_id: storageBusinessLinkId,\r\n },\r\n },\r\n },\r\n });\r\n }\r\n\r\n async function getProductInsertSerialOperationData({ productLinkId }) {\r\n const syncTextFileTypeLinkId = await deep.id(\r\n '@deep-foundation/core',\r\n 'SyncTextFile'\r\n );\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'links',\r\n objects: {\r\n id: productLinkId,\r\n type_id: syncTextFileTypeLinkId,\r\n in: {\r\n data: [\r\n {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n }\r\n\r\n async function getTerminalKeyLink() {\r\n const terminalKeyTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b-test',\r\n 'TerminalKey'\r\n );\r\n const selectData = {\r\n type_id: terminalKeyTypeLinkId,\r\n in: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n };\r\n const {\r\n data: [terminalKeyLink],\r\n } = await deep.select(selectData);\r\n\r\n if (!terminalKeyLink) {\r\n throw new Error(\r\n `Select with data ${JSON.stringify(selectData)} returned empty result`\r\n );\r\n }\r\n\r\n if (!terminalKeyLink.value?.value) {\r\n throw new Error(`${terminalKeyLink.id} must have value`);\r\n }\r\n\r\n return terminalKeyLink;\r\n }\r\n\r\n async function getTerminalPasswordLink() {\r\n const terminalPasswordTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b-test',\r\n 'TerminalPassword'\r\n );\r\n const selectData = {\r\n type_id: terminalPasswordTypeLinkId,\r\n in: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n };\r\n const {\r\n data: [terminalPasswordLink],\r\n } = await deep.select(selectData);\r\n\r\n if (!terminalPasswordLink) {\r\n throw new Error(\r\n `Select with data ${JSON.stringify(selectData)} returned empty result`\r\n );\r\n }\r\n\r\n if (!terminalPasswordLink.value?.value) {\r\n throw new Error(`${terminalPasswordLink.id} must have value`);\r\n }\r\n\r\n return terminalPasswordLink;\r\n }\r\n\r\n async function getPaymentInsertSerialOperationData({\r\n paymentLinkId,\r\n storageBusinessLinkId,\r\n }) {\r\n const paymentTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b',\r\n 'Payment'\r\n );\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'links',\r\n objects: {\r\n id: paymentLinkId,\r\n type_id: paymentTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n to_id: storageBusinessLinkId,\r\n in: {\r\n data: [\r\n {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n }\r\n\r\n async function getSumInsertSerialOperationData({ sumLinkId, paymentLinkId }) {\r\n const sumTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b',\r\n 'Sum'\r\n );\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'links',\r\n objects: {\r\n id: sumLinkId,\r\n type_id: sumTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n to_id: paymentLinkId,\r\n in: {\r\n data: [\r\n {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n }\r\n\r\n async function getSumValueInsertSerialOperationData({ sumLinkId, sum }) {\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'numbers',\r\n objects: {\r\n link_id: sumLinkId,\r\n value: sum,\r\n },\r\n });\r\n }\r\n\r\n async function getObjectInsertSerialOperationData({\r\n objectLinkId,\r\n paymentLinkId,\r\n productLinkId,\r\n }) {\r\n const objectTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b',\r\n 'Object'\r\n );\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'links',\r\n objects: {\r\n id: objectLinkId,\r\n type_id: objectTypeLinkId,\r\n from_id: paymentLinkId,\r\n to_id: productLinkId,\r\n in: {\r\n data: [\r\n {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n }\r\n\r\n async function getPayInsertSerialOperationData({ payLinkId, sumLinkId }) {\r\n const payTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b',\r\n 'Pay'\r\n );\r\n return createSerialOperation({\r\n type: 'insert',\r\n table: 'links',\r\n objects: {\r\n id: payLinkId,\r\n type_id: payTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n to_id: sumLinkId,\r\n in: {\r\n data: [\r\n {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n }\r\n\r\n async function getSum() {\r\n const sumTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b-test',\r\n 'Sum'\r\n );\r\n const selectData = {\r\n type_id: sumTypeLinkId,\r\n in: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n };\r\n \r\n const {\r\n data: [sumLink],\r\n } = await deep.select(selectData);\r\n\r\n return sumLink.value?.value ?? 5500;\r\n }\r\n\r\n async function getNotificationUrl() {\r\n const notificationUrlTypeLinkId = await deep.id(\r\n '@deep-foundation/payments-tinkoff-c2b-test',\r\n 'NotificationUrl'\r\n );\r\n const selectData = {\r\n type_id: notificationUrlTypeLinkId,\r\n in: {\r\n type_id: containTypeLinkId,\r\n from_id: triggeredByLinkId,\r\n },\r\n };\r\n \r\n const {\r\n data: [notificationUrlLink],\r\n } = await deep.select(selectData);\r\n if(!notificationUrlLink) {\r\n throw new Error(`Select with data ${JSON.stringify(selectData)} returned empty result`);\r\n }\r\n if(!notificationUrlLink.value?.value) {\r\n throw new Error(`${notificationUrlLink.id} must have value`);\r\n }\r\n\r\n return notificationUrlLink.value.value;\r\n }\r\n\r\n async function tryGetLink({ selectData, delayMs, attemptsCount }) {\r\n let resultLink;\r\n for (let i = 0; i < attemptsCount; i++) {\r\n const {\r\n data: [link],\r\n } = await deep.select(selectData);\r\n\r\n if (link) {\r\n resultLink = link;\r\n }\r\n\r\n if(attemptsCount !== 0) {\r\n await sleep(delayMs);\r\n }\r\n }\r\n return { link: resultLink };\r\n }\r\n};\r\n"
}
},
{
"id": "NotificationUrl",
"type": 2,
"from": 3,
"to": 3
},
{
"id": "TypeOfValueOfNotificationUrl",
"type": 4,
"from": "NotificationUrl",
"to": 5
},
{
"id": "Sum",
"type": 2,
"from": 3,
"to": 3
},
{
"id": "TypeOfValueOfSum",
"type": 4,
"from": "Sum",
"to": 5
},
{
"id": "TerminalKey",
"type": 2,
"from": 3,
"to": 3
},
{
"id": "TypeOfValueOfTerminalKey",
"type": 4,
"from": "TerminalKey",
"to": 5
},
{
"id": "TerminalPassword",
"type": 2,
"from": 3,
"to": 3
},
{
"id": "TypeOfValueOfTerminalPassword",
"type": 4,
"from": "TerminalPassword",
"to": 5
},
{
"id": "Port",
"type": 2,
"from": 3,
"to": 3
},
{
"id": "TypeOfValueOfPort",
"type": 4,
"from": "Port",
"to": 6
},
{
"id": "Route",
"type": 2,
"from": 3,
"to": 3
},
{
"id": "TypeOfValueOfRoute",
"type": 4,
"from": "Route",
"to": 5
},
{
"id": "@deep-foundation/payments-tinkoff-c2bDependency",
"type": 7,
"from": 8,
"to": 8
},
{
"id": "DoTest",
"type": 9
},
{
"id": "DoTestInsertHandler",
"type": 10,
"from": 11,
"to": "DoTestInsertHandlerCode"
},
{
"id": "HandleDoTest",
"type": 12,
"from": "DoTest",
"to": "DoTestInsertHandler"
}
],
"errors": [],
"dependencies": [
{
"name": "@deep-foundation/core",
"version": "0.0.2"
},
{
"name": "@freephoenix888/dependency",
"version": "0.0.1"
},
{
"name": "@deep-foundation/payments-tinkoff-c2b",
"version": "0.0.16"
},
{
"name": "@freephoenix888/test",
"version": "0.0.3"
}
]
}