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.
- package/__BUILD__/bin/extras/create-cluster-cli.js +95 -0
- package/__BUILD__/bin/extras/create-cluster-cli.js.map +1 -0
- package/__BUILD__/bin/extras/create-lib-cli.js +0 -13
- package/__BUILD__/bin/extras/create-lib-cli.js.map +1 -1
- package/__BUILD__/bin/plata-api.js +1 -1
- package/__BUILD__/bin/plata-api.js.map +1 -1
- package/__BUILD__/bin/plata-cluster.js +39 -0
- package/__BUILD__/bin/plata-cluster.js.map +1 -0
- package/__BUILD__/bin/plata-create.js +3 -0
- package/__BUILD__/bin/plata-create.js.map +1 -1
- package/__BUILD__/index.js +1 -3
- package/__BUILD__/index.js.map +1 -1
- package/__BUILD__/libs/models/model-template-union.js +9 -0
- package/__BUILD__/libs/models/model-template-union.js.map +1 -1
- package/__BUILD__/scripts/post-install/api.js +0 -1
- package/__BUILD__/scripts/post-install/api.js.map +1 -1
- package/__BUILD__/scripts/post-install/cluster.js +24 -0
- package/__BUILD__/scripts/post-install/cluster.js.map +1 -0
- package/__BUILD__/scripts/post-install/lib.js +0 -1
- package/__BUILD__/scripts/post-install/lib.js.map +1 -1
- package/package.json +1 -1
- package/src/@types/model.d.ts +10 -0
- package/src/bin/extras/create-cluster-cli.ts +161 -0
- package/src/bin/extras/create-lib-cli.ts +0 -23
- package/src/bin/plata-api.ts +1 -1
- package/src/bin/plata-cluster.ts +42 -0
- package/src/bin/plata-create.ts +3 -0
- package/src/index.ts +0 -2
- package/src/libs/models/model-template-union.ts +12 -0
- package/src/scripts/post-install/api.ts +0 -1
- package/src/scripts/post-install/cluster.ts +29 -0
- package/src/scripts/post-install/lib.ts +0 -1
- package/src/tests/model.union.test.ts +12 -0
- package/templates/postinstall/api/Dockerfile +17 -5
- package/templates/postinstall/cluster/.vscode/launch.json +21 -0
- package/templates/postinstall/cluster/Dockerfile +25 -0
- package/templates/postinstall/cluster/configs/env.ts +3 -0
- package/templates/postinstall/cluster/envs/debug.env +11 -0
- package/templates/postinstall/cluster/envs/homolog.env +11 -0
- package/templates/postinstall/cluster/envs/prod.env +11 -0
- package/templates/postinstall/cluster/tsconfig.json +25 -0
- package/__BUILD__/libs/tasks.js +0 -134
- package/__BUILD__/libs/tasks.js.map +0 -1
- 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
|
+
}
|
package/src/bin/plata-create.ts
CHANGED
|
@@ -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:
|
|
1
|
+
FROM node:lts-alpine AS BUILD
|
|
2
2
|
|
|
3
3
|
WORKDIR /usr/src/app
|
|
4
4
|
|
|
5
|
-
COPY
|
|
5
|
+
COPY . ./
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
ARG BUILD_ENV
|
|
8
|
+
ENV BUILD_ENV=${BUILD_ENV:-docker}
|
|
8
9
|
|
|
9
|
-
RUN npm
|
|
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
|
-
|
|
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,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
|
+
}
|
package/__BUILD__/libs/tasks.js
DELETED
|
@@ -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":"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"}
|
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
|
-
}
|