@cuboapp/api-backend 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package-lock.json +512 -0
- package/package.json +7 -10
- package/src/constants/index.ts +73 -2
- package/src/helpers/convert.ts +24 -49
- package/src/helpers/data.ts +3 -4
- package/src/helpers/index.ts +189 -47
- package/src/helpers/withes.ts +3 -3
- package/src/index.ts +45 -103
- package/src/types/basic.ts +1 -1
- package/src/types/db.ts +3 -1
- package/pnpm-lock.yaml +0 -378
- package/src/constants/backend.ts +0 -74
- package/src/constants/base.ts +0 -11
- package/src/helpers/entities.ts +0 -30
- package/src/helpers/query.ts +0 -157
- package/src/helpers/users.ts +0 -37
- package/src/utils/index.ts +0 -128
package/src/index.ts
CHANGED
|
@@ -1,70 +1,57 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { QueryTypes } from 'sequelize'
|
|
1
|
+
import { Database, Options, QueryTypes } from '@cuboapp/database'
|
|
2
|
+
import { CuboApiEntitiesMap, CuboEntity } from '@cuboapp/types'
|
|
4
3
|
|
|
5
4
|
import { ApiHelpers } from './helpers'
|
|
6
5
|
import { CuboCrudAugmentationsStore, CuboCrudGetManyResponse, CuboCrudMethodOptions, CuboCrudRequest } from './types'
|
|
7
|
-
import { dbPrepareInsertQueryString, dbPrepareUpdateQueryString } from './utils'
|
|
8
6
|
|
|
9
7
|
export * from './types'
|
|
10
8
|
export * from './utils'
|
|
11
9
|
|
|
12
|
-
export type CuboBackendApiOptions<T
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
public augmentations: Partial<CuboCrudAugmentationsStore<T>> = {}
|
|
18
|
-
public options: CuboBackendApiOptions<T> = {}
|
|
10
|
+
export type CuboBackendApiOptions<T extends CuboApiEntitiesMap<T>> = {
|
|
11
|
+
api: {
|
|
12
|
+
base_url: string
|
|
13
|
+
token: string
|
|
14
|
+
}
|
|
19
15
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
db: {
|
|
17
|
+
connection?: Database
|
|
18
|
+
options?: Options
|
|
23
19
|
}
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
subdomain: '',
|
|
30
|
-
domain: '',
|
|
31
|
-
location: '',
|
|
32
|
-
language: '',
|
|
33
|
-
favicon: undefined
|
|
21
|
+
entities: CuboEntity[]
|
|
22
|
+
|
|
23
|
+
auth?: {
|
|
24
|
+
base_url?: string
|
|
34
25
|
}
|
|
35
26
|
|
|
36
|
-
|
|
27
|
+
augmentations?: Partial<CuboCrudAugmentationsStore<T>>
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
31
|
+
constructor(public options: CuboBackendApiOptions<T>) {}
|
|
32
|
+
|
|
37
33
|
public helpers = new ApiHelpers<T>(this)
|
|
38
34
|
|
|
39
35
|
async init() {
|
|
40
|
-
const auth = await this.authRequest
|
|
36
|
+
const auth = await this.authRequest('/me')
|
|
41
37
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (!this.account) {
|
|
46
|
-
throw new Error('Account not found')
|
|
38
|
+
if (!auth) {
|
|
39
|
+
throw { code: 403, text: 'Авторизация Cubo-Backend не пройдена' }
|
|
47
40
|
}
|
|
48
41
|
}
|
|
49
42
|
|
|
50
43
|
async apiRequest<T>(url: string, opts?: RequestInit) {
|
|
51
|
-
|
|
52
|
-
const rootDomain = this.config.api?.rootDomain || 'cuboapp.ru'
|
|
53
|
-
const baseUrl = `https://${subdomain}.${rootDomain}`
|
|
54
|
-
|
|
55
|
-
return this.request<T>(baseUrl, url, opts)
|
|
44
|
+
return this.request<T>(`https://${this.options.api.base_url}`, url, opts)
|
|
56
45
|
}
|
|
57
46
|
|
|
58
47
|
async authRequest<T>(url: string, opts?: RequestInit) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return this.request<T>(baseUrl, url, opts)
|
|
48
|
+
return this.request<T>(this.options?.auth?.base_url || 'https://auth.cubo.sh', url, opts)
|
|
62
49
|
}
|
|
63
50
|
|
|
64
51
|
private async request<T>(baseUrl: string, url: string, opts?: RequestInit & { withoutContentType?: boolean }) {
|
|
65
52
|
const headers: Record<string, any> = {
|
|
66
53
|
...(opts?.headers || {}),
|
|
67
|
-
Authorization: this.
|
|
54
|
+
Authorization: this.options.api.token || ''
|
|
68
55
|
}
|
|
69
56
|
|
|
70
57
|
if (!headers['Content-Type'] && !opts?.withoutContentType) {
|
|
@@ -103,7 +90,7 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
103
90
|
}
|
|
104
91
|
|
|
105
92
|
private async getEntity(entityAlias: Extract<keyof T, string>) {
|
|
106
|
-
const entity = await this.helpers.
|
|
93
|
+
const entity = await this.helpers.getEntityByAlias(entityAlias)
|
|
107
94
|
if (!entity) {
|
|
108
95
|
throw new Error('Entity no found: "' + String(entityAlias) + '"')
|
|
109
96
|
}
|
|
@@ -119,7 +106,7 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
119
106
|
opts = opts || {}
|
|
120
107
|
req = req || {}
|
|
121
108
|
const entity = await this.getEntity(entityAlias)
|
|
122
|
-
const augmentation = this.augmentations?.[entityAlias]
|
|
109
|
+
const augmentation = this.options?.augmentations?.[entityAlias]
|
|
123
110
|
|
|
124
111
|
if (augmentation?.beforeGetMany) {
|
|
125
112
|
opts.queryOptions = await augmentation.beforeGetMany(req, opts)
|
|
@@ -130,8 +117,8 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
130
117
|
queryDto.withDeleted = opts.queryOptions?.withDeleted
|
|
131
118
|
|
|
132
119
|
// create find query
|
|
133
|
-
const regularQuery = await this.helpers.
|
|
134
|
-
const countQuery = await this.helpers.
|
|
120
|
+
const regularQuery = await this.helpers.createFindQuery(req, entity, queryDto)
|
|
121
|
+
const countQuery = await this.helpers.createFindQuery(req, entity, queryDto, true)
|
|
135
122
|
|
|
136
123
|
const db = await this.helpers.getConnection('read')
|
|
137
124
|
|
|
@@ -139,12 +126,12 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
139
126
|
console.log(`QUERY:getMany to "${String(entityAlias)}":`, regularQuery.sql, regularQuery.replacements, { req, opts, queryDto })
|
|
140
127
|
}
|
|
141
128
|
|
|
142
|
-
const rows = await db.query<any>(regularQuery.sql!, {
|
|
129
|
+
const rows = await db.connection.query<any>(regularQuery.sql!, {
|
|
143
130
|
type: QueryTypes.SELECT,
|
|
144
131
|
replacements: regularQuery.replacements,
|
|
145
132
|
transaction: opts?.transaction
|
|
146
133
|
})
|
|
147
|
-
const [totals] = await db.query<any>(countQuery.sql!, {
|
|
134
|
+
const [totals] = await db.connection.query<any>(countQuery.sql!, {
|
|
148
135
|
type: QueryTypes.SELECT,
|
|
149
136
|
replacements: countQuery.replacements,
|
|
150
137
|
transaction: opts?.transaction
|
|
@@ -172,7 +159,7 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
172
159
|
opts = opts || {}
|
|
173
160
|
|
|
174
161
|
const entity = await this.getEntity(entityAlias)
|
|
175
|
-
const augmentation = this.augmentations?.[entityAlias]
|
|
162
|
+
const augmentation = this.options?.augmentations?.[entityAlias]
|
|
176
163
|
if (augmentation?.beforeGetOne) {
|
|
177
164
|
opts.queryOptions = await augmentation.beforeGetOne(req, opts)
|
|
178
165
|
}
|
|
@@ -182,11 +169,11 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
182
169
|
queryDto.withDeleted = opts.queryOptions?.withDeleted
|
|
183
170
|
queryDto.limit = 1
|
|
184
171
|
|
|
185
|
-
const query = await this.helpers.
|
|
172
|
+
const query = await this.helpers.createFindQuery(req, entity, queryDto)
|
|
186
173
|
|
|
187
174
|
const db = await this.helpers.getConnection('read')
|
|
188
175
|
|
|
189
|
-
const [row] = await db.query<any>(query.sql!, {
|
|
176
|
+
const [row] = await db.connection.query<any>(query.sql!, {
|
|
190
177
|
type: QueryTypes.SELECT,
|
|
191
178
|
replacements: query.replacements,
|
|
192
179
|
transaction: opts?.transaction
|
|
@@ -216,8 +203,8 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
216
203
|
opts?: CuboCrudMethodOptions
|
|
217
204
|
): Promise<T[K]> {
|
|
218
205
|
opts = opts || {}
|
|
219
|
-
const entity = await this.helpers.
|
|
220
|
-
const augmentation = this.augmentations?.[entityAlias]
|
|
206
|
+
const entity = await this.helpers.getEntityByAlias(entityAlias)
|
|
207
|
+
const augmentation = this.options?.augmentations?.[entityAlias]
|
|
221
208
|
|
|
222
209
|
if (augmentation?.beforeCreate) {
|
|
223
210
|
opts.queryOptions = await augmentation.beforeCreate(req, opts)
|
|
@@ -228,24 +215,9 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
228
215
|
throw { status: 400, text: 'No keys to update' }
|
|
229
216
|
}
|
|
230
217
|
|
|
231
|
-
const prepared = dbPrepareInsertQueryString(dto)
|
|
218
|
+
// const prepared = dbPrepareInsertQueryString(dto)
|
|
232
219
|
const db = await this.helpers.getConnection('write')
|
|
233
|
-
|
|
234
|
-
const sql = `
|
|
235
|
-
insert into ${entity!.alias} (${prepared.keys})
|
|
236
|
-
values (${prepared.values})
|
|
237
|
-
returning id
|
|
238
|
-
`
|
|
239
|
-
|
|
240
|
-
const created_id = await db
|
|
241
|
-
.query(sql, {
|
|
242
|
-
type: QueryTypes.INSERT,
|
|
243
|
-
replacements: prepared.replacements || {},
|
|
244
|
-
transaction: opts?.transaction
|
|
245
|
-
})
|
|
246
|
-
.then((res: any) => {
|
|
247
|
-
return +res?.[0]?.[0]?.id
|
|
248
|
-
})
|
|
220
|
+
const [created_id] = await db.create(entity.alias, dto, { transaction: opts?.transaction, log: opts?.log })
|
|
249
221
|
|
|
250
222
|
if (!created_id) {
|
|
251
223
|
throw { status: 400, text: 'Unable to create entity' }
|
|
@@ -270,8 +242,8 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
270
242
|
opts?: CuboCrudMethodOptions
|
|
271
243
|
): Promise<T[K] | undefined> {
|
|
272
244
|
opts = opts || {}
|
|
273
|
-
const entity = await this.helpers.
|
|
274
|
-
const augmentation = this.augmentations?.[entityAlias]
|
|
245
|
+
const entity = await this.helpers.getEntityByAlias(entityAlias)
|
|
246
|
+
const augmentation = this.options?.augmentations?.[entityAlias]
|
|
275
247
|
|
|
276
248
|
if (augmentation?.beforeUpdate && !opts?.excludeHooks?.includes('beforeUpdate')) {
|
|
277
249
|
opts.queryOptions = await augmentation.beforeUpdate(req, opts)
|
|
@@ -288,24 +260,8 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
288
260
|
throw { status: 400, text: 'No keys to update' }
|
|
289
261
|
}
|
|
290
262
|
|
|
291
|
-
// console.log(dto)
|
|
292
|
-
|
|
293
|
-
const prepared = dbPrepareUpdateQueryString(dto)
|
|
294
263
|
const db = await this.helpers.getConnection('write')
|
|
295
|
-
|
|
296
|
-
const sql = `
|
|
297
|
-
update ${entity!.alias}
|
|
298
|
-
set ${prepared.query}
|
|
299
|
-
where id = ${item.id}
|
|
300
|
-
`
|
|
301
|
-
|
|
302
|
-
await db.query(sql, {
|
|
303
|
-
type: QueryTypes.UPDATE,
|
|
304
|
-
replacements: {
|
|
305
|
-
...(prepared.replacements || {})
|
|
306
|
-
},
|
|
307
|
-
transaction: opts?.transaction
|
|
308
|
-
})
|
|
264
|
+
await db.update(entity.alias, 'id = :id', { id: item.id }, dto, { transaction: opts?.transaction, log: opts?.log })
|
|
309
265
|
|
|
310
266
|
const response = await this.getOne<K>(entityAlias, req, opts)
|
|
311
267
|
if (!response) {
|
|
@@ -325,8 +281,8 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
325
281
|
opts?: CuboCrudMethodOptions
|
|
326
282
|
): Promise<boolean> {
|
|
327
283
|
opts = opts || {}
|
|
328
|
-
const entity = await this.helpers.
|
|
329
|
-
const augmentation = this.augmentations?.[entityAlias]
|
|
284
|
+
const entity = await this.helpers.getEntityByAlias(entityAlias)
|
|
285
|
+
const augmentation = this.options?.augmentations?.[entityAlias]
|
|
330
286
|
|
|
331
287
|
if (augmentation?.beforeDelete) {
|
|
332
288
|
opts.queryOptions = await augmentation.beforeDelete(req, opts)
|
|
@@ -342,22 +298,8 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
342
298
|
throw { status: 400, text: 'No keys to update' }
|
|
343
299
|
}
|
|
344
300
|
|
|
345
|
-
// console.log(dto)
|
|
346
|
-
|
|
347
|
-
const prepared = dbPrepareUpdateQueryString(dto)
|
|
348
301
|
const db = await this.helpers.getConnection('write')
|
|
349
|
-
|
|
350
|
-
const sql = `
|
|
351
|
-
update ${entity!.alias}
|
|
352
|
-
set ${prepared.query}
|
|
353
|
-
where id = ${item.id}
|
|
354
|
-
`
|
|
355
|
-
|
|
356
|
-
await db.query(sql, {
|
|
357
|
-
type: QueryTypes.UPDATE,
|
|
358
|
-
replacements: prepared.replacements || {},
|
|
359
|
-
transaction: opts?.transaction
|
|
360
|
-
})
|
|
302
|
+
await db.update(entity.alias, 'id = :id', { id: item.id }, dto, { transaction: opts?.transaction, log: opts?.log })
|
|
361
303
|
|
|
362
304
|
if (augmentation?.afterDelete && !opts?.excludeHooks?.includes('afterDelete')) {
|
|
363
305
|
return augmentation.afterDelete(item, req, opts)
|
package/src/types/basic.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { type Transaction } from '@cuboapp/database'
|
|
1
2
|
import { CuboEntity, CuboEntityField } from '@cuboapp/types'
|
|
2
|
-
import { type Transaction } from 'sequelize'
|
|
3
3
|
|
|
4
4
|
export type CuboCrudWith = {
|
|
5
5
|
entity: CuboEntity | { id: undefined; alias: string; fields: CuboEntityField[] }
|
package/src/types/db.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Transaction } from '
|
|
1
|
+
import { type Transaction } from '@cuboapp/database'
|
|
2
2
|
|
|
3
3
|
export type CuboCrudQueryOptions = {
|
|
4
4
|
selects?: string[]
|
|
@@ -33,3 +33,5 @@ export type CuboCrudMethodOptions<E extends object = {}> = {
|
|
|
33
33
|
|
|
34
34
|
queryOptions?: CuboCrudQueryOptions
|
|
35
35
|
} & E
|
|
36
|
+
|
|
37
|
+
export type CuboBackendApiDbConnectionType = 'read' | 'write'
|
package/pnpm-lock.yaml
DELETED
|
@@ -1,378 +0,0 @@
|
|
|
1
|
-
lockfileVersion: '9.0'
|
|
2
|
-
|
|
3
|
-
settings:
|
|
4
|
-
autoInstallPeers: true
|
|
5
|
-
excludeLinksFromLockfile: false
|
|
6
|
-
|
|
7
|
-
importers:
|
|
8
|
-
|
|
9
|
-
.:
|
|
10
|
-
dependencies:
|
|
11
|
-
'@cuboapp/config':
|
|
12
|
-
specifier: ^0.0.9
|
|
13
|
-
version: 0.0.9
|
|
14
|
-
'@cuboapp/types':
|
|
15
|
-
specifier: ^1.0.21
|
|
16
|
-
version: 1.0.21
|
|
17
|
-
lodash-es:
|
|
18
|
-
specifier: ^4.17.21
|
|
19
|
-
version: 4.17.21
|
|
20
|
-
pg:
|
|
21
|
-
specifier: ^8.13.3
|
|
22
|
-
version: 8.13.3
|
|
23
|
-
sequelize:
|
|
24
|
-
specifier: ^6.37.6
|
|
25
|
-
version: 6.37.6(pg@8.13.3)
|
|
26
|
-
devDependencies:
|
|
27
|
-
'@types/lodash-es':
|
|
28
|
-
specifier: ^4.17.12
|
|
29
|
-
version: 4.17.12
|
|
30
|
-
'@types/node':
|
|
31
|
-
specifier: ^22.0.0
|
|
32
|
-
version: 22.13.9
|
|
33
|
-
typescript:
|
|
34
|
-
specifier: ^5.8.2
|
|
35
|
-
version: 5.8.2
|
|
36
|
-
|
|
37
|
-
packages:
|
|
38
|
-
|
|
39
|
-
'@cuboapp/config@0.0.9':
|
|
40
|
-
resolution: {integrity: sha512-xkCZFOGTO6E8FhowmebthZ50deslWyak6HxhSPGUqktRazMa/6DVyZnTFQBs4Xt271GBXoRekXy8xNGVJnzCrg==}
|
|
41
|
-
|
|
42
|
-
'@cuboapp/types@1.0.21':
|
|
43
|
-
resolution: {integrity: sha512-DIxfZRAEVX+PupP86Lii6lQXZ+CC6MWDxNUOO1FSWfJVqphXtvW52DFguhd9tu+TN50sHYS/BcjMLD1nJXw4KQ==}
|
|
44
|
-
|
|
45
|
-
'@types/debug@4.1.12':
|
|
46
|
-
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
|
|
47
|
-
|
|
48
|
-
'@types/events@3.0.3':
|
|
49
|
-
resolution: {integrity: sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==}
|
|
50
|
-
|
|
51
|
-
'@types/lodash-es@4.17.12':
|
|
52
|
-
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
|
|
53
|
-
|
|
54
|
-
'@types/lodash@4.17.16':
|
|
55
|
-
resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==}
|
|
56
|
-
|
|
57
|
-
'@types/ms@2.1.0':
|
|
58
|
-
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
|
|
59
|
-
|
|
60
|
-
'@types/node@22.13.9':
|
|
61
|
-
resolution: {integrity: sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==}
|
|
62
|
-
|
|
63
|
-
'@types/validator@13.12.2':
|
|
64
|
-
resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==}
|
|
65
|
-
|
|
66
|
-
debug@4.4.0:
|
|
67
|
-
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
|
|
68
|
-
engines: {node: '>=6.0'}
|
|
69
|
-
peerDependencies:
|
|
70
|
-
supports-color: '*'
|
|
71
|
-
peerDependenciesMeta:
|
|
72
|
-
supports-color:
|
|
73
|
-
optional: true
|
|
74
|
-
|
|
75
|
-
dotenv-expand@12.0.1:
|
|
76
|
-
resolution: {integrity: sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==}
|
|
77
|
-
engines: {node: '>=12'}
|
|
78
|
-
|
|
79
|
-
dotenv@16.4.7:
|
|
80
|
-
resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==}
|
|
81
|
-
engines: {node: '>=12'}
|
|
82
|
-
|
|
83
|
-
dottie@2.0.6:
|
|
84
|
-
resolution: {integrity: sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==}
|
|
85
|
-
|
|
86
|
-
inflection@1.13.4:
|
|
87
|
-
resolution: {integrity: sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==}
|
|
88
|
-
engines: {'0': node >= 0.4.0}
|
|
89
|
-
|
|
90
|
-
lodash-es@4.17.21:
|
|
91
|
-
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
|
|
92
|
-
|
|
93
|
-
lodash@4.17.21:
|
|
94
|
-
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
|
95
|
-
|
|
96
|
-
moment-timezone@0.5.47:
|
|
97
|
-
resolution: {integrity: sha512-UbNt/JAWS0m/NJOebR0QMRHBk0hu03r5dx9GK8Cs0AS3I81yDcOc9k+DytPItgVvBP7J6Mf6U2n3BPAacAV9oA==}
|
|
98
|
-
|
|
99
|
-
moment@2.30.1:
|
|
100
|
-
resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
|
|
101
|
-
|
|
102
|
-
ms@2.1.3:
|
|
103
|
-
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
|
104
|
-
|
|
105
|
-
pg-cloudflare@1.1.1:
|
|
106
|
-
resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==}
|
|
107
|
-
|
|
108
|
-
pg-connection-string@2.7.0:
|
|
109
|
-
resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==}
|
|
110
|
-
|
|
111
|
-
pg-int8@1.0.1:
|
|
112
|
-
resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
|
|
113
|
-
engines: {node: '>=4.0.0'}
|
|
114
|
-
|
|
115
|
-
pg-pool@3.7.1:
|
|
116
|
-
resolution: {integrity: sha512-xIOsFoh7Vdhojas6q3596mXFsR8nwBQBXX5JiV7p9buEVAGqYL4yFzclON5P9vFrpu1u7Zwl2oriyDa89n0wbw==}
|
|
117
|
-
peerDependencies:
|
|
118
|
-
pg: '>=8.0'
|
|
119
|
-
|
|
120
|
-
pg-protocol@1.7.1:
|
|
121
|
-
resolution: {integrity: sha512-gjTHWGYWsEgy9MsY0Gp6ZJxV24IjDqdpTW7Eh0x+WfJLFsm/TJx1MzL6T0D88mBvkpxotCQ6TwW6N+Kko7lhgQ==}
|
|
122
|
-
|
|
123
|
-
pg-types@2.2.0:
|
|
124
|
-
resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
|
|
125
|
-
engines: {node: '>=4'}
|
|
126
|
-
|
|
127
|
-
pg@8.13.3:
|
|
128
|
-
resolution: {integrity: sha512-P6tPt9jXbL9HVu/SSRERNYaYG++MjnscnegFh9pPHihfoBSujsrka0hyuymMzeJKFWrcG8wvCKy8rCe8e5nDUQ==}
|
|
129
|
-
engines: {node: '>= 8.0.0'}
|
|
130
|
-
peerDependencies:
|
|
131
|
-
pg-native: '>=3.0.1'
|
|
132
|
-
peerDependenciesMeta:
|
|
133
|
-
pg-native:
|
|
134
|
-
optional: true
|
|
135
|
-
|
|
136
|
-
pgpass@1.0.5:
|
|
137
|
-
resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==}
|
|
138
|
-
|
|
139
|
-
postgres-array@2.0.0:
|
|
140
|
-
resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
|
|
141
|
-
engines: {node: '>=4'}
|
|
142
|
-
|
|
143
|
-
postgres-bytea@1.0.0:
|
|
144
|
-
resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==}
|
|
145
|
-
engines: {node: '>=0.10.0'}
|
|
146
|
-
|
|
147
|
-
postgres-date@1.0.7:
|
|
148
|
-
resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==}
|
|
149
|
-
engines: {node: '>=0.10.0'}
|
|
150
|
-
|
|
151
|
-
postgres-interval@1.2.0:
|
|
152
|
-
resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
|
|
153
|
-
engines: {node: '>=0.10.0'}
|
|
154
|
-
|
|
155
|
-
retry-as-promised@7.1.1:
|
|
156
|
-
resolution: {integrity: sha512-hMD7odLOt3LkTjcif8aRZqi/hybjpLNgSk5oF5FCowfCjok6LukpN2bDX7R5wDmbgBQFn7YoBxSagmtXHaJYJw==}
|
|
157
|
-
|
|
158
|
-
semver@7.7.1:
|
|
159
|
-
resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
|
|
160
|
-
engines: {node: '>=10'}
|
|
161
|
-
hasBin: true
|
|
162
|
-
|
|
163
|
-
sequelize-pool@7.1.0:
|
|
164
|
-
resolution: {integrity: sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==}
|
|
165
|
-
engines: {node: '>= 10.0.0'}
|
|
166
|
-
|
|
167
|
-
sequelize@6.37.6:
|
|
168
|
-
resolution: {integrity: sha512-4Slqjqpktofs7AVqWviFOInzP9w8ZRQDhF+DnRtm4WKIdIATpyzGgedyseP3xbgpBxapvfQcJv6CeIdZe4ZL2A==}
|
|
169
|
-
engines: {node: '>=10.0.0'}
|
|
170
|
-
peerDependencies:
|
|
171
|
-
ibm_db: '*'
|
|
172
|
-
mariadb: '*'
|
|
173
|
-
mysql2: '*'
|
|
174
|
-
oracledb: '*'
|
|
175
|
-
pg: '*'
|
|
176
|
-
pg-hstore: '*'
|
|
177
|
-
snowflake-sdk: '*'
|
|
178
|
-
sqlite3: '*'
|
|
179
|
-
tedious: '*'
|
|
180
|
-
peerDependenciesMeta:
|
|
181
|
-
ibm_db:
|
|
182
|
-
optional: true
|
|
183
|
-
mariadb:
|
|
184
|
-
optional: true
|
|
185
|
-
mysql2:
|
|
186
|
-
optional: true
|
|
187
|
-
oracledb:
|
|
188
|
-
optional: true
|
|
189
|
-
pg:
|
|
190
|
-
optional: true
|
|
191
|
-
pg-hstore:
|
|
192
|
-
optional: true
|
|
193
|
-
snowflake-sdk:
|
|
194
|
-
optional: true
|
|
195
|
-
sqlite3:
|
|
196
|
-
optional: true
|
|
197
|
-
tedious:
|
|
198
|
-
optional: true
|
|
199
|
-
|
|
200
|
-
split2@4.2.0:
|
|
201
|
-
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
|
|
202
|
-
engines: {node: '>= 10.x'}
|
|
203
|
-
|
|
204
|
-
toposort-class@1.0.1:
|
|
205
|
-
resolution: {integrity: sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==}
|
|
206
|
-
|
|
207
|
-
typescript@5.8.2:
|
|
208
|
-
resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
|
|
209
|
-
engines: {node: '>=14.17'}
|
|
210
|
-
hasBin: true
|
|
211
|
-
|
|
212
|
-
undici-types@6.20.0:
|
|
213
|
-
resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
|
|
214
|
-
|
|
215
|
-
uuid@8.3.2:
|
|
216
|
-
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
|
|
217
|
-
hasBin: true
|
|
218
|
-
|
|
219
|
-
validator@13.12.0:
|
|
220
|
-
resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==}
|
|
221
|
-
engines: {node: '>= 0.10'}
|
|
222
|
-
|
|
223
|
-
wkx@0.5.0:
|
|
224
|
-
resolution: {integrity: sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==}
|
|
225
|
-
|
|
226
|
-
xtend@4.0.2:
|
|
227
|
-
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
|
|
228
|
-
engines: {node: '>=0.4'}
|
|
229
|
-
|
|
230
|
-
snapshots:
|
|
231
|
-
|
|
232
|
-
'@cuboapp/config@0.0.9':
|
|
233
|
-
dependencies:
|
|
234
|
-
'@cuboapp/types': 1.0.21
|
|
235
|
-
dotenv: 16.4.7
|
|
236
|
-
dotenv-expand: 12.0.1
|
|
237
|
-
|
|
238
|
-
'@cuboapp/types@1.0.21':
|
|
239
|
-
dependencies:
|
|
240
|
-
'@types/events': 3.0.3
|
|
241
|
-
|
|
242
|
-
'@types/debug@4.1.12':
|
|
243
|
-
dependencies:
|
|
244
|
-
'@types/ms': 2.1.0
|
|
245
|
-
|
|
246
|
-
'@types/events@3.0.3': {}
|
|
247
|
-
|
|
248
|
-
'@types/lodash-es@4.17.12':
|
|
249
|
-
dependencies:
|
|
250
|
-
'@types/lodash': 4.17.16
|
|
251
|
-
|
|
252
|
-
'@types/lodash@4.17.16': {}
|
|
253
|
-
|
|
254
|
-
'@types/ms@2.1.0': {}
|
|
255
|
-
|
|
256
|
-
'@types/node@22.13.9':
|
|
257
|
-
dependencies:
|
|
258
|
-
undici-types: 6.20.0
|
|
259
|
-
|
|
260
|
-
'@types/validator@13.12.2': {}
|
|
261
|
-
|
|
262
|
-
debug@4.4.0:
|
|
263
|
-
dependencies:
|
|
264
|
-
ms: 2.1.3
|
|
265
|
-
|
|
266
|
-
dotenv-expand@12.0.1:
|
|
267
|
-
dependencies:
|
|
268
|
-
dotenv: 16.4.7
|
|
269
|
-
|
|
270
|
-
dotenv@16.4.7: {}
|
|
271
|
-
|
|
272
|
-
dottie@2.0.6: {}
|
|
273
|
-
|
|
274
|
-
inflection@1.13.4: {}
|
|
275
|
-
|
|
276
|
-
lodash-es@4.17.21: {}
|
|
277
|
-
|
|
278
|
-
lodash@4.17.21: {}
|
|
279
|
-
|
|
280
|
-
moment-timezone@0.5.47:
|
|
281
|
-
dependencies:
|
|
282
|
-
moment: 2.30.1
|
|
283
|
-
|
|
284
|
-
moment@2.30.1: {}
|
|
285
|
-
|
|
286
|
-
ms@2.1.3: {}
|
|
287
|
-
|
|
288
|
-
pg-cloudflare@1.1.1:
|
|
289
|
-
optional: true
|
|
290
|
-
|
|
291
|
-
pg-connection-string@2.7.0: {}
|
|
292
|
-
|
|
293
|
-
pg-int8@1.0.1: {}
|
|
294
|
-
|
|
295
|
-
pg-pool@3.7.1(pg@8.13.3):
|
|
296
|
-
dependencies:
|
|
297
|
-
pg: 8.13.3
|
|
298
|
-
|
|
299
|
-
pg-protocol@1.7.1: {}
|
|
300
|
-
|
|
301
|
-
pg-types@2.2.0:
|
|
302
|
-
dependencies:
|
|
303
|
-
pg-int8: 1.0.1
|
|
304
|
-
postgres-array: 2.0.0
|
|
305
|
-
postgres-bytea: 1.0.0
|
|
306
|
-
postgres-date: 1.0.7
|
|
307
|
-
postgres-interval: 1.2.0
|
|
308
|
-
|
|
309
|
-
pg@8.13.3:
|
|
310
|
-
dependencies:
|
|
311
|
-
pg-connection-string: 2.7.0
|
|
312
|
-
pg-pool: 3.7.1(pg@8.13.3)
|
|
313
|
-
pg-protocol: 1.7.1
|
|
314
|
-
pg-types: 2.2.0
|
|
315
|
-
pgpass: 1.0.5
|
|
316
|
-
optionalDependencies:
|
|
317
|
-
pg-cloudflare: 1.1.1
|
|
318
|
-
|
|
319
|
-
pgpass@1.0.5:
|
|
320
|
-
dependencies:
|
|
321
|
-
split2: 4.2.0
|
|
322
|
-
|
|
323
|
-
postgres-array@2.0.0: {}
|
|
324
|
-
|
|
325
|
-
postgres-bytea@1.0.0: {}
|
|
326
|
-
|
|
327
|
-
postgres-date@1.0.7: {}
|
|
328
|
-
|
|
329
|
-
postgres-interval@1.2.0:
|
|
330
|
-
dependencies:
|
|
331
|
-
xtend: 4.0.2
|
|
332
|
-
|
|
333
|
-
retry-as-promised@7.1.1: {}
|
|
334
|
-
|
|
335
|
-
semver@7.7.1: {}
|
|
336
|
-
|
|
337
|
-
sequelize-pool@7.1.0: {}
|
|
338
|
-
|
|
339
|
-
sequelize@6.37.6(pg@8.13.3):
|
|
340
|
-
dependencies:
|
|
341
|
-
'@types/debug': 4.1.12
|
|
342
|
-
'@types/validator': 13.12.2
|
|
343
|
-
debug: 4.4.0
|
|
344
|
-
dottie: 2.0.6
|
|
345
|
-
inflection: 1.13.4
|
|
346
|
-
lodash: 4.17.21
|
|
347
|
-
moment: 2.30.1
|
|
348
|
-
moment-timezone: 0.5.47
|
|
349
|
-
pg-connection-string: 2.7.0
|
|
350
|
-
retry-as-promised: 7.1.1
|
|
351
|
-
semver: 7.7.1
|
|
352
|
-
sequelize-pool: 7.1.0
|
|
353
|
-
toposort-class: 1.0.1
|
|
354
|
-
uuid: 8.3.2
|
|
355
|
-
validator: 13.12.0
|
|
356
|
-
wkx: 0.5.0
|
|
357
|
-
optionalDependencies:
|
|
358
|
-
pg: 8.13.3
|
|
359
|
-
transitivePeerDependencies:
|
|
360
|
-
- supports-color
|
|
361
|
-
|
|
362
|
-
split2@4.2.0: {}
|
|
363
|
-
|
|
364
|
-
toposort-class@1.0.1: {}
|
|
365
|
-
|
|
366
|
-
typescript@5.8.2: {}
|
|
367
|
-
|
|
368
|
-
undici-types@6.20.0: {}
|
|
369
|
-
|
|
370
|
-
uuid@8.3.2: {}
|
|
371
|
-
|
|
372
|
-
validator@13.12.0: {}
|
|
373
|
-
|
|
374
|
-
wkx@0.5.0:
|
|
375
|
-
dependencies:
|
|
376
|
-
'@types/node': 22.13.9
|
|
377
|
-
|
|
378
|
-
xtend@4.0.2: {}
|