sujoydev99 commited on
Commit
68fe061
·
0 Parent(s):
Files changed (12) hide show
  1. .eslintrc.cjs +19 -0
  2. .gitignore +138 -0
  3. .vscode/extensions.json +4 -0
  4. .vscode/launch.json +18 -0
  5. .vscode/settings.json +12 -0
  6. index.js +938 -0
  7. middleware.js +3 -0
  8. package.json +20 -0
  9. swagger.json +777 -0
  10. swagger.yaml +508 -0
  11. utils.js +31 -0
  12. yarn.lock +1444 -0
.eslintrc.cjs ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ module.exports = {
2
+ extends: ['semistandard'],
3
+ plugins: [],
4
+ env: {
5
+ es2021: true,
6
+ node: true,
7
+ jest: true
8
+ },
9
+ parserOptions: {
10
+ sourceType: 'module',
11
+ ecmaVersion: 'latest'
12
+ },
13
+ rules: {
14
+ indent: ['error', 2, { SwitchCase: 1 }],
15
+ quotes: [2, 'single'],
16
+ camelcase: ['warn', { properties: 'never' }],
17
+ 'space-before-function-paren': ['error', 'always']
18
+ },
19
+ };
.gitignore ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ lerna-debug.log*
8
+ .pnpm-debug.log*
9
+
10
+ # Diagnostic reports (https://nodejs.org/api/report.html)
11
+ report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12
+
13
+ # Runtime data
14
+ pids
15
+ *.pid
16
+ *.seed
17
+ *.pid.lock
18
+
19
+ # Directory for instrumented libs generated by jscoverage/JSCover
20
+ lib-cov
21
+
22
+ # Coverage directory used by tools like istanbul
23
+ coverage
24
+ *.lcov
25
+
26
+ # nyc test coverage
27
+ .nyc_output
28
+
29
+ # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30
+ .grunt
31
+
32
+ # Bower dependency directory (https://bower.io/)
33
+ bower_components
34
+
35
+ # node-waf configuration
36
+ .lock-wscript
37
+
38
+ # Compiled binary addons (https://nodejs.org/api/addons.html)
39
+ build/Release
40
+
41
+ # Dependency directories
42
+ node_modules/
43
+ jspm_packages/
44
+
45
+ # Snowpack dependency directory (https://snowpack.dev/)
46
+ web_modules/
47
+
48
+ # TypeScript cache
49
+ *.tsbuildinfo
50
+
51
+ # Optional npm cache directory
52
+ .npm
53
+
54
+ # Optional eslint cache
55
+ .eslintcache
56
+
57
+ # Optional stylelint cache
58
+ .stylelintcache
59
+
60
+ # Microbundle cache
61
+ .rpt2_cache/
62
+ .rts2_cache_cjs/
63
+ .rts2_cache_es/
64
+ .rts2_cache_umd/
65
+
66
+ # Optional REPL history
67
+ .node_repl_history
68
+
69
+ # Output of 'npm pack'
70
+ *.tgz
71
+
72
+ # Yarn Integrity file
73
+ .yarn-integrity
74
+
75
+ # dotenv environment variable files
76
+ .env
77
+ .env.development.local
78
+ .env.test.local
79
+ .env.production.local
80
+ .env.local
81
+
82
+ # Python venv folder
83
+ env
84
+
85
+ # parcel-bundler cache (https://parceljs.org/)
86
+ .cache
87
+ .parcel-cache
88
+
89
+ # Next.js build output
90
+ .next
91
+ out
92
+
93
+ # Nuxt.js build / generate output
94
+ .nuxt
95
+ dist
96
+
97
+ # Gatsby files
98
+ .cache/
99
+ # Comment in the public line in if your project uses Gatsby and not Next.js
100
+ # https://nextjs.org/blog/next-9-1#public-directory-support
101
+ # public
102
+
103
+ # vuepress build output
104
+ .vuepress/dist
105
+
106
+ # vuepress v2.x temp and cache directory
107
+ .temp
108
+ .cache
109
+
110
+ # Docusaurus cache and generated files
111
+ .docusaurus
112
+
113
+ # Serverless directories
114
+ .serverless/
115
+
116
+ # FuseBox cache
117
+ .fusebox/
118
+
119
+ # DynamoDB Local files
120
+ .dynamodb/
121
+
122
+ # TernJS port file
123
+ .tern-port
124
+
125
+ # Stores VSCode versions used for testing VSCode extensions
126
+ .vscode-test
127
+
128
+ # yarn v2
129
+ .yarn/cache
130
+ .yarn/unplugged
131
+ .yarn/build-state.yml
132
+ .yarn/install-state.gz
133
+ .pnp.*
134
+
135
+ # Webbot generated
136
+ webbot/*/text/
137
+ app/api/routes/script/web/copilot.css
138
+ app/api/routes/script/widget.js
.vscode/extensions.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "recommendations": ["dbaeumer.vscode-eslint", "EditorConfig.EditorConfig"],
3
+ "unwantedRecommendations": []
4
+ }
.vscode/launch.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ // Use IntelliSense to learn about possible attributes.
3
+ // Hover to view descriptions of existing attributes.
4
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
+ "version": "0.2.0",
6
+ "configurations": [
7
+ {
8
+ "type": "node",
9
+ "request": "launch",
10
+ "name": "Launch Server",
11
+ "program": "${workspaceFolder}/index.js",
12
+ "envFile": "${workspaceFolder}/.vscode/env",
13
+ "env": {
14
+ },
15
+ "outputCapture": "std"
16
+ }
17
+ ]
18
+ }
.vscode/settings.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "eslint.format.enable": true,
3
+ "editor.codeActionsOnSave": {
4
+ "source.fixAll.eslint": "explicit"
5
+ },
6
+ "javascript.preferences.importModuleSpecifierEnding": "js",
7
+ "javascript.preferences.quoteStyle": "single",
8
+ "prettier.embeddedLanguageFormatting": "off",
9
+ "editor.tabCompletion": "on",
10
+ "diffEditor.codeLens": true
11
+ }
12
+
index.js ADDED
@@ -0,0 +1,938 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import express from "express";
2
+ import Redis from "ioredis";
3
+ import { initClient } from './utils.js';
4
+ import { errorHandler } from './middleware.js';
5
+ import swaggerJSDoc from 'swagger-jsdoc';
6
+ import yaml from 'js-yaml'
7
+ import fs from 'fs';
8
+
9
+ const redis = new Redis();
10
+
11
+ const app = express();
12
+ const port = process.env.PORT;
13
+ app.use(express.json({}));
14
+ const swaggerDefinition = {
15
+ openapi: '3.0.0',
16
+ info: {
17
+ title: 'Express API Documentation',
18
+ version: '1.0.0',
19
+ description: 'This is the API documentation for my Express application.'
20
+ },
21
+ servers: [{
22
+ url: "https://934a-45-119-30-178.ngrok-free.app"
23
+ }]
24
+ };
25
+ const options = {
26
+ swaggerDefinition,
27
+ // Path to the API docs
28
+ apis: ['./index.js'], // Adjust the path according to your file structure
29
+ };
30
+
31
+
32
+
33
+ /**
34
+ * @swagger
35
+ * components:
36
+ * schemas:
37
+ * CompanyCreds:
38
+ * type: object
39
+ * properties:
40
+ * clientId:
41
+ * type: string
42
+ * description: Client ID for the company
43
+ * clientSecret:
44
+ * type: string
45
+ * description: Client secret for the company
46
+ * required:
47
+ * - clientId
48
+ * - clientSecret
49
+ * CreateUpdateLocation:
50
+ * type: object
51
+ * required:
52
+ * - code
53
+ * - name
54
+ * - gst
55
+ * - manager
56
+ * - address
57
+ * properties:
58
+ * code:
59
+ * type: string
60
+ * description: Unique code for the location
61
+ * name:
62
+ * type: string
63
+ * description: Name of the location
64
+ * gst:
65
+ * type: object
66
+ * required:
67
+ * - legal_name
68
+ * - value
69
+ * properties:
70
+ * legal_name:
71
+ * type: string
72
+ * description: Legal name for GST purposes
73
+ * value:
74
+ * type: string
75
+ * description: GST value
76
+ * manager:
77
+ * type: object
78
+ * required:
79
+ * - manager_name
80
+ * - email
81
+ * - number
82
+ * - country_code
83
+ * properties:
84
+ * manager_name:
85
+ * type: string
86
+ * description: Name of the manager
87
+ * email:
88
+ * type: string
89
+ * description: Email of the manager
90
+ * number:
91
+ * type: string
92
+ * description: Contact number of the manager
93
+ * country_code:
94
+ * type: string
95
+ * description: Country code for the manager's contact number
96
+ * address:
97
+ * type: object
98
+ * required:
99
+ * - address1
100
+ * - country
101
+ * - pincode
102
+ * - city
103
+ * - state
104
+ * properties:
105
+ * address1:
106
+ * type: string
107
+ * description: Primary address line
108
+ * address2:
109
+ * type: string
110
+ * description: Secondary address line
111
+ * country:
112
+ * type: string
113
+ * description: Country of the location
114
+ * pincode:
115
+ * type: string
116
+ * description: Postal code of the location
117
+ * city:
118
+ * type: string
119
+ * description: City of the location
120
+ * state:
121
+ * type: string
122
+ * description: State of the location
123
+ * latitude:
124
+ * type: number
125
+ * description: Latitude for the location
126
+ * longitude:
127
+ * type: number
128
+ * description: Longitude for the location
129
+ * landmark:
130
+ * type: string
131
+ * description: Landmark near the location
132
+ * Brand:
133
+ * type: object
134
+ * properties:
135
+ * name:
136
+ * type: string
137
+ * logo:
138
+ * type: string
139
+ * id:
140
+ * type: string
141
+ * BrandCreation:
142
+ * type: object
143
+ * required:
144
+ * - name
145
+ * - logo
146
+ * - description
147
+ * properties:
148
+ * name:
149
+ * type: string
150
+ * logo:
151
+ * type: string
152
+ * description:
153
+ * type: string
154
+ * ErrorResponse:
155
+ * type: object
156
+ * properties:
157
+ * message:
158
+ * type: string
159
+ * description: Error message
160
+ */
161
+
162
+ app.get(['/swagger.yaml', '/swagger.json'], (req, res) => {
163
+ // Initialize swagger-jsdoc
164
+ const swaggerSpec = swaggerJSDoc(options);
165
+
166
+ // Convert to YAML
167
+ const swaggerYAML = yaml.dump(swaggerSpec);
168
+ switch (req.path.split('.').pop()) {
169
+ case 'json':
170
+ res.setHeader('Content-Type', 'application/json');
171
+ return res.send(JSON.stringify(swaggerSpec, null, 2));
172
+ case 'yaml':
173
+ res.setHeader('Content-Type', 'text/yaml');
174
+ return res.send(swaggerYAML);
175
+ }
176
+ });
177
+
178
+ /**
179
+ * @swagger
180
+ * /_healthz:
181
+ * get:
182
+ * operationId: getHealthZ
183
+ * description: Check server health
184
+ * responses:
185
+ * 200:
186
+ * description: Server is healthy
187
+ * content:
188
+ * text/plain:
189
+ * schema:
190
+ * type: string
191
+ * example: Hello World!
192
+ */
193
+ app.get("/_healthz", (req, res) => {
194
+ res.send('Hello World!');
195
+ });
196
+ app.get("/privacy", (req, res) => {
197
+ res.send('This is the privacy policy page!');
198
+ });
199
+
200
+ /**
201
+ * @swagger
202
+ * /company/{companyId}:
203
+ * get:
204
+ * operationId: getOrVerifyCompanyCredentials
205
+ * description: Retrieve company credentials
206
+ * tags: [Company]
207
+ * parameters:
208
+ * - in: path
209
+ * name: companyId
210
+ * required: true
211
+ * schema:
212
+ * type: string
213
+ * description: The company ID
214
+ * responses:
215
+ * 200:
216
+ * description: Company credentials retrieved successfully
217
+ * content:
218
+ * application/json:
219
+ * schema:
220
+ * $ref: '#/components/schemas/CompanyCreds'
221
+ * 404:
222
+ * description: Company credentials not found
223
+ * content:
224
+ * application/json:
225
+ * schema:
226
+ * $ref: '#/components/schemas/ErrorResponse'
227
+ */
228
+ app.get("/company/:companyId", async (req, res, next) => {
229
+ try {
230
+ const { companyId } = req.params;
231
+ const creds = await redis.get(`${companyId}:creds`);
232
+ if (!creds) {
233
+ throw {
234
+ message: "company creds not found"
235
+ }
236
+ }
237
+ res.json({ ...JSON.parse(creds), companyId })
238
+ } catch (e) {
239
+ next(e)
240
+ }
241
+ })
242
+
243
+ /**
244
+ * @swagger
245
+ * /company/{companyId}:
246
+ * put:
247
+ * operationId: updateCompanyCredentials
248
+ * description: Update company credentials
249
+ * tags: [Company]
250
+ * parameters:
251
+ * - in: path
252
+ * name: companyId
253
+ * required: true
254
+ * schema:
255
+ * type: string
256
+ * description: The company ID
257
+ * requestBody:
258
+ * required: true
259
+ * content:
260
+ * application/json:
261
+ * schema:
262
+ * $ref: '#/components/schemas/CompanyCreds'
263
+ * responses:
264
+ * 200:
265
+ * description: Company credentials updated successfully
266
+ * content:
267
+ * application/json:
268
+ * schema:
269
+ * type: object
270
+ * properties:
271
+ * message:
272
+ * type: string
273
+ * 400:
274
+ * description: Invalid input
275
+ * content:
276
+ * application/json:
277
+ * schema:
278
+ * $ref: '#/components/schemas/ErrorResponse'
279
+ */
280
+ app.put("/company/:companyId", async (req, res, next) => {
281
+ try {
282
+ const { companyId } = req.params;
283
+ const { clientId, clientSecret } = req.body
284
+ const creds = await redis.set(`${companyId}:creds`, JSON.stringify({ clientId, clientSecret }));
285
+ res.json({ message: "company creds saved" })
286
+ } catch (e) {
287
+ next(e)
288
+ }
289
+ })
290
+
291
+
292
+
293
+ /**
294
+ * @swagger
295
+ * /company/{companyId}/applications:
296
+ * get:
297
+ * operationId: getSalesChannelByCompany
298
+ * description: Retrieve applications for a specific company
299
+ * tags: [Company]
300
+ * parameters:
301
+ * - in: path
302
+ * name: companyId
303
+ * required: true
304
+ * schema:
305
+ * type: string
306
+ * description: The ID of the company to retrieve applications for
307
+ * responses:
308
+ * 200:
309
+ * description: List of applications for the specified company
310
+ * content:
311
+ * application/json:
312
+ * schema:
313
+ * type: array
314
+ * items:
315
+ * type: object
316
+ * properties:
317
+ * name:
318
+ * type: string
319
+ * description: Name of the application
320
+ * id:
321
+ * type: string
322
+ * description: ID of the application
323
+ * token:
324
+ * type: string
325
+ * description: Token associated with the application
326
+ * domain:
327
+ * type: string
328
+ * description: Primary domain of the application
329
+ * logo:
330
+ * type: string
331
+ * description: Logo URL of the application
332
+ * 500:
333
+ * description: Server error
334
+ * content:
335
+ * application/json:
336
+ * schema:
337
+ * $ref: '#/components/schemas/ErrorResponse'
338
+ */
339
+ app.get("/company/:companyId/applications", async (req, res, next) => {
340
+ try {
341
+ const { companyId } = req.params;
342
+ const client = await initClient(companyId);
343
+ let applications = await client.configuration.getApplications({ pageSize: 100 });
344
+ applications = applications.items.map(i => {
345
+ return {
346
+ name: i.name,
347
+ id: i.id,
348
+ token: i.token,
349
+ domain: i.domains?.find(i => i.is_primary)?.name,
350
+ logo: i.logo?.secure_url
351
+ }
352
+ })
353
+ res.json(applications)
354
+ } catch (e) {
355
+ next(e)
356
+ }
357
+ })
358
+
359
+ /**
360
+ * @swagger
361
+ * /company/{companyId}/brands:
362
+ * get:
363
+ * summary: Retrieves a list of brands for a specific company
364
+ * tags: [Brands]
365
+ * operationId: getCompanyBrands
366
+ * description: Fetches a list of brands associated with the given company ID.
367
+ * parameters:
368
+ * - in: path
369
+ * name: companyId
370
+ * required: true
371
+ * schema:
372
+ * type: string
373
+ * description: The unique identifier of the company
374
+ * responses:
375
+ * 200:
376
+ * description: A list of brands
377
+ * content:
378
+ * application/json:
379
+ * schema:
380
+ * type: array
381
+ * items:
382
+ * $ref: '#/components/schemas/Brand'
383
+ */
384
+ app.get("/company/:companyId/brands", async (req, res, next) => {
385
+ try {
386
+ const { companyId } = req.params;
387
+ const client = await initClient(companyId);
388
+ let brands = await client.companyProfile.getBrands({ pageSize: 300 });
389
+ brands = brands.items.map(i => {
390
+ return {
391
+ name: i?.brand?.name,
392
+ logo: i?.brand?.logo,
393
+ id: i?.brand?.uid,
394
+ }
395
+ })
396
+ res.json(brands)
397
+ } catch (e) {
398
+ next(e)
399
+ }
400
+ })
401
+
402
+ /**
403
+ * @swagger
404
+ * /company/{companyId}/brands:
405
+ * post:
406
+ * summary: Creates a new brand for a specific company
407
+ * tags: [Brands]
408
+ * operationId: createCompanyBrand
409
+ * description: Adds a new brand to the company profile.
410
+ * parameters:
411
+ * - in: path
412
+ * name: companyId
413
+ * required: true
414
+ * schema:
415
+ * type: string
416
+ * description: The unique identifier of the company
417
+ * requestBody:
418
+ * required: true
419
+ * content:
420
+ * application/json:
421
+ * schema:
422
+ * $ref: '#/components/schemas/BrandCreation'
423
+ * responses:
424
+ * 200:
425
+ * description: Brand created successfully
426
+ * content:
427
+ * application/json:
428
+ * schema:
429
+ * type: object
430
+ * properties:
431
+ * message:
432
+ * type: string
433
+ * id:
434
+ * type: string
435
+ *
436
+ * /company/{companyId}/brands/{brandId}:
437
+ * put:
438
+ * summary: Creates a new brand for a specific company
439
+ * tags: [Brands]
440
+ * operationId: updateCompanyBrand
441
+ * description: updated an existing brand.
442
+ * parameters:
443
+ * - in: path
444
+ * name: companyId
445
+ * required: true
446
+ * schema:
447
+ * type: string
448
+ * description: The unique identifier of the company
449
+ * - in: path
450
+ * name: brandId
451
+ * required: true
452
+ * schema:
453
+ * type: string
454
+ * description: The unique identifier of the brand
455
+ * requestBody:
456
+ * required: true
457
+ * content:
458
+ * application/json:
459
+ * schema:
460
+ * $ref: '#/components/schemas/BrandCreation'
461
+ * responses:
462
+ * 200:
463
+ * description: Brand updated successfully
464
+ * content:
465
+ * application/json:
466
+ * schema:
467
+ * type: object
468
+ * properties:
469
+ * message:
470
+ * type: string
471
+ * id:
472
+ * type: string
473
+ */
474
+ app.post("/company/:companyId/brands", async (req, res, next) => {
475
+ try {
476
+ const { companyId } = req.params;
477
+ const client = await initClient(companyId);
478
+ const {
479
+ name,
480
+ logo = "https://cdn.pixelbin.io/v2/falling-surf-7c8bb8/fyprod/wrkr/platform/pictures/favicon/original/ZWTmgEoFQ-platform-favicon.png",
481
+ description
482
+ } = req.body
483
+ let brands = await client.companyProfile.createBrand({
484
+ body: {
485
+ name,
486
+ description,
487
+ logo,
488
+ banner: { portrait: logo, landscape: logo }
489
+ }
490
+ });
491
+ res.json({ message: "brand created", id: brands?.id })
492
+ } catch (e) {
493
+ next(e)
494
+ }
495
+ })
496
+ app.put("/company/:companyId/brands/:brandId", async (req, res, next) => {
497
+ try {
498
+ const { companyId, brandId } = req.params;
499
+ const client = await initClient(companyId);
500
+ const {
501
+ name,
502
+ logo = "https://cdn.pixelbin.io/v2/falling-surf-7c8bb8/fyprod/wrkr/platform/pictures/favicon/original/ZWTmgEoFQ-platform-favicon.png",
503
+ description
504
+ } = req.body
505
+ let brands = await client.companyProfile.editBrand({
506
+ brandId,
507
+ body: {
508
+ name,
509
+ description,
510
+ logo,
511
+ banner: { portrait: logo, landscape: logo }
512
+ }
513
+ });
514
+ res.json({ message: "brand updated", id: brands?.id })
515
+ } catch (e) {
516
+ next(e)
517
+ }
518
+ })
519
+
520
+ /**
521
+ * @swagger
522
+ * /company/{companyId}/locations:
523
+ * get:
524
+ * operationId: getLocationsByCompany
525
+ * description: get all company locations
526
+ * tags: [Company]
527
+ * parameters:
528
+ * - in: path
529
+ * name: companyId
530
+ * required: true
531
+ * schema:
532
+ * type: string
533
+ * description: The ID of the company to add a location for
534
+ * responses:
535
+ * 200:
536
+ * description: location list
537
+ * content:
538
+ * application/json:
539
+ * schema:
540
+ * type: array
541
+ * items:
542
+ * properties:
543
+ * id:
544
+ * type: number
545
+ * description: Location id
546
+ * code:
547
+ * type: string
548
+ * description: Location code
549
+ * name:
550
+ * type: string
551
+ * description: Location code
552
+ * documents:
553
+ * type: array
554
+ * description: Location gst documents
555
+ * items:
556
+ * type: object
557
+ * properties:
558
+ * type:
559
+ * type: string
560
+ * description: document type
561
+ * value:
562
+ * type: string
563
+ * description: document number
564
+ * verified:
565
+ * type: boolean
566
+ * description: document number verification status
567
+ * legal_name:
568
+ * type: boolean
569
+ * description: document owner
570
+ * 400:
571
+ * description: Invalid input
572
+ * content:
573
+ * application/json:
574
+ * schema:
575
+ * $ref: '#/components/schemas/ErrorResponse'
576
+ */
577
+ app.get("/company/:companyId/locations", async (req, res, next) => {
578
+ try {
579
+ const { companyId } = req.params;
580
+ const client = await initClient(companyId);
581
+ let locations = await client.companyProfile.getLocations({ pageSize: 100 });
582
+ locations = locations.items.map(i => {
583
+ return {
584
+ name: i.name,
585
+ id: i.uid,
586
+ code: i.code,
587
+ documents: i.documents
588
+ }
589
+ })
590
+ res.json(locations)
591
+ } catch (e) {
592
+ next(e)
593
+ }
594
+ })
595
+ /**
596
+ * @swagger
597
+ * /company/{companyId}/locations:
598
+ * post:
599
+ * operationId: createLocationsForCompany
600
+ * description: Add a new location for a specific company
601
+ * tags: [Company]
602
+ * parameters:
603
+ * - in: path
604
+ * name: companyId
605
+ * required: true
606
+ * schema:
607
+ * type: string
608
+ * description: The ID of the company to add a location for
609
+ * requestBody:
610
+ * required: true
611
+ * content:
612
+ * application/json:
613
+ * schema:
614
+ * $ref: '#/components/schemas/CreateUpdateLocation'
615
+ * responses:
616
+ * 200:
617
+ * description: Location created successfully
618
+ * content:
619
+ * application/json:
620
+ * schema:
621
+ * type: object
622
+ * properties:
623
+ * message:
624
+ * type: string
625
+ * id:
626
+ * type: string
627
+ * description: Location id
628
+ * 400:
629
+ * description: Invalid input
630
+ * content:
631
+ * application/json:
632
+ * schema:
633
+ * $ref: '#/components/schemas/ErrorResponse'
634
+ * /company/{companyId}/locations/{locationId}:
635
+ * put:
636
+ * operationId: updateLocationByCompany
637
+ * description: update a location for a specific company
638
+ * tags: [Company]
639
+ * parameters:
640
+ * - in: path
641
+ * name: companyId
642
+ * required: true
643
+ * schema:
644
+ * type: string
645
+ * description: The ID of the company to add a location for
646
+ * - in: path
647
+ * name: locationId
648
+ * required: true
649
+ * schema:
650
+ * type: string
651
+ * description: The ID of the location to be updated
652
+ * requestBody:
653
+ * required: true
654
+ * content:
655
+ * application/json:
656
+ * schema:
657
+ * $ref: '#/components/schemas/CreateUpdateLocation'
658
+ * responses:
659
+ * 200:
660
+ * description: Location updated successfully
661
+ * content:
662
+ * application/json:
663
+ * schema:
664
+ * type: object
665
+ * properties:
666
+ * message:
667
+ * type: string
668
+ * id:
669
+ * type: string
670
+ * description: Location id
671
+ * 400:
672
+ * description: Invalid input
673
+ * content:
674
+ * application/json:
675
+ * schema:
676
+ * $ref: '#/components/schemas/ErrorResponse'
677
+ */
678
+ app.post("/company/:companyId/locations", async (req, res, next) => {
679
+ try {
680
+ const { companyId } = req.params;
681
+ const { code,
682
+ name,
683
+ gst: {
684
+ legal_name,
685
+ value
686
+ },
687
+ manager: {
688
+ manager_name, email, number, country_code
689
+ },
690
+ address: {
691
+ address1,
692
+ address2,
693
+ country,
694
+ pincode,
695
+ city,
696
+ state,
697
+ latitude = 19.2762702,
698
+ longitude = 72.8929,
699
+ landmark = ""
700
+ },
701
+
702
+ } = req.body
703
+ const client = await initClient(companyId);
704
+ let locations = await client.companyProfile.createLocation({
705
+ body: {
706
+ name,
707
+ display_name: name,
708
+ code,
709
+ company: parseInt(companyId),
710
+ documents: [{
711
+ type: "gst",
712
+ legal_name: legal_name,
713
+ value: value, verified: true
714
+ }],
715
+ address: {
716
+ "address1": address1,
717
+ "address2": address2,
718
+ "country": country,
719
+ "pincode": pincode,
720
+ "city": city,
721
+ "state": state,
722
+ "latitude": latitude,
723
+ "longitude": longitude,
724
+ "landmark": landmark
725
+ },
726
+ manager: {
727
+ "name": manager_name,
728
+ "email": email,
729
+ "mobile_no": {
730
+ "number": number,
731
+ "country_code": country_code
732
+ }
733
+ },
734
+ contact_numbers: [
735
+ {
736
+ "number": number,
737
+ "country_code": country_code
738
+ }
739
+ ],
740
+ store_type: "high_street"
741
+
742
+ }
743
+ });
744
+
745
+ res.json({ message: "location added", id: locations?.id })
746
+ } catch (e) {
747
+ next(e)
748
+ }
749
+ })
750
+ app.put("/company/:companyId/locations/locationId", async (req, res, next) => {
751
+ try {
752
+ const { companyId } = req.params;
753
+ const { code,
754
+ name,
755
+ gst: {
756
+ legal_name,
757
+ value
758
+ },
759
+ manager: {
760
+ manager_name, email, number, country_code
761
+ },
762
+ address: {
763
+ address1,
764
+ address2,
765
+ country,
766
+ pincode,
767
+ city,
768
+ state,
769
+ latitude = 19.2762702,
770
+ longitude = 72.8929,
771
+ landmark = ""
772
+ },
773
+
774
+ } = req.body
775
+ const client = await initClient(companyId);
776
+ let locations = await client.companyProfile.createLocation({
777
+ body: {
778
+ name,
779
+ display_name: name,
780
+ code,
781
+ company: parseInt(companyId),
782
+ documents: [{
783
+ type: "gst",
784
+ legal_name: legal_name,
785
+ value: value, verified: true
786
+ }],
787
+ address: {
788
+ "address1": address1,
789
+ "address2": address2,
790
+ "country": country,
791
+ "pincode": pincode,
792
+ "city": city,
793
+ "state": state,
794
+ "latitude": latitude,
795
+ "longitude": longitude,
796
+ "landmark": landmark
797
+ },
798
+ manager: {
799
+ "name": manager_name,
800
+ "email": email,
801
+ "mobile_no": {
802
+ "number": number,
803
+ "country_code": country_code
804
+ }
805
+ },
806
+ contact_numbers: [
807
+ {
808
+ "number": number,
809
+ "country_code": country_code
810
+ }
811
+ ],
812
+ store_type: "high_street"
813
+
814
+ }
815
+ });
816
+
817
+ res.json({ message: "location updated", id: locations?.id })
818
+ } catch (e) {
819
+ next(e)
820
+ }
821
+ })
822
+
823
+ /**
824
+ * @swagger
825
+ * /company/{companyId}/departments:
826
+ * get:
827
+ * summary: Retrieve departments for a specific company
828
+ * description: Fetches a list of departments associated with the given company ID.
829
+ * tags: [Company]
830
+ * operationId: getCompanyDepartments
831
+ * parameters:
832
+ * - in: path
833
+ * name: companyId
834
+ * required: true
835
+ * schema:
836
+ * type: string
837
+ * description: The unique identifier of the company
838
+ * responses:
839
+ * 200:
840
+ * description: An array of department objects
841
+ * content:
842
+ * application/json:
843
+ * schema:
844
+ * type: array
845
+ * items:
846
+ * type: object
847
+ * properties:
848
+ * name:
849
+ * type: string
850
+ * description: Name of the department
851
+ * slug:
852
+ * type: string
853
+ * description: slug or identifier of the department
854
+ */
855
+
856
+ app.get("/company/:companyId/departments", async (req, res, next) => {
857
+ try {
858
+ const { companyId } = req.params;
859
+ const client = await initClient(companyId);
860
+ let departments = await client.catalog.listDepartmentsData({
861
+ isActive: true, pageSize: 100, pageNo: 1
862
+ });
863
+ departments = departments?.items?.map(i => { return { name: i.name, slug: i.slug } })
864
+ res.json(departments);
865
+
866
+ } catch (e) { next(e) }
867
+ })
868
+ /**
869
+ * @swagger
870
+ * /company/{companyId}/departments/{departmentSlug}:
871
+ * get:
872
+ * summary: Retrieve categories for a specific department
873
+ * description: Retrieve categories for a specific department.
874
+ * tags: [Company]
875
+ * operationId: getDepartmentCategories
876
+ * parameters:
877
+ * - in: path
878
+ * name: companyId
879
+ * required: true
880
+ * schema:
881
+ * type: string
882
+ * description: The unique identifier of the company
883
+ * parameters:
884
+ * - in: path
885
+ * name: dea
886
+ * required: true
887
+ * schema:
888
+ * type: string
889
+ * description: The unique identifier of the company
890
+ * parameters:
891
+ * - in: query
892
+ * name: companyId
893
+ * required: true
894
+ * schema:
895
+ * type: string
896
+ * description: The unique identifier of the company
897
+ * responses:
898
+ * 200:
899
+ * description: An array of department objects
900
+ * content:
901
+ * application/json:
902
+ * schema:
903
+ * type: array
904
+ * items:
905
+ * type: object
906
+ * properties:
907
+ * name:
908
+ * type: string
909
+ * description: Name of the category
910
+ * slug:
911
+ * type: string
912
+ * description: slug or identifier of the catrgory
913
+ */
914
+ app.get("/company/:companyId/departments/:departmentSlug", async (req, res, next) => {
915
+ try {
916
+ const { companyId, departmentSlug } = req.params;
917
+ const { item_type = 'single' } = req.query;
918
+ const client = await initClient(companyId);
919
+ let categories = await client.catalog.listProductTemplateCategories({
920
+ departments: departmentSlug, pageNo: 1, pageSize: 100, itemType: item_type
921
+ });
922
+ categories = categories?.items?.map(i => { return { name: i.name, slug: i.slug } })
923
+ res.json(categories);
924
+
925
+ } catch (e) { next(e) }
926
+ })
927
+
928
+ app.use(errorHandler)
929
+
930
+ app.listen(port, async () => {
931
+ console.log(`Example app listening at http://localhost:${port}`);
932
+ const swaggerSpec = swaggerJSDoc(options);
933
+
934
+ // Convert to YAML
935
+ const swaggerYAML = yaml.dump(swaggerSpec);
936
+ await fs.writeFileSync("swagger.yaml", swaggerYAML, 'utf-8')
937
+ await fs.writeFileSync("swagger.json", JSON.stringify(swaggerSpec, null, 2), 'utf-8')
938
+ });
middleware.js ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ export const errorHandler = (err, req, res, next) => {
2
+ res.status(err?.code || err?.status || 500).json({ ...err, message: err?.message, });
3
+ }
package.json ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "y",
3
+ "version": "1.0.0",
4
+ "main": "index.js",
5
+ "author": "sujoydev <sujoydev@gofynd.com>",
6
+ "license": "MIT",
7
+ "type": "module",
8
+ "scripts": {
9
+ "lint": "eslint --ext .js --fix"
10
+ },
11
+ "dependencies": {
12
+ "@gofynd/fdk-client-javascript": "^1.3.10-beta.1",
13
+ "convict": "^6.2.4",
14
+ "eslint": "^8.55.0",
15
+ "express": "^4.18.2",
16
+ "ioredis": "^5.3.2",
17
+ "js-yaml": "^4.1.0",
18
+ "swagger-jsdoc": "^6.2.8"
19
+ }
20
+ }
swagger.json ADDED
@@ -0,0 +1,777 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "openapi": "3.0.0",
3
+ "info": {
4
+ "title": "Express API Documentation",
5
+ "version": "1.0.0",
6
+ "description": "This is the API documentation for my Express application."
7
+ },
8
+ "servers": [
9
+ {
10
+ "url": "https://934a-45-119-30-178.ngrok-free.app"
11
+ }
12
+ ],
13
+ "paths": {
14
+ "/_healthz": {
15
+ "get": {
16
+ "operationId": "getHealthZ",
17
+ "description": "Check server health",
18
+ "responses": {
19
+ "200": {
20
+ "description": "Server is healthy",
21
+ "content": {
22
+ "text/plain": {
23
+ "schema": {
24
+ "type": "string",
25
+ "example": "Hello World!"
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
31
+ }
32
+ },
33
+ "/company/{companyId}": {
34
+ "get": {
35
+ "operationId": "getOrVerifyCompanyCredentials",
36
+ "description": "Retrieve company credentials",
37
+ "tags": [
38
+ "Company"
39
+ ],
40
+ "parameters": [
41
+ {
42
+ "in": "path",
43
+ "name": "companyId",
44
+ "required": true,
45
+ "schema": {
46
+ "type": "string"
47
+ },
48
+ "description": "The company ID"
49
+ }
50
+ ],
51
+ "responses": {
52
+ "200": {
53
+ "description": "Company credentials retrieved successfully",
54
+ "content": {
55
+ "application/json": {
56
+ "schema": {
57
+ "$ref": "#/components/schemas/CompanyCreds"
58
+ }
59
+ }
60
+ }
61
+ },
62
+ "404": {
63
+ "description": "Company credentials not found",
64
+ "content": {
65
+ "application/json": {
66
+ "schema": {
67
+ "$ref": "#/components/schemas/ErrorResponse"
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }
73
+ },
74
+ "put": {
75
+ "operationId": "updateCompanyCredentials",
76
+ "description": "Update company credentials",
77
+ "tags": [
78
+ "Company"
79
+ ],
80
+ "parameters": [
81
+ {
82
+ "in": "path",
83
+ "name": "companyId",
84
+ "required": true,
85
+ "schema": {
86
+ "type": "string"
87
+ },
88
+ "description": "The company ID"
89
+ }
90
+ ],
91
+ "requestBody": {
92
+ "required": true,
93
+ "content": {
94
+ "application/json": {
95
+ "schema": {
96
+ "$ref": "#/components/schemas/CompanyCreds"
97
+ }
98
+ }
99
+ }
100
+ },
101
+ "responses": {
102
+ "200": {
103
+ "description": "Company credentials updated successfully",
104
+ "content": {
105
+ "application/json": {
106
+ "schema": {
107
+ "type": "object",
108
+ "properties": {
109
+ "message": {
110
+ "type": "string"
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
116
+ },
117
+ "400": {
118
+ "description": "Invalid input",
119
+ "content": {
120
+ "application/json": {
121
+ "schema": {
122
+ "$ref": "#/components/schemas/ErrorResponse"
123
+ }
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
129
+ },
130
+ "/company/{companyId}/applications": {
131
+ "get": {
132
+ "operationId": "getSalesChannelByCompany",
133
+ "description": "Retrieve applications for a specific company",
134
+ "tags": [
135
+ "Company"
136
+ ],
137
+ "parameters": [
138
+ {
139
+ "in": "path",
140
+ "name": "companyId",
141
+ "required": true,
142
+ "schema": {
143
+ "type": "string"
144
+ },
145
+ "description": "The ID of the company to retrieve applications for"
146
+ }
147
+ ],
148
+ "responses": {
149
+ "200": {
150
+ "description": "List of applications for the specified company",
151
+ "content": {
152
+ "application/json": {
153
+ "schema": {
154
+ "type": "array",
155
+ "items": {
156
+ "type": "object",
157
+ "properties": {
158
+ "name": {
159
+ "type": "string",
160
+ "description": "Name of the application"
161
+ },
162
+ "id": {
163
+ "type": "string",
164
+ "description": "ID of the application"
165
+ },
166
+ "token": {
167
+ "type": "string",
168
+ "description": "Token associated with the application"
169
+ },
170
+ "domain": {
171
+ "type": "string",
172
+ "description": "Primary domain of the application"
173
+ },
174
+ "logo": {
175
+ "type": "string",
176
+ "description": "Logo URL of the application"
177
+ }
178
+ }
179
+ }
180
+ }
181
+ }
182
+ }
183
+ },
184
+ "500": {
185
+ "description": "Server error",
186
+ "content": {
187
+ "application/json": {
188
+ "schema": {
189
+ "$ref": "#/components/schemas/ErrorResponse"
190
+ }
191
+ }
192
+ }
193
+ }
194
+ }
195
+ }
196
+ },
197
+ "/company/{companyId}/brands": {
198
+ "get": {
199
+ "summary": "Retrieves a list of brands for a specific company",
200
+ "tags": [
201
+ "Brands"
202
+ ],
203
+ "operationId": "getCompanyBrands",
204
+ "description": "Fetches a list of brands associated with the given company ID.",
205
+ "parameters": [
206
+ {
207
+ "in": "path",
208
+ "name": "companyId",
209
+ "required": true,
210
+ "schema": {
211
+ "type": "string"
212
+ },
213
+ "description": "The unique identifier of the company"
214
+ }
215
+ ],
216
+ "responses": {
217
+ "200": {
218
+ "description": "A list of brands",
219
+ "content": {
220
+ "application/json": {
221
+ "schema": {
222
+ "type": "array",
223
+ "items": {
224
+ "$ref": "#/components/schemas/Brand"
225
+ }
226
+ }
227
+ }
228
+ }
229
+ }
230
+ }
231
+ },
232
+ "post": {
233
+ "summary": "Creates a new brand for a specific company",
234
+ "tags": [
235
+ "Brands"
236
+ ],
237
+ "operationId": "createCompanyBrand",
238
+ "description": "Adds a new brand to the company profile.",
239
+ "parameters": [
240
+ {
241
+ "in": "path",
242
+ "name": "companyId",
243
+ "required": true,
244
+ "schema": {
245
+ "type": "string"
246
+ },
247
+ "description": "The unique identifier of the company"
248
+ }
249
+ ],
250
+ "requestBody": {
251
+ "required": true,
252
+ "content": {
253
+ "application/json": {
254
+ "schema": {
255
+ "$ref": "#/components/schemas/BrandCreation"
256
+ }
257
+ }
258
+ }
259
+ },
260
+ "responses": {
261
+ "200": {
262
+ "description": "Brand created successfully",
263
+ "content": {
264
+ "application/json": {
265
+ "schema": {
266
+ "type": "object",
267
+ "properties": {
268
+ "message": {
269
+ "type": "string"
270
+ },
271
+ "id": {
272
+ "type": "string"
273
+ }
274
+ }
275
+ }
276
+ }
277
+ }
278
+ }
279
+ }
280
+ }
281
+ },
282
+ "/company/{companyId}/brands/{brandId}": {
283
+ "put": {
284
+ "summary": "Creates a new brand for a specific company",
285
+ "tags": [
286
+ "Brands"
287
+ ],
288
+ "operationId": "updateCompanyBrand",
289
+ "description": "updated an existing brand.",
290
+ "parameters": [
291
+ {
292
+ "in": "path",
293
+ "name": "companyId",
294
+ "required": true,
295
+ "schema": {
296
+ "type": "string"
297
+ },
298
+ "description": "The unique identifier of the company"
299
+ },
300
+ {
301
+ "in": "path",
302
+ "name": "brandId",
303
+ "required": true,
304
+ "schema": {
305
+ "type": "string"
306
+ },
307
+ "description": "The unique identifier of the brand"
308
+ }
309
+ ],
310
+ "requestBody": {
311
+ "required": true,
312
+ "content": {
313
+ "application/json": {
314
+ "schema": {
315
+ "$ref": "#/components/schemas/BrandCreation"
316
+ }
317
+ }
318
+ }
319
+ },
320
+ "responses": {
321
+ "200": {
322
+ "description": "Brand updated successfully",
323
+ "content": {
324
+ "application/json": {
325
+ "schema": {
326
+ "type": "object",
327
+ "properties": {
328
+ "message": {
329
+ "type": "string"
330
+ },
331
+ "id": {
332
+ "type": "string"
333
+ }
334
+ }
335
+ }
336
+ }
337
+ }
338
+ }
339
+ }
340
+ }
341
+ },
342
+ "/company/{companyId}/locations": {
343
+ "get": {
344
+ "operationId": "getLocationsByCompany",
345
+ "description": "get all company locations",
346
+ "tags": [
347
+ "Company"
348
+ ],
349
+ "parameters": [
350
+ {
351
+ "in": "path",
352
+ "name": "companyId",
353
+ "required": true,
354
+ "schema": {
355
+ "type": "string"
356
+ },
357
+ "description": "The ID of the company to add a location for"
358
+ }
359
+ ],
360
+ "responses": {
361
+ "200": {
362
+ "description": "location list",
363
+ "content": {
364
+ "application/json": {
365
+ "schema": {
366
+ "type": "array",
367
+ "items": {
368
+ "properties": {
369
+ "id": {
370
+ "type": "number",
371
+ "description": "Location id"
372
+ },
373
+ "code": {
374
+ "type": "string",
375
+ "description": "Location code"
376
+ },
377
+ "name": {
378
+ "type": "string",
379
+ "description": "Location code"
380
+ },
381
+ "documents": {
382
+ "type": "array",
383
+ "description": "Location gst documents",
384
+ "items": {
385
+ "type": "object",
386
+ "properties": {
387
+ "type": {
388
+ "type": "string",
389
+ "description": "document type"
390
+ },
391
+ "value": {
392
+ "type": "string",
393
+ "description": "document number"
394
+ },
395
+ "verified": {
396
+ "type": "boolean",
397
+ "description": "document number verification status"
398
+ },
399
+ "legal_name": {
400
+ "type": "boolean",
401
+ "description": "document owner"
402
+ }
403
+ }
404
+ }
405
+ }
406
+ }
407
+ }
408
+ }
409
+ }
410
+ }
411
+ },
412
+ "400": {
413
+ "description": "Invalid input",
414
+ "content": {
415
+ "application/json": {
416
+ "schema": {
417
+ "$ref": "#/components/schemas/ErrorResponse"
418
+ }
419
+ }
420
+ }
421
+ }
422
+ }
423
+ },
424
+ "post": {
425
+ "operationId": "createLocationsForCompany",
426
+ "description": "Add a new location for a specific company",
427
+ "tags": [
428
+ "Company"
429
+ ],
430
+ "parameters": [
431
+ {
432
+ "in": "path",
433
+ "name": "companyId",
434
+ "required": true,
435
+ "schema": {
436
+ "type": "string"
437
+ },
438
+ "description": "The ID of the company to add a location for"
439
+ }
440
+ ],
441
+ "requestBody": {
442
+ "required": true,
443
+ "content": {
444
+ "application/json": {
445
+ "schema": {
446
+ "$ref": "#/components/schemas/CreateUpdateLocation"
447
+ }
448
+ }
449
+ }
450
+ },
451
+ "responses": {
452
+ "200": {
453
+ "description": "Location created successfully",
454
+ "content": {
455
+ "application/json": {
456
+ "schema": {
457
+ "type": "object",
458
+ "properties": {
459
+ "message": {
460
+ "type": "string"
461
+ },
462
+ "id": {
463
+ "type": "string",
464
+ "description": "Location id"
465
+ }
466
+ }
467
+ }
468
+ }
469
+ }
470
+ },
471
+ "400": {
472
+ "description": "Invalid input",
473
+ "content": {
474
+ "application/json": {
475
+ "schema": {
476
+ "$ref": "#/components/schemas/ErrorResponse"
477
+ }
478
+ }
479
+ }
480
+ }
481
+ }
482
+ }
483
+ },
484
+ "/company/{companyId}/locations/{locationId}": {
485
+ "put": {
486
+ "operationId": "updateLocationByCompany",
487
+ "description": "update a location for a specific company",
488
+ "tags": [
489
+ "Company"
490
+ ],
491
+ "parameters": [
492
+ {
493
+ "in": "path",
494
+ "name": "companyId",
495
+ "required": true,
496
+ "schema": {
497
+ "type": "string"
498
+ },
499
+ "description": "The ID of the company to add a location for"
500
+ },
501
+ {
502
+ "in": "path",
503
+ "name": "locationId",
504
+ "required": true,
505
+ "schema": {
506
+ "type": "string"
507
+ },
508
+ "description": "The ID of the location to be updated"
509
+ }
510
+ ],
511
+ "requestBody": {
512
+ "required": true,
513
+ "content": {
514
+ "application/json": {
515
+ "schema": {
516
+ "$ref": "#/components/schemas/CreateUpdateLocation"
517
+ }
518
+ }
519
+ }
520
+ },
521
+ "responses": {
522
+ "200": {
523
+ "description": "Location updated successfully",
524
+ "content": {
525
+ "application/json": {
526
+ "schema": {
527
+ "type": "object",
528
+ "properties": {
529
+ "message": {
530
+ "type": "string"
531
+ },
532
+ "id": {
533
+ "type": "string",
534
+ "description": "Location id"
535
+ }
536
+ }
537
+ }
538
+ }
539
+ }
540
+ },
541
+ "400": {
542
+ "description": "Invalid input",
543
+ "content": {
544
+ "application/json": {
545
+ "schema": {
546
+ "$ref": "#/components/schemas/ErrorResponse"
547
+ }
548
+ }
549
+ }
550
+ }
551
+ }
552
+ }
553
+ },
554
+ "/company/{companyId}/departments": {
555
+ "get": {
556
+ "summary": "Retrieve departments for a specific company",
557
+ "description": "Fetches a list of departments associated with the given company ID.",
558
+ "tags": [
559
+ "Company"
560
+ ],
561
+ "operationId": "getCompanyDepartments",
562
+ "parameters": [
563
+ {
564
+ "in": "path",
565
+ "name": "companyId",
566
+ "required": true,
567
+ "schema": {
568
+ "type": "string"
569
+ },
570
+ "description": "The unique identifier of the company"
571
+ }
572
+ ],
573
+ "responses": {
574
+ "200": {
575
+ "description": "An array of department objects",
576
+ "content": {
577
+ "application/json": {
578
+ "schema": {
579
+ "type": "array",
580
+ "items": {
581
+ "type": "object",
582
+ "properties": {
583
+ "name": {
584
+ "type": "string",
585
+ "description": "Name of the department"
586
+ },
587
+ "slug": {
588
+ "type": "string",
589
+ "description": "slug or identifier of the department"
590
+ }
591
+ }
592
+ }
593
+ }
594
+ }
595
+ }
596
+ }
597
+ }
598
+ }
599
+ }
600
+ },
601
+ "components": {
602
+ "schemas": {
603
+ "CompanyCreds": {
604
+ "type": "object",
605
+ "properties": {
606
+ "clientId": {
607
+ "type": "string",
608
+ "description": "Client ID for the company"
609
+ },
610
+ "clientSecret": {
611
+ "type": "string",
612
+ "description": "Client secret for the company"
613
+ }
614
+ },
615
+ "required": [
616
+ "clientId",
617
+ "clientSecret"
618
+ ]
619
+ },
620
+ "CreateUpdateLocation": {
621
+ "type": "object",
622
+ "required": [
623
+ "code",
624
+ "name",
625
+ "gst",
626
+ "manager",
627
+ "address"
628
+ ],
629
+ "properties": {
630
+ "code": {
631
+ "type": "string",
632
+ "description": "Unique code for the location"
633
+ },
634
+ "name": {
635
+ "type": "string",
636
+ "description": "Name of the location"
637
+ },
638
+ "gst": {
639
+ "type": "object",
640
+ "required": [
641
+ "legal_name",
642
+ "value"
643
+ ],
644
+ "properties": {
645
+ "legal_name": {
646
+ "type": "string",
647
+ "description": "Legal name for GST purposes"
648
+ },
649
+ "value": {
650
+ "type": "string",
651
+ "description": "GST value"
652
+ }
653
+ }
654
+ },
655
+ "manager": {
656
+ "type": "object",
657
+ "required": [
658
+ "manager_name",
659
+ "email",
660
+ "number",
661
+ "country_code"
662
+ ],
663
+ "properties": {
664
+ "manager_name": {
665
+ "type": "string",
666
+ "description": "Name of the manager"
667
+ },
668
+ "email": {
669
+ "type": "string",
670
+ "description": "Email of the manager"
671
+ },
672
+ "number": {
673
+ "type": "string",
674
+ "description": "Contact number of the manager"
675
+ },
676
+ "country_code": {
677
+ "type": "string",
678
+ "description": "Country code for the manager's contact number"
679
+ }
680
+ }
681
+ },
682
+ "address": {
683
+ "type": "object",
684
+ "required": [
685
+ "address1",
686
+ "country",
687
+ "pincode",
688
+ "city",
689
+ "state"
690
+ ],
691
+ "properties": {
692
+ "address1": {
693
+ "type": "string",
694
+ "description": "Primary address line"
695
+ },
696
+ "address2": {
697
+ "type": "string",
698
+ "description": "Secondary address line"
699
+ },
700
+ "country": {
701
+ "type": "string",
702
+ "description": "Country of the location"
703
+ },
704
+ "pincode": {
705
+ "type": "string",
706
+ "description": "Postal code of the location"
707
+ },
708
+ "city": {
709
+ "type": "string",
710
+ "description": "City of the location"
711
+ },
712
+ "state": {
713
+ "type": "string",
714
+ "description": "State of the location"
715
+ },
716
+ "latitude": {
717
+ "type": "number",
718
+ "description": "Latitude for the location"
719
+ },
720
+ "longitude": {
721
+ "type": "number",
722
+ "description": "Longitude for the location"
723
+ },
724
+ "landmark": {
725
+ "type": "string",
726
+ "description": "Landmark near the location"
727
+ }
728
+ }
729
+ }
730
+ }
731
+ },
732
+ "Brand": {
733
+ "type": "object",
734
+ "properties": {
735
+ "name": {
736
+ "type": "string"
737
+ },
738
+ "logo": {
739
+ "type": "string"
740
+ },
741
+ "id": {
742
+ "type": "string"
743
+ }
744
+ }
745
+ },
746
+ "BrandCreation": {
747
+ "type": "object",
748
+ "required": [
749
+ "name",
750
+ "logo",
751
+ "description"
752
+ ],
753
+ "properties": {
754
+ "name": {
755
+ "type": "string"
756
+ },
757
+ "logo": {
758
+ "type": "string"
759
+ },
760
+ "description": {
761
+ "type": "string"
762
+ }
763
+ }
764
+ },
765
+ "ErrorResponse": {
766
+ "type": "object",
767
+ "properties": {
768
+ "message": {
769
+ "type": "string",
770
+ "description": "Error message"
771
+ }
772
+ }
773
+ }
774
+ }
775
+ },
776
+ "tags": []
777
+ }
swagger.yaml ADDED
@@ -0,0 +1,508 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ openapi: 3.0.0
2
+ info:
3
+ title: Express API Documentation
4
+ version: 1.0.0
5
+ description: This is the API documentation for my Express application.
6
+ servers:
7
+ - url: https://934a-45-119-30-178.ngrok-free.app
8
+ paths:
9
+ /_healthz:
10
+ get:
11
+ operationId: getHealthZ
12
+ description: Check server health
13
+ responses:
14
+ '200':
15
+ description: Server is healthy
16
+ content:
17
+ text/plain:
18
+ schema:
19
+ type: string
20
+ example: Hello World!
21
+ /company/{companyId}:
22
+ get:
23
+ operationId: getOrVerifyCompanyCredentials
24
+ description: Retrieve company credentials
25
+ tags:
26
+ - Company
27
+ parameters:
28
+ - in: path
29
+ name: companyId
30
+ required: true
31
+ schema:
32
+ type: string
33
+ description: The company ID
34
+ responses:
35
+ '200':
36
+ description: Company credentials retrieved successfully
37
+ content:
38
+ application/json:
39
+ schema:
40
+ $ref: '#/components/schemas/CompanyCreds'
41
+ '404':
42
+ description: Company credentials not found
43
+ content:
44
+ application/json:
45
+ schema:
46
+ $ref: '#/components/schemas/ErrorResponse'
47
+ put:
48
+ operationId: updateCompanyCredentials
49
+ description: Update company credentials
50
+ tags:
51
+ - Company
52
+ parameters:
53
+ - in: path
54
+ name: companyId
55
+ required: true
56
+ schema:
57
+ type: string
58
+ description: The company ID
59
+ requestBody:
60
+ required: true
61
+ content:
62
+ application/json:
63
+ schema:
64
+ $ref: '#/components/schemas/CompanyCreds'
65
+ responses:
66
+ '200':
67
+ description: Company credentials updated successfully
68
+ content:
69
+ application/json:
70
+ schema:
71
+ type: object
72
+ properties:
73
+ message:
74
+ type: string
75
+ '400':
76
+ description: Invalid input
77
+ content:
78
+ application/json:
79
+ schema:
80
+ $ref: '#/components/schemas/ErrorResponse'
81
+ /company/{companyId}/applications:
82
+ get:
83
+ operationId: getSalesChannelByCompany
84
+ description: Retrieve applications for a specific company
85
+ tags:
86
+ - Company
87
+ parameters:
88
+ - in: path
89
+ name: companyId
90
+ required: true
91
+ schema:
92
+ type: string
93
+ description: The ID of the company to retrieve applications for
94
+ responses:
95
+ '200':
96
+ description: List of applications for the specified company
97
+ content:
98
+ application/json:
99
+ schema:
100
+ type: array
101
+ items:
102
+ type: object
103
+ properties:
104
+ name:
105
+ type: string
106
+ description: Name of the application
107
+ id:
108
+ type: string
109
+ description: ID of the application
110
+ token:
111
+ type: string
112
+ description: Token associated with the application
113
+ domain:
114
+ type: string
115
+ description: Primary domain of the application
116
+ logo:
117
+ type: string
118
+ description: Logo URL of the application
119
+ '500':
120
+ description: Server error
121
+ content:
122
+ application/json:
123
+ schema:
124
+ $ref: '#/components/schemas/ErrorResponse'
125
+ /company/{companyId}/brands:
126
+ get:
127
+ summary: Retrieves a list of brands for a specific company
128
+ tags:
129
+ - Brands
130
+ operationId: getCompanyBrands
131
+ description: Fetches a list of brands associated with the given company ID.
132
+ parameters:
133
+ - in: path
134
+ name: companyId
135
+ required: true
136
+ schema:
137
+ type: string
138
+ description: The unique identifier of the company
139
+ responses:
140
+ '200':
141
+ description: A list of brands
142
+ content:
143
+ application/json:
144
+ schema:
145
+ type: array
146
+ items:
147
+ $ref: '#/components/schemas/Brand'
148
+ post:
149
+ summary: Creates a new brand for a specific company
150
+ tags:
151
+ - Brands
152
+ operationId: createCompanyBrand
153
+ description: Adds a new brand to the company profile.
154
+ parameters:
155
+ - in: path
156
+ name: companyId
157
+ required: true
158
+ schema:
159
+ type: string
160
+ description: The unique identifier of the company
161
+ requestBody:
162
+ required: true
163
+ content:
164
+ application/json:
165
+ schema:
166
+ $ref: '#/components/schemas/BrandCreation'
167
+ responses:
168
+ '200':
169
+ description: Brand created successfully
170
+ content:
171
+ application/json:
172
+ schema:
173
+ type: object
174
+ properties:
175
+ message:
176
+ type: string
177
+ id:
178
+ type: string
179
+ /company/{companyId}/brands/{brandId}:
180
+ put:
181
+ summary: Creates a new brand for a specific company
182
+ tags:
183
+ - Brands
184
+ operationId: updateCompanyBrand
185
+ description: updated an existing brand.
186
+ parameters:
187
+ - in: path
188
+ name: companyId
189
+ required: true
190
+ schema:
191
+ type: string
192
+ description: The unique identifier of the company
193
+ - in: path
194
+ name: brandId
195
+ required: true
196
+ schema:
197
+ type: string
198
+ description: The unique identifier of the brand
199
+ requestBody:
200
+ required: true
201
+ content:
202
+ application/json:
203
+ schema:
204
+ $ref: '#/components/schemas/BrandCreation'
205
+ responses:
206
+ '200':
207
+ description: Brand updated successfully
208
+ content:
209
+ application/json:
210
+ schema:
211
+ type: object
212
+ properties:
213
+ message:
214
+ type: string
215
+ id:
216
+ type: string
217
+ /company/{companyId}/locations:
218
+ get:
219
+ operationId: getLocationsByCompany
220
+ description: get all company locations
221
+ tags:
222
+ - Company
223
+ parameters:
224
+ - in: path
225
+ name: companyId
226
+ required: true
227
+ schema:
228
+ type: string
229
+ description: The ID of the company to add a location for
230
+ responses:
231
+ '200':
232
+ description: location list
233
+ content:
234
+ application/json:
235
+ schema:
236
+ type: array
237
+ items:
238
+ properties:
239
+ id:
240
+ type: number
241
+ description: Location id
242
+ code:
243
+ type: string
244
+ description: Location code
245
+ name:
246
+ type: string
247
+ description: Location code
248
+ documents:
249
+ type: array
250
+ description: Location gst documents
251
+ items:
252
+ type: object
253
+ properties:
254
+ type:
255
+ type: string
256
+ description: document type
257
+ value:
258
+ type: string
259
+ description: document number
260
+ verified:
261
+ type: boolean
262
+ description: document number verification status
263
+ legal_name:
264
+ type: boolean
265
+ description: document owner
266
+ '400':
267
+ description: Invalid input
268
+ content:
269
+ application/json:
270
+ schema:
271
+ $ref: '#/components/schemas/ErrorResponse'
272
+ post:
273
+ operationId: createLocationsForCompany
274
+ description: Add a new location for a specific company
275
+ tags:
276
+ - Company
277
+ parameters:
278
+ - in: path
279
+ name: companyId
280
+ required: true
281
+ schema:
282
+ type: string
283
+ description: The ID of the company to add a location for
284
+ requestBody:
285
+ required: true
286
+ content:
287
+ application/json:
288
+ schema:
289
+ $ref: '#/components/schemas/CreateUpdateLocation'
290
+ responses:
291
+ '200':
292
+ description: Location created successfully
293
+ content:
294
+ application/json:
295
+ schema:
296
+ type: object
297
+ properties:
298
+ message:
299
+ type: string
300
+ id:
301
+ type: string
302
+ description: Location id
303
+ '400':
304
+ description: Invalid input
305
+ content:
306
+ application/json:
307
+ schema:
308
+ $ref: '#/components/schemas/ErrorResponse'
309
+ /company/{companyId}/locations/{locationId}:
310
+ put:
311
+ operationId: updateLocationByCompany
312
+ description: update a location for a specific company
313
+ tags:
314
+ - Company
315
+ parameters:
316
+ - in: path
317
+ name: companyId
318
+ required: true
319
+ schema:
320
+ type: string
321
+ description: The ID of the company to add a location for
322
+ - in: path
323
+ name: locationId
324
+ required: true
325
+ schema:
326
+ type: string
327
+ description: The ID of the location to be updated
328
+ requestBody:
329
+ required: true
330
+ content:
331
+ application/json:
332
+ schema:
333
+ $ref: '#/components/schemas/CreateUpdateLocation'
334
+ responses:
335
+ '200':
336
+ description: Location updated successfully
337
+ content:
338
+ application/json:
339
+ schema:
340
+ type: object
341
+ properties:
342
+ message:
343
+ type: string
344
+ id:
345
+ type: string
346
+ description: Location id
347
+ '400':
348
+ description: Invalid input
349
+ content:
350
+ application/json:
351
+ schema:
352
+ $ref: '#/components/schemas/ErrorResponse'
353
+ /company/{companyId}/departments:
354
+ get:
355
+ summary: Retrieve departments for a specific company
356
+ description: Fetches a list of departments associated with the given company ID.
357
+ tags:
358
+ - Company
359
+ operationId: getCompanyDepartments
360
+ parameters:
361
+ - in: path
362
+ name: companyId
363
+ required: true
364
+ schema:
365
+ type: string
366
+ description: The unique identifier of the company
367
+ responses:
368
+ '200':
369
+ description: An array of department objects
370
+ content:
371
+ application/json:
372
+ schema:
373
+ type: array
374
+ items:
375
+ type: object
376
+ properties:
377
+ name:
378
+ type: string
379
+ description: Name of the department
380
+ slug:
381
+ type: string
382
+ description: slug or identifier of the department
383
+ components:
384
+ schemas:
385
+ CompanyCreds:
386
+ type: object
387
+ properties:
388
+ clientId:
389
+ type: string
390
+ description: Client ID for the company
391
+ clientSecret:
392
+ type: string
393
+ description: Client secret for the company
394
+ required:
395
+ - clientId
396
+ - clientSecret
397
+ CreateUpdateLocation:
398
+ type: object
399
+ required:
400
+ - code
401
+ - name
402
+ - gst
403
+ - manager
404
+ - address
405
+ properties:
406
+ code:
407
+ type: string
408
+ description: Unique code for the location
409
+ name:
410
+ type: string
411
+ description: Name of the location
412
+ gst:
413
+ type: object
414
+ required:
415
+ - legal_name
416
+ - value
417
+ properties:
418
+ legal_name:
419
+ type: string
420
+ description: Legal name for GST purposes
421
+ value:
422
+ type: string
423
+ description: GST value
424
+ manager:
425
+ type: object
426
+ required:
427
+ - manager_name
428
+ - email
429
+ - number
430
+ - country_code
431
+ properties:
432
+ manager_name:
433
+ type: string
434
+ description: Name of the manager
435
+ email:
436
+ type: string
437
+ description: Email of the manager
438
+ number:
439
+ type: string
440
+ description: Contact number of the manager
441
+ country_code:
442
+ type: string
443
+ description: Country code for the manager's contact number
444
+ address:
445
+ type: object
446
+ required:
447
+ - address1
448
+ - country
449
+ - pincode
450
+ - city
451
+ - state
452
+ properties:
453
+ address1:
454
+ type: string
455
+ description: Primary address line
456
+ address2:
457
+ type: string
458
+ description: Secondary address line
459
+ country:
460
+ type: string
461
+ description: Country of the location
462
+ pincode:
463
+ type: string
464
+ description: Postal code of the location
465
+ city:
466
+ type: string
467
+ description: City of the location
468
+ state:
469
+ type: string
470
+ description: State of the location
471
+ latitude:
472
+ type: number
473
+ description: Latitude for the location
474
+ longitude:
475
+ type: number
476
+ description: Longitude for the location
477
+ landmark:
478
+ type: string
479
+ description: Landmark near the location
480
+ Brand:
481
+ type: object
482
+ properties:
483
+ name:
484
+ type: string
485
+ logo:
486
+ type: string
487
+ id:
488
+ type: string
489
+ BrandCreation:
490
+ type: object
491
+ required:
492
+ - name
493
+ - logo
494
+ - description
495
+ properties:
496
+ name:
497
+ type: string
498
+ logo:
499
+ type: string
500
+ description:
501
+ type: string
502
+ ErrorResponse:
503
+ type: object
504
+ properties:
505
+ message:
506
+ type: string
507
+ description: Error message
508
+ tags: []
utils.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { PlatformClient, PlatformConfig } from "@gofynd/fdk-client-javascript";
2
+ import Redis from "ioredis"
3
+ const redis = new Redis();
4
+
5
+ export const initClient = async (companyId) => {
6
+ let creds = await redis.get(`${companyId}:creds`);
7
+ if (!creds) throw {
8
+ message: "company creds not found"
9
+ }
10
+ creds = JSON.parse(creds)
11
+
12
+ const config = {
13
+ companyId: parseInt(companyId),
14
+ apiKey: creds.clientId,
15
+ apiSecret: creds.clientSecret,
16
+ useAutoRenewTimer: true,
17
+ // domain: "https://api.fyndx5.de"
18
+ }
19
+ const platformConfig = new PlatformConfig(config)
20
+ let token = await redis.get(`${companyId}:client_token`)
21
+ if (!token) {
22
+ token = await platformConfig.oauthClient.getAccesstokenObj({
23
+ grant_type: 'client_credentials'
24
+ });
25
+ await redis.set(`${companyId}:client_token`, JSON.stringify(token), "EX", 60 * 30);
26
+ } else {
27
+ token = JSON.parse(token)
28
+ }
29
+ platformConfig.oauthClient.setToken(token);
30
+ return new PlatformClient(platformConfig);
31
+ }
yarn.lock ADDED
@@ -0,0 +1,1444 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+ # yarn lockfile v1
3
+
4
+
5
+ "@aashutoshrathi/word-wrap@^1.2.3":
6
+ version "1.2.6"
7
+ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
8
+ integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
9
+
10
+ "@apidevtools/json-schema-ref-parser@^9.0.6":
11
+ version "9.1.2"
12
+ resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz#8ff5386b365d4c9faa7c8b566ff16a46a577d9b8"
13
+ integrity sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==
14
+ dependencies:
15
+ "@jsdevtools/ono" "^7.1.3"
16
+ "@types/json-schema" "^7.0.6"
17
+ call-me-maybe "^1.0.1"
18
+ js-yaml "^4.1.0"
19
+
20
+ "@apidevtools/openapi-schemas@^2.0.4":
21
+ version "2.1.0"
22
+ resolved "https://registry.yarnpkg.com/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz#9fa08017fb59d80538812f03fc7cac5992caaa17"
23
+ integrity sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==
24
+
25
+ "@apidevtools/swagger-methods@^3.0.2":
26
+ version "3.0.2"
27
+ resolved "https://registry.yarnpkg.com/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz#b789a362e055b0340d04712eafe7027ddc1ac267"
28
+ integrity sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==
29
+
30
+ "@apidevtools/swagger-parser@10.0.3":
31
+ version "10.0.3"
32
+ resolved "https://registry.yarnpkg.com/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz#32057ae99487872c4dd96b314a1ab4b95d89eaf5"
33
+ integrity sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==
34
+ dependencies:
35
+ "@apidevtools/json-schema-ref-parser" "^9.0.6"
36
+ "@apidevtools/openapi-schemas" "^2.0.4"
37
+ "@apidevtools/swagger-methods" "^3.0.2"
38
+ "@jsdevtools/ono" "^7.1.3"
39
+ call-me-maybe "^1.0.1"
40
+ z-schema "^5.0.1"
41
+
42
+ "@eslint-community/eslint-utils@^4.2.0":
43
+ version "4.4.0"
44
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
45
+ integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
46
+ dependencies:
47
+ eslint-visitor-keys "^3.3.0"
48
+
49
+ "@eslint-community/regexpp@^4.6.1":
50
+ version "4.10.0"
51
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63"
52
+ integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
53
+
54
+ "@eslint/eslintrc@^2.1.4":
55
+ version "2.1.4"
56
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
57
+ integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
58
+ dependencies:
59
+ ajv "^6.12.4"
60
+ debug "^4.3.2"
61
+ espree "^9.6.0"
62
+ globals "^13.19.0"
63
+ ignore "^5.2.0"
64
+ import-fresh "^3.2.1"
65
+ js-yaml "^4.1.0"
66
+ minimatch "^3.1.2"
67
+ strip-json-comments "^3.1.1"
68
+
69
+ "@eslint/js@8.55.0":
70
+ version "8.55.0"
71
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.55.0.tgz#b721d52060f369aa259cf97392403cb9ce892ec6"
72
+ integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==
73
+
74
+ "@gofynd/fdk-client-javascript@^1.3.10-beta.1":
75
+ version "1.3.10-beta.1"
76
+ resolved "https://registry.yarnpkg.com/@gofynd/fdk-client-javascript/-/fdk-client-javascript-1.3.10-beta.1.tgz#085e37eae774f50593b574128ed7e1448655ce24"
77
+ integrity sha512-rAFoyfGqJVnS+0WxrfmuHItlqCj3tDo8a5txi9hg8vp0CpE4dziAECFuq1p7Zum7zqTz8rAFH1qcUflMBsDCiA==
78
+ dependencies:
79
+ "@gofynd/fp-signature" "^1.0.0"
80
+ axios "^0.27.2"
81
+ camelcase "^6.3.0"
82
+ joi "^17.7.0"
83
+ loglevel "^1.8.1"
84
+ query-string "^7.1.3"
85
+
86
+ "@gofynd/fp-signature@^1.0.0":
87
+ version "1.0.0"
88
+ resolved "https://registry.yarnpkg.com/@gofynd/fp-signature/-/fp-signature-1.0.0.tgz#15c06cb47c673d7df53df945b03d4f6182db3348"
89
+ integrity sha512-aGKV4GNh4mRh3ypcFQnT1QiHHJpIT9J4KPD0uP13a6pdkKUukhKO3gNZe0PZwUUBkdK1jV9MuMA7HjmR5y/wGA==
90
+ dependencies:
91
+ crypto-js "^4.1.1"
92
+
93
+ "@hapi/hoek@^9.0.0":
94
+ version "9.3.0"
95
+ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb"
96
+ integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==
97
+
98
+ "@hapi/topo@^5.0.0":
99
+ version "5.1.0"
100
+ resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012"
101
+ integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==
102
+ dependencies:
103
+ "@hapi/hoek" "^9.0.0"
104
+
105
+ "@humanwhocodes/config-array@^0.11.13":
106
+ version "0.11.13"
107
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297"
108
+ integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==
109
+ dependencies:
110
+ "@humanwhocodes/object-schema" "^2.0.1"
111
+ debug "^4.1.1"
112
+ minimatch "^3.0.5"
113
+
114
+ "@humanwhocodes/module-importer@^1.0.1":
115
+ version "1.0.1"
116
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
117
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
118
+
119
+ "@humanwhocodes/object-schema@^2.0.1":
120
+ version "2.0.1"
121
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044"
122
+ integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==
123
+
124
+ "@ioredis/commands@^1.1.1":
125
+ version "1.2.0"
126
+ resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.2.0.tgz#6d61b3097470af1fdbbe622795b8921d42018e11"
127
+ integrity sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==
128
+
129
+ "@jsdevtools/ono@^7.1.3":
130
+ version "7.1.3"
131
+ resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796"
132
+ integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==
133
+
134
+ "@nodelib/fs.scandir@2.1.5":
135
+ version "2.1.5"
136
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
137
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
138
+ dependencies:
139
+ "@nodelib/fs.stat" "2.0.5"
140
+ run-parallel "^1.1.9"
141
+
142
+ "@nodelib/fs.stat@2.0.5":
143
+ version "2.0.5"
144
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
145
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
146
+
147
+ "@nodelib/fs.walk@^1.2.8":
148
+ version "1.2.8"
149
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
150
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
151
+ dependencies:
152
+ "@nodelib/fs.scandir" "2.1.5"
153
+ fastq "^1.6.0"
154
+
155
+ "@sideway/address@^4.1.3":
156
+ version "4.1.4"
157
+ resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0"
158
+ integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==
159
+ dependencies:
160
+ "@hapi/hoek" "^9.0.0"
161
+
162
+ "@sideway/formula@^3.0.1":
163
+ version "3.0.1"
164
+ resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f"
165
+ integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==
166
+
167
+ "@sideway/pinpoint@^2.0.0":
168
+ version "2.0.0"
169
+ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df"
170
+ integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
171
+
172
+ "@types/json-schema@^7.0.6":
173
+ version "7.0.15"
174
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
175
+ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
176
+
177
+ "@ungap/structured-clone@^1.2.0":
178
+ version "1.2.0"
179
+ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
180
+ integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
181
+
182
+ accepts@~1.3.8:
183
+ version "1.3.8"
184
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
185
+ integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
186
+ dependencies:
187
+ mime-types "~2.1.34"
188
+ negotiator "0.6.3"
189
+
190
+ acorn-jsx@^5.3.2:
191
+ version "5.3.2"
192
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
193
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
194
+
195
+ acorn@^8.9.0:
196
+ version "8.11.2"
197
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b"
198
+ integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
199
+
200
+ ajv@^6.12.4:
201
+ version "6.12.6"
202
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
203
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
204
+ dependencies:
205
+ fast-deep-equal "^3.1.1"
206
+ fast-json-stable-stringify "^2.0.0"
207
+ json-schema-traverse "^0.4.1"
208
+ uri-js "^4.2.2"
209
+
210
+ ansi-regex@^5.0.1:
211
+ version "5.0.1"
212
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
213
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
214
+
215
+ ansi-styles@^4.1.0:
216
+ version "4.3.0"
217
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
218
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
219
+ dependencies:
220
+ color-convert "^2.0.1"
221
+
222
+ argparse@^2.0.1:
223
+ version "2.0.1"
224
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
225
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
226
+
227
+ array-flatten@1.1.1:
228
+ version "1.1.1"
229
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
230
+ integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
231
+
232
+ asynckit@^0.4.0:
233
+ version "0.4.0"
234
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
235
+ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
236
+
237
+ axios@^0.27.2:
238
+ version "0.27.2"
239
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
240
+ integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==
241
+ dependencies:
242
+ follow-redirects "^1.14.9"
243
+ form-data "^4.0.0"
244
+
245
+ balanced-match@^1.0.0:
246
+ version "1.0.2"
247
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
248
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
249
+
250
+ body-parser@1.20.1:
251
+ version "1.20.1"
252
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
253
+ integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
254
+ dependencies:
255
+ bytes "3.1.2"
256
+ content-type "~1.0.4"
257
+ debug "2.6.9"
258
+ depd "2.0.0"
259
+ destroy "1.2.0"
260
+ http-errors "2.0.0"
261
+ iconv-lite "0.4.24"
262
+ on-finished "2.4.1"
263
+ qs "6.11.0"
264
+ raw-body "2.5.1"
265
+ type-is "~1.6.18"
266
+ unpipe "1.0.0"
267
+
268
+ brace-expansion@^1.1.7:
269
+ version "1.1.11"
270
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
271
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
272
+ dependencies:
273
+ balanced-match "^1.0.0"
274
+ concat-map "0.0.1"
275
+
276
+ bytes@3.1.2:
277
+ version "3.1.2"
278
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
279
+ integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
280
+
281
+ call-bind@^1.0.0:
282
+ version "1.0.5"
283
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513"
284
+ integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==
285
+ dependencies:
286
+ function-bind "^1.1.2"
287
+ get-intrinsic "^1.2.1"
288
+ set-function-length "^1.1.1"
289
+
290
+ call-me-maybe@^1.0.1:
291
+ version "1.0.2"
292
+ resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa"
293
+ integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==
294
+
295
+ callsites@^3.0.0:
296
+ version "3.1.0"
297
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
298
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
299
+
300
+ camelcase@^6.3.0:
301
+ version "6.3.0"
302
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
303
+ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
304
+
305
+ chalk@^4.0.0:
306
+ version "4.1.2"
307
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
308
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
309
+ dependencies:
310
+ ansi-styles "^4.1.0"
311
+ supports-color "^7.1.0"
312
+
313
+ cluster-key-slot@^1.1.0:
314
+ version "1.1.2"
315
+ resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac"
316
+ integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==
317
+
318
+ color-convert@^2.0.1:
319
+ version "2.0.1"
320
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
321
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
322
+ dependencies:
323
+ color-name "~1.1.4"
324
+
325
+ color-name@~1.1.4:
326
+ version "1.1.4"
327
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
328
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
329
+
330
+ combined-stream@^1.0.8:
331
+ version "1.0.8"
332
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
333
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
334
+ dependencies:
335
+ delayed-stream "~1.0.0"
336
+
337
+ commander@6.2.0:
338
+ version "6.2.0"
339
+ resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75"
340
+ integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==
341
+
342
+ commander@^10.0.0:
343
+ version "10.0.1"
344
+ resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
345
+ integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
346
+
347
+ concat-map@0.0.1:
348
+ version "0.0.1"
349
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
350
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
351
+
352
+ content-disposition@0.5.4:
353
+ version "0.5.4"
354
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
355
+ integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
356
+ dependencies:
357
+ safe-buffer "5.2.1"
358
+
359
+ content-type@~1.0.4:
360
+ version "1.0.5"
361
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
362
+ integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
363
+
364
+ convict@^6.2.4:
365
+ version "6.2.4"
366
+ resolved "https://registry.yarnpkg.com/convict/-/convict-6.2.4.tgz#be290672bf6397eec808d3b11fc5f71785b02a4b"
367
+ integrity sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==
368
+ dependencies:
369
+ lodash.clonedeep "^4.5.0"
370
+ yargs-parser "^20.2.7"
371
+
372
+ cookie-signature@1.0.6:
373
+ version "1.0.6"
374
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
375
+ integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
376
+
377
+ cookie@0.5.0:
378
+ version "0.5.0"
379
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
380
+ integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
381
+
382
+ cross-spawn@^7.0.2:
383
+ version "7.0.3"
384
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
385
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
386
+ dependencies:
387
+ path-key "^3.1.0"
388
+ shebang-command "^2.0.0"
389
+ which "^2.0.1"
390
+
391
+ crypto-js@^4.1.1:
392
+ version "4.2.0"
393
+ resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631"
394
+ integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==
395
+
396
+ debug@2.6.9:
397
+ version "2.6.9"
398
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
399
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
400
+ dependencies:
401
+ ms "2.0.0"
402
+
403
+ debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
404
+ version "4.3.4"
405
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
406
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
407
+ dependencies:
408
+ ms "2.1.2"
409
+
410
+ decode-uri-component@^0.2.2:
411
+ version "0.2.2"
412
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
413
+ integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
414
+
415
+ deep-is@^0.1.3:
416
+ version "0.1.4"
417
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
418
+ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
419
+
420
+ define-data-property@^1.1.1:
421
+ version "1.1.1"
422
+ resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3"
423
+ integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==
424
+ dependencies:
425
+ get-intrinsic "^1.2.1"
426
+ gopd "^1.0.1"
427
+ has-property-descriptors "^1.0.0"
428
+
429
+ delayed-stream@~1.0.0:
430
+ version "1.0.0"
431
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
432
+ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
433
+
434
+ denque@^2.1.0:
435
+ version "2.1.0"
436
+ resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1"
437
+ integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==
438
+
439
+ depd@2.0.0:
440
+ version "2.0.0"
441
+ resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
442
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
443
+
444
+ destroy@1.2.0:
445
+ version "1.2.0"
446
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
447
+ integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
448
+
449
+ doctrine@3.0.0, doctrine@^3.0.0:
450
+ version "3.0.0"
451
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
452
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
453
+ dependencies:
454
+ esutils "^2.0.2"
455
+
456
+ ee-first@1.1.1:
457
+ version "1.1.1"
458
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
459
+ integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
460
+
461
+ encodeurl@~1.0.2:
462
+ version "1.0.2"
463
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
464
+ integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
465
+
466
+ escape-html@~1.0.3:
467
+ version "1.0.3"
468
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
469
+ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
470
+
471
+ escape-string-regexp@^4.0.0:
472
+ version "4.0.0"
473
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
474
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
475
+
476
+ eslint-scope@^7.2.2:
477
+ version "7.2.2"
478
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
479
+ integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
480
+ dependencies:
481
+ esrecurse "^4.3.0"
482
+ estraverse "^5.2.0"
483
+
484
+ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
485
+ version "3.4.3"
486
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
487
+ integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
488
+
489
+ eslint@^8.55.0:
490
+ version "8.55.0"
491
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.55.0.tgz#078cb7b847d66f2c254ea1794fa395bf8e7e03f8"
492
+ integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==
493
+ dependencies:
494
+ "@eslint-community/eslint-utils" "^4.2.0"
495
+ "@eslint-community/regexpp" "^4.6.1"
496
+ "@eslint/eslintrc" "^2.1.4"
497
+ "@eslint/js" "8.55.0"
498
+ "@humanwhocodes/config-array" "^0.11.13"
499
+ "@humanwhocodes/module-importer" "^1.0.1"
500
+ "@nodelib/fs.walk" "^1.2.8"
501
+ "@ungap/structured-clone" "^1.2.0"
502
+ ajv "^6.12.4"
503
+ chalk "^4.0.0"
504
+ cross-spawn "^7.0.2"
505
+ debug "^4.3.2"
506
+ doctrine "^3.0.0"
507
+ escape-string-regexp "^4.0.0"
508
+ eslint-scope "^7.2.2"
509
+ eslint-visitor-keys "^3.4.3"
510
+ espree "^9.6.1"
511
+ esquery "^1.4.2"
512
+ esutils "^2.0.2"
513
+ fast-deep-equal "^3.1.3"
514
+ file-entry-cache "^6.0.1"
515
+ find-up "^5.0.0"
516
+ glob-parent "^6.0.2"
517
+ globals "^13.19.0"
518
+ graphemer "^1.4.0"
519
+ ignore "^5.2.0"
520
+ imurmurhash "^0.1.4"
521
+ is-glob "^4.0.0"
522
+ is-path-inside "^3.0.3"
523
+ js-yaml "^4.1.0"
524
+ json-stable-stringify-without-jsonify "^1.0.1"
525
+ levn "^0.4.1"
526
+ lodash.merge "^4.6.2"
527
+ minimatch "^3.1.2"
528
+ natural-compare "^1.4.0"
529
+ optionator "^0.9.3"
530
+ strip-ansi "^6.0.1"
531
+ text-table "^0.2.0"
532
+
533
+ espree@^9.6.0, espree@^9.6.1:
534
+ version "9.6.1"
535
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
536
+ integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
537
+ dependencies:
538
+ acorn "^8.9.0"
539
+ acorn-jsx "^5.3.2"
540
+ eslint-visitor-keys "^3.4.1"
541
+
542
+ esquery@^1.4.2:
543
+ version "1.5.0"
544
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
545
+ integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
546
+ dependencies:
547
+ estraverse "^5.1.0"
548
+
549
+ esrecurse@^4.3.0:
550
+ version "4.3.0"
551
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
552
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
553
+ dependencies:
554
+ estraverse "^5.2.0"
555
+
556
+ estraverse@^5.1.0, estraverse@^5.2.0:
557
+ version "5.3.0"
558
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
559
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
560
+
561
+ esutils@^2.0.2:
562
+ version "2.0.3"
563
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
564
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
565
+
566
+ etag@~1.8.1:
567
+ version "1.8.1"
568
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
569
+ integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
570
+
571
+ express@^4.18.2:
572
+ version "4.18.2"
573
+ resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
574
+ integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
575
+ dependencies:
576
+ accepts "~1.3.8"
577
+ array-flatten "1.1.1"
578
+ body-parser "1.20.1"
579
+ content-disposition "0.5.4"
580
+ content-type "~1.0.4"
581
+ cookie "0.5.0"
582
+ cookie-signature "1.0.6"
583
+ debug "2.6.9"
584
+ depd "2.0.0"
585
+ encodeurl "~1.0.2"
586
+ escape-html "~1.0.3"
587
+ etag "~1.8.1"
588
+ finalhandler "1.2.0"
589
+ fresh "0.5.2"
590
+ http-errors "2.0.0"
591
+ merge-descriptors "1.0.1"
592
+ methods "~1.1.2"
593
+ on-finished "2.4.1"
594
+ parseurl "~1.3.3"
595
+ path-to-regexp "0.1.7"
596
+ proxy-addr "~2.0.7"
597
+ qs "6.11.0"
598
+ range-parser "~1.2.1"
599
+ safe-buffer "5.2.1"
600
+ send "0.18.0"
601
+ serve-static "1.15.0"
602
+ setprototypeof "1.2.0"
603
+ statuses "2.0.1"
604
+ type-is "~1.6.18"
605
+ utils-merge "1.0.1"
606
+ vary "~1.1.2"
607
+
608
+ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
609
+ version "3.1.3"
610
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
611
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
612
+
613
+ fast-json-stable-stringify@^2.0.0:
614
+ version "2.1.0"
615
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
616
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
617
+
618
+ fast-levenshtein@^2.0.6:
619
+ version "2.0.6"
620
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
621
+ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
622
+
623
+ fastq@^1.6.0:
624
+ version "1.15.0"
625
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
626
+ integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
627
+ dependencies:
628
+ reusify "^1.0.4"
629
+
630
+ file-entry-cache@^6.0.1:
631
+ version "6.0.1"
632
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
633
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
634
+ dependencies:
635
+ flat-cache "^3.0.4"
636
+
637
+ filter-obj@^1.1.0:
638
+ version "1.1.0"
639
+ resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
640
+ integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==
641
+
642
+ finalhandler@1.2.0:
643
+ version "1.2.0"
644
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
645
+ integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
646
+ dependencies:
647
+ debug "2.6.9"
648
+ encodeurl "~1.0.2"
649
+ escape-html "~1.0.3"
650
+ on-finished "2.4.1"
651
+ parseurl "~1.3.3"
652
+ statuses "2.0.1"
653
+ unpipe "~1.0.0"
654
+
655
+ find-up@^5.0.0:
656
+ version "5.0.0"
657
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
658
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
659
+ dependencies:
660
+ locate-path "^6.0.0"
661
+ path-exists "^4.0.0"
662
+
663
+ flat-cache@^3.0.4:
664
+ version "3.2.0"
665
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
666
+ integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
667
+ dependencies:
668
+ flatted "^3.2.9"
669
+ keyv "^4.5.3"
670
+ rimraf "^3.0.2"
671
+
672
+ flatted@^3.2.9:
673
+ version "3.2.9"
674
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf"
675
+ integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==
676
+
677
+ follow-redirects@^1.14.9:
678
+ version "1.15.3"
679
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a"
680
+ integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==
681
+
682
+ form-data@^4.0.0:
683
+ version "4.0.0"
684
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
685
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
686
+ dependencies:
687
+ asynckit "^0.4.0"
688
+ combined-stream "^1.0.8"
689
+ mime-types "^2.1.12"
690
+
691
+ forwarded@0.2.0:
692
+ version "0.2.0"
693
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
694
+ integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
695
+
696
+ fresh@0.5.2:
697
+ version "0.5.2"
698
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
699
+ integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
700
+
701
+ fs.realpath@^1.0.0:
702
+ version "1.0.0"
703
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
704
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
705
+
706
+ function-bind@^1.1.2:
707
+ version "1.1.2"
708
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
709
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
710
+
711
+ get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2:
712
+ version "1.2.2"
713
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b"
714
+ integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==
715
+ dependencies:
716
+ function-bind "^1.1.2"
717
+ has-proto "^1.0.1"
718
+ has-symbols "^1.0.3"
719
+ hasown "^2.0.0"
720
+
721
+ glob-parent@^6.0.2:
722
+ version "6.0.2"
723
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
724
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
725
+ dependencies:
726
+ is-glob "^4.0.3"
727
+
728
+ glob@7.1.6:
729
+ version "7.1.6"
730
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
731
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
732
+ dependencies:
733
+ fs.realpath "^1.0.0"
734
+ inflight "^1.0.4"
735
+ inherits "2"
736
+ minimatch "^3.0.4"
737
+ once "^1.3.0"
738
+ path-is-absolute "^1.0.0"
739
+
740
+ glob@^7.1.3:
741
+ version "7.2.3"
742
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
743
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
744
+ dependencies:
745
+ fs.realpath "^1.0.0"
746
+ inflight "^1.0.4"
747
+ inherits "2"
748
+ minimatch "^3.1.1"
749
+ once "^1.3.0"
750
+ path-is-absolute "^1.0.0"
751
+
752
+ globals@^13.19.0:
753
+ version "13.23.0"
754
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02"
755
+ integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==
756
+ dependencies:
757
+ type-fest "^0.20.2"
758
+
759
+ gopd@^1.0.1:
760
+ version "1.0.1"
761
+ resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
762
+ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
763
+ dependencies:
764
+ get-intrinsic "^1.1.3"
765
+
766
+ graphemer@^1.4.0:
767
+ version "1.4.0"
768
+ resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
769
+ integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
770
+
771
+ has-flag@^4.0.0:
772
+ version "4.0.0"
773
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
774
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
775
+
776
+ has-property-descriptors@^1.0.0:
777
+ version "1.0.1"
778
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340"
779
+ integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==
780
+ dependencies:
781
+ get-intrinsic "^1.2.2"
782
+
783
+ has-proto@^1.0.1:
784
+ version "1.0.1"
785
+ resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
786
+ integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
787
+
788
+ has-symbols@^1.0.3:
789
+ version "1.0.3"
790
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
791
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
792
+
793
+ hasown@^2.0.0:
794
+ version "2.0.0"
795
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
796
+ integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
797
+ dependencies:
798
+ function-bind "^1.1.2"
799
+
800
+ http-errors@2.0.0:
801
+ version "2.0.0"
802
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
803
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
804
+ dependencies:
805
+ depd "2.0.0"
806
+ inherits "2.0.4"
807
+ setprototypeof "1.2.0"
808
+ statuses "2.0.1"
809
+ toidentifier "1.0.1"
810
+
811
+ iconv-lite@0.4.24:
812
+ version "0.4.24"
813
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
814
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
815
+ dependencies:
816
+ safer-buffer ">= 2.1.2 < 3"
817
+
818
+ ignore@^5.2.0:
819
+ version "5.3.0"
820
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78"
821
+ integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==
822
+
823
+ import-fresh@^3.2.1:
824
+ version "3.3.0"
825
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
826
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
827
+ dependencies:
828
+ parent-module "^1.0.0"
829
+ resolve-from "^4.0.0"
830
+
831
+ imurmurhash@^0.1.4:
832
+ version "0.1.4"
833
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
834
+ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
835
+
836
+ inflight@^1.0.4:
837
+ version "1.0.6"
838
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
839
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
840
+ dependencies:
841
+ once "^1.3.0"
842
+ wrappy "1"
843
+
844
+ inherits@2, inherits@2.0.4:
845
+ version "2.0.4"
846
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
847
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
848
+
849
+ ioredis@^5.3.2:
850
+ version "5.3.2"
851
+ resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.3.2.tgz#9139f596f62fc9c72d873353ac5395bcf05709f7"
852
+ integrity sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==
853
+ dependencies:
854
+ "@ioredis/commands" "^1.1.1"
855
+ cluster-key-slot "^1.1.0"
856
+ debug "^4.3.4"
857
+ denque "^2.1.0"
858
+ lodash.defaults "^4.2.0"
859
+ lodash.isarguments "^3.1.0"
860
+ redis-errors "^1.2.0"
861
+ redis-parser "^3.0.0"
862
+ standard-as-callback "^2.1.0"
863
+
864
+ ipaddr.js@1.9.1:
865
+ version "1.9.1"
866
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
867
+ integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
868
+
869
+ is-extglob@^2.1.1:
870
+ version "2.1.1"
871
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
872
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
873
+
874
+ is-glob@^4.0.0, is-glob@^4.0.3:
875
+ version "4.0.3"
876
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
877
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
878
+ dependencies:
879
+ is-extglob "^2.1.1"
880
+
881
+ is-path-inside@^3.0.3:
882
+ version "3.0.3"
883
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
884
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
885
+
886
+ isexe@^2.0.0:
887
+ version "2.0.0"
888
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
889
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
890
+
891
+ joi@^17.7.0:
892
+ version "17.11.0"
893
+ resolved "https://registry.yarnpkg.com/joi/-/joi-17.11.0.tgz#aa9da753578ec7720e6f0ca2c7046996ed04fc1a"
894
+ integrity sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==
895
+ dependencies:
896
+ "@hapi/hoek" "^9.0.0"
897
+ "@hapi/topo" "^5.0.0"
898
+ "@sideway/address" "^4.1.3"
899
+ "@sideway/formula" "^3.0.1"
900
+ "@sideway/pinpoint" "^2.0.0"
901
+
902
+ js-yaml@^4.1.0:
903
+ version "4.1.0"
904
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
905
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
906
+ dependencies:
907
+ argparse "^2.0.1"
908
+
909
+ json-buffer@3.0.1:
910
+ version "3.0.1"
911
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
912
+ integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
913
+
914
+ json-schema-traverse@^0.4.1:
915
+ version "0.4.1"
916
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
917
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
918
+
919
+ json-stable-stringify-without-jsonify@^1.0.1:
920
+ version "1.0.1"
921
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
922
+ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
923
+
924
+ keyv@^4.5.3:
925
+ version "4.5.4"
926
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
927
+ integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
928
+ dependencies:
929
+ json-buffer "3.0.1"
930
+
931
+ levn@^0.4.1:
932
+ version "0.4.1"
933
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
934
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
935
+ dependencies:
936
+ prelude-ls "^1.2.1"
937
+ type-check "~0.4.0"
938
+
939
+ locate-path@^6.0.0:
940
+ version "6.0.0"
941
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
942
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
943
+ dependencies:
944
+ p-locate "^5.0.0"
945
+
946
+ lodash.clonedeep@^4.5.0:
947
+ version "4.5.0"
948
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
949
+ integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
950
+
951
+ lodash.defaults@^4.2.0:
952
+ version "4.2.0"
953
+ resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
954
+ integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==
955
+
956
+ lodash.get@^4.4.2:
957
+ version "4.4.2"
958
+ resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
959
+ integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==
960
+
961
+ lodash.isarguments@^3.1.0:
962
+ version "3.1.0"
963
+ resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
964
+ integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==
965
+
966
+ lodash.isequal@^4.5.0:
967
+ version "4.5.0"
968
+ resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
969
+ integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
970
+
971
+ lodash.merge@^4.6.2:
972
+ version "4.6.2"
973
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
974
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
975
+
976
+ lodash.mergewith@^4.6.2:
977
+ version "4.6.2"
978
+ resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55"
979
+ integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==
980
+
981
+ loglevel@^1.8.1:
982
+ version "1.8.1"
983
+ resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.1.tgz#5c621f83d5b48c54ae93b6156353f555963377b4"
984
+ integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==
985
+
986
+ media-typer@0.3.0:
987
+ version "0.3.0"
988
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
989
+ integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
990
+
991
+ merge-descriptors@1.0.1:
992
+ version "1.0.1"
993
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
994
+ integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
995
+
996
+ methods@~1.1.2:
997
+ version "1.1.2"
998
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
999
+ integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
1000
+
1001
+ mime-db@1.52.0:
1002
+ version "1.52.0"
1003
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
1004
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
1005
+
1006
+ mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34:
1007
+ version "2.1.35"
1008
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
1009
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
1010
+ dependencies:
1011
+ mime-db "1.52.0"
1012
+
1013
+ mime@1.6.0:
1014
+ version "1.6.0"
1015
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
1016
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
1017
+
1018
+ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
1019
+ version "3.1.2"
1020
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
1021
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
1022
+ dependencies:
1023
+ brace-expansion "^1.1.7"
1024
+
1025
+ ms@2.0.0:
1026
+ version "2.0.0"
1027
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1028
+ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
1029
+
1030
+ ms@2.1.2:
1031
+ version "2.1.2"
1032
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1033
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1034
+
1035
+ ms@2.1.3:
1036
+ version "2.1.3"
1037
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1038
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1039
+
1040
+ natural-compare@^1.4.0:
1041
+ version "1.4.0"
1042
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1043
+ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
1044
+
1045
+ negotiator@0.6.3:
1046
+ version "0.6.3"
1047
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
1048
+ integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
1049
+
1050
+ object-inspect@^1.9.0:
1051
+ version "1.13.1"
1052
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
1053
+ integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
1054
+
1055
+ on-finished@2.4.1:
1056
+ version "2.4.1"
1057
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
1058
+ integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
1059
+ dependencies:
1060
+ ee-first "1.1.1"
1061
+
1062
+ once@^1.3.0:
1063
+ version "1.4.0"
1064
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1065
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
1066
+ dependencies:
1067
+ wrappy "1"
1068
+
1069
+ optionator@^0.9.3:
1070
+ version "0.9.3"
1071
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64"
1072
+ integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
1073
+ dependencies:
1074
+ "@aashutoshrathi/word-wrap" "^1.2.3"
1075
+ deep-is "^0.1.3"
1076
+ fast-levenshtein "^2.0.6"
1077
+ levn "^0.4.1"
1078
+ prelude-ls "^1.2.1"
1079
+ type-check "^0.4.0"
1080
+
1081
+ p-limit@^3.0.2:
1082
+ version "3.1.0"
1083
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1084
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1085
+ dependencies:
1086
+ yocto-queue "^0.1.0"
1087
+
1088
+ p-locate@^5.0.0:
1089
+ version "5.0.0"
1090
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
1091
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
1092
+ dependencies:
1093
+ p-limit "^3.0.2"
1094
+
1095
+ parent-module@^1.0.0:
1096
+ version "1.0.1"
1097
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
1098
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1099
+ dependencies:
1100
+ callsites "^3.0.0"
1101
+
1102
+ parseurl@~1.3.3:
1103
+ version "1.3.3"
1104
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
1105
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
1106
+
1107
+ path-exists@^4.0.0:
1108
+ version "4.0.0"
1109
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1110
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1111
+
1112
+ path-is-absolute@^1.0.0:
1113
+ version "1.0.1"
1114
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1115
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
1116
+
1117
+ path-key@^3.1.0:
1118
+ version "3.1.1"
1119
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1120
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1121
+
1122
+ path-to-regexp@0.1.7:
1123
+ version "0.1.7"
1124
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
1125
+ integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
1126
+
1127
+ prelude-ls@^1.2.1:
1128
+ version "1.2.1"
1129
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
1130
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
1131
+
1132
+ proxy-addr@~2.0.7:
1133
+ version "2.0.7"
1134
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
1135
+ integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
1136
+ dependencies:
1137
+ forwarded "0.2.0"
1138
+ ipaddr.js "1.9.1"
1139
+
1140
+ punycode@^2.1.0:
1141
+ version "2.3.1"
1142
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
1143
+ integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
1144
+
1145
+ qs@6.11.0:
1146
+ version "6.11.0"
1147
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
1148
+ integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
1149
+ dependencies:
1150
+ side-channel "^1.0.4"
1151
+
1152
+ query-string@^7.1.3:
1153
+ version "7.1.3"
1154
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328"
1155
+ integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==
1156
+ dependencies:
1157
+ decode-uri-component "^0.2.2"
1158
+ filter-obj "^1.1.0"
1159
+ split-on-first "^1.0.0"
1160
+ strict-uri-encode "^2.0.0"
1161
+
1162
+ queue-microtask@^1.2.2:
1163
+ version "1.2.3"
1164
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
1165
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
1166
+
1167
+ range-parser@~1.2.1:
1168
+ version "1.2.1"
1169
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
1170
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
1171
+
1172
+ raw-body@2.5.1:
1173
+ version "2.5.1"
1174
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
1175
+ integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
1176
+ dependencies:
1177
+ bytes "3.1.2"
1178
+ http-errors "2.0.0"
1179
+ iconv-lite "0.4.24"
1180
+ unpipe "1.0.0"
1181
+
1182
+ redis-errors@^1.0.0, redis-errors@^1.2.0:
1183
+ version "1.2.0"
1184
+ resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
1185
+ integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==
1186
+
1187
+ redis-parser@^3.0.0:
1188
+ version "3.0.0"
1189
+ resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4"
1190
+ integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==
1191
+ dependencies:
1192
+ redis-errors "^1.0.0"
1193
+
1194
+ resolve-from@^4.0.0:
1195
+ version "4.0.0"
1196
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
1197
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
1198
+
1199
+ reusify@^1.0.4:
1200
+ version "1.0.4"
1201
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
1202
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
1203
+
1204
+ rimraf@^3.0.2:
1205
+ version "3.0.2"
1206
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
1207
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
1208
+ dependencies:
1209
+ glob "^7.1.3"
1210
+
1211
+ run-parallel@^1.1.9:
1212
+ version "1.2.0"
1213
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
1214
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
1215
+ dependencies:
1216
+ queue-microtask "^1.2.2"
1217
+
1218
+ safe-buffer@5.2.1:
1219
+ version "5.2.1"
1220
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1221
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1222
+
1223
+ "safer-buffer@>= 2.1.2 < 3":
1224
+ version "2.1.2"
1225
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
1226
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
1227
+
1228
+ send@0.18.0:
1229
+ version "0.18.0"
1230
+ resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
1231
+ integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
1232
+ dependencies:
1233
+ debug "2.6.9"
1234
+ depd "2.0.0"
1235
+ destroy "1.2.0"
1236
+ encodeurl "~1.0.2"
1237
+ escape-html "~1.0.3"
1238
+ etag "~1.8.1"
1239
+ fresh "0.5.2"
1240
+ http-errors "2.0.0"
1241
+ mime "1.6.0"
1242
+ ms "2.1.3"
1243
+ on-finished "2.4.1"
1244
+ range-parser "~1.2.1"
1245
+ statuses "2.0.1"
1246
+
1247
+ serve-static@1.15.0:
1248
+ version "1.15.0"
1249
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
1250
+ integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
1251
+ dependencies:
1252
+ encodeurl "~1.0.2"
1253
+ escape-html "~1.0.3"
1254
+ parseurl "~1.3.3"
1255
+ send "0.18.0"
1256
+
1257
+ set-function-length@^1.1.1:
1258
+ version "1.1.1"
1259
+ resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed"
1260
+ integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==
1261
+ dependencies:
1262
+ define-data-property "^1.1.1"
1263
+ get-intrinsic "^1.2.1"
1264
+ gopd "^1.0.1"
1265
+ has-property-descriptors "^1.0.0"
1266
+
1267
+ setprototypeof@1.2.0:
1268
+ version "1.2.0"
1269
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
1270
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
1271
+
1272
+ shebang-command@^2.0.0:
1273
+ version "2.0.0"
1274
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
1275
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
1276
+ dependencies:
1277
+ shebang-regex "^3.0.0"
1278
+
1279
+ shebang-regex@^3.0.0:
1280
+ version "3.0.0"
1281
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
1282
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
1283
+
1284
+ side-channel@^1.0.4:
1285
+ version "1.0.4"
1286
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
1287
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
1288
+ dependencies:
1289
+ call-bind "^1.0.0"
1290
+ get-intrinsic "^1.0.2"
1291
+ object-inspect "^1.9.0"
1292
+
1293
+ split-on-first@^1.0.0:
1294
+ version "1.1.0"
1295
+ resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
1296
+ integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
1297
+
1298
+ standard-as-callback@^2.1.0:
1299
+ version "2.1.0"
1300
+ resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45"
1301
+ integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==
1302
+
1303
+ statuses@2.0.1:
1304
+ version "2.0.1"
1305
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
1306
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
1307
+
1308
+ strict-uri-encode@^2.0.0:
1309
+ version "2.0.0"
1310
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
1311
+ integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==
1312
+
1313
+ strip-ansi@^6.0.1:
1314
+ version "6.0.1"
1315
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
1316
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
1317
+ dependencies:
1318
+ ansi-regex "^5.0.1"
1319
+
1320
+ strip-json-comments@^3.1.1:
1321
+ version "3.1.1"
1322
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
1323
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
1324
+
1325
+ supports-color@^7.1.0:
1326
+ version "7.2.0"
1327
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
1328
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1329
+ dependencies:
1330
+ has-flag "^4.0.0"
1331
+
1332
+ swagger-jsdoc@^6.2.8:
1333
+ version "6.2.8"
1334
+ resolved "https://registry.yarnpkg.com/swagger-jsdoc/-/swagger-jsdoc-6.2.8.tgz#6d33d9fb07ff4a7c1564379c52c08989ec7d0256"
1335
+ integrity sha512-VPvil1+JRpmJ55CgAtn8DIcpBs0bL5L3q5bVQvF4tAW/k/9JYSj7dCpaYCAv5rufe0vcCbBRQXGvzpkWjvLklQ==
1336
+ dependencies:
1337
+ commander "6.2.0"
1338
+ doctrine "3.0.0"
1339
+ glob "7.1.6"
1340
+ lodash.mergewith "^4.6.2"
1341
+ swagger-parser "^10.0.3"
1342
+ yaml "2.0.0-1"
1343
+
1344
+ swagger-parser@^10.0.3:
1345
+ version "10.0.3"
1346
+ resolved "https://registry.yarnpkg.com/swagger-parser/-/swagger-parser-10.0.3.tgz#04cb01c18c3ac192b41161c77f81e79309135d03"
1347
+ integrity sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==
1348
+ dependencies:
1349
+ "@apidevtools/swagger-parser" "10.0.3"
1350
+
1351
+ text-table@^0.2.0:
1352
+ version "0.2.0"
1353
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
1354
+ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
1355
+
1356
+ toidentifier@1.0.1:
1357
+ version "1.0.1"
1358
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
1359
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
1360
+
1361
+ type-check@^0.4.0, type-check@~0.4.0:
1362
+ version "0.4.0"
1363
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
1364
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
1365
+ dependencies:
1366
+ prelude-ls "^1.2.1"
1367
+
1368
+ type-fest@^0.20.2:
1369
+ version "0.20.2"
1370
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
1371
+ integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
1372
+
1373
+ type-is@~1.6.18:
1374
+ version "1.6.18"
1375
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
1376
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
1377
+ dependencies:
1378
+ media-typer "0.3.0"
1379
+ mime-types "~2.1.24"
1380
+
1381
+ unpipe@1.0.0, unpipe@~1.0.0:
1382
+ version "1.0.0"
1383
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
1384
+ integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
1385
+
1386
+ uri-js@^4.2.2:
1387
+ version "4.4.1"
1388
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
1389
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
1390
+ dependencies:
1391
+ punycode "^2.1.0"
1392
+
1393
+ utils-merge@1.0.1:
1394
+ version "1.0.1"
1395
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
1396
+ integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
1397
+
1398
+ validator@^13.7.0:
1399
+ version "13.11.0"
1400
+ resolved "https://registry.yarnpkg.com/validator/-/validator-13.11.0.tgz#23ab3fd59290c61248364eabf4067f04955fbb1b"
1401
+ integrity sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==
1402
+
1403
+ vary@~1.1.2:
1404
+ version "1.1.2"
1405
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
1406
+ integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
1407
+
1408
+ which@^2.0.1:
1409
+ version "2.0.2"
1410
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
1411
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
1412
+ dependencies:
1413
+ isexe "^2.0.0"
1414
+
1415
+ wrappy@1:
1416
+ version "1.0.2"
1417
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1418
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
1419
+
1420
+ yaml@2.0.0-1:
1421
+ version "2.0.0-1"
1422
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.0.0-1.tgz#8c3029b3ee2028306d5bcf396980623115ff8d18"
1423
+ integrity sha512-W7h5dEhywMKenDJh2iX/LABkbFnBxasD27oyXWDS/feDsxiw0dD5ncXdYXgkvAsXIY2MpW/ZKkr9IU30DBdMNQ==
1424
+
1425
+ yargs-parser@^20.2.7:
1426
+ version "20.2.9"
1427
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
1428
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
1429
+
1430
+ yocto-queue@^0.1.0:
1431
+ version "0.1.0"
1432
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
1433
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
1434
+
1435
+ z-schema@^5.0.1:
1436
+ version "5.0.6"
1437
+ resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-5.0.6.tgz#46d6a687b15e4a4369e18d6cb1c7b8618fc256c5"
1438
+ integrity sha512-+XR1GhnWklYdfr8YaZv/iu+vY+ux7V5DS5zH1DQf6bO5ufrt/5cgNhVO5qyhsjFXvsqQb/f08DWE9b6uPscyAg==
1439
+ dependencies:
1440
+ lodash.get "^4.4.2"
1441
+ lodash.isequal "^4.5.0"
1442
+ validator "^13.7.0"
1443
+ optionalDependencies:
1444
+ commander "^10.0.0"