@things-factory/shell 8.0.38 → 9.0.0-9.0.0-beta.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_index.html +0 -1
- package/bin/things-factory-migration +6 -3
- package/client/themes/calendar-theme.css +3 -1
- package/client/themes/index.css +2 -1
- package/dist-server/index.d.ts +12 -12
- package/dist-server/index.js +12 -12
- package/dist-server/index.js.map +1 -1
- package/dist-server/initializers/database.js +4 -10
- package/dist-server/initializers/database.js.map +1 -1
- package/dist-server/initializers/ormconfig.d.ts +2 -0
- package/dist-server/initializers/ormconfig.js +30 -0
- package/dist-server/initializers/ormconfig.js.map +1 -0
- package/dist-server/middlewares/domain-middleware.js +2 -2
- package/dist-server/middlewares/domain-middleware.js.map +1 -1
- package/dist-server/middlewares/index.d.ts +1 -1
- package/dist-server/middlewares/index.js +3 -3
- package/dist-server/middlewares/index.js.map +1 -1
- package/dist-server/migrations/1000000000000-SeedDomain.js +4 -4
- package/dist-server/migrations/1000000000000-SeedDomain.js.map +1 -1
- package/dist-server/migrations/index.js.map +1 -1
- package/dist-server/process-cleaner.d.ts +1 -0
- package/dist-server/process-cleaner.js +92 -0
- package/dist-server/process-cleaner.js.map +1 -0
- package/dist-server/routers/domain-router.js +3 -3
- package/dist-server/routers/domain-router.js.map +1 -1
- package/dist-server/routers/global-router.js +6 -6
- package/dist-server/routers/global-router.js.map +1 -1
- package/dist-server/routers/index.d.ts +3 -3
- package/dist-server/routers/index.js +3 -3
- package/dist-server/routers/index.js.map +1 -1
- package/dist-server/schema.js +5 -4
- package/dist-server/schema.js.map +1 -1
- package/dist-server/server-dev.js +37 -39
- package/dist-server/server-dev.js.map +1 -1
- package/dist-server/server.js +34 -36
- package/dist-server/server.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set-item-type.js +3 -3
- package/dist-server/service/attribute-set/attribute-set-item-type.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set-mutation.d.ts +2 -2
- package/dist-server/service/attribute-set/attribute-set-mutation.js +16 -16
- package/dist-server/service/attribute-set/attribute-set-mutation.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set-query.d.ts +3 -3
- package/dist-server/service/attribute-set/attribute-set-query.js +15 -15
- package/dist-server/service/attribute-set/attribute-set-query.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set-type.d.ts +2 -2
- package/dist-server/service/attribute-set/attribute-set-type.js +5 -5
- package/dist-server/service/attribute-set/attribute-set-type.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set.d.ts +1 -1
- package/dist-server/service/attribute-set/attribute-set.js +2 -2
- package/dist-server/service/attribute-set/attribute-set.js.map +1 -1
- package/dist-server/service/attribute-set/index.d.ts +3 -3
- package/dist-server/service/attribute-set/index.js +5 -5
- package/dist-server/service/attribute-set/index.js.map +1 -1
- package/dist-server/service/common-types/index.d.ts +6 -6
- package/dist-server/service/common-types/index.js +6 -6
- package/dist-server/service/common-types/index.js.map +1 -1
- package/dist-server/service/common-types/list-param.js +2 -2
- package/dist-server/service/common-types/list-param.js.map +1 -1
- package/dist-server/service/common-types/log.js +2 -2
- package/dist-server/service/common-types/log.js.map +1 -1
- package/dist-server/service/common-types/scalar-object.d.ts +2 -1
- package/dist-server/service/common-types/scalar-object.js +2 -2
- package/dist-server/service/common-types/scalar-object.js.map +1 -1
- package/dist-server/service/directive-transaction/index.d.ts +1 -1
- package/dist-server/service/directive-transaction/index.js +1 -1
- package/dist-server/service/directive-transaction/index.js.map +1 -1
- package/dist-server/service/directive-transaction/transaction.js +2 -2
- package/dist-server/service/directive-transaction/transaction.js.map +1 -1
- package/dist-server/service/domain/domain-mutation.d.ts +2 -2
- package/dist-server/service/domain/domain-mutation.js +21 -21
- package/dist-server/service/domain/domain-mutation.js.map +1 -1
- package/dist-server/service/domain/domain-query.js +6 -6
- package/dist-server/service/domain/domain-query.js.map +1 -1
- package/dist-server/service/domain/domain-types.d.ts +2 -2
- package/dist-server/service/domain/domain-types.js +6 -6
- package/dist-server/service/domain/domain-types.js.map +1 -1
- package/dist-server/service/domain/index.d.ts +3 -3
- package/dist-server/service/domain/index.js +5 -5
- package/dist-server/service/domain/index.js.map +1 -1
- package/dist-server/service/index.d.ts +7 -7
- package/dist-server/service/index.js +16 -16
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/subscription-data/data-resolver.d.ts +1 -1
- package/dist-server/service/subscription-data/data-resolver.js +4 -4
- package/dist-server/service/subscription-data/data-resolver.js.map +1 -1
- package/dist-server/service/subscription-data/data-types.d.ts +1 -1
- package/dist-server/service/subscription-data/data-types.js +5 -5
- package/dist-server/service/subscription-data/data-types.js.map +1 -1
- package/dist-server/service/subscription-data/index.d.ts +1 -1
- package/dist-server/service/subscription-data/index.js +2 -2
- package/dist-server/service/subscription-data/index.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/typeorm/encrypt-transform.js +3 -3
- package/dist-server/typeorm/encrypt-transform.js.map +1 -1
- package/dist-server/utils/get-times-for-period.d.ts +24 -4
- package/dist-server/utils/get-times-for-period.js +42 -5
- package/dist-server/utils/get-times-for-period.js.map +1 -1
- package/dist-server/utils/index.d.ts +8 -8
- package/dist-server/utils/index.js +8 -8
- package/dist-server/utils/index.js.map +1 -1
- package/dist-server/utils/list-param-adjuster.d.ts +1 -1
- package/dist-server/utils/list-param-adjuster.js.map +1 -1
- package/dist-server/utils/list-params-converter.d.ts +2 -2
- package/dist-server/utils/list-params-converter.js +2 -2
- package/dist-server/utils/list-params-converter.js.map +1 -1
- package/dist-server/utils/list-query-builder.d.ts +1 -1
- package/dist-server/utils/list-query-builder.js +7 -7
- package/dist-server/utils/list-query-builder.js.map +1 -1
- package/dist-server/utils/publish-progress.js +2 -2
- package/dist-server/utils/publish-progress.js.map +1 -1
- package/package.json +14 -19
- package/translations/en.json +1 -0
- package/translations/ja.json +1 -0
- package/translations/ko.json +2 -1
- package/translations/ms.json +1 -0
- package/translations/zh.json +1 -0
- package/views/public/home.html +0 -1
- package/client/hot-client/hot.js +0 -140
- package/client/hot-client/index.js +0 -103
- package/client/hot-client/log.js +0 -44
- package/client/hot-client/socket.js +0 -63
- package/client/scene/scene-components.js +0 -3
- package/client/scene/scene-player.js +0 -103
- package/client/scene/scene-viewer.js +0 -106
- package/client/scene/things-scene-components.import +0 -1
- package/ormconfig.js +0 -31
- package/server/graphql-local-client.ts +0 -59
- package/server/index.ts +0 -13
- package/server/initializers/database.ts +0 -96
- package/server/initializers/naming-strategy.ts +0 -14
- package/server/middlewares/domain-middleware.ts +0 -60
- package/server/middlewares/index.ts +0 -43
- package/server/migrations/1000000000000-SeedDomain.ts +0 -37
- package/server/migrations/index.ts +0 -9
- package/server/pubsub-log-transport.ts +0 -59
- package/server/pubsub.ts +0 -84
- package/server/routers/domain-router.ts +0 -13
- package/server/routers/global-router.ts +0 -76
- package/server/routers/graphql-router.ts +0 -3
- package/server/routers/index.ts +0 -3
- package/server/schema.ts +0 -163
- package/server/server-dev.ts +0 -305
- package/server/server.ts +0 -296
- package/server/service/attribute-set/attribute-set-item-type.ts +0 -65
- package/server/service/attribute-set/attribute-set-mutation.ts +0 -125
- package/server/service/attribute-set/attribute-set-query.ts +0 -36
- package/server/service/attribute-set/attribute-set-type.ts +0 -46
- package/server/service/attribute-set/attribute-set.ts +0 -35
- package/server/service/attribute-set/index.ts +0 -6
- package/server/service/common-types/index.ts +0 -6
- package/server/service/common-types/list-param.ts +0 -61
- package/server/service/common-types/log.ts +0 -17
- package/server/service/common-types/object-ref.ts +0 -13
- package/server/service/common-types/scalar-any.ts +0 -44
- package/server/service/common-types/scalar-date.ts +0 -22
- package/server/service/common-types/scalar-object.ts +0 -15
- package/server/service/directive-transaction/index.ts +0 -1
- package/server/service/directive-transaction/transaction.ts +0 -40
- package/server/service/domain/domain-mutation.ts +0 -120
- package/server/service/domain/domain-query.ts +0 -55
- package/server/service/domain/domain-types.ts +0 -69
- package/server/service/domain/domain.ts +0 -112
- package/server/service/domain/index.ts +0 -6
- package/server/service/index.ts +0 -32
- package/server/service/subscription-data/data-resolver.ts +0 -37
- package/server/service/subscription-data/data-types.ts +0 -16
- package/server/service/subscription-data/index.ts +0 -4
- package/server/typeorm/encrypt-transform.ts +0 -70
- package/server/typeorm/get-data-encryption-key.ts +0 -13
- package/server/typeorm/json5-transform.ts +0 -26
- package/server/typeorm/round-transform.ts +0 -20
- package/server/utils/condition-builder.ts +0 -145
- package/server/utils/get-domain.ts +0 -228
- package/server/utils/get-query-builder-from-list-params.ts +0 -469
- package/server/utils/get-times-for-period.ts +0 -60
- package/server/utils/index.ts +0 -8
- package/server/utils/list-param-adjuster.ts +0 -21
- package/server/utils/list-params-converter.ts +0 -200
- package/server/utils/list-query-builder.ts +0 -120
- package/server/utils/publish-progress.ts +0 -23
@@ -1,69 +0,0 @@
|
|
1
|
-
import { ObjectType, InputType, Field, Int } from 'type-graphql'
|
2
|
-
import { Domain, IPList } from './domain'
|
3
|
-
import { ObjectRef, ScalarObject } from '../common-types'
|
4
|
-
|
5
|
-
@InputType()
|
6
|
-
export class DomainInput {
|
7
|
-
@Field()
|
8
|
-
name: string
|
9
|
-
|
10
|
-
@Field({ nullable: true })
|
11
|
-
description?: string
|
12
|
-
|
13
|
-
@Field({ nullable: true })
|
14
|
-
extType?: string
|
15
|
-
}
|
16
|
-
|
17
|
-
@InputType()
|
18
|
-
export class DomainPatch {
|
19
|
-
@Field({ nullable: true })
|
20
|
-
id?: string
|
21
|
-
|
22
|
-
@Field({ nullable: true })
|
23
|
-
name?: string
|
24
|
-
|
25
|
-
@Field({ nullable: true })
|
26
|
-
description?: string
|
27
|
-
|
28
|
-
@Field({ nullable: true })
|
29
|
-
timezone?: string
|
30
|
-
|
31
|
-
@Field({ nullable: true })
|
32
|
-
systemFlag?: Boolean
|
33
|
-
|
34
|
-
@Field({ nullable: true })
|
35
|
-
subdomain?: string
|
36
|
-
|
37
|
-
@Field({ nullable: true })
|
38
|
-
owner?: string
|
39
|
-
|
40
|
-
@Field(type => ObjectRef, { nullable: true })
|
41
|
-
parent?: ObjectRef
|
42
|
-
|
43
|
-
@Field({ nullable: true })
|
44
|
-
brandName?: string
|
45
|
-
|
46
|
-
@Field({ nullable: true })
|
47
|
-
brandImage?: string
|
48
|
-
|
49
|
-
@Field({ nullable: true })
|
50
|
-
contentImage?: string
|
51
|
-
|
52
|
-
@Field({ nullable: true })
|
53
|
-
extType?: string
|
54
|
-
|
55
|
-
@Field(type => ScalarObject, { nullable: true })
|
56
|
-
attributes?: any
|
57
|
-
|
58
|
-
@Field({ nullable: true })
|
59
|
-
theme?: string
|
60
|
-
}
|
61
|
-
|
62
|
-
@ObjectType()
|
63
|
-
export class DomainList {
|
64
|
-
@Field(type => [Domain], { nullable: true })
|
65
|
-
items: Domain[]
|
66
|
-
|
67
|
-
@Field(type => Int, { nullable: true })
|
68
|
-
total: number
|
69
|
-
}
|
@@ -1,112 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
Column,
|
3
|
-
CreateDateColumn,
|
4
|
-
ManyToOne,
|
5
|
-
OneToMany,
|
6
|
-
RelationId,
|
7
|
-
Entity,
|
8
|
-
Index,
|
9
|
-
UpdateDateColumn,
|
10
|
-
DeleteDateColumn,
|
11
|
-
PrimaryGeneratedColumn
|
12
|
-
} from 'typeorm'
|
13
|
-
import { ObjectType, Directive, Field, ID } from 'type-graphql'
|
14
|
-
import { ScalarObject } from '../common-types/scalar-object.js'
|
15
|
-
|
16
|
-
export type IPList = {
|
17
|
-
whitelist?: string[]
|
18
|
-
blacklist?: string[]
|
19
|
-
protectedlist?: string[]
|
20
|
-
privileges?: {
|
21
|
-
category: string
|
22
|
-
privilege: string
|
23
|
-
}[]
|
24
|
-
}
|
25
|
-
|
26
|
-
@Entity()
|
27
|
-
@Index('ix_domain_0', (domain: Domain) => [domain.subdomain, domain.deletedAt], {
|
28
|
-
unique: true,
|
29
|
-
where: '"deleted_at" IS NULL'
|
30
|
-
})
|
31
|
-
@ObjectType()
|
32
|
-
export class Domain {
|
33
|
-
@PrimaryGeneratedColumn('uuid')
|
34
|
-
@Field(type => ID)
|
35
|
-
readonly id: string
|
36
|
-
|
37
|
-
@Field()
|
38
|
-
@Column({ unique: true })
|
39
|
-
name: string
|
40
|
-
|
41
|
-
@Field({ nullable: true })
|
42
|
-
@Column({ nullable: true })
|
43
|
-
description: string
|
44
|
-
|
45
|
-
@Field({ nullable: true })
|
46
|
-
@Column({ nullable: true })
|
47
|
-
extType: string
|
48
|
-
|
49
|
-
@Field({ nullable: true })
|
50
|
-
@Column({ nullable: true })
|
51
|
-
timezone: string
|
52
|
-
|
53
|
-
@Directive('@deprecated(reason: "Use `parent`")')
|
54
|
-
@Field({ nullable: true })
|
55
|
-
@Column({ default: false })
|
56
|
-
systemFlag: boolean
|
57
|
-
|
58
|
-
@Field({ nullable: true })
|
59
|
-
@Column({ nullable: true })
|
60
|
-
subdomain: string
|
61
|
-
|
62
|
-
@Field({ nullable: true })
|
63
|
-
@ManyToOne(type => Domain, { nullable: true })
|
64
|
-
parent: Domain
|
65
|
-
|
66
|
-
@RelationId((domain: Domain) => domain.parent)
|
67
|
-
parentId?: string
|
68
|
-
|
69
|
-
@OneToMany(type => Domain, domain => domain.parent)
|
70
|
-
@Field(type => Domain, { nullable: true })
|
71
|
-
children: Domain[]
|
72
|
-
|
73
|
-
@Field({ nullable: true })
|
74
|
-
@Column({ nullable: true })
|
75
|
-
brandName: string
|
76
|
-
|
77
|
-
@Field({ nullable: true })
|
78
|
-
@Column({ nullable: true })
|
79
|
-
brandImage: string
|
80
|
-
|
81
|
-
@Field({ nullable: true })
|
82
|
-
@Column({ nullable: true })
|
83
|
-
contentImage: string
|
84
|
-
|
85
|
-
@Field({ nullable: true })
|
86
|
-
@Column({ nullable: true })
|
87
|
-
owner: string
|
88
|
-
|
89
|
-
@Field({ nullable: true })
|
90
|
-
@Column({ nullable: true })
|
91
|
-
theme: string
|
92
|
-
|
93
|
-
@Column('simple-json', { nullable: true })
|
94
|
-
@Field(type => ScalarObject, { nullable: true })
|
95
|
-
iplist?: IPList
|
96
|
-
|
97
|
-
@Column('simple-json', { nullable: true })
|
98
|
-
@Field(type => ScalarObject, { nullable: true })
|
99
|
-
attributes?: any
|
100
|
-
|
101
|
-
@Field({ nullable: true })
|
102
|
-
@CreateDateColumn()
|
103
|
-
createdAt: Date
|
104
|
-
|
105
|
-
@Field({ nullable: true })
|
106
|
-
@UpdateDateColumn()
|
107
|
-
updatedAt: Date
|
108
|
-
|
109
|
-
@DeleteDateColumn()
|
110
|
-
@Field({ nullable: true })
|
111
|
-
deletedAt?: Date
|
112
|
-
}
|
package/server/service/index.ts
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
import { transactionDirectiveResolver, transactionDirectiveTypeDefs } from './directive-transaction'
|
2
|
-
import { entities as DomainEntities, resolvers as DomainResolvers } from './domain'
|
3
|
-
import { entities as AttributeEntities, resolvers as AttributeResolvers } from './attribute-set'
|
4
|
-
import { resolvers as SubscriptionDataResolvers } from './subscription-data'
|
5
|
-
|
6
|
-
export * from './common-types'
|
7
|
-
export * from './domain/domain'
|
8
|
-
export * from './domain/domain'
|
9
|
-
|
10
|
-
/* EXPORT TYPES */
|
11
|
-
export * from './domain/domain-types'
|
12
|
-
export * from './subscription-data/data-types'
|
13
|
-
|
14
|
-
export const entities = [
|
15
|
-
/* Entities */
|
16
|
-
...AttributeEntities,
|
17
|
-
...DomainEntities
|
18
|
-
]
|
19
|
-
export const schema = {
|
20
|
-
typeDefs: {
|
21
|
-
transactionDirectiveTypeDefs
|
22
|
-
},
|
23
|
-
resolverClasses: [
|
24
|
-
/* Resolvers */
|
25
|
-
...AttributeResolvers,
|
26
|
-
...DomainResolvers,
|
27
|
-
...SubscriptionDataResolvers
|
28
|
-
],
|
29
|
-
directives: {
|
30
|
-
transaction: transactionDirectiveResolver
|
31
|
-
}
|
32
|
-
}
|
@@ -1,37 +0,0 @@
|
|
1
|
-
import { filter, pipe } from 'graphql-yoga'
|
2
|
-
import { Arg, Resolver, Root, Subscription } from 'type-graphql'
|
3
|
-
|
4
|
-
import { pubsub } from '../../pubsub'
|
5
|
-
import { Data } from './data-types'
|
6
|
-
|
7
|
-
/* 이 Resolver는 @things-factory/integration-base 에서 Overide 된다. (state-register를 사용하기 위해서) */
|
8
|
-
@Resolver()
|
9
|
-
export class DataResolver {
|
10
|
-
@Subscription({
|
11
|
-
subscribe: ({ args, context, info }) => {
|
12
|
-
const { domain, user } = context.state
|
13
|
-
const { tag } = args
|
14
|
-
const subdomain = domain?.subdomain
|
15
|
-
|
16
|
-
if (!domain || !tag) {
|
17
|
-
throw new Error('domain and tag required')
|
18
|
-
}
|
19
|
-
|
20
|
-
//@ts-ignore
|
21
|
-
if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {
|
22
|
-
throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)
|
23
|
-
}
|
24
|
-
|
25
|
-
return pipe(
|
26
|
-
pubsub.subscribe('data'),
|
27
|
-
filter((payload: { data: Data }) => {
|
28
|
-
const { domain: pdomain, tag: ptag, data } = payload.data
|
29
|
-
return tag === ptag && subdomain === pdomain?.subdomain
|
30
|
-
})
|
31
|
-
)
|
32
|
-
}
|
33
|
-
})
|
34
|
-
data(@Root() payload: { data: Data }, @Arg('tag') tag: string): Data {
|
35
|
-
return payload.data
|
36
|
-
}
|
37
|
-
}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import { Field, ObjectType } from 'type-graphql'
|
2
|
-
|
3
|
-
import { ScalarObject } from '../common-types/scalar-object'
|
4
|
-
import { Domain } from '../domain/domain'
|
5
|
-
|
6
|
-
@ObjectType()
|
7
|
-
export class Data {
|
8
|
-
@Field(type => Domain, { nullable: true, description: 'The domain where the data originated' })
|
9
|
-
domain?: Domain
|
10
|
-
|
11
|
-
@Field({ description: 'Tag name attached to data' })
|
12
|
-
tag: string
|
13
|
-
|
14
|
-
@Field(type => ScalarObject, { nullable: true, description: 'Data delivered by subscription' })
|
15
|
-
data?: Object
|
16
|
-
}
|
@@ -1,70 +0,0 @@
|
|
1
|
-
import { ValueTransformer } from 'typeorm'
|
2
|
-
import { createCipheriv, createDecipheriv, randomBytes, scryptSync } from 'crypto'
|
3
|
-
|
4
|
-
import { dataEncryptionKey } from './get-data-encryption-key'
|
5
|
-
|
6
|
-
const ALGORITHM = 'aes-256-cbc'
|
7
|
-
const KEY_LENGTH = 32
|
8
|
-
const SALT_LENGTH = 16
|
9
|
-
const IV_LENGTH = 16
|
10
|
-
|
11
|
-
/**
|
12
|
-
* ValueTransformer object for encrypting and decrypting database entity field values.
|
13
|
-
* Used in TypeORM entities to encrypt field values before storing them in the database
|
14
|
-
* and decrypt values when retrieving them from the database.
|
15
|
-
*/
|
16
|
-
export const encryptTransformer: ValueTransformer = {
|
17
|
-
/**
|
18
|
-
* Encrypts the entity field value before storing it in the database.
|
19
|
-
* @param {string} entityValue - Unencrypted entity field value
|
20
|
-
* @returns {string} - Encrypted string
|
21
|
-
*/
|
22
|
-
to: (entityValue: string) => encrypt(entityValue), // DB에 저장하기 전에 암호화
|
23
|
-
|
24
|
-
/**
|
25
|
-
* Decrypts the encrypted database value when retrieving it from the database.
|
26
|
-
* @param {string} databaseValue - Encrypted database field value
|
27
|
-
* @returns {string} - Decrypted string
|
28
|
-
*/
|
29
|
-
from: (databaseValue: string) => decrypt(databaseValue) // DB에서 값을 가져올 때 복호화
|
30
|
-
}
|
31
|
-
|
32
|
-
/**
|
33
|
-
* Encrypts the given text using the AES-256-CBC algorithm.
|
34
|
-
* @param {string} text - Text to encrypt
|
35
|
-
* @returns {string} - Encrypted string
|
36
|
-
*/
|
37
|
-
function encrypt(text: string): string {
|
38
|
-
if (!text) {
|
39
|
-
return null
|
40
|
-
}
|
41
|
-
|
42
|
-
const iv = randomBytes(IV_LENGTH)
|
43
|
-
const cipher = createCipheriv(ALGORITHM, dataEncryptionKey, iv)
|
44
|
-
const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()])
|
45
|
-
|
46
|
-
return `${iv.toString('hex')}:${encrypted.toString('hex')}`
|
47
|
-
}
|
48
|
-
|
49
|
-
/**
|
50
|
-
* Decrypts the given encrypted text.
|
51
|
-
* @param {string} text - Encrypted text to decrypt
|
52
|
-
* @returns {string} - Decrypted string
|
53
|
-
*/
|
54
|
-
function decrypt(text: string): string {
|
55
|
-
if (!text) {
|
56
|
-
return null
|
57
|
-
}
|
58
|
-
|
59
|
-
try {
|
60
|
-
const parts = text.split(':')
|
61
|
-
const iv = Buffer.from(parts.shift(), 'hex')
|
62
|
-
const encryptedText = Buffer.from(parts.join(':'), 'hex')
|
63
|
-
const decipher = createDecipheriv(ALGORITHM, dataEncryptionKey, iv)
|
64
|
-
|
65
|
-
return Buffer.concat([decipher.update(encryptedText), decipher.final()]).toString('utf8')
|
66
|
-
} catch (err) {
|
67
|
-
console.error(`decryption for encrypted field failed in encryptTransformer`)
|
68
|
-
return null
|
69
|
-
}
|
70
|
-
}
|
@@ -1,13 +0,0 @@
|
|
1
|
-
import { config } from '@things-factory/env'
|
2
|
-
|
3
|
-
var _DATA_ENCRYPTION_KEY = config.get('dataEncryptionKey')
|
4
|
-
|
5
|
-
if (!_DATA_ENCRYPTION_KEY) {
|
6
|
-
if (process.env.NODE_ENV == 'production') {
|
7
|
-
throw new TypeError('dataEncryptionKey not configured.')
|
8
|
-
} else {
|
9
|
-
_DATA_ENCRYPTION_KEY = 'V6g5oHJZb7KcYzIyL6cM95XvIDouon5b'
|
10
|
-
}
|
11
|
-
}
|
12
|
-
|
13
|
-
export const dataEncryptionKey = _DATA_ENCRYPTION_KEY
|
@@ -1,26 +0,0 @@
|
|
1
|
-
import { ValueTransformer } from 'typeorm'
|
2
|
-
import json5 from 'json5'
|
3
|
-
|
4
|
-
export const json5Transformer: ValueTransformer = {
|
5
|
-
/**
|
6
|
-
* Converts the entity's value to a JSON5 string before storing it in the database.
|
7
|
-
* @param {any} entityValue - The unencrypted entity field value.
|
8
|
-
* @returns {string} - The stringified JSON5 representation of the entityValue.
|
9
|
-
*/
|
10
|
-
to(entityValue: any) {
|
11
|
-
return entityValue === null || entityValue === undefined ? null : json5.stringify(entityValue)
|
12
|
-
},
|
13
|
-
|
14
|
-
/**
|
15
|
-
* Converts a JSON5 string from the database back into its original type when retrieving it.
|
16
|
-
* @param {string} databaseValue - The JSON5 string stored in the database.
|
17
|
-
* @returns {any} - The original type of the entityValue, parsed from the JSON5 string.
|
18
|
-
*/
|
19
|
-
from(databaseValue: string) {
|
20
|
-
try {
|
21
|
-
return databaseValue === null ? null : json5.parse(databaseValue)
|
22
|
-
} finally {
|
23
|
-
return databaseValue
|
24
|
-
}
|
25
|
-
}
|
26
|
-
}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { ValueTransformer } from 'typeorm'
|
2
|
-
|
3
|
-
/**
|
4
|
-
* ValueTransformer object for rounding floating point values.
|
5
|
-
*/
|
6
|
-
export const roundTransformer: ValueTransformer = {
|
7
|
-
/**
|
8
|
-
* Rounds the entity field value before storing it in the database.
|
9
|
-
* @param {number | null} value - Floating point value to round or null
|
10
|
-
* @returns {number | null} - Rounded number or null
|
11
|
-
*/
|
12
|
-
to: (value: number | null) => (value !== null && !isNaN(value) ? Math.round(value * 10000) / 10000 : undefined),
|
13
|
-
|
14
|
-
/**
|
15
|
-
* Returns the entity field value as it is without any transformation when reading from the database.
|
16
|
-
* @param {number} value - Number value read from the database
|
17
|
-
* @returns {number} - The number value as is
|
18
|
-
*/
|
19
|
-
from: (value: number) => value
|
20
|
-
}
|
@@ -1,145 +0,0 @@
|
|
1
|
-
import _ from 'lodash'
|
2
|
-
|
3
|
-
/**
|
4
|
-
* Generates and returns a condition clause based on the provided parameters.
|
5
|
-
*
|
6
|
-
* @param alias {string} Alias or table name of the entity.
|
7
|
-
* @param fieldName {string} Field or column name.
|
8
|
-
* @param operator {string} Comparison operator.
|
9
|
-
* @param value {any} Value or an array of values to compare.
|
10
|
-
* @param relation {boolean | string} Indicates if it's a related field or the name of the relation (optional).
|
11
|
-
* @param seq {number} Integer representing the order of condition generation (internal use).
|
12
|
-
* @returns {Object} An object containing the generated condition clause and parameters.
|
13
|
-
*/
|
14
|
-
export const buildCondition = function (alias: string, fieldName: string, operator: string, value: any, relation: boolean | string, seq: number) {
|
15
|
-
seq++
|
16
|
-
|
17
|
-
fieldName = _.snakeCase(fieldName)
|
18
|
-
const values = value instanceof Array ? value : [value]
|
19
|
-
|
20
|
-
switch (operator) {
|
21
|
-
case 'eq':
|
22
|
-
return {
|
23
|
-
clause: `${alias}.${fieldName} = :args${seq}`,
|
24
|
-
parameters: { [`args${seq}`]: value }
|
25
|
-
}
|
26
|
-
|
27
|
-
case 'like':
|
28
|
-
return {
|
29
|
-
clause: `${alias}.${fieldName} LIKE :args${seq}`,
|
30
|
-
parameters: { [`args${seq}`]: `${value}` }
|
31
|
-
}
|
32
|
-
|
33
|
-
case 'search':
|
34
|
-
case 'i_like':
|
35
|
-
return {
|
36
|
-
clause: `LOWER(${alias}.${fieldName}) LIKE :args${seq}`,
|
37
|
-
parameters: { [`args${seq}`]: `${String(value).toLowerCase()}` }
|
38
|
-
}
|
39
|
-
|
40
|
-
case 'nlike':
|
41
|
-
return {
|
42
|
-
clause: `${alias}.${fieldName} NOT LIKE :args${seq}`,
|
43
|
-
value: { [`args${seq}`]: `${value}` }
|
44
|
-
}
|
45
|
-
|
46
|
-
case 'i_nlike':
|
47
|
-
return {
|
48
|
-
clause: `LOWER(${alias}.${fieldName}) NOT LIKE :args${seq}`,
|
49
|
-
value: { [`args${seq}`]: `${String(value).toLowerCase()}` }
|
50
|
-
}
|
51
|
-
|
52
|
-
case 'lt':
|
53
|
-
return {
|
54
|
-
clause: `${alias}.${fieldName} < :args${seq}`,
|
55
|
-
parameters: { [`args${seq}`]: value }
|
56
|
-
}
|
57
|
-
|
58
|
-
case 'gt':
|
59
|
-
return {
|
60
|
-
clause: `${alias}.${fieldName} > :args${seq}`,
|
61
|
-
parameters: { [`args${seq}`]: value }
|
62
|
-
}
|
63
|
-
|
64
|
-
case 'lte':
|
65
|
-
return {
|
66
|
-
clause: `${alias}.${fieldName} <= :args${seq}`,
|
67
|
-
parameters: { [`args${seq}`]: value }
|
68
|
-
}
|
69
|
-
|
70
|
-
case 'gte':
|
71
|
-
return {
|
72
|
-
clause: `${alias}.${fieldName} >= :args${seq}`,
|
73
|
-
parameters: { [`args${seq}`]: value }
|
74
|
-
}
|
75
|
-
|
76
|
-
case 'noteq':
|
77
|
-
return {
|
78
|
-
clause: `${alias}.${fieldName} != :args${seq}`,
|
79
|
-
parameters: { [`args${seq}`]: value }
|
80
|
-
}
|
81
|
-
|
82
|
-
case 'in':
|
83
|
-
return {
|
84
|
-
clause: relation ? `${fieldName}.id IN (:...args${seq})` : `${alias}.${fieldName} IN (:...args${seq})`,
|
85
|
-
parameters: { [`args${seq}`]: values }
|
86
|
-
}
|
87
|
-
|
88
|
-
case 'notin':
|
89
|
-
return {
|
90
|
-
clause: relation ? `${fieldName}.id NOT IN (:...args${seq})` : `${alias}.${fieldName} NOT IN (:...args${seq})`,
|
91
|
-
parameters: { [`args${seq}`]: values }
|
92
|
-
}
|
93
|
-
|
94
|
-
case 'notin_with_null':
|
95
|
-
return {
|
96
|
-
clause: relation
|
97
|
-
? `(${fieldName}.id IS NULL OR ${fieldName}.id NOT IN (:...args${seq})`
|
98
|
-
: `${alias}.${fieldName} IS NULL OR ${alias}.${fieldName} NOT IN (:...args${seq}))`,
|
99
|
-
parameters: { [`args${seq}`]: values }
|
100
|
-
}
|
101
|
-
|
102
|
-
case 'is_null':
|
103
|
-
return {
|
104
|
-
clause: `${alias}.${fieldName} IS NULL`
|
105
|
-
}
|
106
|
-
case 'is_not_null':
|
107
|
-
return {
|
108
|
-
clause: `${alias}.${fieldName} IS NOT NULL`
|
109
|
-
}
|
110
|
-
case 'is_false':
|
111
|
-
return {
|
112
|
-
clause: `${alias}.${fieldName} IS FALSE`
|
113
|
-
}
|
114
|
-
case 'is_true':
|
115
|
-
return {
|
116
|
-
clause: `${alias}.${fieldName} IS TRUE`
|
117
|
-
}
|
118
|
-
case 'is_not_false':
|
119
|
-
return {
|
120
|
-
clause: `${alias}.${fieldName} IS NOT FALSE`
|
121
|
-
}
|
122
|
-
case 'is_not_true':
|
123
|
-
return {
|
124
|
-
clause: `${alias}.${fieldName} IS NOT TRUE`
|
125
|
-
}
|
126
|
-
case 'is_present':
|
127
|
-
return {
|
128
|
-
clause: `${alias}.${fieldName} IS PRESENT`
|
129
|
-
}
|
130
|
-
case 'is_blank':
|
131
|
-
return {
|
132
|
-
clause: `${alias}.${fieldName} IS BLANK`
|
133
|
-
}
|
134
|
-
case 'is_empty_num_id':
|
135
|
-
return {
|
136
|
-
clause: `${alias}.${fieldName} IS EMPTY NUMERIC ID`
|
137
|
-
}
|
138
|
-
|
139
|
-
case 'between':
|
140
|
-
return {
|
141
|
-
clause: `${alias}.${fieldName} BETWEEN :args${seq}_1 AND :args${seq}_2`,
|
142
|
-
parameters: { [`args${seq}_1`]: values[0], [`args${seq}_2`]: values[1] }
|
143
|
-
}
|
144
|
-
}
|
145
|
-
}
|