Compare commits

...

16 commits

Author SHA1 Message Date
a6bf4f3f73
Merge pull request 'fix: fix release pipeline' (!133) from fix-pipeline2 into main
All checks were successful
Release / Release (push) Successful in 59s
Reviewed-on: #133
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
2025-04-23 07:45:59 +00:00
ed2d512cb0
ci: remove eslint installation from CI workflow
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Successful in 29s
CI / Checkstyle Main (pull_request) Successful in 44s
CI / prettier (pull_request) Successful in 42s
CI / test-build (pull_request) Successful in 44s
2025-04-23 09:43:45 +02:00
465967ce73
chore: update eslint version and remove package.json
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / prettier (pull_request) Successful in 25s
CI / Checkstyle Main (pull_request) Successful in 37s
CI / test-build (pull_request) Successful in 36s
CI / eslint (pull_request) Successful in 22s
2025-04-23 09:41:36 +02:00
1bd0de1737
ci: add eslint installation to CI workflow
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Failing after 28s
CI / prettier (pull_request) Successful in 30s
CI / Checkstyle Main (pull_request) Successful in 43s
CI / test-build (pull_request) Successful in 43s
2025-04-23 09:37:24 +02:00
ddb772e7fc
chore: update .gitignore and add package.json for eslint
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Failing after 26s
CI / prettier (pull_request) Successful in 28s
CI / Checkstyle Main (pull_request) Successful in 42s
CI / test-build (pull_request) Successful in 41s
2025-04-23 09:35:08 +02:00
f6dd50dc44
Merge branch 'main' into fix-pipeline2
Some checks failed
CI / Get Changed Files (pull_request) Successful in 8s
CI / prettier (pull_request) Successful in 28s
CI / Checkstyle Main (pull_request) Successful in 48s
CI / test-build (pull_request) Successful in 36s
CI / eslint (pull_request) Failing after 37s
2025-04-23 07:16:50 +00:00
eda1fc8417
Merge pull request 'refactor: replace switch statement with if statement' (!132) from refactor-webhook into main
Some checks are pending
Release / Release (push) Waiting to run
Reviewed-on: #132
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-04-23 07:16:24 +00:00
17bc204029
style(workflow): standardize quotes and formatting in YAML
Some checks failed
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Failing after 29s
CI / prettier (pull_request) Successful in 33s
CI / Checkstyle Main (pull_request) Successful in 52s
CI / test-build (pull_request) Successful in 50s
2025-04-23 09:15:15 +02:00
Phan Huy Tran
94ca93e510 refactor: replace switch statement with ugly a if statement (no go idiomatic btw)
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 37s
2025-04-23 09:14:19 +02:00
1fe3148019
Merge pull request 'fix: avoid serialization error, remove debug statement' (!131) from fix-stripe into main
Some checks are pending
Release / Release (push) Waiting to run
Reviewed-on: #131
Reviewed-by: Jan K9f <jan@kjan.email>
2025-04-23 07:07:12 +00:00
Phan Huy Tran
93dc3f9f10 fix: avoid serialization error, remove debug statement
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 38s
2025-04-23 09:05:44 +02:00
0291450eb9
Merge pull request 'feat(security): allow access to webhook endpoint' (!128) from bugfix/deposit into main
Some checks are pending
Release / Release (push) Waiting to run
Reviewed-on: #128
Reviewed-by: Jan K9f <jan@kjan.email>
Reviewed-by: Phan Huy Tran <ptran@noreply.localhost>
Reviewed-by: Jan-Marlon Leibl <jleibl@proton.me>
2025-04-23 06:59:50 +00:00
0b6bf37921
Merge branch 'main' into bugfix/deposit
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 36s
2025-04-23 06:59:00 +00:00
2aaf79410d
Merge pull request 'ci: add ubuntu-latest to workflow jobs configuration' (!130) from fix-pipelines into main
Reviewed-on: #130
2025-04-23 06:58:54 +00:00
24d2a93c7f
ci: add ubuntu-latest to workflow jobs configuration
All checks were successful
CI / Get Changed Files (pull_request) Successful in 5s
CI / prettier (pull_request) Successful in 1m51s
CI / eslint (pull_request) Successful in 1m59s
CI / test-build (pull_request) Successful in 2m7s
CI / Checkstyle Main (pull_request) Successful in 2m47s
2025-04-23 08:52:55 +02:00
csimonis
aa78ccc630 feat(security): allow access to webhook endpoint
Some checks failed
CI / Get Changed Files (pull_request) Successful in 5s
CI / Checkstyle Main (pull_request) Has been cancelled
CI / eslint (pull_request) Has been cancelled
CI / prettier (pull_request) Has been cancelled
CI / test-build (pull_request) Has been cancelled
2025-04-23 08:42:27 +02:00
7 changed files with 26 additions and 35 deletions

