ag-schematics 0.0.1

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 (78) hide show
  1. package/README.md +70 -0
  2. package/dist/adr/files/__number__-__slug__.md.template +19 -0
  3. package/dist/adr/index.d.ts +8 -0
  4. package/dist/adr/index.js +19 -0
  5. package/dist/adr/index.js.map +1 -0
  6. package/dist/adr/schema.json +24 -0
  7. package/dist/collection.json +56 -0
  8. package/dist/components/header/index.d.ts +6 -0
  9. package/dist/components/header/index.js +17 -0
  10. package/dist/components/header/index.js.map +1 -0
  11. package/dist/docker-config/files/Dockerfile.template +15 -0
  12. package/dist/docker-config/files/compose.yaml.template +10 -0
  13. package/dist/docker-config/files/nginx.conf.template +35 -0
  14. package/dist/docker-config/index.d.ts +8 -0
  15. package/dist/docker-config/index.js +16 -0
  16. package/dist/docker-config/index.js.map +1 -0
  17. package/dist/docker-config/schema.json +24 -0
  18. package/dist/gitignore-config/files/.gitignore.template +42 -0
  19. package/dist/gitignore-config/index.d.ts +5 -0
  20. package/dist/gitignore-config/index.js +16 -0
  21. package/dist/gitignore-config/index.js.map +1 -0
  22. package/dist/gitignore-config/schema.json +8 -0
  23. package/dist/k8s-config/files/k8s/deployment.yaml.template +22 -0
  24. package/dist/k8s-config/files/k8s/ingress.yaml.template +17 -0
  25. package/dist/k8s-config/files/k8s/service.yaml.template +14 -0
  26. package/dist/k8s-config/index.d.ts +10 -0
  27. package/dist/k8s-config/index.js +21 -0
  28. package/dist/k8s-config/index.js.map +1 -0
  29. package/dist/k8s-config/schema.json +34 -0
  30. package/dist/lint-config/files/.editorconfig.template +17 -0
  31. package/dist/lint-config/files/.eslintignore.template +2 -0
  32. package/dist/lint-config/files/.eslintrc.json.template +61 -0
  33. package/dist/lint-config/files/.prettierignore.template +47 -0
  34. package/dist/lint-config/files/.prettierrc.json.template +11 -0
  35. package/dist/lint-config/index.d.ts +5 -0
  36. package/dist/lint-config/index.js +90 -0
  37. package/dist/lint-config/index.js.map +1 -0
  38. package/dist/lint-config/schema.json +8 -0
  39. package/dist/npm-config/files/.nvmrc.template +1 -0
  40. package/dist/npm-config/index.d.ts +5 -0
  41. package/dist/npm-config/index.js +16 -0
  42. package/dist/npm-config/index.js.map +1 -0
  43. package/dist/npm-config/schema.json +8 -0
  44. package/dist/orval-config/files/openapi.yaml.template +0 -0
  45. package/dist/orval-config/files/orval.config.ts.template +24 -0
  46. package/dist/orval-config/index.d.ts +5 -0
  47. package/dist/orval-config/index.js +23 -0
  48. package/dist/orval-config/index.js.map +1 -0
  49. package/dist/orval-config/schema.json +8 -0
  50. package/dist/otel-config/files/otel-config.yaml.template +16 -0
  51. package/dist/otel-config/index.d.ts +5 -0
  52. package/dist/otel-config/index.js +98 -0
  53. package/dist/otel-config/index.js.map +1 -0
  54. package/dist/otel-config/schema.json +8 -0
  55. package/dist/sonar-config/files/sonar-project.properties.template +7 -0
  56. package/dist/sonar-config/index.d.ts +8 -0
  57. package/dist/sonar-config/index.js +16 -0
  58. package/dist/sonar-config/index.js.map +1 -0
  59. package/dist/sonar-config/schema.json +24 -0
  60. package/dist/utils/dependency-shortcuts.d.ts +2 -0
  61. package/dist/utils/dependency-shortcuts.js +20 -0
  62. package/dist/utils/dependency-shortcuts.js.map +1 -0
  63. package/dist/utils/dependency.d.ts +142 -0
  64. package/dist/utils/dependency.js +213 -0
  65. package/dist/utils/dependency.js.map +1 -0
  66. package/dist/utils/eol.d.ts +8 -0
  67. package/dist/utils/eol.js +23 -0
  68. package/dist/utils/eol.js.map +1 -0
  69. package/dist/utils/json-file.d.ts +24 -0
  70. package/dist/utils/json-file.js +78 -0
  71. package/dist/utils/json-file.js.map +1 -0
  72. package/dist/utils/script.d.ts +2 -0
  73. package/dist/utils/script.js +17 -0
  74. package/dist/utils/script.js.map +1 -0
  75. package/dist/versions.d.ts +6 -0
  76. package/dist/versions.js +10 -0
  77. package/dist/versions.js.map +1 -0
  78. package/package.json +34 -0
