@diia-inhouse/scaffold 2.17.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/LICENCE.md +287 -0
- package/README.md +93 -0
- package/dist/_sharedTemplates/actionTest.t +36 -0
- package/dist/_templates/add/action/01-action.ts.t +34 -0
- package/dist/_templates/add/action/01-test.ts.t +37 -0
- package/dist/_templates/add/action/01.interface.ts.t +15 -0
- package/dist/_templates/add/action/02-scriptRunner.t +3 -0
- package/dist/_templates/add/action/dict.js +18 -0
- package/dist/_templates/add/action/dict.js.map +1 -0
- package/dist/_templates/add/action/prompt.js +88 -0
- package/dist/_templates/add/action/prompt.js.map +1 -0
- package/dist/_templates/add/eventListener/01-event.ts.t +18 -0
- package/dist/_templates/add/eventListener/01-interface.ts.t +5 -0
- package/dist/_templates/add/eventListener/02-scriptRunner.ts.t +3 -0
- package/dist/_templates/add/eventListener/prompt.js +22 -0
- package/dist/_templates/add/eventListener/prompt.js.map +1 -0
- package/dist/_templates/add/externalEventListener/01-event.ts.t +16 -0
- package/dist/_templates/add/externalEventListener/01-interface.ts.t +5 -0
- package/dist/_templates/add/externalEventListener/02-scriptRunner.t +3 -0
- package/dist/_templates/add/externalEventListener/prompt.js +22 -0
- package/dist/_templates/add/externalEventListener/prompt.js.map +1 -0
- package/dist/_templates/add/generator/01-interface.ts.t +7 -0
- package/dist/_templates/add/generator/01-prompt.ts.t +19 -0
- package/dist/_templates/add/generator/02-scriptRunner.ts.t +7 -0
- package/dist/_templates/add/generator/03-scriptRunner.ts.t +3 -0
- package/dist/_templates/add/generator/prompt.js +45 -0
- package/dist/_templates/add/generator/prompt.js.map +1 -0
- package/dist/_templates/add/model/01-interfaces.model.ts.t +8 -0
- package/dist/_templates/add/model/01-model.ts.t +16 -0
- package/dist/_templates/add/model/02-scriptRunner.ts.t +3 -0
- package/dist/_templates/add/model/prompt.js +20 -0
- package/dist/_templates/add/model/prompt.js.map +1 -0
- package/dist/_templates/add/scheduledTask/01-task.ts.t +12 -0
- package/dist/_templates/add/scheduledTask/02-scriptRunner.t +3 -0
- package/dist/_templates/add/scheduledTask/prompt.js +20 -0
- package/dist/_templates/add/scheduledTask/prompt.js.map +1 -0
- package/dist/_templates/add/task/01-interface.ts.t +5 -0
- package/dist/_templates/add/task/01-task.ts.t +29 -0
- package/dist/_templates/add/task/02-scriptRunner.t +5 -0
- package/dist/_templates/add/task/prompt.js +32 -0
- package/dist/_templates/add/task/prompt.js.map +1 -0
- package/dist/_templates/add/test/01-test.ts.t +5 -0
- package/dist/_templates/add/test/02-scriptRunner.ts.t +3 -0
- package/dist/_templates/add/test/prompt.js +48 -0
- package/dist/_templates/add/test/prompt.js.map +1 -0
- package/dist/_templates/init/matchers/01-index.ts.t +5 -0
- package/dist/_templates/init/matchers/01-inject-setup.ts.t +8 -0
- package/dist/_templates/init/matchers/01-jest.d.ts.t +16 -0
- package/dist/_templates/init/matchers/01-matcher.ts.t +5 -0
- package/dist/_templates/init/matchers/01-new-setup.ts.t +8 -0
- package/dist/_templates/init/matchers/01-tsconfig.json.t +6 -0
- package/dist/_templates/init/matchers/02-scriptRunner.ts.t +3 -0
- package/dist/_templates/init/matchers/prompt.js +77 -0
- package/dist/_templates/init/matchers/prompt.js.map +1 -0
- package/dist/_templates/init/package/01-.eslintignore.t +7 -0
- package/dist/_templates/init/package/01-.gitignore.t +8 -0
- package/dist/_templates/init/package/01-.gitlab-ci.yml.t +13 -0
- package/dist/_templates/init/package/01-.prettierignore.t +5 -0
- package/dist/_templates/init/package/01-package.json.t +48 -0
- package/dist/_templates/init/package/01-readme.md.t +7 -0
- package/dist/_templates/init/package/01-src.index.ts.t +7 -0
- package/dist/_templates/init/package/01-test.tsconfig.json.t +19 -0
- package/dist/_templates/init/package/01-test.unit.index.ts.t +13 -0
- package/dist/_templates/init/package/01-tsconfig.json.t +22 -0
- package/dist/_templates/init/package/02-scriptRunner.t +7 -0
- package/dist/_templates/init/package/prompt.js +26 -0
- package/dist/_templates/init/package/prompt.js.map +1 -0
- package/dist/_templates/init/service/01-.env.example.t +59 -0
- package/dist/_templates/init/service/01-.env.test.t +4 -0
- package/dist/_templates/init/service/01-.eslintignore.t +8 -0
- package/dist/_templates/init/service/01-.gitignore.t +11 -0
- package/dist/_templates/init/service/01-.gitlab-ci.yml.t +20 -0
- package/dist/_templates/init/service/01-.prettierignore.t +6 -0
- package/dist/_templates/init/service/01-dockerfile.t +38 -0
- package/dist/_templates/init/service/01-migrate-mongo-config.ts.t +8 -0
- package/dist/_templates/init/service/01-migrations.sample-migration.ts.t +18 -0
- package/dist/_templates/init/service/01-migrations.tsconfig.json.t +21 -0
- package/dist/_templates/init/service/01-package.json.t +68 -0
- package/dist/_templates/init/service/01-proto.service.proto.t +22 -0
- package/dist/_templates/init/service/01-readme.md.t +7 -0
- package/dist/_templates/init/service/01-src.actions.v1.getAddResult.ts.t +29 -0
- package/dist/_templates/init/service/01-src.bootstrap.ts.t +18 -0
- package/dist/_templates/init/service/01-src.config.ts.t +160 -0
- package/dist/_templates/init/service/01-src.deps.ts.t +14 -0
- package/dist/_templates/init/service/01-src.index.ts.t +14 -0
- package/dist/_templates/init/service/01-src.interfaces.actions.v1.getAddResult.ts.t +13 -0
- package/dist/_templates/init/service/01-src.interfaces.config.ts.t +7 -0
- package/dist/_templates/init/service/01-src.interfaces.deps.ts.t +9 -0
- package/dist/_templates/init/service/01-tests.integration.actionts.getAddResult.spec.ts.t +39 -0
- package/dist/_templates/init/service/01-tests.interfaces.ts.t +9 -0
- package/dist/_templates/init/service/01-tests.jest.d.ts.t +5 -0
- package/dist/_templates/init/service/01-tests.tsconfig.json.t +23 -0
- package/dist/_templates/init/service/01-tests.utils.getApp.ts.t +26 -0
- package/dist/_templates/init/service/01-tests.utils.getDeps.ts.t +23 -0
- package/dist/_templates/init/service/01-tsconfig.json.t +25 -0
- package/dist/_templates/init/service/02-scriptRunner.ts.t +7 -0
- package/dist/_templates/init/service/prompt.js +36 -0
- package/dist/_templates/init/service/prompt.js.map +1 -0
- package/dist/bin.js +6 -0
- package/dist/bin.js.map +1 -0
- package/dist/depsNames.js +45 -0
- package/dist/depsNames.js.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/_templates/add/action.js +3 -0
- package/dist/interfaces/_templates/add/action.js.map +1 -0
- package/dist/interfaces/_templates/add/eventListener.js +3 -0
- package/dist/interfaces/_templates/add/eventListener.js.map +1 -0
- package/dist/interfaces/_templates/add/externalEventListener.js +3 -0
- package/dist/interfaces/_templates/add/externalEventListener.js.map +1 -0
- package/dist/interfaces/_templates/add/generator.js +3 -0
- package/dist/interfaces/_templates/add/generator.js.map +1 -0
- package/dist/interfaces/_templates/add/model.js +3 -0
- package/dist/interfaces/_templates/add/model.js.map +1 -0
- package/dist/interfaces/_templates/add/scheduledTask.js +3 -0
- package/dist/interfaces/_templates/add/scheduledTask.js.map +1 -0
- package/dist/interfaces/_templates/add/task.js +3 -0
- package/dist/interfaces/_templates/add/task.js.map +1 -0
- package/dist/interfaces/_templates/add/test.js +3 -0
- package/dist/interfaces/_templates/add/test.js.map +1 -0
- package/dist/interfaces/_templates/init/matcher.js +9 -0
- package/dist/interfaces/_templates/init/matcher.js.map +1 -0
- package/dist/interfaces/_templates/init/package.js +3 -0
- package/dist/interfaces/_templates/init/package.js.map +1 -0
- package/dist/interfaces/_templates/init/service.js +11 -0
- package/dist/interfaces/_templates/init/service.js.map +1 -0
- package/dist/interfaces/index.js +3 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/prompt/autocomplete.js +3 -0
- package/dist/interfaces/prompt/autocomplete.js.map +1 -0
- package/dist/interfaces/prompt/multiselect.js +3 -0
- package/dist/interfaces/prompt/multiselect.js.map +1 -0
- package/dist/interfaces/prompt/select.js +9 -0
- package/dist/interfaces/prompt/select.js.map +1 -0
- package/dist/prompt/autocomplete.js +12 -0
- package/dist/prompt/autocomplete.js.map +1 -0
- package/dist/prompt/index.js +12 -0
- package/dist/prompt/index.js.map +1 -0
- package/dist/prompt/select/baseSelect.js +12 -0
- package/dist/prompt/select/baseSelect.js.map +1 -0
- package/dist/prompt/select/multiselect.js +15 -0
- package/dist/prompt/select/multiselect.js.map +1 -0
- package/dist/prompt/select/yesNoSelect.js +17 -0
- package/dist/prompt/select/yesNoSelect.js.map +1 -0
- package/dist/utils.js +29 -0
- package/dist/utils.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: <%= packageName %>/package.json
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
{
|
|
6
|
+
"name": "<%= packageName %>",
|
|
7
|
+
"version": "1.0.0",
|
|
8
|
+
"description": "<%= description %>",
|
|
9
|
+
"author": "diia-team",
|
|
10
|
+
"main": "dist/index.js",
|
|
11
|
+
"types": "dist/types/index.d.ts",
|
|
12
|
+
"engines": {
|
|
13
|
+
"node": ">=18"
|
|
14
|
+
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"prebuild": "rimraf dist",
|
|
18
|
+
"prepare": "npm run build",
|
|
19
|
+
"semantic-release": "semantic-release",
|
|
20
|
+
"start": "npm run build && node dist/index.js",
|
|
21
|
+
"lint": "eslint --ext .ts . && prettier --check .",
|
|
22
|
+
"lint-fix": "eslint --ext .ts --fix && prettier --write .",
|
|
23
|
+
"test": "jest",
|
|
24
|
+
"test:unit": "npm run test --selectProjects unit",
|
|
25
|
+
"find-circulars": "madge --circular --extensions ts ./",
|
|
26
|
+
"lint:lockfile": "lockfile-lint --path package-lock.json --allowed-hosts registry.npmjs.org --validate-https"
|
|
27
|
+
},
|
|
28
|
+
"files": ["dist"],
|
|
29
|
+
"keywords": [],
|
|
30
|
+
"devDependencies": {},
|
|
31
|
+
"jest": {
|
|
32
|
+
"preset": "@diia-inhouse/configs/dist/jest"
|
|
33
|
+
},
|
|
34
|
+
"commitlint": {
|
|
35
|
+
"extends": "@diia-inhouse/configs/dist/commitlint"
|
|
36
|
+
},
|
|
37
|
+
"eslintConfig": {
|
|
38
|
+
"extends": "@diia-inhouse/eslint-config",
|
|
39
|
+
"parserOptions": {
|
|
40
|
+
"project": ["./tsconfig.json", "./tests/tsconfig.json"]
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"release": {
|
|
44
|
+
"extends": "@diia-inhouse/configs/dist/semantic-release/package",
|
|
45
|
+
"branches": ["main"]
|
|
46
|
+
},
|
|
47
|
+
"prettier": "@diia-inhouse/eslint-config/prettier"
|
|
48
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: <%= packageName %>/tests/tsconfig.json
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
{
|
|
6
|
+
"extends": "@diia-inhouse/configs/tsconfig",
|
|
7
|
+
"compilerOptions": {
|
|
8
|
+
"baseUrl": "../",
|
|
9
|
+
"paths": {
|
|
10
|
+
"@services/*": ["src/services/*"],
|
|
11
|
+
"@interfaces/*": ["src/interfaces/*"],
|
|
12
|
+
"@src/*": ["src/*"],
|
|
13
|
+
"@tests/*": ["tests/*"]
|
|
14
|
+
},
|
|
15
|
+
"noEmit": true,
|
|
16
|
+
"strict": true
|
|
17
|
+
},
|
|
18
|
+
"include": ["./**/*"]
|
|
19
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: <%= packageName %>/tsconfig.json
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
{
|
|
6
|
+
"extends": "@diia-inhouse/configs/tsconfig",
|
|
7
|
+
"compilerOptions": {
|
|
8
|
+
"outDir": "dist",
|
|
9
|
+
"declaration": true,
|
|
10
|
+
"declarationDir": "dist/types",
|
|
11
|
+
"baseUrl": ".",
|
|
12
|
+
"paths": {
|
|
13
|
+
"@services/*": ["src/services/*"],
|
|
14
|
+
"@interfaces/*": ["src/interfaces/*"],
|
|
15
|
+
"@src/*": ["src/*"],
|
|
16
|
+
"@tests/*": ["tests/*"]
|
|
17
|
+
},
|
|
18
|
+
"plugins": [{ "transform": "typescript-transform-paths" }, { "transform": "typescript-transform-paths", "afterDeclarations": true }]
|
|
19
|
+
},
|
|
20
|
+
"include": ["src/**/*"],
|
|
21
|
+
"exclude": ["node_modules", "tests"]
|
|
22
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
7
|
+
const depsNames_1 = require("../../../depsNames");
|
|
8
|
+
exports.default = {
|
|
9
|
+
prompt: async ({ prompter }) => {
|
|
10
|
+
console.log(chalk_1.default.red.bold('README!\n'), chalk_1.default.blue('After a files generation scaffold tries to run "npm install" and "prettier", please wait. \n'), chalk_1.default.blue('If you have some troubles with a new project, try to reinstall dependencies and run the prettier manual \n\n'));
|
|
11
|
+
const { packageName } = await prompter.prompt({
|
|
12
|
+
type: 'input',
|
|
13
|
+
name: 'packageName',
|
|
14
|
+
message: "What's your new package name?",
|
|
15
|
+
required: true,
|
|
16
|
+
});
|
|
17
|
+
const { description } = await prompter.prompt({
|
|
18
|
+
type: 'input',
|
|
19
|
+
name: 'description',
|
|
20
|
+
message: "What's your new package description?",
|
|
21
|
+
required: true,
|
|
22
|
+
});
|
|
23
|
+
return { packageName, description, dependencies: { devDeps: depsNames_1.packageDependencies.devDeps.join(' ') } };
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../../src/_templates/init/package/prompt.ts"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AAEzB,kDAAwD;AAIxD,kBAAe;IACX,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAU,EAAoB,EAAE;QACrD,OAAO,CAAC,GAAG,CACP,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAC3B,eAAK,CAAC,IAAI,CAAC,8FAA8F,CAAC,EAC1G,eAAK,CAAC,IAAI,CAAC,8GAA8G,CAAC,CAC7H,CAAA;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAC1C,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,+BAA+B;YACxC,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAA;QAEF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAC1C,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,sCAAsC;YAC/C,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAA;QAEF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAA;IACzG,CAAC;CACJ,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: <%= serviceName %>/.env.example
|
|
3
|
+
---
|
|
4
|
+
NODE_ENV=local
|
|
5
|
+
LOG_LEVEL=debug
|
|
6
|
+
|
|
7
|
+
TRANSPORT_TYPE=Redis
|
|
8
|
+
TRANSPORT_OPTIONS={"host":"localhost","port":"6379"}
|
|
9
|
+
|
|
10
|
+
BALANCING_STRATEGY_NAME=RoundRobin
|
|
11
|
+
BALANCING_STRATEGY_OPTIONS=
|
|
12
|
+
|
|
13
|
+
<%if (h.isOptionSelected(selectedOptions, 'external')) {%>
|
|
14
|
+
REDIS_READ_WRITE_OPTIONS={"port":6379}
|
|
15
|
+
REDIS_READ_ONLY_OPTIONS={"port":6379}
|
|
16
|
+
<%}%>
|
|
17
|
+
<%if (h.isOptionSelected(selectedOptions, 'redis')) {%>
|
|
18
|
+
STORE_READ_WRITE_OPTIONS={"port":6379}
|
|
19
|
+
STORE_READ_ONLY_OPTIONS={"port":6379}
|
|
20
|
+
<%}%>
|
|
21
|
+
<%if (h.isOptionSelected(selectedOptions, 'database')) {%>
|
|
22
|
+
MONGO_HOST=mongo1
|
|
23
|
+
MONGO_HOSTS=mongo1,mongo2,mongo3
|
|
24
|
+
MONGO_PORT=27017
|
|
25
|
+
MONGO_DATABASE=diia-<%= serviceName %>-service
|
|
26
|
+
MONGO_USER=
|
|
27
|
+
MONGO_PASSWORD=
|
|
28
|
+
MONGO_REPLICA_SET=diia
|
|
29
|
+
MONGO_READ_PREFERENCE=primary
|
|
30
|
+
MONGO_INDEXES_SYNC=true
|
|
31
|
+
MONGO_INDEXES_EXIT_AFTER_SYNC=false
|
|
32
|
+
<%}%>
|
|
33
|
+
<%if (h.isOptionSelected(selectedOptions, 'internal')) {%>
|
|
34
|
+
RABBIT_HOST=127.0.0.1
|
|
35
|
+
RABBIT_PORT=5672
|
|
36
|
+
RABBIT_USERNAME=guest
|
|
37
|
+
RABBIT_PASSWORD=guest
|
|
38
|
+
RABBIT_HEARTBEAT=60
|
|
39
|
+
RABBIT_QUEUE_PREFETCH_COUNT=1
|
|
40
|
+
<%}%>
|
|
41
|
+
<%if (h.isOptionSelected(selectedOptions, 'external')) {%>
|
|
42
|
+
EXTERNAL_RABBIT_HOST=127.0.0.1
|
|
43
|
+
EXTERNAL_RABBIT_PORT=5672
|
|
44
|
+
EXTERNAL_RABBIT_USERNAME=guest
|
|
45
|
+
EXTERNAL_RABBIT_PASSWORD=guest
|
|
46
|
+
EXTERNAL_RABBIT_HEARTBEAT=60
|
|
47
|
+
EXTERNAL_RABBIT_QUEUE_PREFETCH_COUNT=1
|
|
48
|
+
EXTERNAL_RABBIT_ASSERT_EXCHANGES=true
|
|
49
|
+
<%}%>
|
|
50
|
+
|
|
51
|
+
METRICS_MOLECULER_PROMETHEUS_IS_ENABLED=false
|
|
52
|
+
METRICS_CUSTOM_DISABLED=true
|
|
53
|
+
|
|
54
|
+
HEALTH_CHECK_IS_ENABLED=false
|
|
55
|
+
HEALTH_CHECK_IS_PORT=4545
|
|
56
|
+
|
|
57
|
+
GRPC_SERVER_ENABLED=true
|
|
58
|
+
GRPC_SERVICES=["ua.gov.diia.<%= h.changeCase.pascalCase(serviceName).toLowerCase() %>.<%= h.changeCase.pascalCase(serviceName) %>"]
|
|
59
|
+
GRPC_SERVER_PORT=5<%= Math.floor(Math.random() * (999 - 100) + 100) %>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: <%= serviceName %>/.gitlab-ci.yml
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
variables:
|
|
6
|
+
CHART_NAME: <%= serviceName %>
|
|
7
|
+
NEW_TEST: 'true'
|
|
8
|
+
RUN_INTEGRATION_TESTS: 'true'
|
|
9
|
+
RUN_UNIT_TESTS: 'false'
|
|
10
|
+
NODE_PACKAGE_MANAGER: 'npm'
|
|
11
|
+
CI_BUILD_INSTALLS: protobuf-dev
|
|
12
|
+
CI_RELEASE_INSTALLS: protobuf-dev
|
|
13
|
+
|
|
14
|
+
include:
|
|
15
|
+
- project: diia-inhouse/ci
|
|
16
|
+
ref: main
|
|
17
|
+
file: main/node.gitlab-ci.yaml
|
|
18
|
+
- project: diia-inhouse/ci
|
|
19
|
+
ref: main
|
|
20
|
+
file: main/proto.gitlab-ci.yaml
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: <%= serviceName %>/Dockerfile
|
|
3
|
+
---
|
|
4
|
+
### Stage 1
|
|
5
|
+
FROM node:18-alpine as node-first
|
|
6
|
+
|
|
7
|
+
WORKDIR /home/node/app
|
|
8
|
+
|
|
9
|
+
COPY package-lock.json package.json .npmrc ./
|
|
10
|
+
RUN npm install
|
|
11
|
+
|
|
12
|
+
COPY . .
|
|
13
|
+
RUN npm run build
|
|
14
|
+
|
|
15
|
+
### Stage 2
|
|
16
|
+
FROM node:18-alpine
|
|
17
|
+
|
|
18
|
+
RUN apk add --no-cache \
|
|
19
|
+
protobuf-dev \
|
|
20
|
+
tzdata \
|
|
21
|
+
bash
|
|
22
|
+
|
|
23
|
+
RUN cp /usr/share/zoneinfo/Europe/Kiev /etc/localtime
|
|
24
|
+
|
|
25
|
+
WORKDIR /home/node/app
|
|
26
|
+
|
|
27
|
+
COPY --from=node-first /home/node/app/node_modules ./node_modules
|
|
28
|
+
COPY --from=node-first /home/node/app/dist ./dist
|
|
29
|
+
COPY --from=node-first /home/node/app/package.json .
|
|
30
|
+
COPY --from=node-first /home/node/app/tsconfig.json .
|
|
31
|
+
<%if (h.isOptionSelected(selectedOptions, 'database')) {%>
|
|
32
|
+
COPY --from=node-first /home/node/app/migrate-mongo-config.ts ./migrate-mongo-config.ts
|
|
33
|
+
COPY --from=node-first /home/node/app/migrations ./migrations
|
|
34
|
+
<%}%>
|
|
35
|
+
COPY --from=node-first /home/node/app/.env .
|
|
36
|
+
COPY --from=node-first /home/node/app/proto ./proto
|
|
37
|
+
|
|
38
|
+
CMD npm run start
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: <%= serviceName %>/migrations/sample-migration.ts
|
|
3
|
+
---
|
|
4
|
+
import 'module-alias/register'
|
|
5
|
+
import { config } from 'dotenv-flow'
|
|
6
|
+
import { Db } from 'mongodb'
|
|
7
|
+
|
|
8
|
+
config({ silent: true })
|
|
9
|
+
|
|
10
|
+
const collectionName = ''
|
|
11
|
+
|
|
12
|
+
export async function up(db: Db): Promise<void> {
|
|
13
|
+
// await db.createCollection(collectionName)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export async function down(db: Db): Promise<void> {
|
|
17
|
+
// await db.dropCollection(collectionName)
|
|
18
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: <%= serviceName %>/migrations/tsconfig.json
|
|
3
|
+
---
|
|
4
|
+
{
|
|
5
|
+
"extends": "../tsconfig.json",
|
|
6
|
+
"ts-node": {
|
|
7
|
+
"files": true
|
|
8
|
+
},
|
|
9
|
+
"compilerOptions": {
|
|
10
|
+
"sourceMap": true,
|
|
11
|
+
"baseUrl": "../",
|
|
12
|
+
"paths": {
|
|
13
|
+
"@services/*": ["dist/types/services/*"],
|
|
14
|
+
"@interfaces/*": ["dist/types/interfaces/*"],
|
|
15
|
+
"@src/*": ["dist/types/"],
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"include": [
|
|
19
|
+
"./**/*"
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: <%= serviceName %>/package.json
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
{
|
|
6
|
+
"name": "<%= serviceName %>",
|
|
7
|
+
"version": "1.0.0",
|
|
8
|
+
"description": "<%= description %>",
|
|
9
|
+
"author": "diia-team",
|
|
10
|
+
"main": "dist/index.js",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"prepare": "ts-patch install -s",
|
|
13
|
+
"build": "rimraf dist/ && mkdir dist && npm run genproto && tsc",
|
|
14
|
+
"start": "node dist/index.js",
|
|
15
|
+
"semantic-release": "semantic-release",
|
|
16
|
+
"lint": "eslint --ext .ts . && prettier --check .",
|
|
17
|
+
"lint-fix": "eslint --ext .ts --fix && prettier --write .",
|
|
18
|
+
"lint:lockfile": "lockfile-lint --path package-lock.json --allowed-hosts registry.npmjs.org --validate-https",
|
|
19
|
+
"test": "jest",
|
|
20
|
+
"test:integration": "npm run test --selectProjects integration --",
|
|
21
|
+
<%if (h.isOptionSelected(selectedOptions, 'database')) {%>
|
|
22
|
+
"migrate-deploy": "npm run migrate up",
|
|
23
|
+
"migrate-ci": "npm run migrate up",
|
|
24
|
+
"migrate-test": "NODE_ENV=test npm run migrate up",
|
|
25
|
+
"migrate": "sh -c 'ts-node --project migrations/tsconfig.json node_modules/.bin/migrate-mongo $0 $1 -f migrate-mongo-config.ts'",
|
|
26
|
+
"indexes:sync": "MONGO_INDEXES_SYNC=true MONGO_INDEXES_EXIT_AFTER_SYNC=true npm run start",
|
|
27
|
+
<%}%>
|
|
28
|
+
"find-circulars": "madge --circular --extensions ts ./",
|
|
29
|
+
"scaffold": "scaffold",
|
|
30
|
+
"genproto": "genproto --outputDir src/generated"
|
|
31
|
+
},
|
|
32
|
+
"keywords": [],
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=18"
|
|
35
|
+
},
|
|
36
|
+
"_moduleAliases": {
|
|
37
|
+
"@services": "dist/services",
|
|
38
|
+
"@interfaces": "dist/interfaces",
|
|
39
|
+
"@actions": "dist/actions",
|
|
40
|
+
"@src": "dist",
|
|
41
|
+
"@tests": "tests"
|
|
42
|
+
},
|
|
43
|
+
"jest": {
|
|
44
|
+
"preset": "@diia-inhouse/configs/dist/jest"
|
|
45
|
+
},
|
|
46
|
+
"commitlint": {
|
|
47
|
+
"extends": "@diia-inhouse/configs/dist/commitlint"
|
|
48
|
+
},
|
|
49
|
+
"eslintConfig": {
|
|
50
|
+
"extends": "@diia-inhouse/eslint-config",
|
|
51
|
+
"parserOptions": {
|
|
52
|
+
"project": [
|
|
53
|
+
"./tsconfig.json",
|
|
54
|
+
"./tests/tsconfig.json"
|
|
55
|
+
<%if (h.isOptionSelected(selectedOptions, 'database')) {%>
|
|
56
|
+
,"./migrations/tsconfig.json"
|
|
57
|
+
<%}%>
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"release": {
|
|
62
|
+
"extends": "@diia-inhouse/configs/dist/semantic-release/service"
|
|
63
|
+
},
|
|
64
|
+
"prettier": "@diia-inhouse/eslint-config/prettier",
|
|
65
|
+
"madge": {
|
|
66
|
+
"tsConfig": "./tsconfig.json"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: <%= serviceName %>/proto/<%= h.changeCase.snakeCase(serviceName) %>.proto
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
syntax = "proto3";
|
|
6
|
+
|
|
7
|
+
package ua.gov.diia.<%= h.changeCase.pascalCase(serviceName).toLowerCase() %>;
|
|
8
|
+
option java_multiple_files = true;
|
|
9
|
+
option java_package = "ua.gov.diia.<%= h.changeCase.pascalCase(serviceName).toLowerCase() %>";
|
|
10
|
+
|
|
11
|
+
service <%= h.changeCase.pascalCase(serviceName) %> {
|
|
12
|
+
rpc GetAddResult(GetAddResultReq) returns (GetAddResultRes);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
message GetAddResultReq {
|
|
16
|
+
int32 a = 1;
|
|
17
|
+
int32 b = 2;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
message GetAddResultRes {
|
|
21
|
+
int32 result = 1;
|
|
22
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: <%= serviceName %>/src/actions/v1/getAddResult.ts
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
import { GrpcAppAction } from '@diia-inhouse/diia-app'
|
|
6
|
+
|
|
7
|
+
import { ActionVersion, SessionType } from '@diia-inhouse/types'
|
|
8
|
+
import { ValidationSchema } from '@diia-inhouse/validators'
|
|
9
|
+
|
|
10
|
+
import { ActionResult, CustomActionArguments } from '@interfaces/actions/v1/getAddResult'
|
|
11
|
+
|
|
12
|
+
export default class GetAddResult implements GrpcAppAction {
|
|
13
|
+
readonly sessionType = SessionType.None
|
|
14
|
+
|
|
15
|
+
readonly actionVersion = ActionVersion.V1
|
|
16
|
+
|
|
17
|
+
readonly name = 'getAddResult'
|
|
18
|
+
|
|
19
|
+
readonly validationRules: ValidationSchema<CustomActionArguments['params']> = {
|
|
20
|
+
a: {type: 'number'},
|
|
21
|
+
b: {type: 'number'}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async handler(args: CustomActionArguments): Promise<ActionResult> {
|
|
25
|
+
const { params: { a, b } } = args
|
|
26
|
+
|
|
27
|
+
return { result: a + b }
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: <%= serviceName %>/src/bootstrap.ts
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
import { Application, ServiceContext } from '@diia-inhouse/diia-app'
|
|
6
|
+
|
|
7
|
+
import configFactory from '@src/config'
|
|
8
|
+
import deps from '@src/deps'
|
|
9
|
+
|
|
10
|
+
import { AppConfig } from '@interfaces/config'
|
|
11
|
+
import { AppDeps } from '@interfaces/deps'
|
|
12
|
+
|
|
13
|
+
export async function bootstrap(serviceName: string): Promise<void> {
|
|
14
|
+
const app = new Application<ServiceContext<AppConfig, AppDeps>>(serviceName)
|
|
15
|
+
|
|
16
|
+
await app.setConfig(configFactory)
|
|
17
|
+
await app.setDeps(deps).initialize().start()
|
|
18
|
+
}
|