View file

@ -26,6 +26,7 @@ jobs:
- '.gitea/workflows/**' - '.gitea/workflows/**'
checkstyle: checkstyle:
runs-on: ubuntu-latest
name: "Checkstyle Main" name: "Checkstyle Main"
needs: changed_files needs: changed_files
if: ${{ needs.changed_files.outputs.backend == 'true' || needs.changed_files.outputs.workflow == 'true' }} if: ${{ needs.changed_files.outputs.backend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
@ -54,26 +55,27 @@ jobs:
echo "Cache miss! Running checkstyle check" echo "Cache miss! Running checkstyle check"
echo "cache-hit=false" >> $GITHUB_OUTPUT echo "cache-hit=false" >> $GITHUB_OUTPUT
fi fi
- name: "Run checkstyle" - name: "Run checkstyle"
if: steps.check-cache.outputs.cache-hit != 'true' if: steps.check-cache.outputs.cache-hit != 'true'
working-directory: ./backend working-directory: ./backend
run: | run: |
gradle checkstyleMain gradle checkstyleMain
- name: "Cache checkstyle results" - name: "Cache checkstyle results"
if: steps.check-cache.outputs.cache-hit != 'true' if: steps.check-cache.outputs.cache-hit != 'true'
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: checkstyle-results name: checkstyle-results
path: backend/build/reports/checkstyle path: backend/build/reports/checkstyle
- name: "Stop Gradle" - name: "Stop Gradle"
if: steps.check-cache.outputs.cache-hit != 'true' if: steps.check-cache.outputs.cache-hit != 'true'
working-directory: ./backend working-directory: ./backend
run: gradle --stop run: gradle --stop
eslint: eslint:
runs-on: ubuntu-latest
name: eslint name: eslint
needs: changed_files needs: changed_files
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }} if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
@ -102,6 +104,7 @@ jobs:
bun run lint bun run lint
prettier: prettier:
runs-on: ubuntu-latest
name: prettier name: prettier
needs: changed_files needs: changed_files
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }} if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
@ -130,6 +133,7 @@ jobs:
bun run format:check bun run format:check
test-build: test-build:
runs-on: ubuntu-latest
name: test-build name: test-build
needs: changed_files needs: changed_files
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }} if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}

View file

@ -4,10 +4,10 @@ on:
branches: branches:
- "main" - "main"
paths: paths:
- 'backend/**' - "backend/**"
- 'frontend/**' - "frontend/**"
- '.gitea/workflows/release.yml' - ".gitea/workflows/release.yml"
- 'release.config.cjs' - "release.config.cjs"
env: env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
@ -17,10 +17,11 @@ permissions:
jobs: jobs:
release: release:
runs-on: ubuntu-latest
name: Release name: Release
permissions: permissions:
contents: write contents: write
issues: write issues: write
pull-requests: write pull-requests: write
id-token: write id-token: write
steps: steps:
@ -28,4 +29,5 @@ jobs:
uses: https://git.kjan.de/actions/semantic-release@main uses: https://git.kjan.de/actions/semantic-release@main
with: with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}

2
.gitignore vendored
View file

@ -1,3 +1,3 @@
.idea .idea
.DS_Store .DS_Store
.vscode .vscode

View file

