pwi-plata-type 0.4.201 → 0.4.202

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.
Files changed (94) hide show
  1. package/README.md +2 -2
  2. package/package.json +58 -58
  3. package/src/@types/build.d.ts +26 -26
  4. package/src/@types/cluster.actions.d.ts +27 -27
  5. package/src/@types/cluster.d.ts +55 -55
  6. package/src/@types/create-cli.d.ts +8 -8
  7. package/src/@types/exported.d.ts +34 -31
  8. package/src/@types/fs.d.ts +6 -6
  9. package/src/@types/global.d.ts +131 -131
  10. package/src/@types/knex.d.ts +13 -13
  11. package/src/@types/model.d.ts +143 -143
  12. package/src/@types/router.d.ts +107 -107
  13. package/src/@types/sql.d.ts +120 -120
  14. package/src/@types/swagger.d.ts +22 -22
  15. package/src/bin/extras/create-api-cli.ts +218 -218
  16. package/src/bin/extras/create-cluster-cli.ts +160 -160
  17. package/src/bin/extras/create-lib-cli.ts +84 -84
  18. package/src/bin/extras/plata-create-tools.ts +97 -97
  19. package/src/bin/plata-api.ts +189 -189
  20. package/src/bin/plata-build.ts +19 -19
  21. package/src/bin/plata-cluster.ts +42 -42
  22. package/src/bin/plata-cmd.ts +19 -19
  23. package/src/bin/plata-create.ts +50 -50
  24. package/src/bin/plata-runtime.ts +110 -110
  25. package/src/bin/plata-swagger.ts +104 -104
  26. package/src/index.ts +20 -20
  27. package/src/libs/axios.ts +32 -32
  28. package/src/libs/build.ts +234 -234
  29. package/src/libs/build_wasm.ts +169 -169
  30. package/src/libs/cluster/cluster-controller.ts +93 -93
  31. package/src/libs/cluster.ts +319 -319
  32. package/src/libs/custom.ts +21 -21
  33. package/src/libs/env.ts +10 -10
  34. package/src/libs/fs.ts +399 -399
  35. package/src/libs/hot-reload.ts +63 -63
  36. package/src/libs/job.ts +32 -32
  37. package/src/libs/models/index.ts +4 -4
  38. package/src/libs/models/model-template-combine.ts +93 -93
  39. package/src/libs/models/model-template-env.ts +58 -58
  40. package/src/libs/models/model-template-union.ts +87 -87
  41. package/src/libs/models/model-template.ts +111 -111
  42. package/src/libs/models/model-validations.ts +453 -453
  43. package/src/libs/models/tools.ts +196 -196
  44. package/src/libs/router.ts +184 -184
  45. package/src/libs/runtime.ts +328 -328
  46. package/src/libs/sql.ts +931 -931
  47. package/src/libs/swagger.ts +81 -81
  48. package/src/libs/tools.ts +236 -236
  49. package/src/misc/golang/wasm_exec.js +574 -574
  50. package/src/scripts/post-install/api.ts +32 -32
  51. package/src/scripts/post-install/cluster.ts +28 -28
  52. package/src/scripts/post-install/lib.ts +25 -25
  53. package/src/scripts/post-install.ts +64 -64
  54. package/src/scripts/pre-test.ts +33 -33
  55. package/src/tests/1-config.test.ts +12 -12
  56. package/src/tests/2-effect.test.ts +107 -107
  57. package/src/tests/3-model.env.test.ts +66 -66
  58. package/src/tests/4-model.test.ts +150 -150
  59. package/src/tests/5-model.union.test.ts +160 -160
  60. package/src/tests/6-router.test.ts +44 -44
  61. package/src/tests/7-switch.test.ts +75 -75
  62. package/src/tests/8-brands.test.ts +52 -52
  63. package/src/tests/9-sql.test.ts +639 -639
  64. package/src/tests/assets/sql/example.sql +94 -94
  65. package/templates/create-cli/class.ts +13 -13
  66. package/templates/create-cli/cluster.ts +14 -14
  67. package/templates/create-cli/cmd.ts +3 -3
  68. package/templates/create-cli/config.ts +2 -2
  69. package/templates/create-cli/lib.ts +3 -3
  70. package/templates/create-cli/model.ts +14 -14
  71. package/templates/create-cli/route.ts +8 -8
  72. package/templates/create-cli/task.ts +13 -13
  73. package/templates/postinstall/api/.vscode/launch.json +20 -20
  74. package/templates/postinstall/api/Dockerfile +22 -22
  75. package/templates/postinstall/api/configs/env.ts +2 -2
  76. package/templates/postinstall/api/envs/debug.env +15 -15
  77. package/templates/postinstall/api/envs/homolog.env +15 -15
  78. package/templates/postinstall/api/envs/prod.env +15 -15
  79. package/templates/postinstall/api/tsconfig.json +24 -24
  80. package/templates/postinstall/cluster/.vscode/launch.json +20 -20
  81. package/templates/postinstall/cluster/Dockerfile +24 -24
  82. package/templates/postinstall/cluster/configs/env.ts +2 -2
  83. package/templates/postinstall/cluster/envs/debug.env +10 -10
  84. package/templates/postinstall/cluster/envs/homolog.env +10 -10
  85. package/templates/postinstall/cluster/envs/prod.env +10 -10
  86. package/templates/postinstall/cluster/tsconfig.json +24 -24
  87. package/templates/postinstall/lib/postinstall-tools.mjs +111 -111
  88. package/templates/postinstall/lib/postinstall.js +33 -33
  89. package/templates/postinstall/lib/tsconfig.json +22 -22
  90. package/templates/swagger-cli/header.json +21 -21
  91. package/templates/swagger-cli/route/body.json +14 -14
  92. package/templates/swagger-cli/route/header.json +18 -18
  93. package/templates/swagger-cli/route/response.json +53 -53
  94. package/tsconfig.json +28 -28
