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.
- package/README.md +70 -0
- package/dist/adr/files/__number__-__slug__.md.template +19 -0
- package/dist/adr/index.d.ts +8 -0
- package/dist/adr/index.js +19 -0
- package/dist/adr/index.js.map +1 -0
- package/dist/adr/schema.json +24 -0
- package/dist/collection.json +56 -0
- package/dist/components/header/index.d.ts +6 -0
- package/dist/components/header/index.js +17 -0
- package/dist/components/header/index.js.map +1 -0
- package/dist/docker-config/files/Dockerfile.template +15 -0
- package/dist/docker-config/files/compose.yaml.template +10 -0
- package/dist/docker-config/files/nginx.conf.template +35 -0
- package/dist/docker-config/index.d.ts +8 -0
- package/dist/docker-config/index.js +16 -0
- package/dist/docker-config/index.js.map +1 -0
- package/dist/docker-config/schema.json +24 -0
- package/dist/gitignore-config/files/.gitignore.template +42 -0
- package/dist/gitignore-config/index.d.ts +5 -0
- package/dist/gitignore-config/index.js +16 -0
- package/dist/gitignore-config/index.js.map +1 -0
- package/dist/gitignore-config/schema.json +8 -0
- package/dist/k8s-config/files/k8s/deployment.yaml.template +22 -0
- package/dist/k8s-config/files/k8s/ingress.yaml.template +17 -0
- package/dist/k8s-config/files/k8s/service.yaml.template +14 -0
- package/dist/k8s-config/index.d.ts +10 -0
- package/dist/k8s-config/index.js +21 -0
- package/dist/k8s-config/index.js.map +1 -0
- package/dist/k8s-config/schema.json +34 -0
- package/dist/lint-config/files/.editorconfig.template +17 -0
- package/dist/lint-config/files/.eslintignore.template +2 -0
- package/dist/lint-config/files/.eslintrc.json.template +61 -0
- package/dist/lint-config/files/.prettierignore.template +47 -0
- package/dist/lint-config/files/.prettierrc.json.template +11 -0
- package/dist/lint-config/index.d.ts +5 -0
- package/dist/lint-config/index.js +90 -0
- package/dist/lint-config/index.js.map +1 -0
- package/dist/lint-config/schema.json +8 -0
- package/dist/npm-config/files/.nvmrc.template +1 -0
- package/dist/npm-config/index.d.ts +5 -0
- package/dist/npm-config/index.js +16 -0
- package/dist/npm-config/index.js.map +1 -0
- package/dist/npm-config/schema.json +8 -0
- package/dist/orval-config/files/openapi.yaml.template +0 -0
- package/dist/orval-config/files/orval.config.ts.template +24 -0
- package/dist/orval-config/index.d.ts +5 -0
- package/dist/orval-config/index.js +23 -0
- package/dist/orval-config/index.js.map +1 -0
- package/dist/orval-config/schema.json +8 -0
- package/dist/otel-config/files/otel-config.yaml.template +16 -0
- package/dist/otel-config/index.d.ts +5 -0
- package/dist/otel-config/index.js +98 -0
- package/dist/otel-config/index.js.map +1 -0
- package/dist/otel-config/schema.json +8 -0
- package/dist/sonar-config/files/sonar-project.properties.template +7 -0
- package/dist/sonar-config/index.d.ts +8 -0
- package/dist/sonar-config/index.js +16 -0
- package/dist/sonar-config/index.js.map +1 -0
- package/dist/sonar-config/schema.json +24 -0
- package/dist/utils/dependency-shortcuts.d.ts +2 -0
- package/dist/utils/dependency-shortcuts.js +20 -0
- package/dist/utils/dependency-shortcuts.js.map +1 -0
- package/dist/utils/dependency.d.ts +142 -0
- package/dist/utils/dependency.js +213 -0
- package/dist/utils/dependency.js.map +1 -0
- package/dist/utils/eol.d.ts +8 -0
- package/dist/utils/eol.js +23 -0
- package/dist/utils/eol.js.map +1 -0
- package/dist/utils/json-file.d.ts +24 -0
- package/dist/utils/json-file.js +78 -0
- package/dist/utils/json-file.js.map +1 -0
- package/dist/utils/script.d.ts +2 -0
- package/dist/utils/script.js +17 -0
- package/dist/utils/script.js.map +1 -0
- package/dist/versions.d.ts +6 -0
- package/dist/versions.js +10 -0
- package/dist/versions.js.map +1 -0
- 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,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":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
v24.16.0
|
|
@@ -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"}
|
|
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,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,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,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,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,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"}
|