@ -46,23 +46,10 @@ public class WebhookController {
public ResponseEntity<String> webhook(@RequestBody String payload, @RequestHeader("Stripe-Signature") String sigHeader) throws StripeException { public ResponseEntity<String> webhook(@RequestBody String payload, @RequestHeader("Stripe-Signature") String sigHeader) throws StripeException {
Event event = Webhook.constructEvent(payload, sigHeader, webhookSecret); Event event = Webhook.constructEvent(payload, sigHeader, webhookSecret);
System.out.println(event.getType()); if (Objects.equals(event.getType(), "checkout.session.completed") || Objects.equals(event.getType(), "checkout.session.async_payment_succeeded")) {
Session session = (Session) event.getData().getObject();
switch (event.getType()) { this.transactionService.fulfillCheckout(session.getId());
case "checkout.session.completed":
case "checkout.session.async_payment_succeeded":
EventDataObjectDeserializer dataObjectDeserializer = event.getDataObjectDeserializer();
if (dataObjectDeserializer.getObject().isPresent()) {
Session session = (Session) dataObjectDeserializer.getObject().get();
this.transactionService.fulfillCheckout(session.getId());
} else {
logger.error("Failed to deserialize webhook event data");
}
break;
default:
// No action needed for other event types
break;
} }
return ResponseEntity.ok().body(null); return ResponseEntity.ok().body(null);

View file

@ -23,7 +23,7 @@ public class SecurityConfig {
.cors(Customizer.withDefaults()) .cors(Customizer.withDefaults())
.csrf(csrf -> csrf.disable()) .csrf(csrf -> csrf.disable())
.authorizeHttpRequests(auth -> { .authorizeHttpRequests(auth -> {
auth.requestMatchers("/swagger/**", "/swagger-ui/**", "/health").permitAll() auth.requestMatchers("/webhook", "/swagger/**", "/swagger-ui/**", "/health").permitAll()
.anyRequest().authenticated(); .anyRequest().authenticated();
}) })
.oauth2ResourceServer(oauth2 -> oauth2.jwt(jwt -> .oauth2ResourceServer(oauth2 -> oauth2.jwt(jwt ->

View file

@ -37,7 +37,7 @@
"@angular/compiler-cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0",
"@types/jasmine": "~5.1.0", "@types/jasmine": "~5.1.0",
"angular-eslint": "19.3.0", "angular-eslint": "19.3.0",
"eslint": "^9.20.0", "eslint": "^9.25.1",
"jasmine-core": "~5.6.0", "jasmine-core": "~5.6.0",
"karma": "~6.4.0", "karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0", "karma-chrome-launcher": "~3.2.0",
@ -341,15 +341,15 @@
"@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="],
"@eslint/config-array": ["@eslint/config-array@0.19.2", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w=="], "@eslint/config-array": ["@eslint/config-array@0.20.0", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ=="],
"@eslint/config-helpers": ["@eslint/config-helpers@0.2.1", "", {}, "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw=="], "@eslint/config-helpers": ["@eslint/config-helpers@0.2.1", "", {}, "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw=="],
"@eslint/core": ["@eslint/core@0.12.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg=="], "@eslint/core": ["@eslint/core@0.13.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw=="],
"@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="], "@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="],
"@eslint/js": ["@eslint/js@9.23.0", "", {}, "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw=="], "@eslint/js": ["@eslint/js@9.25.1", "", {}, "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg=="],
"@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="], "@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="],
@ -1005,7 +1005,7 @@
"escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
"eslint": ["eslint@9.23.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.2", "@eslint/config-helpers": "^0.2.0", "@eslint/core": "^0.12.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.23.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw=="], "eslint": ["eslint@9.25.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.20.0", "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.13.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.25.1", "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ=="],
"eslint-scope": ["eslint-scope@8.3.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ=="], "eslint-scope": ["eslint-scope@8.3.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ=="],
@ -1917,8 +1917,6 @@
"@eslint/eslintrc/ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], "@eslint/eslintrc/ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="],
"@eslint/plugin-kit/@eslint/core": ["@eslint/core@0.13.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw=="],
"@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="], "@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="],
"@inquirer/checkbox/@inquirer/type": ["@inquirer/type@3.0.5", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg=="], "@inquirer/checkbox/@inquirer/type": ["@inquirer/type@3.0.5", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg=="],

View file

@ -46,7 +46,7 @@
"@angular/compiler-cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0",
"@types/jasmine": "~5.1.0", "@types/jasmine": "~5.1.0",
"angular-eslint": "19.3.0", "angular-eslint": "19.3.0",
"eslint": "^9.20.0", "eslint": "^9.25.1",
"jasmine-core": "~5.6.0", "jasmine-core": "~5.6.0",
"karma": "~6.4.0", "karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0", "karma-chrome-launcher": "~3.2.0",