@@ -0,0 +1,47 @@
1
+ # See http://help.github.com/ignore-files/ for more about ignoring files.
2
+
3
+ # Compiled output
4
+ /dist
5
+ /tmp
6
+ /out-tsc
7
+ /bazel-out
8
+
9
+ # Node
10
+ /node_modules
11
+ npm-debug.log
12
+ yarn-error.log
13
+
14
+ # IDEs and editors
15
+ .idea/
16
+ .project
17
+ .classpath
18
+ .c9/
19
+ *.launch
20
+ .settings/
21
+ *.sublime-workspace
22
+
23
+ # Visual Studio Code
24
+ .vscode/*
25
+ !.vscode/settings.json
26
+ !.vscode/tasks.json
27
+ !.vscode/launch.json
28
+ !.vscode/extensions.json
29
+ .history/*
30
+
31
+ # Miscellaneous
32
+ /.angular/cache
33
+ .sass-cache/
34
+ /connect.lock
35
+ /coverage
36
+ /libpeerconnection.log
37
+ testem.log
38
+ /typings
39
+
40
+ # System files
41
+ .DS_Store
42
+ Thumbs.db
43
+
44
+
45
+ #openapi generated code
46
+ /src/app/core/openapi/*
47
+ /src/app/api/**/*
@@ -0,0 +1,11 @@
1
+ {
2
+ "tabWidth": 2,
3
+ "useTabs": false,
4
+ "singleQuote": true,
5
+ "semi": true,
6
+ "bracketSpacing": true,
7
+ "arrowParens": "avoid",
8
+ "trailingComma": "es5",
9
+ "bracketSameLine": true,
10
+ "printWidth": 100
11
+ }
@@ -0,0 +1,5 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ interface LintConfigOptions {
3
+ }
4
+ export declare function lintConfig(options: LintConfigOptions): Rule;
5
+ export {};
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lintConfig = lintConfig;
4
+ const core_1 = require("@angular-devkit/core");
5
+ const schematics_1 = require("@angular-devkit/schematics");
6
+ const json_file_1 = require("../utils/json-file");
7
+ const dependency_shortcuts_1 = require("../utils/dependency-shortcuts");
8
+ const versions_1 = require("../versions");
9
+ const script_1 = require("../utils/script");
10
+ function updatePrettierConfig() {
11
+ return (tree) => {
12
+ const pkgPath = '/package.json';
13
+ if (!tree.exists(pkgPath)) {
14
+ return;
15
+ }
16
+ const json = new json_file_1.JSONFile(tree, pkgPath);
17
+ if (json.get(['prettier']) !== undefined) {
18
+ return;
19
+ }
20
+ json.modify(['prettier'], {
21
+ printWidth: 100,
22
+ singleQuote: true,
23
+ overrides: [
24
+ {
25
+ files: '*.html',
26
+ options: {
27
+ parser: 'angular',
28
+ },
29
+ },
30
+ ],
31
+ });
32
+ };
33
+ }
34
+ function updateAngularJson() {
35
+ return (tree) => {
36
+ var _a;
37
+ if (!tree.exists('/angular.json')) {
38
+ return;
39
+ }
40
+ const json = new json_file_1.JSONFile(tree, '/angular.json');
41
+ const collections = (_a = json.get(['cli', 'schematicCollections'])) !== null && _a !== void 0 ? _a : [];
42
+ if (!collections.includes('@angular-eslint/schematics')) {
43
+ json.modify(['cli', 'schematicCollections', collections.length], '@angular-eslint/schematics');
44
+ }
45
+ const projects = json.get(['projects']);
46
+ if (projects) {
47
+ for (const projectName of Object.keys(projects)) {
48
+ if (!json.get(['projects', projectName, 'architect', 'lint'])) {
49
+ json.modify(['projects', projectName, 'architect', 'lint'], {
50
+ builder: '@angular-eslint/builder:lint',
51
+ options: {
52
+ lintFilePatterns: ['src/**/*.ts', 'src/**/*.html'],
53
+ },
54
+ });
55
+ }
56
+ }
57
+ }
58
+ };
59
+ }
60
+ function lintConfig(options) {
61
+ return (tree, _context) => {
62
+ const sourceTemplates = (0, schematics_1.url)('./files');
63
+ const toBeAddedDependencies = [
64
+ (0, dependency_shortcuts_1.installDevDependency)('eslint', versions_1.versions.eslint),
65
+ (0, dependency_shortcuts_1.installDevDependency)('angular-eslint', versions_1.versions.angularEslint),
66
+ (0, dependency_shortcuts_1.installDevDependency)('@angular-eslint/eslint-plugin', versions_1.versions.angularEslint),
67
+ (0, dependency_shortcuts_1.installDevDependency)('@angular-eslint/eslint-plugin-template', versions_1.versions.angularEslint),
68
+ (0, dependency_shortcuts_1.installDevDependency)('@angular-eslint/template-parser', versions_1.versions.angularEslint),
69
+ (0, dependency_shortcuts_1.installDevDependency)('@angular-eslint/builder', versions_1.versions.angularEslint),
70
+ (0, dependency_shortcuts_1.installDevDependency)('@typescript-eslint/eslint-plugin', versions_1.versions.typescriptEslint),
71
+ (0, dependency_shortcuts_1.installDevDependency)('@typescript-eslint/parser', versions_1.versions.typescriptEslint),
72
+ ];
73
+ const toBeAddedScripts = [
74
+ (0, script_1.addScript)('lint', 'ng lint'),
75
+ (0, script_1.addScript)('lint:fix', 'ng lint --fix'),
76
+ ];
77
+ const sourceParametrizedTemplates = (0, schematics_1.apply)(sourceTemplates, [
78
+ (0, schematics_1.applyTemplates)(Object.assign(Object.assign({}, core_1.strings), options)),
79
+ (0, schematics_1.move)(''),
80
+ ]);
81
+ return (0, schematics_1.chain)([
82
+ updateAngularJson(),
83
+ updatePrettierConfig(),
84
+ ...toBeAddedDependencies,
85
+ ...toBeAddedScripts,
86
+ (0, schematics_1.mergeWith)(sourceParametrizedTemplates),
87
+ ])(tree, _context);
88
+ };
89
+ }
90
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lint-config/index.ts"],"names":[],"mappings":";;AA4EA,gCAiCC;AA7GD,+CAA+C;AAC/C,2DAUoC;AACpC,kDAA8C;AAC9C,wEAAqE;AACrE,0CAAuC;AACvC,4CAA4C;AAK5C,SAAS,oBAAoB;IAC3B,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,MAAM,OAAO,GAAG,eAAe,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,oBAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,EAAE;YACxB,UAAU,EAAE,GAAG;YACf,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE;gBACT;oBACE,KAAK,EAAE,QAAQ;oBACf,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;qBAClB;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,CAAC,IAAU,EAAE,EAAE;;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,oBAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAEjD,MAAM,WAAW,GAAG,MAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAA0B,mCAAI,EAAE,CAAC;QAC9F,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,4BAA4B,CAAC,CAAC;QACjG,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAwC,CAAC;QAC/E,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;oBAC9D,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE;wBAC1D,OAAO,EAAE,8BAA8B;wBACvC,OAAO,EAAE;4BACP,gBAAgB,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;yBACnD;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,UAAU,CAAC,OAA0B;IACnD,OAAO,CAAC,IAAU,EAAE,QAA0B,EAAE,EAAE;QAChD,MAAM,eAAe,GAAG,IAAA,gBAAG,EAAC,SAAS,CAAC,CAAC;QAEvC,MAAM,qBAAqB,GAAG;YAC1B,IAAA,2CAAoB,EAAC,QAAQ,EAAE,mBAAQ,CAAC,MAAM,CAAC;YAC/C,IAAA,2CAAoB,EAAC,gBAAgB,EAAE,mBAAQ,CAAC,aAAa,CAAC;YAC9D,IAAA,2CAAoB,EAAC,+BAA+B,EAAE,mBAAQ,CAAC,aAAa,CAAC;YAC7E,IAAA,2CAAoB,EAAC,wCAAwC,EAAE,mBAAQ,CAAC,aAAa,CAAC;YACtF,IAAA,2CAAoB,EAAC,iCAAiC,EAAE,mBAAQ,CAAC,aAAa,CAAC;YAC/E,IAAA,2CAAoB,EAAC,yBAAyB,EAAE,mBAAQ,CAAC,aAAa,CAAC;YACvE,IAAA,2CAAoB,EAAC,kCAAkC,EAAE,mBAAQ,CAAC,gBAAgB,CAAC;YACnF,IAAA,2CAAoB,EAAC,2BAA2B,EAAE,mBAAQ,CAAC,gBAAgB,CAAC;SAC/E,CAAA;QACD,MAAM,gBAAgB,GAAG;YACrB,IAAA,kBAAS,EAAC,MAAM,EAAE,SAAS,CAAC;YAC5B,IAAA,kBAAS,EAAC,UAAU,EAAE,eAAe,CAAC;SACzC,CAAC;QACF,MAAM,2BAA2B,GAAG,IAAA,kBAAK,EAAC,eAAe,EAAE;YACzD,IAAA,2BAAc,kCACT,cAAO,GACP,OAAO,EACV;YACF,IAAA,iBAAI,EAAC,EAAE,CAAC;SACT,CAAC,CAAC;QACH,OAAO,IAAA,kBAAK,EAAC;YACX,iBAAiB,EAAE;YACnB,oBAAoB,EAAE;YACpB,GAAG,qBAAqB;YACxB,GAAG,gBAAgB;YACrB,IAAA,sBAAS,EAAC,2BAA2B,CAAC;SACvC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "lint-config",
4
+ "title": "Lint Config",
5
+ "description": "Adds ESLint, Prettier, and EditorConfig configuration files to the project",
6
+ "type": "object",
7
+ "properties": {}
8
+ }
@@ -0,0 +1 @@
1
+ v24.16.0
@@ -0,0 +1,5 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ interface NpmConfigOptions {
3
+ }
4
+ export declare function npmConfig(options: NpmConfigOptions): Rule;
5
+ export {};
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.npmConfig = npmConfig;
4
+ const core_1 = require("@angular-devkit/core");
5
+ const schematics_1 = require("@angular-devkit/schematics");
6
+ function npmConfig(options) {
7
+ return (tree, _context) => {
8
+ const sourceTemplates = (0, schematics_1.url)('./files');
9
+ const sourceParametrizedTemplates = (0, schematics_1.apply)(sourceTemplates, [
10
+ (0, schematics_1.applyTemplates)(Object.assign(Object.assign({}, core_1.strings), options)),
11
+ (0, schematics_1.move)(''),
12
+ ]);
13
+ return (0, schematics_1.mergeWith)(sourceParametrizedTemplates)(tree, _context);
14
+ };
15
+ }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/npm-config/index.ts"],"names":[],"mappings":";;AAeA,8BAYC;AA3BD,+CAA+C;AAC/C,2DASoC;AAKpC,SAAgB,SAAS,CAAC,OAAyB;IACjD,OAAO,CAAC,IAAU,EAAE,QAA0B,EAAE,EAAE;QAChD,MAAM,eAAe,GAAG,IAAA,gBAAG,EAAC,SAAS,CAAC,CAAC;QACvC,MAAM,2BAA2B,GAAG,IAAA,kBAAK,EAAC,eAAe,EAAE;YACzD,IAAA,2BAAc,kCACT,cAAO,GACP,OAAO,EACV;YACF,IAAA,iBAAI,EAAC,EAAE,CAAC;SACT,CAAC,CAAC;QACH,OAAO,IAAA,sBAAS,EAAC,2BAA2B,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "npm-config",
4
+ "title": "NPM Config",
5
+ "description": "Adds NPM configuration files (.npmrc and .nvmrc) to the project",
6
+ "type": "object",
7
+ "properties": {}
8
+ }
File without changes
@@ -0,0 +1,24 @@
1
+ import { defineConfig } from 'orval';
2
+
3
+ export default defineConfig({
4
+ api: {
5
+ input: {
6
+ // point to your spec; file path or URL both work
7
+ target: './openapi.yaml',
8
+ },
9
+ output: {
10
+ // where generated code goes
11
+ target: './src/app/api/api-service.ts',
12
+ // where standalone model types go
13
+ schemas: './src/app/api/model',
14
+ // generate per OpenAPI tag (nice separation of services)
15
+ mode: 'tags-split',
16
+ // generate Angular HttpClient services
17
+ client: 'angular',
18
+ baseUrl: '/api/',
19
+ // keep services tree clean on each run
20
+ clean: true,
21
+ mock: false
22
+ },
23
+ },
24
+ });
@@ -0,0 +1,5 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ interface OrvalConfigOptions {
3
+ }
4
+ export declare function orvalConfig(options: OrvalConfigOptions): Rule;
5
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.orvalConfig = orvalConfig;
4
+ const core_1 = require("@angular-devkit/core");
5
+ const schematics_1 = require("@angular-devkit/schematics");
6
+ const versions_1 = require("../versions");
7
+ const dependency_shortcuts_1 = require("../utils/dependency-shortcuts");
8
+ const script_1 = require("../utils/script");
9
+ function orvalConfig(options) {
10
+ return (tree, _context) => {
11
+ const sourceTemplates = (0, schematics_1.url)('./files');
12
+ const sourceParametrizedTemplates = (0, schematics_1.apply)(sourceTemplates, [
13
+ (0, schematics_1.applyTemplates)(Object.assign(Object.assign({}, core_1.strings), options)),
14
+ (0, schematics_1.move)(''),
15
+ ]);
16
+ return (0, schematics_1.chain)([
17
+ (0, dependency_shortcuts_1.installDevDependency)('orval', versions_1.versions.orval),
18
+ (0, script_1.addScript)('api:gen', 'orval --config orval.config.ts'),
19
+ (0, schematics_1.mergeWith)(sourceParametrizedTemplates)
20
+ ])(tree, _context);
21
+ };
22
+ }
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orval-config/index.ts"],"names":[],"mappings":";;AAmBA,kCAgBC;AAnCD,+CAA+C;AAC/C,2DAUoC;AACpC,0CAAuC;AACvC,wEAAqE;AACrE,4CAA4C;AAK5C,SAAgB,WAAW,CAAC,OAA2B;IACrD,OAAO,CAAC,IAAU,EAAE,QAA0B,EAAE,EAAE;QAChD,MAAM,eAAe,GAAG,IAAA,gBAAG,EAAC,SAAS,CAAC,CAAC;QACvC,MAAM,2BAA2B,GAAG,IAAA,kBAAK,EAAC,eAAe,EAAE;YACzD,IAAA,2BAAc,kCACT,cAAO,GACP,OAAO,EACV;YACF,IAAA,iBAAI,EAAC,EAAE,CAAC;SACT,CAAC,CAAC;QACH,OAAO,IAAA,kBAAK,EAAC;YACT,IAAA,2CAAoB,EAAC,OAAO,EAAE,mBAAQ,CAAC,KAAK,CAAC;YAC7C,IAAA,kBAAS,EAAC,SAAS,EAAE,gCAAgC,CAAC;YACtD,IAAA,sBAAS,EAAC,2BAA2B,CAAC;SACzC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "orval-config",
4
+ "title": "Orval Config",
5
+ "description": "Adds orval to the project, create a config file and an empty openapi spec file",
6
+ "type": "object",
7
+ "properties": {}
8
+ }
@@ -0,0 +1,16 @@
1
+ receivers:
2
+ otlp:
3
+ protocols:
4
+ http:
5
+ endpoint: 0.0.0.0:4318
6
+
7
+ exporters:
8
+ debug:
9
+ verbosity: normal
10
+
11
+ service:
12
+ pipelines:
13
+ traces:
14
+ receivers: [otlp]
15
+ exporters: [debug]
16
+
@@ -0,0 +1,5 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ interface OtelConfigOptions {
3
+ }
4
+ export declare function otelConfig(options: OtelConfigOptions): Rule;
5
+ export {};
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.otelConfig = otelConfig;
4
+ const core_1 = require("@angular-devkit/core");
5
+ const schematics_1 = require("@angular-devkit/schematics");
6
+ const NGINX_CONF_PATH = '/nginx.conf';
7
+ const OTLP_LOCATION_MARKER = 'location /otlp/';
8
+ const SPA_FALLBACK_MARKER = ' # Angular SPA:';
9
+ const LOCATION_ROOT_MARKER = ' location / {';
10
+ const OTLP_BLOCK = [
11
+ ' # Proxy browser OTLP exports to the collector to keep telemetry same-origin.',
12
+ ' location /otlp/ {',
13
+ ' set $otel http://${OTEL_COLLECTOR_HOST};',
14
+ ' rewrite ^/otlp/(.*)$ /$1 break;',
15
+ ' proxy_pass $otel;',
16
+ ' proxy_set_header Host $host;',
17
+ ' proxy_set_header X-Forwarded-Proto $scheme;',
18
+ ' }',
19
+ '',
20
+ ].join('\n');
21
+ const DEFAULT_NGINX_CONF = [
22
+ 'server {',
23
+ ' listen 80;',
24
+ ' server_name _;',
25
+ '',
26
+ ' root /usr/share/nginx/html;',
27
+ ' index index.html;',
28
+ '',
29
+ ' # Resolver is injected at container start via RESOLVER env var.',
30
+ ' # Docker embedded DNS: 127.0.0.11',
31
+ ' # AKS CoreDNS: typically 10.0.0.10 (check with: kubectl get svc -n kube-system kube-dns)',
32
+ ' resolver ${RESOLVER} valid=30s ipv6=off;',
33
+ '',
34
+ ' # Proxy API calls to the backend service.',
35
+ ' # Using a variable defers DNS lookup to request time, so nginx starts even if the backend is not yet available.',
36
+ ' location /api/ {',
37
+ " # ponytail: set must come before rewrite; rewrite's `break` flag stops all",
38
+ ' # ngx_http_rewrite_module directives (including set) that follow it.',
39
+ ' set $backend ${BACKEND_HOST};',
40
+ ' rewrite ^/api/(.*)$ /$1 break;',
41
+ ' proxy_pass $backend;',
42
+ ' proxy_set_header Host $host;',
43
+ ' proxy_set_header X-Real-IP $remote_addr;',
44
+ ' proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;',
45
+ ' proxy_set_header X-Forwarded-Proto $scheme;',
46
+ ' }',
47
+ '',
48
+ ' # Proxy browser OTLP exports to the collector to keep telemetry same-origin.',
49
+ ' location /otlp/ {',
50
+ ' set $otel http://${OTEL_COLLECTOR_HOST};',
51
+ ' rewrite ^/otlp/(.*)$ /$1 break;',
52
+ ' proxy_pass $otel;',
53
+ ' proxy_set_header Host $host;',
54
+ ' proxy_set_header X-Forwarded-Proto $scheme;',
55
+ ' }',
56
+ '',
57
+ ' # Angular SPA: fall back to index.html for any unknown path',
58
+ ' location / {',
59
+ ' try_files $uri $uri/ /index.html;',
60
+ ' }',
61
+ '',
62
+ ' # Cache static assets aggressively',
63
+ ' location ~* \\.(js|css|png|jpg|jpeg|gif|ico|svg|woff2?)$ {',
64
+ ' expires 1y;',
65
+ ' add_header Cache-Control "public, immutable";',
66
+ ' }',
67
+ '}',
68
+ '',
69
+ ].join('\n');
70
+ function otelConfig(options) {
71
+ return (tree, _context) => {
72
+ if (tree.exists(NGINX_CONF_PATH)) {
73
+ const content = tree.readText(NGINX_CONF_PATH);
74
+ if (!content.includes(OTLP_LOCATION_MARKER)) {
75
+ const insertIdx = content.includes(SPA_FALLBACK_MARKER)
76
+ ? content.indexOf(SPA_FALLBACK_MARKER)
77
+ : content.indexOf(LOCATION_ROOT_MARKER);
78
+ if (insertIdx !== -1) {
79
+ const updated = content.slice(0, insertIdx) + OTLP_BLOCK + '\n' + content.slice(insertIdx);
80
+ tree.overwrite(NGINX_CONF_PATH, updated);
81
+ }
82
+ else {
83
+ _context.logger.warn('Could not find insertion point in nginx.conf; OTLP location block was not added.');
84
+ }
85
+ }
86
+ }
87
+ else {
88
+ tree.create(NGINX_CONF_PATH, DEFAULT_NGINX_CONF);
89
+ }
90
+ const sourceTemplates = (0, schematics_1.url)('./files');
91
+ const sourceParametrizedTemplates = (0, schematics_1.apply)(sourceTemplates, [
92
+ (0, schematics_1.applyTemplates)(Object.assign(Object.assign({}, core_1.strings), options)),
93
+ (0, schematics_1.move)(''),
94
+ ]);
95
+ return (0, schematics_1.mergeWith)(sourceParametrizedTemplates)(tree, _context);
96
+ };
97
+ }
98
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/otel-config/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "otel-config",
4
+ "title": "OTel Config",
5
+ "description": "Adds OpenTelemetry Collector configuration and configures nginx to proxy OTLP exports",
6
+ "type": "object",
7
+ "properties": {}
8
+ }
@@ -0,0 +1,7 @@
1
+ sonar.sources=./src
2
+ sonar.javascript.lcov.reportPaths=./coverage/output/lcov.info
3
+ sonar.exclusions=./src/spec/**,**/*.spec.ts,./package-lock.json,/./src/app/mocks/**
4
+ sonar.coverage.exclusions=**/*.spec.ts, **/*.html, **/*.scss
5
+ sonar.organization=<%= dasherize(organization) %>
6
+ sonar.projectKey=<%= dasherize(projectKey) %>
7
+ sonar.projectName=<%= dasherize(projectName) %>
@@ -0,0 +1,8 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ interface SonarConfigOptions {
3
+ projectKey: string;
4
+ projectName: string;
5
+ organization: string;
6
+ }
7
+ export declare function sonarConfig(options: SonarConfigOptions): Rule;
8
+ export {};
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sonarConfig = sonarConfig;
4
+ const core_1 = require("@angular-devkit/core");
5
+ const schematics_1 = require("@angular-devkit/schematics");
6
+ function sonarConfig(options) {
7
+ return (tree, _context) => {
8
+ const sourceTemplates = (0, schematics_1.url)('./files');
9
+ const sourceParametrizedTemplates = (0, schematics_1.apply)(sourceTemplates, [
10
+ (0, schematics_1.applyTemplates)(Object.assign(Object.assign({}, core_1.strings), options)),
11
+ (0, schematics_1.move)(''),
12
+ ]);
13
+ return (0, schematics_1.mergeWith)(sourceParametrizedTemplates)(tree, _context);
14
+ };
15
+ }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sonar-config/index.ts"],"names":[],"mappings":";;AAkBA,kCAYC;AA9BD,+CAA+C;AAC/C,2DASoC;AAQpC,SAAgB,WAAW,CAAC,OAA2B;IACrD,OAAO,CAAC,IAAU,EAAE,QAA0B,EAAE,EAAE;QAChD,MAAM,eAAe,GAAG,IAAA,gBAAG,EAAC,SAAS,CAAC,CAAC;QACvC,MAAM,2BAA2B,GAAG,IAAA,kBAAK,EAAC,eAAe,EAAE;YACzD,IAAA,2BAAc,kCACT,cAAO,GACP,OAAO,EACV;YACF,IAAA,iBAAI,EAAC,EAAE,CAAC;SACT,CAAC,CAAC;QACH,OAAO,IAAA,sBAAS,EAAC,2BAA2B,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "sonar-config",
4
+ "title": "Sonar Config",
5
+ "description": "Adds SonarQube configuration to the project",
6
+ "type": "object",
7
+ "properties": {
8
+ "projectKey": {
9
+ "type": "string",
10
+ "description": "The SonarQube project key",
11
+ "default": "f-service"
12
+ },
13
+ "projectName": {
14
+ "type": "string",
15
+ "description": "The SonarQube project name",
16
+ "default": "frontend-service"
17
+ },
18
+ "organization": {
19
+ "type": "string",
20
+ "description": "The SonarQube organization name",
21
+ "default": "organization"
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,2 @@
1
+ export declare function installDevDependency(name: string, version: string): import("@angular-devkit/schematics").Rule;
2
+ export declare function installRegularDependency(name: string, version: string): import("@angular-devkit/schematics").Rule;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.installDevDependency = installDevDependency;
4
+ exports.installRegularDependency = installRegularDependency;
5
+ const dependency_1 = require("./dependency");
6
+ function installDevDependency(name, version) {
7
+ return (0, dependency_1.addDependency)(name, version, {
8
+ install: dependency_1.InstallBehavior.Auto,
9
+ type: dependency_1.DependencyType.Dev,
10
+ existing: dependency_1.ExistingBehavior.Skip
11
+ });
12
+ }
13
+ function installRegularDependency(name, version) {
14
+ return (0, dependency_1.addDependency)(name, version, {
15
+ install: dependency_1.InstallBehavior.Auto,
16
+ type: dependency_1.DependencyType.Default,
17
+ existing: dependency_1.ExistingBehavior.Skip
18
+ });
19
+ }
20
+ //# sourceMappingURL=dependency-shortcuts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-shortcuts.js","sourceRoot":"","sources":["../../src/utils/dependency-shortcuts.ts"],"names":[],"mappings":";;AAEA,oDASC;AACD,4DASC;AArBD,6CAAgG;AAEhG,SAAgB,oBAAoB,CAChC,IAAY,EACZ,OAAe;IAEf,OAAO,IAAA,0BAAa,EAAC,IAAI,EAAE,OAAO,EAAE;QAChC,OAAO,EAAE,4BAAe,CAAC,IAAI;QAC7B,IAAI,EAAE,2BAAc,CAAC,GAAG;QACxB,QAAQ,EAAE,6BAAgB,CAAC,IAAI;KAClC,CAAC,CAAC;AACP,CAAC;AACD,SAAgB,wBAAwB,CACpC,IAAY,EACZ,OAAe;IAEf,OAAO,IAAA,0BAAa,EAAC,IAAI,EAAE,OAAO,EAAE;QAChC,OAAO,EAAE,4BAAe,CAAC,IAAI;QAC7B,IAAI,EAAE,2BAAc,CAAC,OAAO;QAC5B,QAAQ,EAAE,6BAAgB,CAAC,IAAI;KAClC,CAAC,CAAC;AACP,CAAC"}