@cuboapp/api-backend 1.0.8 → 1.0.11
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 +104 -0
- package/package.json +7 -12
- 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 -104
- 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,56 @@
|
|
|
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
|
-
export * from './utils'
|
|
11
8
|
|
|
12
|
-
export type CuboBackendApiOptions<T
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
public augmentations: Partial<CuboCrudAugmentationsStore<T>> = {}
|
|
18
|
-
public options: CuboBackendApiOptions<T> = {}
|
|
9
|
+
export type CuboBackendApiOptions<T extends CuboApiEntitiesMap<T>> = {
|
|
10
|
+
api: {
|
|
11
|
+
base_url: string
|
|
12
|
+
token: string
|
|
13
|
+
}
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
db: {
|
|
16
|
+
connection?: Database
|
|
17
|
+
options?: Options
|
|
23
18
|
}
|
|
24
19
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
subdomain: '',
|
|
30
|
-
domain: '',
|
|
31
|
-
location: '',
|
|
32
|
-
language: '',
|
|
33
|
-
favicon: undefined
|
|
20
|
+
entities: CuboEntity[]
|
|
21
|
+
|
|
22
|
+
auth?: {
|
|
23
|
+
base_url?: string
|
|
34
24
|
}
|
|
35
25
|
|
|
36
|
-
|
|
26
|
+
augmentations?: Partial<CuboCrudAugmentationsStore<T>>
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
30
|
+
constructor(public options: CuboBackendApiOptions<T>) {}
|
|
31
|
+
|
|
37
32
|
public helpers = new ApiHelpers<T>(this)
|
|
38
33
|
|
|
39
34
|
async init() {
|
|
40
|
-
const auth = await this.authRequest
|
|
35
|
+
const auth = await this.authRequest('/me')
|
|
41
36
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (!this.account) {
|
|
46
|
-
throw new Error('Account not found')
|
|
37
|
+
if (!auth) {
|
|
38
|
+
throw { code: 403, text: 'Авторизация Cubo-Backend не пройдена' }
|
|
47
39
|
}
|
|
48
40
|
}
|
|
49
41
|
|
|
50
42
|
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)
|
|
43
|
+
return this.request<T>(`https://${this.options.api.base_url}`, url, opts)
|
|
56
44
|
}
|
|
57
45
|
|
|
58
46
|
async authRequest<T>(url: string, opts?: RequestInit) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return this.request<T>(baseUrl, url, opts)
|
|
47
|
+
return this.request<T>(this.options?.auth?.base_url || 'https://auth.cubo.sh', url, opts)
|
|
62
48
|
}
|
|
63
49
|
|
|
64
50
|
private async request<T>(baseUrl: string, url: string, opts?: RequestInit & { withoutContentType?: boolean }) {
|
|
65
51
|
const headers: Record<string, any> = {
|
|
66
52
|
...(opts?.headers || {}),
|
|
67
|
-
Authorization: this.
|
|
53
|
+
Authorization: this.options.api.token || ''
|
|
68
54
|
}
|
|
69
55
|
|
|
70
56
|
if (!headers['Content-Type'] && !opts?.withoutContentType) {
|
|
@@ -103,7 +89,7 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
103
89
|
}
|
|
104
90
|
|
|
105
91
|
private async getEntity(entityAlias: Extract<keyof T, string>) {
|
|
106
|
-
const entity = await this.helpers.
|
|
92
|
+
const entity = await this.helpers.getEntityByAlias(entityAlias)
|
|
107
93
|
if (!entity) {
|
|
108
94
|
throw new Error('Entity no found: "' + String(entityAlias) + '"')
|
|
109
95
|
}
|
|
@@ -119,7 +105,7 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
119
105
|
opts = opts || {}
|
|
120
106
|
req = req || {}
|
|
121
107
|
const entity = await this.getEntity(entityAlias)
|
|
122
|
-
const augmentation = this.augmentations?.[entityAlias]
|
|
108
|
+
const augmentation = this.options?.augmentations?.[entityAlias]
|
|
123
109
|
|
|
124
110
|
if (augmentation?.beforeGetMany) {
|
|
125
111
|
opts.queryOptions = await augmentation.beforeGetMany(req, opts)
|
|
@@ -130,8 +116,8 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
130
116
|
queryDto.withDeleted = opts.queryOptions?.withDeleted
|
|
131
117
|
|
|
132
118
|
// create find query
|
|
133
|
-
const regularQuery = await this.helpers.
|
|
134
|
-
const countQuery = await this.helpers.
|
|
119
|
+
const regularQuery = await this.helpers.createFindQuery(req, entity, queryDto)
|
|
120
|
+
const countQuery = await this.helpers.createFindQuery(req, entity, queryDto, true)
|
|
135
121
|
|
|
136
122
|
const db = await this.helpers.getConnection('read')
|
|
137
123
|
|
|
@@ -139,12 +125,12 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
139
125
|
console.log(`QUERY:getMany to "${String(entityAlias)}":`, regularQuery.sql, regularQuery.replacements, { req, opts, queryDto })
|
|
140
126
|
}
|
|
141
127
|
|
|
142
|
-
const rows = await db.query<any>(regularQuery.sql!, {
|
|
128
|
+
const rows = await db.connection.query<any>(regularQuery.sql!, {
|
|
143
129
|
type: QueryTypes.SELECT,
|
|
144
130
|
replacements: regularQuery.replacements,
|
|
145
131
|
transaction: opts?.transaction
|
|
146
132
|
})
|
|
147
|
-
const [totals] = await db.query<any>(countQuery.sql!, {
|
|
133
|
+
const [totals] = await db.connection.query<any>(countQuery.sql!, {
|
|
148
134
|
type: QueryTypes.SELECT,
|
|
149
135
|
replacements: countQuery.replacements,
|
|
150
136
|
transaction: opts?.transaction
|
|
@@ -172,7 +158,7 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
172
158
|
opts = opts || {}
|
|
173
159
|
|
|
174
160
|
const entity = await this.getEntity(entityAlias)
|
|
175
|
-
const augmentation = this.augmentations?.[entityAlias]
|
|
161
|
+
const augmentation = this.options?.augmentations?.[entityAlias]
|
|
176
162
|
if (augmentation?.beforeGetOne) {
|
|
177
163
|
opts.queryOptions = await augmentation.beforeGetOne(req, opts)
|
|
178
164
|
}
|
|
@@ -182,11 +168,11 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
182
168
|
queryDto.withDeleted = opts.queryOptions?.withDeleted
|
|
183
169
|
queryDto.limit = 1
|
|
184
170
|
|
|
185
|
-
const query = await this.helpers.
|
|
171
|
+
const query = await this.helpers.createFindQuery(req, entity, queryDto)
|
|
186
172
|
|
|
187
173
|
const db = await this.helpers.getConnection('read')
|
|
188
174
|
|
|
189
|
-
const [row] = await db.query<any>(query.sql!, {
|
|
175
|
+
const [row] = await db.connection.query<any>(query.sql!, {
|
|
190
176
|
type: QueryTypes.SELECT,
|
|
191
177
|
replacements: query.replacements,
|
|
192
178
|
transaction: opts?.transaction
|
|
@@ -216,8 +202,8 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
216
202
|
opts?: CuboCrudMethodOptions
|
|
217
203
|
): Promise<T[K]> {
|
|
218
204
|
opts = opts || {}
|
|
219
|
-
const entity = await this.helpers.
|
|
220
|
-
const augmentation = this.augmentations?.[entityAlias]
|
|
205
|
+
const entity = await this.helpers.getEntityByAlias(entityAlias)
|
|
206
|
+
const augmentation = this.options?.augmentations?.[entityAlias]
|
|
221
207
|
|
|
222
208
|
if (augmentation?.beforeCreate) {
|
|
223
209
|
opts.queryOptions = await augmentation.beforeCreate(req, opts)
|
|
@@ -228,24 +214,9 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
228
214
|
throw { status: 400, text: 'No keys to update' }
|
|
229
215
|
}
|
|
230
216
|
|
|
231
|
-
const prepared = dbPrepareInsertQueryString(dto)
|
|
217
|
+
// const prepared = dbPrepareInsertQueryString(dto)
|
|
232
218
|
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
|
-
})
|
|
219
|
+
const [created_id] = await db.create(entity.alias, dto, { transaction: opts?.transaction, log: opts?.log })
|
|
249
220
|
|
|
250
221
|
if (!created_id) {
|
|
251
222
|
throw { status: 400, text: 'Unable to create entity' }
|
|
@@ -270,8 +241,8 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
270
241
|
opts?: CuboCrudMethodOptions
|
|
271
242
|
): Promise<T[K] | undefined> {
|
|
272
243
|
opts = opts || {}
|
|
273
|
-
const entity = await this.helpers.
|
|
274
|
-
const augmentation = this.augmentations?.[entityAlias]
|
|
244
|
+
const entity = await this.helpers.getEntityByAlias(entityAlias)
|
|
245
|
+
const augmentation = this.options?.augmentations?.[entityAlias]
|
|
275
246
|
|
|
276
247
|
if (augmentation?.beforeUpdate && !opts?.excludeHooks?.includes('beforeUpdate')) {
|
|
277
248
|
opts.queryOptions = await augmentation.beforeUpdate(req, opts)
|
|
@@ -288,24 +259,8 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
288
259
|
throw { status: 400, text: 'No keys to update' }
|
|
289
260
|
}
|
|
290
261
|
|
|
291
|
-
// console.log(dto)
|
|
292
|
-
|
|
293
|
-
const prepared = dbPrepareUpdateQueryString(dto)
|
|
294
262
|
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
|
-
})
|
|
263
|
+
await db.update(entity.alias, 'id = :id', { id: item.id }, dto, { transaction: opts?.transaction, log: opts?.log })
|
|
309
264
|
|
|
310
265
|
const response = await this.getOne<K>(entityAlias, req, opts)
|
|
311
266
|
if (!response) {
|
|
@@ -325,8 +280,8 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
325
280
|
opts?: CuboCrudMethodOptions
|
|
326
281
|
): Promise<boolean> {
|
|
327
282
|
opts = opts || {}
|
|
328
|
-
const entity = await this.helpers.
|
|
329
|
-
const augmentation = this.augmentations?.[entityAlias]
|
|
283
|
+
const entity = await this.helpers.getEntityByAlias(entityAlias)
|
|
284
|
+
const augmentation = this.options?.augmentations?.[entityAlias]
|
|
330
285
|
|
|
331
286
|
if (augmentation?.beforeDelete) {
|
|
332
287
|
opts.queryOptions = await augmentation.beforeDelete(req, opts)
|
|
@@ -342,22 +297,8 @@ export class CuboBackendApi<T extends CuboApiEntitiesMap<T>> {
|
|
|
342
297
|
throw { status: 400, text: 'No keys to update' }
|
|
343
298
|
}
|
|
344
299
|
|
|
345
|
-
// console.log(dto)
|
|
346
|
-
|
|
347
|
-
const prepared = dbPrepareUpdateQueryString(dto)
|
|
348
300
|
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
|
-
})
|
|
301
|
+
await db.update(entity.alias, 'id = :id', { id: item.id }, dto, { transaction: opts?.transaction, log: opts?.log })
|
|
361
302
|
|
|
362
303
|
if (augmentation?.afterDelete && !opts?.excludeHooks?.includes('afterDelete')) {
|
|
363
304
|
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: {}
|