pwi-plata-type 0.4.145 → 0.4.147

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 (44) hide show
  1. package/__BUILD__/bin/extras/create-cluster-cli.js +95 -0
  2. package/__BUILD__/bin/extras/create-cluster-cli.js.map +1 -0
  3. package/__BUILD__/bin/extras/create-lib-cli.js +0 -13
  4. package/__BUILD__/bin/extras/create-lib-cli.js.map +1 -1
  5. package/__BUILD__/bin/plata-api.js +1 -1
  6. package/__BUILD__/bin/plata-api.js.map +1 -1
  7. package/__BUILD__/bin/plata-cluster.js +39 -0
  8. package/__BUILD__/bin/plata-cluster.js.map +1 -0
  9. package/__BUILD__/bin/plata-create.js +3 -0
  10. package/__BUILD__/bin/plata-create.js.map +1 -1
  11. package/__BUILD__/index.js +1 -3
  12. package/__BUILD__/index.js.map +1 -1
  13. package/__BUILD__/libs/models/model-template-union.js +9 -0
  14. package/__BUILD__/libs/models/model-template-union.js.map +1 -1
  15. package/__BUILD__/scripts/post-install/api.js +0 -1
  16. package/__BUILD__/scripts/post-install/api.js.map +1 -1
  17. package/__BUILD__/scripts/post-install/cluster.js +24 -0
  18. package/__BUILD__/scripts/post-install/cluster.js.map +1 -0
  19. package/__BUILD__/scripts/post-install/lib.js +0 -1
  20. package/__BUILD__/scripts/post-install/lib.js.map +1 -1
  21. package/package.json +1 -1
  22. package/src/@types/model.d.ts +10 -0
  23. package/src/bin/extras/create-cluster-cli.ts +161 -0
  24. package/src/bin/extras/create-lib-cli.ts +0 -23
  25. package/src/bin/plata-api.ts +1 -1
  26. package/src/bin/plata-cluster.ts +42 -0
  27. package/src/bin/plata-create.ts +3 -0
  28. package/src/index.ts +0 -2
  29. package/src/libs/models/model-template-union.ts +12 -0
  30. package/src/scripts/post-install/api.ts +0 -1
  31. package/src/scripts/post-install/cluster.ts +29 -0
  32. package/src/scripts/post-install/lib.ts +0 -1
  33. package/src/tests/model.union.test.ts +12 -0
  34. package/templates/postinstall/api/Dockerfile +17 -5
  35. package/templates/postinstall/cluster/.vscode/launch.json +21 -0
  36. package/templates/postinstall/cluster/Dockerfile +25 -0
  37. package/templates/postinstall/cluster/configs/env.ts +3 -0
  38. package/templates/postinstall/cluster/envs/debug.env +11 -0
  39. package/templates/postinstall/cluster/envs/homolog.env +11 -0
  40. package/templates/postinstall/cluster/envs/prod.env +11 -0
  41. package/templates/postinstall/cluster/tsconfig.json +25 -0
  42. package/__BUILD__/libs/tasks.js +0 -134
  43. package/__BUILD__/libs/tasks.js.map +0 -1
  44. package/src/libs/tasks.ts +0 -157