@@ -1,108 +1,108 @@
1
- /// <reference types="express" />
2
-
3
- import express from 'express'
4
-
5
- declare global {
6
- namespace Router {
7
- type ListRouteParams<TRoute extends string> =
8
- TRoute extends `/${infer TPart}/${infer TNextRoute}` ?
9
- TPart extends `:${infer TParam}?` ? `${TParam}_O` | ListRouteParams<`/${TNextRoute}`>
10
- : TPart extends `:${infer TParam}` ? `${TParam}_R` | ListRouteParams<`/${TNextRoute}`>
11
- : undefined | ListRouteParams<`/${TNextRoute}`>
12
- : TRoute extends `/${infer TPart}` ?
13
- TPart extends `:${infer TParam}?` ? `${TParam}_O`
14
- : TPart extends `:${infer TParam}` ? `${TParam}_R`
15
- : undefined
16
- : undefined
17
- ;
18
-
19
- type GetRouteParams<TRoute extends string> = Exclude<ListRouteParams<TRoute>, undefined>
20
-
21
- type GetUrlParams<TRoute extends string, TParams extends string = GetRouteParams<TRoute>> = {
22
- [K in LooseAutocomplete<TParams> as K extends `${infer N}_${string}` ? N : string]: K extends `${string}_O` ? string | undefined : string
23
- }
24
-
25
- type expressRequest = Omit<express.Request, 'params'>
26
-
27
- interface Request<T extends string = string> extends expressRequest {
28
- user: any
29
- extras: any
30
- _onResponseEvent: PlataOnResponseEvent[]
31
- params: GetUrlParams<T>
32
- }
33
-
34
- interface Response extends express.Response {
35
- oldJson(body?: any): this
36
- error(error: PlataError | PlataError[]): this
37
- addOnResponseEvent<T = any>(callback: PlataOnResponseEvent<T>): void
38
- }
39
-
40
- type RequestHandler<T extends string = string> = (req: Request<T>, res: Response, next: express.NextFunction) => Promise<any>
41
-
42
- type HttpPlataMethods =
43
- "all"
44
- | "get"
45
- | "post"
46
- | "put"
47
- | "delete"
48
- | "patch"
49
- | "options"
50
- | "head"
51
- | "checkout"
52
- | "connect"
53
- | "copy"
54
- | "lock"
55
- | "merge"
56
- | "mkactivity"
57
- | "mkcol"
58
- | "move"
59
- | "notify"
60
- | "propfind"
61
- | "proppatch"
62
- | "purge"
63
- | "report"
64
- | "search"
65
- | "subscribe"
66
- | "trace"
67
- | "unlock"
68
- | "unsubscribe"
69
- | "use"
70
- ;
71
-
72
- interface CustomHttpMethods {}
73
-
74
- type HttpMethods =
75
- HttpPlataMethods
76
- | keyof CustomHttpMethods
77
- ;
78
-
79
- interface Route {
80
- path?: string
81
- method: string
82
- handlers: RequestHandler[],
83
- swaggerHide?: boolean | undefined
84
- }
85
-
86
- type RouterConfig<T extends Record<string, unknown> = Record<string, unknown>> = {
87
- swaggerHide?: boolean
88
- routes: Route[]
89
- httpRoute: string
90
- mark: T
91
- }
92
-
93
- type Router = RouterConfig & {
94
- [method in HttpMethods]:
95
- method extends keyof CustomHttpMethods ?
96
- CustomHttpMethods[method]
97
- : <T extends string>(path: T | RequestHandler, ...handlers: RequestHandler<T>[]) => void | Promise<void>
98
- }
99
-
100
- type RouterBuilder = (r: Router) => Promise<Router>
101
-
102
- export interface RequiredRoute extends RequiredInterface<RouterBuilder> {
103
- httpRoute: string
104
- }
105
-
106
- type PlataOnResponseEvent<T = any> = (aReq: Request, aRes?: Response, body?: T, error?: PlataError | PlataError[]) => Promise<any>
107
- }
1
+ /// <reference types="express" />
2
+
3
+ import express from 'express'
4
+
5
+ declare global {
6
+ namespace Router {
7
+ type ListRouteParams<TRoute extends string> =
8
+ TRoute extends `/${infer TPart}/${infer TNextRoute}` ?
9
+ TPart extends `:${infer TParam}?` ? `${TParam}_O` | ListRouteParams<`/${TNextRoute}`>
10
+ : TPart extends `:${infer TParam}` ? `${TParam}_R` | ListRouteParams<`/${TNextRoute}`>
11
+ : undefined | ListRouteParams<`/${TNextRoute}`>
12
+ : TRoute extends `/${infer TPart}` ?
13
+ TPart extends `:${infer TParam}?` ? `${TParam}_O`
14
+ : TPart extends `:${infer TParam}` ? `${TParam}_R`
15
+ : undefined
16
+ : undefined
17
+ ;
18
+
19
+ type GetRouteParams<TRoute extends string> = Exclude<ListRouteParams<TRoute>, undefined>
20
+
21
+ type GetUrlParams<TRoute extends string, TParams extends string = GetRouteParams<TRoute>> = {
22
+ [K in LooseAutocomplete<TParams> as K extends `${infer N}_${string}` ? N : string]: K extends `${string}_O` ? string | undefined : string
23
+ }
24
+
25
+ type expressRequest = Omit<express.Request, 'params'>
26
+
27
+ interface Request<T extends string = string> extends expressRequest {
28
+ user: any
29
+ extras: any
30
+ _onResponseEvent: PlataOnResponseEvent[]
31
+ params: GetUrlParams<T>
32
+ }
33
+
34
+ interface Response extends express.Response {
35
+ oldJson(body?: any): this
36
+ error(error: PlataError | PlataError[]): this
37
+ addOnResponseEvent<T = any>(callback: PlataOnResponseEvent<T>): void
38
+ }
39
+
40
+ type RequestHandler<T extends string = string> = (req: Request<T>, res: Response, next: express.NextFunction) => Promise<any>
41
+
42
+ type HttpPlataMethods =
43
+ "all"
44
+ | "get"
45
+ | "post"
46
+ | "put"
47
+ | "delete"
48
+ | "patch"
49
+ | "options"
50
+ | "head"
51
+ | "checkout"
52
+ | "connect"
53
+ | "copy"
54
+ | "lock"
55
+ | "merge"
56
+ | "mkactivity"
57
+ | "mkcol"
58
+ | "move"
59
+ | "notify"
60
+ | "propfind"
61
+ | "proppatch"
62
+ | "purge"
63
+ | "report"
64
+ | "search"
65
+ | "subscribe"
66
+ | "trace"
67
+ | "unlock"
68
+ | "unsubscribe"
69
+ | "use"
70
+ ;
71
+
72
+ interface CustomHttpMethods {}
73
+
74
+ type HttpMethods =
75
+ HttpPlataMethods
76
+ | keyof CustomHttpMethods
77
+ ;
78
+
79
+ interface Route {
80
+ path?: string
81
+ method: string
82
+ handlers: RequestHandler[],
83
+ swaggerHide?: boolean | undefined
84
+ }
85
+
86
+ type RouterConfig<T extends Record<string, unknown> = Record<string, unknown>> = {
87
+ swaggerHide?: boolean
88
+ routes: Route[]
89
+ httpRoute: string
90
+ mark: T
91
+ }
92
+
93
+ type Router = RouterConfig & {
94
+ [method in HttpMethods]:
95
+ method extends keyof CustomHttpMethods ?
96
+ CustomHttpMethods[method]
97
+ : <T extends string>(path: T | RequestHandler, ...handlers: RequestHandler<T>[]) => void | Promise<void>
98
+ }
99
+
100
+ type RouterBuilder = (r: Router) => Promise<Router>
101
+
102
+ export interface RequiredRoute extends RequiredInterface<RouterBuilder> {
103
+ httpRoute: string
104
+ }
105
+
106
+ type PlataOnResponseEvent<T = any> = (aReq: Request, aRes?: Response, body?: T, error?: PlataError | PlataError[]) => Promise<any>
107
+ }
108
108
  }
@@ -1,121 +1,121 @@
1
- import { Knex } from 'knex'
2
- import moment from 'moment'
3
-
4
- import "@total-typescript/ts-reset/dist/filter-boolean"
5
- import { ModelTemplate } from '++/libs/models'
6
- import { PlataSql } from '..'
7
-
8
-
9
- declare global {
10
- namespace Sql {
11
-
12
- type SqlRawSelectColTypes =
13
- | 'number'
14
- | 'date'
15
- | 'string'
16
- ;
17
-
18
- type SqlRawSelectCamp<T> =
19
- [col: (s: Knex.QueryBuilder<T, any>) => Knex.QueryBuilder<T, any>, type: SqlRawSelectColTypes, required?: 'required' ]
20
- ;
21
-
22
- type SqlRawSelectColTypesValues<V extends SqlRawSelectColTypes> =
23
- V extends 'number' ? number
24
- : V extends 'date' ? Date
25
- : V extends 'string' ? string
26
- : never
27
- ;
28
-
29
- type isRequired<I> =
30
- I extends 'required' ? undefined
31
- : null
32
- ;
33
-
34
- interface SqlRawSelectInfo<T> {
35
- table: string
36
- cols: Record<string, SqlRawSelectCamp<T>>
37
- query: (s: Knex.QueryBuilder<T, any>, t: T) => Knex.QueryBuilder<any, any>,
38
- comments?: Record<string, string>
39
- }
40
-
41
- type ExtractSqlRawSelectInfo<const I extends SqlRawSelectInfo<any>> =
42
- Prettify<{
43
- [K in keyof I['cols']]: Exclude<SqlRawSelectColTypesValues<I['cols'][K][1]> | isRequired<I['cols'][K][2]>, undefined>
44
- }>
45
- ;
46
-
47
- type SqlGetFunc<const T extends ModelTemplate,const D extends boolean = false> =
48
- (builder: Sql.Builder<T['template']>, sql: PlataSql.Driver<D>) => PlataPromise<T['type'][]>
49
- ;
50
-
51
- interface CacheTable {
52
- coluns: Record<string | number | symbol, Knex.ColumnInfo>
53
- date: Date
54
- }
55
-
56
- interface InsertOptions {
57
- ignoreTrigger?: true
58
- comments?: Record<string, string>
59
- }
60
-
61
- interface UpdateOptions {
62
- comments?: Record<string, string>
63
- }
64
-
65
- interface SelectOptions {
66
- comments?: Record<string, string>
67
- }
68
-
69
- type ModelQueryBuilder<T extends Model.Template> =
70
- Knex.QueryBuilder<Model.ExtractTemplateType<T>, Model.ExtractTemplateType<T>[]>
71
- ;
72
-
73
- type Builder<T extends Model.Template> =
74
- (s: ModelQueryBuilder<T>) => ModelQueryBuilder<T>
75
- ;
76
-
77
- interface StreamHandler {
78
- close: <Y>() => PlataPromise<Y>
79
- row: <T>(row: T) => Promise<boolean>
80
- error?: (err) => Promise<void>
81
- }
82
-
83
- type ModelList<T extends Model.Template> = PlataPromise<{
84
- errors: undefined
85
- itens: Model.ExtractTemplateType<T>[]
86
- } | {
87
- errors: PlataError[]
88
- itens: Model.ExtractTemplateTypeNotValid<T>[]
89
- }>
90
-
91
- type EachRowCallBack<T extends Model.Template> =
92
- (x: Model.ModelValidateReturn<T>) => PlataPromise<true>
93
- ;
94
-
95
- type TimeZoneDate = Date & { __type: 'sql' }
96
-
97
- type TransactionFunction<T, Y> = (sql: T) => Promise<Y>
98
-
99
- type TransactionReturn =
100
- | boolean
101
- | string
102
- | number
103
- | Record<string, any>
104
- | ((...args: any[]) => any)
105
- ;
106
- type TransactionResultFunction<T, Y extends TransactionReturn> = (sql: T) => PlataPromise<Y>
107
-
108
- type Joins =
109
- 'JOIN'
110
- | `${
111
- 'LEFT'
112
- | 'CROSS'
113
- | 'INNER'
114
- | 'OUTER'
115
- | 'RIGHT'
116
- | 'FULL OUTER'
117
- | 'LEFT OUTER'
118
- } JOIN`
119
- ;
120
- }
1
+ import { Knex } from 'knex'
2
+ import moment from 'moment'
3
+
4
+ import "@total-typescript/ts-reset/dist/filter-boolean"
5
+ import { ModelTemplate } from '++/libs/models'
6
+ import { PlataSql } from '..'
7
+
8
+
9
+ declare global {
10
+ namespace Sql {
11
+
12
+ type SqlRawSelectColTypes =
13
+ | 'number'
14
+ | 'date'
15
+ | 'string'
16
+ ;
17
+
18
+ type SqlRawSelectCamp<T> =
19
+ [col: (s: Knex.QueryBuilder<T, any>) => Knex.QueryBuilder<T, any>, type: SqlRawSelectColTypes, required?: 'required' ]
20
+ ;
21
+
22
+ type SqlRawSelectColTypesValues<V extends SqlRawSelectColTypes> =
23
+ V extends 'number' ? number
24
+ : V extends 'date' ? Date
25
+ : V extends 'string' ? string
26
+ : never
27
+ ;
28
+
29
+ type isRequired<I> =
30
+ I extends 'required' ? undefined
31
+ : null
32
+ ;
33
+
34
+ interface SqlRawSelectInfo<T> {
35
+ table: string
36
+ cols: Record<string, SqlRawSelectCamp<T>>
37
+ query: (s: Knex.QueryBuilder<T, any>, t: T) => Knex.QueryBuilder<any, any>,
38
+ comments?: Record<string, string>
39
+ }
40
+
41
+ type ExtractSqlRawSelectInfo<const I extends SqlRawSelectInfo<any>> =
42
+ Prettify<{
43
+ [K in keyof I['cols']]: Exclude<SqlRawSelectColTypesValues<I['cols'][K][1]> | isRequired<I['cols'][K][2]>, undefined>
44
+ }>
45
+ ;
46
+
47
+ type SqlGetFunc<const T extends ModelTemplate,const D extends boolean = false> =
48
+ (builder: Sql.Builder<T['template']>, sql: PlataSql.Driver<D>) => PlataPromise<T['type'][]>
49
+ ;
50
+
51
+ interface CacheTable {
52
+ coluns: Record<string | number | symbol, Knex.ColumnInfo>
53
+ date: Date
54
+ }
55
+
56
+ interface InsertOptions {
57
+ ignoreTrigger?: true
58
+ comments?: Record<string, string>
59
+ }
60
+
61
+ interface UpdateOptions {
62
+ comments?: Record<string, string>
63
+ }
64
+
65
+ interface SelectOptions {
66
+ comments?: Record<string, string>
67
+ }
68
+
69
+ type ModelQueryBuilder<T extends Model.Template> =
70
+ Knex.QueryBuilder<Model.ExtractTemplateType<T>, Model.ExtractTemplateType<T>[]>
71
+ ;
72
+
73
+ type Builder<T extends Model.Template> =
74
+ (s: ModelQueryBuilder<T>) => ModelQueryBuilder<T>
75
+ ;
76
+
77
+ interface StreamHandler {
78
+ close: <Y>() => PlataPromise<Y>
79
+ row: <T>(row: T) => Promise<boolean>
80
+ error?: (err) => Promise<void>
81
+ }
82
+
83
+ type ModelList<T extends Model.Template> = PlataPromise<{
84
+ errors: undefined
85
+ itens: Model.ExtractTemplateType<T>[]
86
+ } | {
87
+ errors: PlataError[]
88
+ itens: Model.ExtractTemplateTypeNotValid<T>[]
89
+ }>
90
+
91
+ type EachRowCallBack<T extends Model.Template> =
92
+ (x: Model.ModelValidateReturn<T>) => PlataPromise<true>
93
+ ;
94
+
95
+ type TimeZoneDate = Date & { __type: 'sql' }
96
+
97
+ type TransactionFunction<T, Y> = (sql: T) => Promise<Y>
98
+
99
+ type TransactionReturn =
100
+ | boolean
101
+ | string
102
+ | number
103
+ | Record<string, any>
104
+ | ((...args: any[]) => any)
105
+ ;
106
+ type TransactionResultFunction<T, Y extends TransactionReturn> = (sql: T) => PlataPromise<Y>
107
+
108
+ type Joins =
109
+ 'JOIN'
110
+ | `${
111
+ 'LEFT'
112
+ | 'CROSS'
113
+ | 'INNER'
114
+ | 'OUTER'
115
+ | 'RIGHT'
116
+ | 'FULL OUTER'
117
+ | 'LEFT OUTER'
118
+ } JOIN`
119
+ ;
120
+ }
121
121
  }
@@ -1,23 +1,23 @@
1
- declare namespace SwaggerGen {
2
- interface RouteParameter {
3
- name: string,
4
- required: boolean,
5
- in: 'path',
6
- type: 'string'
7
- }
8
-
9
- interface Route {
10
- httpRoute: string
11
- method: string
12
- params: RouteParameter[]
13
- }
14
-
15
- interface Files {
16
- swaggerHeader: any
17
- route: {
18
- header: any,
19
- body: any,
20
- response: any,
21
- }
22
- }
1
+ declare namespace SwaggerGen {
2
+ interface RouteParameter {
3
+ name: string,
4
+ required: boolean,
5
+ in: 'path',
6
+ type: 'string'
7
+ }
8
+
9
+ interface Route {
10
+ httpRoute: string
11
+ method: string
12
+ params: RouteParameter[]
13
+ }
14
+
15
+ interface Files {
16
+ swaggerHeader: any
17
+ route: {
18
+ header: any,
19
+ body: any,
20
+ response: any,
21
+ }
22
+ }
23
23
  }