@empire-builder-kit/containers 0.0.1-alpha.10

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 (88) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -0
  3. package/dist/executors.json +3 -0
  4. package/dist/generators/service/files-go/Dockerfile.template +11 -0
  5. package/dist/generators/service/files-go/README.md.template +11 -0
  6. package/dist/generators/service/files-go/cmd/main.go.template +34 -0
  7. package/dist/generators/service/files-go/docs/contracts.md.template +9 -0
  8. package/dist/generators/service/files-go/go.mod.template +3 -0
  9. package/dist/generators/service/files-go/infra/service.ts.template +59 -0
  10. package/dist/generators/service/files-python/Dockerfile.template +12 -0
  11. package/dist/generators/service/files-python/README.md.template +11 -0
  12. package/dist/generators/service/files-python/docs/contracts.md.template +9 -0
  13. package/dist/generators/service/files-python/infra/service.ts.template +68 -0
  14. package/dist/generators/service/files-python/pyproject.toml.template +15 -0
  15. package/dist/generators/service/files-python/src/main.py.template +20 -0
  16. package/dist/generators/service/files-rust/Cargo.toml.template +16 -0
  17. package/dist/generators/service/files-rust/Dockerfile.template +12 -0
  18. package/dist/generators/service/files-rust/README.md.template +11 -0
  19. package/dist/generators/service/files-rust/docs/contracts.md.template +9 -0
  20. package/dist/generators/service/files-rust/infra/service.ts.template +59 -0
  21. package/dist/generators/service/files-rust/src/main.rs.template +29 -0
  22. package/dist/generators/service/files-typescript/Dockerfile.template +30 -0
  23. package/dist/generators/service/files-typescript/README.md.template +24 -0
  24. package/dist/generators/service/files-typescript/docs/architecture.md.template +18 -0
  25. package/dist/generators/service/files-typescript/docs/contracts.md.template +20 -0
  26. package/dist/generators/service/files-typescript/docs/operations.md.template +24 -0
  27. package/dist/generators/service/files-typescript/eslint.config.mjs.template +3 -0
  28. package/dist/generators/service/files-typescript/infra/service.ts.template +64 -0
  29. package/dist/generators/service/files-typescript/package.json.template +7 -0
  30. package/dist/generators/service/files-typescript/src/index.ts.template +2 -0
  31. package/dist/generators/service/files-typescript/src/main.ts.template +60 -0
  32. package/dist/generators/service/files-typescript/src/service.spec.ts.template +49 -0
  33. package/dist/generators/service/files-typescript/src/service.ts.template +57 -0
  34. package/dist/generators/service/files-typescript/tsconfig.app.json.template +12 -0
  35. package/dist/generators/service/files-typescript/tsconfig.json.template +7 -0
  36. package/dist/generators/service/files-typescript/tsconfig.spec.json.template +7 -0
  37. package/dist/generators/service/files-typescript/vitest.config.mts.template +17 -0
  38. package/dist/generators/service/schema.d.ts +8 -0
  39. package/dist/generators/service/schema.json +40 -0
  40. package/dist/generators/service/service.d.ts +5 -0
  41. package/dist/generators/service/service.d.ts.map +1 -0
  42. package/dist/generators/service/service.js +198 -0
  43. package/dist/generators/task/files-go/Dockerfile.template +10 -0
  44. package/dist/generators/task/files-go/README.md.template +11 -0
  45. package/dist/generators/task/files-go/cmd/main.go.template +22 -0
  46. package/dist/generators/task/files-go/docs/contracts.md.template +9 -0
  47. package/dist/generators/task/files-go/go.mod.template +3 -0
  48. package/dist/generators/task/files-go/infra/task.ts.template +38 -0
  49. package/dist/generators/task/files-python/Dockerfile.template +10 -0
  50. package/dist/generators/task/files-python/README.md.template +11 -0
  51. package/dist/generators/task/files-python/docs/contracts.md.template +9 -0
  52. package/dist/generators/task/files-python/infra/task.ts.template +38 -0
  53. package/dist/generators/task/files-python/pyproject.toml.template +12 -0
  54. package/dist/generators/task/files-python/src/main.py.template +26 -0
  55. package/dist/generators/task/files-rust/Cargo.toml.template +15 -0
  56. package/dist/generators/task/files-rust/Dockerfile.template +11 -0
  57. package/dist/generators/task/files-rust/README.md.template +11 -0
  58. package/dist/generators/task/files-rust/docs/contracts.md.template +9 -0
  59. package/dist/generators/task/files-rust/infra/task.ts.template +38 -0
  60. package/dist/generators/task/files-rust/src/main.rs.template +12 -0
  61. package/dist/generators/task/files-typescript/Dockerfile.template +25 -0
  62. package/dist/generators/task/files-typescript/README.md.template +24 -0
  63. package/dist/generators/task/files-typescript/docs/architecture.md.template +18 -0
  64. package/dist/generators/task/files-typescript/docs/contracts.md.template +20 -0
  65. package/dist/generators/task/files-typescript/docs/operations.md.template +24 -0
  66. package/dist/generators/task/files-typescript/eslint.config.mjs.template +3 -0
  67. package/dist/generators/task/files-typescript/infra/task.ts.template +35 -0
  68. package/dist/generators/task/files-typescript/package.json.template +7 -0
  69. package/dist/generators/task/files-typescript/src/index.ts.template +6 -0
  70. package/dist/generators/task/files-typescript/src/main.ts.template +45 -0
  71. package/dist/generators/task/files-typescript/src/task.spec.ts.template +66 -0
  72. package/dist/generators/task/files-typescript/src/task.ts.template +71 -0
  73. package/dist/generators/task/files-typescript/tsconfig.app.json.template +13 -0
  74. package/dist/generators/task/files-typescript/tsconfig.json.template +19 -0
  75. package/dist/generators/task/files-typescript/tsconfig.spec.json.template +11 -0
  76. package/dist/generators/task/files-typescript/vitest.config.mts.template +9 -0
  77. package/dist/generators/task/schema.d.ts +8 -0
  78. package/dist/generators/task/schema.json +40 -0
  79. package/dist/generators/task/task.d.ts +5 -0
  80. package/dist/generators/task/task.d.ts.map +1 -0
  81. package/dist/generators/task/task.js +198 -0
  82. package/dist/generators.json +14 -0
  83. package/dist/index.d.ts +3 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +7 -0
  86. package/executors.json +3 -0
  87. package/generators.json +14 -0
  88. package/package.json +93 -0
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.taskGenerator = taskGenerator;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const path = tslib_1.__importStar(require("node:path"));
7
+ function runtimeForLanguage(language) {
8
+ switch (language) {
9
+ case 'typescript':
10
+ return 'node';
11
+ case 'rust':
12
+ return 'native';
13
+ case 'go':
14
+ return 'native';
15
+ case 'python':
16
+ return 'python';
17
+ }
18
+ }
19
+ function targetsForLanguage(language, projectRoot, projectName, outputPath) {
20
+ const cwd = projectRoot;
21
+ switch (language) {
22
+ case 'typescript':
23
+ return {
24
+ build: {
25
+ executor: 'nx:run-commands',
26
+ outputs: [`{workspaceRoot}/${outputPath}`],
27
+ options: { cwd, command: 'tsc -p tsconfig.app.json' },
28
+ },
29
+ lint: {
30
+ executor: 'nx:run-commands',
31
+ options: { cwd, command: 'eslint .' },
32
+ },
33
+ typecheck: {
34
+ executor: 'nx:run-commands',
35
+ options: { cwd, command: 'tsc --noEmit -p tsconfig.json' },
36
+ },
37
+ test: {
38
+ executor: 'nx:run-commands',
39
+ options: {
40
+ cwd,
41
+ command: 'vitest run --config vitest.config.mts',
42
+ },
43
+ },
44
+ dev: {
45
+ executor: 'nx:run-commands',
46
+ options: {
47
+ cwd,
48
+ command: 'node --watch --enable-source-maps --import @swc-node/register/esm-register src/main.ts',
49
+ },
50
+ },
51
+ 'docker-build': {
52
+ executor: 'nx:run-commands',
53
+ options: {
54
+ command: `docker build --tag ${projectName} ${projectRoot}`,
55
+ },
56
+ },
57
+ };
58
+ case 'rust':
59
+ return {
60
+ build: {
61
+ executor: 'nx:run-commands',
62
+ options: { cwd, command: 'cargo build --release' },
63
+ },
64
+ lint: {
65
+ executor: 'nx:run-commands',
66
+ options: { cwd, command: 'cargo clippy -- -D warnings' },
67
+ },
68
+ test: {
69
+ executor: 'nx:run-commands',
70
+ options: { cwd, command: 'cargo test' },
71
+ },
72
+ dev: {
73
+ executor: 'nx:run-commands',
74
+ options: { cwd, command: 'cargo run' },
75
+ },
76
+ 'docker-build': {
77
+ executor: 'nx:run-commands',
78
+ options: {
79
+ command: `docker build --tag ${projectName} ${projectRoot}`,
80
+ },
81
+ },
82
+ };
83
+ case 'go':
84
+ return {
85
+ build: {
86
+ executor: 'nx:run-commands',
87
+ options: { cwd, command: 'go build -o bin/task ./cmd/...' },
88
+ },
89
+ lint: {
90
+ executor: 'nx:run-commands',
91
+ options: { cwd, command: 'golangci-lint run' },
92
+ },
93
+ typecheck: {
94
+ executor: 'nx:run-commands',
95
+ options: { cwd, command: 'go vet ./...' },
96
+ },
97
+ test: {
98
+ executor: 'nx:run-commands',
99
+ options: { cwd, command: 'go test ./...' },
100
+ },
101
+ dev: {
102
+ executor: 'nx:run-commands',
103
+ options: { cwd, command: 'go run ./cmd/...' },
104
+ },
105
+ 'docker-build': {
106
+ executor: 'nx:run-commands',
107
+ options: {
108
+ command: `docker build --tag ${projectName} ${projectRoot}`,
109
+ },
110
+ },
111
+ };
112
+ case 'python':
113
+ return {
114
+ lint: {
115
+ executor: 'nx:run-commands',
116
+ options: { cwd, command: 'ruff check .' },
117
+ },
118
+ typecheck: {
119
+ executor: 'nx:run-commands',
120
+ options: { cwd, command: 'mypy src/' },
121
+ },
122
+ test: {
123
+ executor: 'nx:run-commands',
124
+ options: { cwd, command: 'pytest' },
125
+ },
126
+ dev: {
127
+ executor: 'nx:run-commands',
128
+ options: { cwd, command: 'python src/main.py' },
129
+ },
130
+ 'docker-build': {
131
+ executor: 'nx:run-commands',
132
+ options: {
133
+ command: `docker build --tag ${projectName} ${projectRoot}`,
134
+ },
135
+ },
136
+ };
137
+ }
138
+ }
139
+ function normalizeOptions(options) {
140
+ const appNames = (0, devkit_1.names)(options.app);
141
+ const taskNames = (0, devkit_1.names)(options.name);
142
+ const language = options.language ?? 'typescript';
143
+ const directory = (options.directory ?? 'packages').replace(/\\/g, '/');
144
+ const projectRoot = (0, devkit_1.joinPathFragments)(directory, appNames.fileName, 'apps', 'task', taskNames.fileName);
145
+ const userTags = options.tags
146
+ ?.split(',')
147
+ .map((tag) => tag.trim())
148
+ .filter(Boolean) ?? [];
149
+ return {
150
+ app: appNames.fileName,
151
+ appName: appNames.fileName,
152
+ className: appNames.className,
153
+ directory,
154
+ language,
155
+ name: taskNames.fileName,
156
+ offsetFromRoot: (0, devkit_1.offsetFromRoot)(projectRoot),
157
+ outputPath: (0, devkit_1.joinPathFragments)('dist', projectRoot),
158
+ projectName: `${appNames.fileName}-task-${taskNames.fileName}`,
159
+ projectRoot,
160
+ projectTitle: `${appNames.className} Task ${taskNames.className}`,
161
+ skipFormat: options.skipFormat,
162
+ tags: [
163
+ `scope:${appNames.fileName}`,
164
+ 'layer:app',
165
+ 'type:task',
166
+ `runtime:${runtimeForLanguage(language)}`,
167
+ 'deploy:container',
168
+ 'visibility:internal',
169
+ ...userTags,
170
+ ],
171
+ };
172
+ }
173
+ async function taskGenerator(tree, options) {
174
+ const normalized = normalizeOptions(options);
175
+ const appRoot = (0, devkit_1.joinPathFragments)(normalized.directory, normalized.appName);
176
+ if (!tree.exists(appRoot)) {
177
+ throw new Error(`App group "${normalized.app}" does not exist at "${appRoot}". Generate the app group first.`);
178
+ }
179
+ if (tree.exists((0, devkit_1.joinPathFragments)(normalized.projectRoot, 'project.json')) ||
180
+ tree.exists((0, devkit_1.joinPathFragments)(normalized.projectRoot, 'package.json'))) {
181
+ throw new Error(`Task "${normalized.name}" already exists at "${normalized.projectRoot}".`);
182
+ }
183
+ (0, devkit_1.addProjectConfiguration)(tree, normalized.projectName, {
184
+ root: normalized.projectRoot,
185
+ projectType: 'application',
186
+ sourceRoot: `${normalized.projectRoot}/src`,
187
+ tags: normalized.tags,
188
+ targets: targetsForLanguage(normalized.language, normalized.projectRoot, normalized.projectName, normalized.outputPath),
189
+ });
190
+ (0, devkit_1.generateFiles)(tree, path.join(__dirname, `files-${normalized.language}`), normalized.projectRoot, {
191
+ ...normalized,
192
+ tmpl: '',
193
+ });
194
+ if (!normalized.skipFormat) {
195
+ await (0, devkit_1.formatFiles)(tree);
196
+ }
197
+ }
198
+ exports.default = taskGenerator;
@@ -0,0 +1,14 @@
1
+ {
2
+ "generators": {
3
+ "service": {
4
+ "factory": "./dist/generators/service/service",
5
+ "schema": "./dist/generators/service/schema.json",
6
+ "description": "Generate service artifacts for @empire-builder-kit/containers."
7
+ },
8
+ "task": {
9
+ "factory": "./dist/generators/task/task",
10
+ "schema": "./dist/generators/task/schema.json",
11
+ "description": "Generate task artifacts for @empire-builder-kit/containers."
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,3 @@
1
+ export { serviceGenerator } from './generators/service/service.js';
2
+ export { taskGenerator } from './generators/task/task.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.taskGenerator = exports.serviceGenerator = void 0;
4
+ var service_js_1 = require("./generators/service/service.js");
5
+ Object.defineProperty(exports, "serviceGenerator", { enumerable: true, get: function () { return service_js_1.serviceGenerator; } });
6
+ var task_js_1 = require("./generators/task/task.js");
7
+ Object.defineProperty(exports, "taskGenerator", { enumerable: true, get: function () { return task_js_1.taskGenerator; } });
package/executors.json ADDED
@@ -0,0 +1,3 @@
1
+ {
2
+ "executors": {}
3
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "generators": {
3
+ "service": {
4
+ "factory": "./dist/generators/service/service",
5
+ "schema": "./dist/generators/service/schema.json",
6
+ "description": "Generate service artifacts for @empire-builder-kit/containers."
7
+ },
8
+ "task": {
9
+ "factory": "./dist/generators/task/task",
10
+ "schema": "./dist/generators/task/schema.json",
11
+ "description": "Generate task artifacts for @empire-builder-kit/containers."
12
+ }
13
+ }
14
+ }
package/package.json ADDED
@@ -0,0 +1,93 @@
1
+ {
2
+ "name": "@empire-builder-kit/containers",
3
+ "version": "0.0.1-alpha.10",
4
+ "license": "MIT",
5
+ "publishConfig": {
6
+ "access": "public",
7
+ "provenance": false
8
+ },
9
+ "main": "./dist/index.js",
10
+ "module": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ "./package.json": "./package.json",
14
+ ".": {
15
+ "@org/source": "./src/index.ts",
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.js",
18
+ "default": "./dist/index.js"
19
+ }
20
+ },
21
+ "nx": {
22
+ "name": "@empire-builder-kit/containers",
23
+ "targets": {
24
+ "build": {
25
+ "executor": "@nx/js:tsc",
26
+ "outputs": [
27
+ "{options.outputPath}"
28
+ ],
29
+ "options": {
30
+ "outputPath": "packages/containers/dist",
31
+ "main": "packages/containers/src/index.ts",
32
+ "tsConfig": "packages/containers/tsconfig.lib.json",
33
+ "rootDir": "packages/containers/src",
34
+ "generatePackageJson": false,
35
+ "assets": [
36
+ {
37
+ "input": "./packages/containers/src",
38
+ "glob": "**/!(*.ts)",
39
+ "output": "."
40
+ },
41
+ {
42
+ "input": "./packages/containers/src",
43
+ "glob": "**/.*",
44
+ "output": "."
45
+ },
46
+ {
47
+ "input": "./packages/containers/src",
48
+ "glob": "**/*.d.ts",
49
+ "output": "."
50
+ },
51
+ {
52
+ "input": "./packages/containers",
53
+ "glob": "generators.json",
54
+ "output": "."
55
+ },
56
+ {
57
+ "input": "./packages/containers",
58
+ "glob": "executors.json",
59
+ "output": "."
60
+ }
61
+ ]
62
+ }
63
+ }
64
+ },
65
+ "tags": [
66
+ "scope:workspace",
67
+ "layer:tooling",
68
+ "visibility:public"
69
+ ]
70
+ },
71
+ "dependencies": {
72
+ "@nx/devkit": "22.6.5",
73
+ "tslib": "^2.3.0",
74
+ "vitest": "4.1.4"
75
+ },
76
+ "generators": "./generators.json",
77
+ "executors": "./executors.json",
78
+ "files": [
79
+ "dist",
80
+ "!**/*.tsbuildinfo",
81
+ "generators.json",
82
+ "executors.json"
83
+ ],
84
+ "repository": {
85
+ "type": "git",
86
+ "url": "https://github.com/LukasGuptaLeary/empire-builder-kit.git",
87
+ "directory": "packages/containers"
88
+ },
89
+ "bugs": {
90
+ "url": "https://github.com/LukasGuptaLeary/empire-builder-kit/issues"
91
+ },
92
+ "homepage": "https://github.com/LukasGuptaLeary/empire-builder-kit#readme"
93
+ }