@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.
Files changed (147) hide show
  1. package/LICENCE.md +287 -0
  2. package/README.md +93 -0
  3. package/dist/_sharedTemplates/actionTest.t +36 -0
  4. package/dist/_templates/add/action/01-action.ts.t +34 -0
  5. package/dist/_templates/add/action/01-test.ts.t +37 -0
  6. package/dist/_templates/add/action/01.interface.ts.t +15 -0
  7. package/dist/_templates/add/action/02-scriptRunner.t +3 -0
  8. package/dist/_templates/add/action/dict.js +18 -0
  9. package/dist/_templates/add/action/dict.js.map +1 -0
  10. package/dist/_templates/add/action/prompt.js +88 -0
  11. package/dist/_templates/add/action/prompt.js.map +1 -0
  12. package/dist/_templates/add/eventListener/01-event.ts.t +18 -0
  13. package/dist/_templates/add/eventListener/01-interface.ts.t +5 -0
  14. package/dist/_templates/add/eventListener/02-scriptRunner.ts.t +3 -0
  15. package/dist/_templates/add/eventListener/prompt.js +22 -0
  16. package/dist/_templates/add/eventListener/prompt.js.map +1 -0
  17. package/dist/_templates/add/externalEventListener/01-event.ts.t +16 -0
  18. package/dist/_templates/add/externalEventListener/01-interface.ts.t +5 -0
  19. package/dist/_templates/add/externalEventListener/02-scriptRunner.t +3 -0
  20. package/dist/_templates/add/externalEventListener/prompt.js +22 -0
  21. package/dist/_templates/add/externalEventListener/prompt.js.map +1 -0
  22. package/dist/_templates/add/generator/01-interface.ts.t +7 -0
  23. package/dist/_templates/add/generator/01-prompt.ts.t +19 -0
  24. package/dist/_templates/add/generator/02-scriptRunner.ts.t +7 -0
  25. package/dist/_templates/add/generator/03-scriptRunner.ts.t +3 -0
  26. package/dist/_templates/add/generator/prompt.js +45 -0
  27. package/dist/_templates/add/generator/prompt.js.map +1 -0
  28. package/dist/_templates/add/model/01-interfaces.model.ts.t +8 -0
  29. package/dist/_templates/add/model/01-model.ts.t +16 -0
  30. package/dist/_templates/add/model/02-scriptRunner.ts.t +3 -0
  31. package/dist/_templates/add/model/prompt.js +20 -0
  32. package/dist/_templates/add/model/prompt.js.map +1 -0
  33. package/dist/_templates/add/scheduledTask/01-task.ts.t +12 -0
  34. package/dist/_templates/add/scheduledTask/02-scriptRunner.t +3 -0
  35. package/dist/_templates/add/scheduledTask/prompt.js +20 -0
  36. package/dist/_templates/add/scheduledTask/prompt.js.map +1 -0
  37. package/dist/_templates/add/task/01-interface.ts.t +5 -0
  38. package/dist/_templates/add/task/01-task.ts.t +29 -0
  39. package/dist/_templates/add/task/02-scriptRunner.t +5 -0
  40. package/dist/_templates/add/task/prompt.js +32 -0
  41. package/dist/_templates/add/task/prompt.js.map +1 -0
  42. package/dist/_templates/add/test/01-test.ts.t +5 -0
  43. package/dist/_templates/add/test/02-scriptRunner.ts.t +3 -0
  44. package/dist/_templates/add/test/prompt.js +48 -0
  45. package/dist/_templates/add/test/prompt.js.map +1 -0
  46. package/dist/_templates/init/matchers/01-index.ts.t +5 -0
  47. package/dist/_templates/init/matchers/01-inject-setup.ts.t +8 -0
  48. package/dist/_templates/init/matchers/01-jest.d.ts.t +16 -0
  49. package/dist/_templates/init/matchers/01-matcher.ts.t +5 -0
  50. package/dist/_templates/init/matchers/01-new-setup.ts.t +8 -0
  51. package/dist/_templates/init/matchers/01-tsconfig.json.t +6 -0
  52. package/dist/_templates/init/matchers/02-scriptRunner.ts.t +3 -0
  53. package/dist/_templates/init/matchers/prompt.js +77 -0
  54. package/dist/_templates/init/matchers/prompt.js.map +1 -0
  55. package/dist/_templates/init/package/01-.eslintignore.t +7 -0
  56. package/dist/_templates/init/package/01-.gitignore.t +8 -0
  57. package/dist/_templates/init/package/01-.gitlab-ci.yml.t +13 -0
  58. package/dist/_templates/init/package/01-.prettierignore.t +5 -0
  59. package/dist/_templates/init/package/01-package.json.t +48 -0
  60. package/dist/_templates/init/package/01-readme.md.t +7 -0
  61. package/dist/_templates/init/package/01-src.index.ts.t +7 -0
  62. package/dist/_templates/init/package/01-test.tsconfig.json.t +19 -0
  63. package/dist/_templates/init/package/01-test.unit.index.ts.t +13 -0
  64. package/dist/_templates/init/package/01-tsconfig.json.t +22 -0
  65. package/dist/_templates/init/package/02-scriptRunner.t +7 -0
  66. package/dist/_templates/init/package/prompt.js +26 -0
  67. package/dist/_templates/init/package/prompt.js.map +1 -0
  68. package/dist/_templates/init/service/01-.env.example.t +59 -0
  69. package/dist/_templates/init/service/01-.env.test.t +4 -0
  70. package/dist/_templates/init/service/01-.eslintignore.t +8 -0
  71. package/dist/_templates/init/service/01-.gitignore.t +11 -0
  72. package/dist/_templates/init/service/01-.gitlab-ci.yml.t +20 -0
  73. package/dist/_templates/init/service/01-.prettierignore.t +6 -0
  74. package/dist/_templates/init/service/01-dockerfile.t +38 -0
  75. package/dist/_templates/init/service/01-migrate-mongo-config.ts.t +8 -0
  76. package/dist/_templates/init/service/01-migrations.sample-migration.ts.t +18 -0
  77. package/dist/_templates/init/service/01-migrations.tsconfig.json.t +21 -0
  78. package/dist/_templates/init/service/01-package.json.t +68 -0
  79. package/dist/_templates/init/service/01-proto.service.proto.t +22 -0
  80. package/dist/_templates/init/service/01-readme.md.t +7 -0
  81. package/dist/_templates/init/service/01-src.actions.v1.getAddResult.ts.t +29 -0
  82. package/dist/_templates/init/service/01-src.bootstrap.ts.t +18 -0
  83. package/dist/_templates/init/service/01-src.config.ts.t +160 -0
  84. package/dist/_templates/init/service/01-src.deps.ts.t +14 -0
  85. package/dist/_templates/init/service/01-src.index.ts.t +14 -0
  86. package/dist/_templates/init/service/01-src.interfaces.actions.v1.getAddResult.ts.t +13 -0
  87. package/dist/_templates/init/service/01-src.interfaces.config.ts.t +7 -0
  88. package/dist/_templates/init/service/01-src.interfaces.deps.ts.t +9 -0
  89. package/dist/_templates/init/service/01-tests.integration.actionts.getAddResult.spec.ts.t +39 -0
  90. package/dist/_templates/init/service/01-tests.interfaces.ts.t +9 -0
  91. package/dist/_templates/init/service/01-tests.jest.d.ts.t +5 -0
  92. package/dist/_templates/init/service/01-tests.tsconfig.json.t +23 -0
  93. package/dist/_templates/init/service/01-tests.utils.getApp.ts.t +26 -0
  94. package/dist/_templates/init/service/01-tests.utils.getDeps.ts.t +23 -0
  95. package/dist/_templates/init/service/01-tsconfig.json.t +25 -0
  96. package/dist/_templates/init/service/02-scriptRunner.ts.t +7 -0
  97. package/dist/_templates/init/service/prompt.js +36 -0
  98. package/dist/_templates/init/service/prompt.js.map +1 -0
  99. package/dist/bin.js +6 -0
  100. package/dist/bin.js.map +1 -0
  101. package/dist/depsNames.js +45 -0
  102. package/dist/depsNames.js.map +1 -0
  103. package/dist/index.js +22 -0
  104. package/dist/index.js.map +1 -0
  105. package/dist/interfaces/_templates/add/action.js +3 -0
  106. package/dist/interfaces/_templates/add/action.js.map +1 -0
  107. package/dist/interfaces/_templates/add/eventListener.js +3 -0
  108. package/dist/interfaces/_templates/add/eventListener.js.map +1 -0
  109. package/dist/interfaces/_templates/add/externalEventListener.js +3 -0
  110. package/dist/interfaces/_templates/add/externalEventListener.js.map +1 -0
  111. package/dist/interfaces/_templates/add/generator.js +3 -0
  112. package/dist/interfaces/_templates/add/generator.js.map +1 -0
  113. package/dist/interfaces/_templates/add/model.js +3 -0
  114. package/dist/interfaces/_templates/add/model.js.map +1 -0
  115. package/dist/interfaces/_templates/add/scheduledTask.js +3 -0
  116. package/dist/interfaces/_templates/add/scheduledTask.js.map +1 -0
  117. package/dist/interfaces/_templates/add/task.js +3 -0
  118. package/dist/interfaces/_templates/add/task.js.map +1 -0
  119. package/dist/interfaces/_templates/add/test.js +3 -0
  120. package/dist/interfaces/_templates/add/test.js.map +1 -0
  121. package/dist/interfaces/_templates/init/matcher.js +9 -0
  122. package/dist/interfaces/_templates/init/matcher.js.map +1 -0
  123. package/dist/interfaces/_templates/init/package.js +3 -0
  124. package/dist/interfaces/_templates/init/package.js.map +1 -0
  125. package/dist/interfaces/_templates/init/service.js +11 -0
  126. package/dist/interfaces/_templates/init/service.js.map +1 -0
  127. package/dist/interfaces/index.js +3 -0
  128. package/dist/interfaces/index.js.map +1 -0
  129. package/dist/interfaces/prompt/autocomplete.js +3 -0
  130. package/dist/interfaces/prompt/autocomplete.js.map +1 -0
  131. package/dist/interfaces/prompt/multiselect.js +3 -0
  132. package/dist/interfaces/prompt/multiselect.js.map +1 -0
  133. package/dist/interfaces/prompt/select.js +9 -0
  134. package/dist/interfaces/prompt/select.js.map +1 -0
  135. package/dist/prompt/autocomplete.js +12 -0
  136. package/dist/prompt/autocomplete.js.map +1 -0
  137. package/dist/prompt/index.js +12 -0
  138. package/dist/prompt/index.js.map +1 -0
  139. package/dist/prompt/select/baseSelect.js +12 -0
  140. package/dist/prompt/select/baseSelect.js.map +1 -0
  141. package/dist/prompt/select/multiselect.js +15 -0
  142. package/dist/prompt/select/multiselect.js.map +1 -0
  143. package/dist/prompt/select/yesNoSelect.js +17 -0
  144. package/dist/prompt/select/yesNoSelect.js.map +1 -0
  145. package/dist/utils.js +29 -0
  146. package/dist/utils.js.map +1 -0
  147. 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,7 @@