@@ -0,0 +1,42 @@
1
+ import { PlataClusterManager } from "++/libs/cluster"
2
+
3
+ export async function main() {
4
+ const cluster = new PlataClusterManager()
5
+
6
+ if (cluster.isPrimary()) {
7
+ const clustersPromise: RequireFolderReturn<{ default: Cluster.WorkerConfig }> = require("@@/clusters/*.*")
8
+ const clusters = await clustersPromise
9
+
10
+ if (clusters.errorID !== undefined) {
11
+ console.log(clusters)
12
+ process.exit(0)
13
+ }
14
+
15
+ const promises: Promise<void>[] = []
16
+
17
+ clusters.forEach(c => {
18
+ const config = c.exports.default
19
+ promises.push(cluster.startCluster(config).then(r => {
20
+ if (r !== null) {
21
+ console.log(r)
22
+ process.exit(0)
23
+ }
24
+ }))
25
+ })
26
+
27
+ await Promise.all(promises)
28
+ } else {
29
+ if (Plata.config._PLATA_WORKER_NAME === undefined) {
30
+ await cluster.send({
31
+ action: 'KILL',
32
+ msg: 'tried to start a Worker without _PLATA_WORKER_NAME'
33
+ })
34
+
35
+ return
36
+ }
37
+
38
+ const c: { default: Cluster.WorkerConfig } = require(`@@/clusters/${Plata.config._PLATA_WORKER_NAME}`)
39
+
40
+ await c.default.onStart()
41
+ }
42
+ }
@@ -17,6 +17,9 @@ export const main = async () => {
17
17
  case 'lib':
18
18
  cli = await (require('++/bin/extras/create-lib-cli') as CreateCli.ImportedCreateCli).cli
19
19
  break
20
+ case 'cluster':
21
+ cli = await (require('++/bin/extras/create-cluster-cli') as CreateCli.ImportedCreateCli).cli
22
+ break
20
23
  default:
21
24
  console.log(`${Plata.ProjectJson.plata_type} not supported`)
22
25
  process.exit(0)
package/src/index.ts CHANGED
@@ -2,7 +2,6 @@ import * as PlataCluster from './libs/cluster'
2
2
  import * as PlataRoutes from './libs/router'
3
3
  import * as PlataTools from './libs/tools'
4
4
  import * as PlataModels from './libs/models'
5
- import * as PlataTasks from './libs/tasks'
6
5
  import * as PlataSwagger from './libs/swagger'
7
6
  import * as PlataSql from './libs/sql'
8
7
  import { PlataFs } from './libs/fs'
@@ -14,7 +13,6 @@ export {
14
13
  PlataTools,
15
14
  PlataModels,
16
15
  PlataSwagger,
17
- PlataTasks,
18
16
  PlataAxios,
19
17
  PlataAxiosUnsafe,
20
18
  PlataSql,
@@ -2,10 +2,16 @@ export class ModelTemplateUnion<const C extends Model.TemplateUnionConfig, const
2
2
  public readonly config: C
3
3
  public readonly templates: R
4
4
  public readonly type: Model.ExtractModelUnionType<C, R>
5
+ public readonly filters: Set<(x: Model.ExtractModelUnionTypeFilter<C, R>) => Model.ExtractModelUnionTypeFilter<C, R>>
5
6
 
6
7
  constructor(config: C, templates: R) {
7
8
  this.config = config
8
9
  this.templates = templates
10
+ this.filters = new Set()
11
+ }
12
+
13
+ public addFilter(filter: (x: Model.ExtractModelUnionTypeFilter<C, R>) => Model.ExtractModelUnionTypeFilter<C, R>) {
14
+ this.filters.add(filter)
9
15
  }
10
16
 
11
17
  public getExtractFromUnion(value: any): PlataResult<Model.ExtractModelUnionReturn<C, R>> {
@@ -42,6 +48,8 @@ export class ModelTemplateUnion<const C extends Model.TemplateUnionConfig, const
42
48
  value = extraced.model.filter(value)
43
49
  }
44
50
 
51
+ this.filters.forEach(f => { value = f(value)})
52
+
45
53
  return value
46
54
  }
47
55
 
@@ -55,6 +63,10 @@ export class ModelTemplateUnion<const C extends Model.TemplateUnionConfig, const
55
63
  }
56
64
  }
57
65
 
66
+ if (!skipFilter) {
67
+ this.filters.forEach(f => { value = f(value) })
68
+ }
69
+
58
70
  const result = await extraced.model.validate(extraced.value, skipFilter)
59
71
 