1
+ ---
2
+ to: <%= packageName %>/README.md
3
+ ---
4
+
5
+ ### <%= packageName %>
6
+
7
+ <%= description %>
@@ -0,0 +1,7 @@
1
+ ---
2
+ to: <%= packageName %>/src/index.ts
3
+ ---
4
+
5
+ export function add(a: number, b: number): number {
6
+ return a + b
7
+ }
@@ -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,13 @@
1
+ ---
2
+ to: <%= packageName %>/tests/unit/index.spec.ts
3
+ ---
4
+
5
+ import { add } from '@src/index'
6
+
7
+ describe('Add', () => {
8
+ it('should be return 3', () => {
9
+ const result = add(1, 2)
10
+
11
+ expect(result).toBe(3)
12
+ })
13
+ })
@@ -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,7 @@
1
+ ---
2
+ sh: "cd <%= packageName %> && npm install --save-dev <%= dependencies.devDeps %> && npm run lint-fix"
3
+ ---
4
+
5
+ This file does not appear in the final package generation
6
+
7
+ You can think about this file like a post-generation script
@@ -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,4 @@
1
+ ---
2
+ to: <%= serviceName %>/.env.test
3
+ ---
4
+ LOG_LEVEL=error
@@ -0,0 +1,8 @@
1
+ ---
2
+ to: <%= serviceName %>/.eslintignore
3
+ ---
4
+
5
+ node_modules
6
+ dist
7
+ coverage
8
+ migrate-mongo-config.ts
@@ -0,0 +1,11 @@
1
+ ---
2
+ to: <%= serviceName %>/.gitignore
3
+ ---
4
+ .env
5
+ .env.test.local
6
+ .vscode
7
+ .npmrc
8
+ dist
9
+ node_modules
10
+ .DS_Store
11
+ src/generated
@@ -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,6 @@
1
+ ---
2
+ to: <%= serviceName %>/.prettierignore
3
+ ---
4
+
5
+ dist
6
+ generated
@@ -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,8 @@
1
+ ---
2
+ to: <%= serviceName %>/migrate-mongo-config.ts
3
+ ---
4
+ require('dotenv-flow').config({ silent: true })
5
+
6
+ import { MongoHelper } from '@diia-inhouse/db'
7
+
8
+ module.exports = MongoHelper.getMigrateMongoConfig()
@@ -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,7 @@
1
+ ---
2
+ to: <%= serviceName %>/README.md
3
+ ---
4
+
5
+ ### <%= serviceName %>
6
+
7
+ <%= description %>
@@ -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
+ }