60
72
  if (result.errors !== undefined) {
@@ -8,7 +8,6 @@ export async function install(tools: PlataFs.CliTools, projectPackageJson: any)
8
8
  promises.push(tools.createFolderToDest('libs'))
9
9
  promises.push(tools.createFolderToDest('models'))
10
10
  promises.push(tools.createFolderToDest('custom'))
11
- promises.push(tools.createFolderToDest('tasks'))
12
11
  promises.push(tools.createFolderToDest('@types'))
13
12
  promises.push(tools.createFolderToDest('cmds'))
14
13
 
@@ -0,0 +1,29 @@
1
+ import { PlataFs } from "++/libs/fs"
2
+
3
+ export async function install(tools: PlataFs.CliTools, projectPackageJson: any) {
4
+ const promises: Promise<void>[] = []
5
+
6
+ promises.push(tools.createFolderToDest('clusters'))
7
+ promises.push(tools.createFolderToDest('libs'))
8
+ promises.push(tools.createFolderToDest('models'))
9
+ promises.push(tools.createFolderToDest('@types'))
10
+ promises.push(tools.createFolderToDest('cmds'))
11
+
12
+ promises.push(tools.copyFolderToDest('configs'))
13
+ promises.push(tools.copyFolderToDest('envs'))
14
+ promises.push(tools.syncFolder('.vscode'))
15
+
16
+ promises.push(tools.copyFileToDest('Dockerfile'))
17
+ promises.push(tools.syncFileToDest('tsconfig.json'))
18
+
19
+ projectPackageJson.scripts.start = 'plata-runtime + plata-cluster'
20
+ projectPackageJson.scripts.create = 'plata-runtime --skip-recompile + plata-create'
21
+ projectPackageJson.scripts. build = 'npx tsc -p . && plata-runtime + plata-build'
22
+
23
+ projectPackageJson.main = undefined
24
+
25
+ await Promise.all(promises)
26
+
27
+ return projectPackageJson
28
+
29
+ }
@@ -5,7 +5,6 @@ export async function install(tools: PlataFs.CliTools, projectPackageJson: any)
5
5
 
6
6
  promises.push(tools.createFolderToDest('clusters'))
7
7
  promises.push(tools.createFolderToDest('libs'))
8
- promises.push(tools.createFolderToDest('tasks'))
9
8
  promises.push(tools.createFolderToDest('@types'))
10
9
  promises.push(tools.createFolderToDest('bin'))
11
10
  promises.push(tools.createFolderToDest('configs'))
@@ -15,6 +15,7 @@ describe('PlataModels.union', () => {
15
15
  })
16
16
 
17
17
  const modelTemplateEnv = new PlataModels.ModelTemplateEnv({
18
+ test_union: [ PlataModels.Required(), PlataModels.VarChar(Infinity) ],
18
19
  ENV_enum: [ PlataModels.Enum([ 0, 1 ]) ],
19
20
  ENV_decimal: [ PlataModels.Decimal(2,2) ],
20
21
  ENV_intMin: [ PlataModels.Int(5) ],
@@ -25,6 +26,7 @@ describe('PlataModels.union', () => {
25
26
  })
26
27
 
27
28
  const modelTemplate = new PlataModels.ModelTemplate({
29
+ test_union: [ PlataModels.Required(), PlataModels.VarChar(Infinity) ],
28
30
  enum: [ PlataModels.Enum([ 0,1 ]) ],
29
31
  stringDateTime: [ PlataModels.StringDateTime() ],
30
32
  dateTime: [ PlataModels.DateTime() ],
@@ -44,7 +46,14 @@ describe('PlataModels.union', () => {
44
46
  modelTemplateEnv,
45
47
  })
46
48
 
49
+ modelUnion.addFilter(x => {
50
+ x.test_union = x.test_union === true ? '1' : null
51
+
52
+ return x
53
+ })
54
+
47
55
  const getTemplateOkay = () => ({
56
+ test_union: true,
48
57
  key: 'modelTemplate',
49
58
  enum: 0,
50
59
  stringDateTime: '2022-12-04T02:06:22',
@@ -62,6 +71,7 @@ describe('PlataModels.union', () => {
62
71
 
63
72
  const getTemplateNotOkay = () => ({
64
73
  key: 'modelTemplate',
74
+ test_union: false,
65
75
  enum: 2,
66
76
  stringDateTime: '',
67
77
  dateTime: '',
@@ -78,6 +88,7 @@ describe('PlataModels.union', () => {
78
88
 
79
89
  const getEnvOkay = () => ({
80
90
  key: 'modelTemplateEnv',
91
+ test_union: true,
81
92
  ENV_enum: `${0}`,
82
93
  ENV_decimal: `${22.22}`,
83
94
  ENV_intMin: `${5}`,
@@ -89,6 +100,7 @@ describe('PlataModels.union', () => {
89
100
 
90
101
  const getEnvNotOkay = () => ({
91
102
  key: 'modelTemplateEnv',
103
+ test_union: false,
92
104
  ENV_enum: `${2}`,
93
105
  ENV_decimal: `${222.222}`,
94
106
  ENV_intMin: `${4}`,
@@ -1,13 +1,25 @@
1
- FROM node:16-alpine
1
+ FROM node:lts-alpine AS BUILD
2
2
 
3
3
  WORKDIR /usr/src/app
4
4
 
5
- COPY package*.json ./
5
+ COPY . ./
6
6
 
7
- EXPOSE 3050
7
+ ARG BUILD_ENV
8
+ ENV BUILD_ENV=${BUILD_ENV:-docker}
8
9
 
9
- RUN npm ci --only=production
10
+ RUN npm i
11
+ RUN npm run build
12
+ RUN cp package-lock.json /usr/src/app/__RELEASE__
13
+ WORKDIR /usr/src/app/__RELEASE__
10
14
 
11
- COPY . ./
15
+ RUN npm i
16
+
17
+ FROM node:lts-alpine AS RUNTIME
18
+
19
+ WORKDIR /usr/src/app
20
+
21
+ COPY --from=BUILD /usr/src/app/__RELEASE__ /usr/src/app/
22
+
23
+ EXPOSE 3050
12
24
 
13
25
  CMD [ "npm", "start" ]
@@ -0,0 +1,21 @@
1
+ {
2
+ // Use IntelliSense to learn about possible attributes.
3
+ // Hover to view descriptions of existing attributes.
4
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
+ "version": "0.2.0",
6
+ "configurations": [
7
+ {
8
+ "name": "DEV",
9
+ "request": "launch",
10
+ "runtimeArgs": [
11
+ "run-script",
12
+ "start"
13
+ ],
14
+ "runtimeExecutable": "npm",
15
+ "skipFiles": [
16
+ "<node_internals>/**"
17
+ ],
18
+ "type": "node"
19
+ }
20
+ ]
21
+ }
@@ -0,0 +1,25 @@
1
+ FROM node:lts-alpine AS BUILD
2
+
3
+ WORKDIR /usr/src/app
4
+
5
+ COPY . ./
6
+
7
+ ARG BUILD_ENV
8
+ ENV BUILD_ENV=${BUILD_ENV:-docker}
9
+
10
+ RUN npm i
11
+ RUN npm run build
12
+ RUN cp package-lock.json /usr/src/app/__RELEASE__
13
+ WORKDIR /usr/src/app/__RELEASE__
14
+
15
+ RUN npm i
16
+
17
+ FROM node:lts-alpine AS RUNTIME
18
+
19
+ WORKDIR /usr/src/app
20
+
21
+ COPY --from=BUILD /usr/src/app/__RELEASE__ /usr/src/app/
22
+
23
+ EXPOSE 3050
24
+
25
+ CMD [ "npm", "start" ]
@@ -0,0 +1,3 @@
1
+ export const envConfig: PlataEnvConfig = {
2
+ env: 'debug'
3
+ }
@@ -0,0 +1,11 @@
1
+ # Ambiente:
2
+ ENV=debug
3
+
4
+ # Tira timezone das datas que chegam para API
5
+ TZ=Etc/GMT
6
+
7
+ # Configurações da plata:
8
+ PORT=3050
9
+ _PLATA_SQL_SHOWQUERY=1
10
+ _PLATA_SQL_CACHETABLE=0
11
+ _PLATA_SQL_CACHETABLETIME=0
@@ -0,0 +1,11 @@
1
+ # Ambiente:
2
+ ENV=homolog
3
+
4
+ # Tira timezone das datas que chegam para API
5
+ TZ=Etc/GMT
6
+
7
+ # Configurações da plata:
8
+ PORT=3050
9
+ _PLATA_SQL_SHOWQUERY=1
10
+ _PLATA_SQL_CACHETABLE=1
11
+ _PLATA_SQL_CACHETABLETIME=60
@@ -0,0 +1,11 @@
1
+ # Ambiente:
2
+ ENV=prod
3
+
4
+ # Tira timezone das datas que chegam para API
5
+ TZ=Etc/GMT
6
+
7
+ # Configurações da plata:
8
+ PORT=3050
9
+ _PLATA_SQL_SHOWQUERY=0
10
+ _PLATA_SQL_CACHETABLE=1
11
+ _PLATA_SQL_CACHETABLETIME=60
@@ -0,0 +1,25 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "module": "CommonJS",
5
+ "lib": ["esnext"],
6
+ "declaration": false,
7
+ "allowJs": true,
8
+ "outDir": "./__BUILD__",
9
+ "esModuleInterop": true,
10
+ "resolveJsonModule": true,
11
+ "strictNullChecks": true,
12
+ "sourceMap": true,
13
+ "types": [ "pwi-plata-type", "node" ],
14
+ "noEmit": true,
15
+ "skipLibCheck": true,
16
+ "forceConsistentCasingInFileNames": true,
17
+ "baseUrl": ".",
18
+ "paths": {
19
+ "@@/*": [ "./*" ]
20
+ }
21
+ },
22
+ "include": [
23
+ "./**/*"
24
+ ]
25
+ }
@@ -1,134 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.callTask = exports.loadTasks = exports.buildTask = exports.buildTaskCallBack = exports.getTasksNodeProcess = void 0;
27
- const schedule = __importStar(require("node-schedule"));
28
- const tools_1 = require("./tools");
29
- function getTasksNodeProcess() {
30
- const p = process;
31
- if (p._plata === undefined) {
32
- p._plata = {
33
- tasks: []
34
- };
35
- }
36
- if (p._plata.tasks === undefined) {
37
- p._plata.tasks = [];
38
- }
39
- return p._plata;
40
- }
41
- exports.getTasksNodeProcess = getTasksNodeProcess;
42
- function buildTaskCallBack(task) {
43
- return async (fireDate) => {
44
- let status = null;
45
- const data = new Date();
46
- const promise = task.callback(fireDate).then(s => status = s, err => status = {
47
- errorID: 'PBT0001',
48
- msg: `Erro ao rodar a task ${task.name}`,
49
- error: err
50
- });
51
- const i = getTasksNodeProcess().tasks.findIndex(v => v.name === task.name);
52
- await promise;
53
- if (i !== -1) {
54
- getTasksNodeProcess().tasks[i].lastReturn = status;
55
- getTasksNodeProcess().tasks[i].lastRun = data;
56
- }
57
- };
58
- }
59
- exports.buildTaskCallBack = buildTaskCallBack;
60
- async function buildTask(task) {
61
- if (task.onPlataStart) {
62
- let status = null;
63
- try {
64
- status = await task.callback(new Date());
65
- }
66
- catch (e) {
67
- status = {
68
- errorID: 'PBT0002',
69
- msg: `Erro ao rodar a task ${task.name}`,
70
- error: e
71
- };
72
- }
73
- getTasksNodeProcess().tasks.push({
74
- ...task,
75
- lastRun: new Date(),
76
- lastReturn: status
77
- });
78
- }
79
- else {
80
- getTasksNodeProcess().tasks.push({
81
- ...task,
82
- lastRun: null,
83
- lastReturn: null
84
- });
85
- }
86
- if (task.rule === null) {
87
- return null;
88
- }
89
- return schedule.scheduleJob(task.rule, buildTaskCallBack(task));
90
- }
91
- exports.buildTask = buildTask;
92
- async function loadTasks() {
93
- const tasks = [];
94
- const task = await tools_1.PlataRequire.requireFolderAsync(tools_1.PlataDirs.getProjectDirTasks());
95
- if (task.errorID !== undefined) {
96
- return task;
97
- }
98
- for (const t of task) {
99
- if (t.errorID !== undefined) {
100
- return t;
101
- }
102
- const j = await buildTask(t.exports);
103
- if (j !== null)
104
- tasks.push(j);
105
- }
106
- return tasks;
107
- }
108
- exports.loadTasks = loadTasks;
109
- async function callTask(name) {
110
- const i = getTasksNodeProcess().tasks.findIndex(v => v.name === name);
111
- if (i === -1) {
112
- return {
113
- errorID: 'PBT0003',
114
- msg: `Task: ${name} não existe`,
115
- };
116
- }
117
- const data = new Date();
118
- return getTasksNodeProcess().tasks[i].callback(data).then(status => {
119
- getTasksNodeProcess().tasks[i].lastReturn = status;
120
- getTasksNodeProcess().tasks[i].lastRun = data;
121
- return status;
122
- }, err => {
123
- const status = {
124
- errorID: 'PBT0004',
125
- msg: `Erro ao rodar a task ${name}`,
126
- error: err
127
- };
128
- getTasksNodeProcess().tasks[i].lastReturn = status;
129
- getTasksNodeProcess().tasks[i].lastRun = data;
130
- return status;
131
- });
132
- }
133
- exports.callTask = callTask;
134
- //# sourceMappingURL=tasks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/libs/tasks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAAyC;AACzC,mCAA6E;AAyB7E,SAAgB,mBAAmB;IAC/B,MAAM,CAAC,GAAG,OAA6B,CAAA;IAEvC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;QACxB,CAAC,CAAC,MAAM,GAAG;YACP,KAAK,EAAE,EAAE;SACZ,CAAA;KACJ;IAED,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;QAC9B,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAA;KACtB;IAED,OAAO,CAAC,CAAC,MAAM,CAAA;AACnB,CAAC;AAdD,kDAcC;AAED,SAAgB,iBAAiB,CAAC,IAAe;IAC7C,OAAO,KAAK,EAAE,QAAc,EAAE,EAAE;QAC5B,IAAI,MAAM,GAAsB,IAAI,CAAA;QACpC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;QAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EACf,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG;YACZ,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,wBAAwB,IAAI,CAAC,IAAI,EAAE;YACxC,KAAK,EAAE,GAAG;SACb,CACJ,CAAA;QAED,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAA;QAE1E,MAAM,OAAO,CAAA;QAEb,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YACV,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,MAAM,CAAA;YAClD,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAA;SAChD;IACL,CAAC,CAAA;AACL,CAAC;AAvBD,8CAuBC;AAEM,KAAK,UAAU,SAAS,CAAC,IAAe;IAC3C,IAAI,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,MAAM,GAAsB,IAAI,CAAA;QAEpC,IAAG;YACC,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;SAC3C;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,GAAG;gBACL,OAAO,EAAE,SAAS;gBAClB,GAAG,EAAE,wBAAwB,IAAI,CAAC,IAAI,EAAE;gBACxC,KAAK,EAAE,CAAC;aACX,CAAA;SACJ;QAED,mBAAmB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7B,GAAG,IAAI;YACP,OAAO,EAAE,IAAI,IAAI,EAAE;YACnB,UAAU,EAAE,MAAM;SACrB,CAAC,CAAA;KACL;SAAM;QACH,mBAAmB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7B,GAAG,IAAI;YACP,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;SACnB,CAAC,CAAA;KACL;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;QACpB,OAAO,IAAI,CAAA;KACd;IAED,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAW,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAA;AAC1E,CAAC;AAhCD,8BAgCC;AAEM,KAAK,UAAU,SAAS;IAC3B,MAAM,KAAK,GAAmB,EAAE,CAAA;IAEhC,MAAM,IAAI,GAAG,MAAM,oBAAY,CAAC,kBAAkB,CAC9C,iBAAS,CAAC,kBAAkB,EAAE,CACjC,CAAA;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;QAC5B,OAAO,IAAI,CAAA;KACd;IAED,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;QAClB,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE;YACzB,OAAO,CAAC,CAAA;SACX;QACD,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAEpC,IAAI,CAAC,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAChC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC;AArBD,8BAqBC;AAEM,KAAK,UAAU,QAAQ,CAAC,IAAY;IACvC,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAErE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACV,OAAO;YACH,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,SAAS,IAAI,aAAa;SAClC,CAAA;KACJ;IAED,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;IAEvB,OAAO,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CACrD,MAAM,CAAC,EAAE;QACL,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,MAAM,CAAA;QAClD,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAA;QAE7C,OAAO,MAAM,CAAA;IACjB,CAAC,EACD,GAAG,CAAC,EAAE;QACF,MAAM,MAAM,GAAG;YACX,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,wBAAwB,IAAI,EAAE;YACnC,KAAK,EAAE,GAAG;SACb,CAAA;QAED,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,MAAM,CAAA;QAClD,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAA;QAE7C,OAAO,MAAM,CAAA;IACjB,CAAC,CACJ,CAAA;AACL,CAAC;AAhCD,4BAgCC"}
package/src/libs/tasks.ts DELETED
@@ -1,157 +0,0 @@
1
- import * as schedule from 'node-schedule'
2
- import { PlataResultado, PlataRequire, PlataDirs, PlataError } from './tools'
3
-
4
- export type TaskRule = schedule.RecurrenceRule | schedule.RecurrenceSpecDateRange | schedule.RecurrenceSpecObjLit | Date | string | number
5
- export type TaskCallback = (fireDate: Date) => Promise<PlataError | null>
6
-
7
- export interface PlataTask {
8
- name: string
9
- rule: TaskRule | null
10
- onPlataStart: boolean
11
- callback: TaskCallback
12
- }
13
-
14
- export interface StatusPlataTask extends PlataTask {
15
- lastRun: Date | null
16
- lastReturn: PlataError | null
17
- }
18
-
19
- export interface PlataTasksProcess {
20
- tasks: StatusPlataTask[]
21
- }
22
-
23
- export interface _PlataTasksProcess extends NodeJS.Process {
24
- _plata?: PlataTasksProcess
25
- }
26
-
27
- export function getTasksNodeProcess(): PlataTasksProcess {
28
- const p = process as _PlataTasksProcess
29
-
30
- if (p._plata === undefined) {
31
- p._plata = {
32
- tasks: []
33
- }
34
- }
35
-
36
- if (p._plata.tasks === undefined) {
37
- p._plata.tasks = []
38
- }
39
-
40
- return p._plata
41
- }
42
-
43
- export function buildTaskCallBack(task: PlataTask): schedule.JobCallback {
44
- return async (fireDate: Date) => {
45
- let status: PlataError | null = null
46
- const data = new Date()
47
-
48
- const promise = task.callback(fireDate).then(
49
- s => status = s,
50
- err => status = {
51
- errorID: 'PBT0001',
52
- msg: `Erro ao rodar a task ${task.name}`,
53
- error: err
54
- }
55
- )
56
-
57
- const i = getTasksNodeProcess().tasks.findIndex(v => v.name === task.name)
58
-
59
- await promise
60
-
61
- if (i !== -1) {
62
- getTasksNodeProcess().tasks[i].lastReturn = status
63
- getTasksNodeProcess().tasks[i].lastRun = data
64
- }
65
- }
66
- }
67
-
68
- export async function buildTask(task: PlataTask): Promise<schedule.Job | null> {
69
- if (task.onPlataStart) {
70
- let status: PlataError | null = null
71
-
72
- try{
73
- status = await task.callback(new Date())
74
- } catch (e) {
75
- status = {
76
- errorID: 'PBT0002',
77
- msg: `Erro ao rodar a task ${task.name}`,
78
- error: e
79
- }
80
- }
81
-
82
- getTasksNodeProcess().tasks.push({
83
- ...task,
84
- lastRun: new Date(),
85
- lastReturn: status
86
- })
87
- } else {
88
- getTasksNodeProcess().tasks.push({
89
- ...task,
90
- lastRun: null,
91
- lastReturn: null
92
- })
93
- }
94
-
95
- if (task.rule === null) {
96
- return null
97
- }
98
-
99
- return schedule.scheduleJob(task.rule as any, buildTaskCallBack(task))
100
- }
101
-
102
- export async function loadTasks(): Promise<PlataResultado<schedule.Job[]>> {
103
- const tasks: schedule.Job[] = []
104
-
105
- const task = await PlataRequire.requireFolderAsync<PlataTask>(
106
- PlataDirs.getProjectDirTasks()
107
- )
108
-
109
- if (task.errorID !== undefined) {
110
- return task
111
- }
112
-
113
- for (const t of task) {
114
- if (t.errorID !== undefined) {
115
- return t
116
- }
117
- const j = await buildTask(t.exports)
118
-
119
- if (j !== null) tasks.push(j)
120
- }
121
-
122
- return tasks
123
- }
124
-
125
- export async function callTask(name: string): Promise<PlataError | null> {
126
- const i = getTasksNodeProcess().tasks.findIndex(v => v.name === name)
127
-
128
- if (i === -1) {
129
- return {
130
- errorID: 'PBT0003',
131
- msg: `Task: ${name} não existe`,
132
- }
133
- }
134
-
135
- const data = new Date()
136
-
137
- return getTasksNodeProcess().tasks[i].callback(data).then(
138
- status => {
139
- getTasksNodeProcess().tasks[i].lastReturn = status
140
- getTasksNodeProcess().tasks[i].lastRun = data
141
-
142
- return status
143
- },
144
- err => {
145
- const status = {
146
- errorID: 'PBT0004',
147
- msg: `Erro ao rodar a task ${name}`,
148
- error: err
149
- }
150
-
151
- getTasksNodeProcess().tasks[i].lastReturn = status
152
- getTasksNodeProcess().tasks[i].lastRun = data
153
-
154
- return status
155
- }
156
- )
157
- }