From 448ef660b03a0087d8076d121aeb875056eff9e4 Mon Sep 17 00:00:00 2001 From: Clemente Raposo Date: Wed, 16 Oct 2024 17:28:21 +0100 Subject: [PATCH] Split angular.json file and add merge-angular-json command --- .gitignore | 4 +- .yarnrc.yml | 4 + config/services/system/upgrades.yaml | 1 + .../angular/base-angular.json | 166 +-------------- core/yarn/plugins/merge-angular-json.js | 68 ++++++ extensions/defaultExt/app/angular.json | 127 ++++++++++++ package.json | 17 +- yarn.lock | 196 +++++++++++++++++- 8 files changed, 406 insertions(+), 177 deletions(-) create mode 100644 .yarnrc.yml rename angular.json => core/angular/base-angular.json (50%) create mode 100644 core/yarn/plugins/merge-angular-json.js create mode 100644 extensions/defaultExt/app/angular.json diff --git a/.gitignore b/.gitignore index e593bb790..d44159e0e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ -/.angular/cache ## SuiteCRM 8 ## +/.angular/cache +/angular.json + ###> symfony/framework-bundle ### /.env.local /.env.local.php diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 000000000..564d64ae9 --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1,4 @@ +nodeLinker: node-modules + +plugins: + - ./core/yarn/plugins/merge-angular-json.js diff --git a/config/services/system/upgrades.yaml b/config/services/system/upgrades.yaml index b8ba271cc..965048533 100644 --- a/config/services/system/upgrades.yaml +++ b/config/services/system/upgrades.yaml @@ -25,6 +25,7 @@ parameters: - '.env.prod.local.php' - '.env.dev.local' - '.env.dev.local.php' + - 'angular.json' - 'tmp' toKeepIgnore: - 'public/legacy/modules/Accounts' diff --git a/angular.json b/core/angular/base-angular.json similarity index 50% rename from angular.json rename to core/angular/base-angular.json index 9fae36991..402ccbebc 100644 --- a/angular.json +++ b/core/angular/base-angular.json @@ -45,7 +45,11 @@ ], "output": "/themes/" }, - { "glob": "**/*", "input": "node_modules/tinymce", "output": "/tinymce/" } + { + "glob": "**/*", + "input": "node_modules/tinymce", + "output": "/tinymce/" + } ], "allowedCommonJsDependencies": [ "graphql-tag", @@ -62,7 +66,6 @@ "maximumWarning": "6kb" } ], - "deployUrl": "/", "assets": [ { "glob": "**/*", @@ -101,27 +104,6 @@ } } }, - "serve": { - "builder": "ngx-build-plus:dev-server", - "options": { - "browserTarget": "shell:build:serve", - "proxyConfig": "./proxy.conf.local.json", - "extraWebpackConfig": "core/app/shell/webpack.config.js", - "port": 5000 - }, - "configurations": { - "production": { - "browserTarget": "shell:build:production", - "extraWebpackConfig": "core/app/shell/webpack.prod.config.js" - } - } - }, - "extract-i18n": { - "builder": "ngx-build-plus:extract-i18n", - "options": { - "browserTarget": "shell:build" - } - }, "test": { "builder": "ngx-build-plus:karma", "options": { @@ -150,25 +132,6 @@ } } }, - "SuiteCRM-e2e": { - "root": "core/app/shell/e2e", - "projectType": "application", - "prefix": "", - "architect": { - "e2e": { - "builder": "@angular-devkit/build-angular:protractor", - "options": { - "protractorConfig": "core/app/shell/e2e/protractor.conf.js", - "devServerTarget": "SuiteCRM:serve" - }, - "configurations": { - "production": { - "devServerTarget": "SuiteCRM:serve:production" - } - } - } - } - }, "core": { "projectType": "library", "root": "core/app/core", @@ -202,125 +165,6 @@ } } } - }, - "defaultExt": { - "projectType": "application", - "schematics": { - "@schematics/angular:component": { - "style": "scss" - } - }, - "root": "extensions/defaultExt", - "sourceRoot": "extensions/defaultExt/app/src", - "prefix": "app", - "architect": { - "build": { - "builder": "ngx-build-plus:browser", - "options": { - "namedChunks": true, - "commonChunk": false, - "sourceMap": true, - "aot": true, - "outputPath": "extensions/defaultExt/public", - "index": "extensions/defaultExt/app/src/index.html", - "main": "extensions/defaultExt/app/src/main.ts", - "polyfills": "extensions/defaultExt/app/src/polyfills.ts", - "tsConfig": "extensions/defaultExt/app/tsconfig.app.json", - "assets": [ - "extensions/defaultExt/app/src/favicon.ico", - "extensions/defaultExt/app/src/assets" - ], - "styles": [ - "extensions/defaultExt/app/src/styles.scss" - ], - "scripts": [], - "extraWebpackConfig": "extensions/defaultExt/app/webpack.config.js" - }, - "configurations": { - "production": { - "fileReplacements": [ - { - "replace": "extensions/defaultExt/app/src/environments/environment.ts", - "with": "extensions/defaultExt/app/src/environments/environment.prod.ts" - } - ], - "optimization": true, - "outputHashing": "all", - "sourceMap": false, - "namedChunks": true, - "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, - "budgets": [ - { - "type": "initial", - "maximumWarning": "2mb", - "maximumError": "5mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "6kb", - "maximumError": "10kb" - } - ], - "extraWebpackConfig": "extensions/defaultExt/app/webpack.prod.config.js" - }, - "dev": { - "outputPath": "public/extensions/defaultExt" - } - } - }, - "serve": { - "builder": "ngx-build-plus:dev-server", - "options": { - "browserTarget": "services:build", - "extraWebpackConfig": "extensions/defaultExt/app/webpack.config.js", - "port": 3000 - }, - "configurations": { - "production": { - "browserTarget": "services:build:production", - "extraWebpackConfig": "extensions/defaultExt/app/webpack.prod.config.js" - } - } - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "buildTarget": "services:build" - } - }, - "test": { - "builder": "ngx-build-plus:karma", - "options": { - "main": "extensions/defaultExt/app/src/test.ts", - "polyfills": "extensions/defaultExt/app/src/polyfills.ts", - "tsConfig": "extensions/defaultExt/app/tsconfig.spec.json", - "karmaConfig": "extensions/defaultExt/app/karma.conf.js", - "assets": [ - "extensions/defaultExt/app/src/favicon.ico", - "extensions/defaultExt/app/src/assets" - ], - "styles": [ - "extensions/defaultExt/app/src/styles.scss" - ], - "scripts": [], - "extraWebpackConfig": "extensions/defaultExt/app/webpack.config.js" - } - }, - "e2e": { - "builder": "@angular-devkit/build-angular:protractor", - "options": { - "protractorConfig": "extensions/defaultExt/app/e2e/protractor.conf.js", - "devServerTarget": "services:serve" - }, - "configurations": { - "production": { - "devServerTarget": "services:serve:production" - } - } - } - } } }, "schematics": { diff --git a/core/yarn/plugins/merge-angular-json.js b/core/yarn/plugins/merge-angular-json.js new file mode 100644 index 000000000..3d401b0de --- /dev/null +++ b/core/yarn/plugins/merge-angular-json.js @@ -0,0 +1,68 @@ +/** + * SuiteCRM is a customer relationship management program developed by SalesAgility Ltd. + * Copyright (C) 2024 SalesAgility Ltd. + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License version 3 as published by the + * Free Software Foundation with the addition of the following permission added + * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK + * IN WHICH THE COPYRIGHT IS OWNED BY SALESAGILITY, SALESAGILITY DISCLAIMS THE + * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * In accordance with Section 7(b) of the GNU Affero General Public License + * version 3, these Appropriate Legal Notices must retain the display of the + * "Supercharged by SuiteCRM" logo. If the display of the logos is not reasonably + * feasible for technical reasons, the Appropriate Legal Notices must display + * the words "Supercharged by SuiteCRM". + */ +module.exports = { + name: `merge-angular-json`, + factory: internalRequire => { + const {BaseCommand} = internalRequire(`@yarnpkg/cli`); + const {xfs} = internalRequire(`@yarnpkg/fslib`); + + let Merger = null; + let glob = null; + try { + Merger = require("json-merger"); + glob = require('glob'); + glob = glob.glob; + } catch (e) { + } + + + class MergeAngularJson extends BaseCommand { + static paths = [[`merge-angular-json`]]; + + async execute() { + + if (!Merger || !glob) { + this.context.stdout.write('merge-angular-json: dependencies are missing, please run \'yarn install\' \n'); + return; + } + + const extensionFiles = await glob('extensions/**/app/angular.json'); + const angularJsonFiles = [ + 'core/angular/base-angular.json', + ...extensionFiles + ]; + const merged = Merger.mergeFiles(angularJsonFiles); + await xfs.writeJsonPromise(`angular.json`, merged); + } + } + + return { + commands: [ + MergeAngularJson + ], + }; + } +}; diff --git a/extensions/defaultExt/app/angular.json b/extensions/defaultExt/app/angular.json new file mode 100644 index 000000000..3e944ead7 --- /dev/null +++ b/extensions/defaultExt/app/angular.json @@ -0,0 +1,127 @@ +{ + "version": 1, + "projects": { + "defaultExt": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss", + "name": "", + "project": "" + } + }, + "root": "extensions/defaultExt", + "sourceRoot": "extensions/defaultExt/app/src", + "prefix": "app", + "architect": { + "build": { + "builder": "ngx-build-plus:browser", + "options": { + "namedChunks": true, + "commonChunk": false, + "sourceMap": true, + "aot": true, + "outputPath": "extensions/defaultExt/public", + "index": "extensions/defaultExt/app/src/index.html", + "main": "extensions/defaultExt/app/src/main.ts", + "polyfills": "extensions/defaultExt/app/src/polyfills.ts", + "tsConfig": "extensions/defaultExt/app/tsconfig.app.json", + "assets": [ + "extensions/defaultExt/app/src/favicon.ico", + "extensions/defaultExt/app/src/assets" + ], + "styles": [ + "extensions/defaultExt/app/src/styles.scss" + ], + "scripts": [], + "extraWebpackConfig": "extensions/defaultExt/app/webpack.config.js" + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "extensions/defaultExt/app/src/environments/environment.ts", + "with": "extensions/defaultExt/app/src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb", + "maximumError": "10kb" + } + ], + "extraWebpackConfig": "extensions/defaultExt/app/webpack.prod.config.js" + }, + "dev": { + "outputPath": "public/extensions/defaultExt" + } + } + }, + "serve": { + "builder": "ngx-build-plus:dev-server", + "options": { + "browserTarget": "services:build", + "extraWebpackConfig": "extensions/defaultExt/app/webpack.config.js", + "port": 3000 + }, + "configurations": { + "production": { + "browserTarget": "services:build:production", + "extraWebpackConfig": "extensions/defaultExt/app/webpack.prod.config.js" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "buildTarget": "services:build" + } + }, + "test": { + "builder": "ngx-build-plus:karma", + "options": { + "main": "extensions/defaultExt/app/src/test.ts", + "polyfills": "extensions/defaultExt/app/src/polyfills.ts", + "tsConfig": "extensions/defaultExt/app/tsconfig.spec.json", + "karmaConfig": "extensions/defaultExt/app/karma.conf.js", + "assets": [ + "extensions/defaultExt/app/src/favicon.ico", + "extensions/defaultExt/app/src/assets" + ], + "styles": [ + "extensions/defaultExt/app/src/styles.scss" + ], + "scripts": [], + "extraWebpackConfig": "extensions/defaultExt/app/webpack.config.js" + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "extensions/defaultExt/app/e2e/protractor.conf.js", + "devServerTarget": "services:serve" + }, + "configurations": { + "production": { + "devServerTarget": "services:serve:production", + "protractorConfig": "" + } + } + } + } + } + } +} diff --git a/package.json b/package.json index 61cbc124e..1b2e261e7 100644 --- a/package.json +++ b/package.json @@ -3,21 +3,14 @@ "version": "8.7.1", "scripts": { "ng": "ng", - "start": "npm run start:shell", - "start:shell": "ng serve shell -o --port 5000", - "start:all": "concurrently \"npm run start:shell\"", - "serve:dist": "concurrently \"serve dist/shell -l 5000 -s\"", - "build-dev": "npm run build-dev:core && npm run build-dev:shell ", + "build-dev": "ng build core && ng build shell", "build-dev:shell": "ng build shell", "build-dev:core": "ng build core", - "build-dev:defaultExt": "ng build defaultExt --configuration dev", - "build": "npm run build:shell", + "build-dev:extension": "ng build \"$@\" --configuration dev", + "build": "ng build core --configuration production && ng build shell --configuration production ", "build:shell": "ng build shell --configuration production", "build:core": "ng build core --configuration production", - "build:defaultExt": "ng build defaultExt --configuration production", - "test": "npm run test:shell", - "test:core": "ng test core", - "gen-index": "barrelsby --delete -e '.*\\.spec.*' -q", + "build:extension": "ng build \"$@\" --configuration production", "gen-index:core": "barrelsby --delete -e '.*\\.spec.*' -q -d core/app/core/src/lib/ -n core", "lint": "ng lint", "e2e": "ng e2e" @@ -94,8 +87,10 @@ "eslint-plugin-jasmine": "^4.1.2", "eslint-plugin-jsdoc": "^21.0.0", "eslint-plugin-prefer-arrow": "^1.2.3", + "glob": "^11.0.0", "jasmine-core": "~3.6.0", "jasmine-spec-reporter": "~5.0.0", + "json-merger": "^1.1.10", "karma": "~6.3.4", "karma-chrome-launcher": "~3.1.0", "karma-cli": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index 58b8440ec..b7d534191 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4310,6 +4310,15 @@ __metadata: languageName: node linkType: hard +"acorn-walk@npm:^8.2.0": + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 + languageName: node + linkType: hard + "acorn@npm:^7.1.1": version: 7.4.1 resolution: "acorn@npm:7.4.1" @@ -4319,6 +4328,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.11.0, acorn@npm:^8.7.0": + version: 8.13.0 + resolution: "acorn@npm:8.13.0" + bin: + acorn: bin/acorn + checksum: 10c0/f35dd53d68177c90699f4c37d0bb205b8abe036d955d0eb011ddb7f14a81e6fd0f18893731c457c1b5bd96754683f4c3d80d9a5585ddecaa53cdf84e0b3d68f7 + languageName: node + linkType: hard + "acorn@npm:^8.7.1, acorn@npm:^8.8.2": version: 8.11.3 resolution: "acorn@npm:8.11.3" @@ -5350,6 +5368,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^9.1.0": + version: 9.5.0 + resolution: "commander@npm:9.5.0" + checksum: 10c0/5f7784fbda2aaec39e89eb46f06a999e00224b3763dc65976e05929ec486e174fe9aac2655f03ba6a5e83875bd173be5283dc19309b7c65954701c02025b3c1d + languageName: node + linkType: hard + "comment-parser@npm:^0.7.2": version: 0.7.6 resolution: "comment-parser@npm:0.7.6" @@ -6748,6 +6773,25 @@ __metadata: languageName: node linkType: hard +"escodegen@npm:^1.8.1": + version: 1.14.3 + resolution: "escodegen@npm:1.14.3" + dependencies: + esprima: "npm:^4.0.1" + estraverse: "npm:^4.2.0" + esutils: "npm:^2.0.2" + optionator: "npm:^0.8.1" + source-map: "npm:~0.6.1" + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 10c0/30d337803e8f44308c90267bf6192399e4b44792497c77a7506b68ab802ba6a48ebbe1ce77b219aba13dfd2de5f5e1c267e35be1ed87b2a9c3315e8b283e302a + languageName: node + linkType: hard + "eslint-import-resolver-alias@npm:^1.1.2": version: 1.1.2 resolution: "eslint-import-resolver-alias@npm:1.1.2" @@ -6967,7 +7011,17 @@ __metadata: languageName: node linkType: hard -"esprima@npm:^4.0.0": +"esprima@npm:1.2.2": + version: 1.2.2 + resolution: "esprima@npm:1.2.2" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/a5a8fd359651dd8228736d7352eb7636c7765e1ec6ff8fff3f6641622039a9f51fa501969a1a4777ba4187cf9942a8d7e0367dccaff768b782bdb1a71d046abf + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:^4.0.1": version: 4.0.1 resolution: "esprima@npm:4.0.1" bin: @@ -6995,7 +7049,7 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^4.1.1": +"estraverse@npm:^4.1.1, estraverse@npm:^4.2.0": version: 4.3.0 resolution: "estraverse@npm:4.3.0" checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d @@ -7445,6 +7499,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^10.0.1": + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e + languageName: node + linkType: hard + "fs-extra@npm:^11.1.0": version: 11.2.0 resolution: "fs-extra@npm:11.2.0" @@ -7659,6 +7724,22 @@ __metadata: languageName: node linkType: hard +"glob@npm:^11.0.0": + version: 11.0.0 + resolution: "glob@npm:11.0.0" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^4.0.1" + minimatch: "npm:^10.0.0" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^2.0.0" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/419866015d8795258a8ac51de5b9d1a99c72634fc3ead93338e4da388e89773ab21681e494eac0fbc4250b003451ca3110bb4f1c9393d15d14466270094fdb4e + languageName: node + linkType: hard + "glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7, glob@npm:^7.2.0": version: 7.2.3 resolution: "glob@npm:7.2.3" @@ -8713,6 +8794,15 @@ __metadata: languageName: node linkType: hard +"jackspeak@npm:^4.0.1": + version: 4.0.2 + resolution: "jackspeak@npm:4.0.2" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + checksum: 10c0/b26039d11c0163a95b1e58851b9ac453cce64ad6d1eb98a00b303ad5eeb761b29d33c9419d1e16c016d3f7151c8edf7df223e6cf93a1907655fd95d6ce85c0de + languageName: node + linkType: hard + "jake@npm:^10.8.5": version: 10.9.1 resolution: "jake@npm:10.9.1" @@ -8860,6 +8950,23 @@ __metadata: languageName: node linkType: hard +"json-merger@npm:^1.1.10": + version: 1.1.10 + resolution: "json-merger@npm:1.1.10" + dependencies: + commander: "npm:^9.1.0" + fs-extra: "npm:^10.0.1" + js-yaml: "npm:^4.1.0" + json-ptr: "npm:^3.1.1" + jsonpath: "npm:^1.1.1" + lodash.range: "npm:^3.2.0" + vm2: "npm:^3.9.17" + bin: + json-merger: bin/json-merger.js + checksum: 10c0/9cb021506ac79beb7ea3a250fa3e92368d6b1005e8ca8d51b4f8db33dc603c081128baa4bb9e336fe448e92f39362861ea397de81cf8f59e2bd5b920f968a291 + languageName: node + linkType: hard + "json-parse-better-errors@npm:^1.0.1": version: 1.0.2 resolution: "json-parse-better-errors@npm:1.0.2" @@ -8881,6 +8988,13 @@ __metadata: languageName: node linkType: hard +"json-ptr@npm:^3.1.1": + version: 3.1.1 + resolution: "json-ptr@npm:3.1.1" + checksum: 10c0/f5fd7eb60a8ad52e3531eea8285d22a67bf67a16249da032cd42fabcac386135adbe8c64a5588f5b755e77b9e646ca5cc97782fe09c5cef0b6d24ebdd1e1c277 + languageName: node + linkType: hard + "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" @@ -8975,6 +9089,17 @@ __metadata: languageName: node linkType: hard +"jsonpath@npm:^1.1.1": + version: 1.1.1 + resolution: "jsonpath@npm:1.1.1" + dependencies: + esprima: "npm:1.2.2" + static-eval: "npm:2.0.2" + underscore: "npm:1.12.1" + checksum: 10c0/4fea3f83bcb4df08c32090ba8a0d1a6d26244f6d19c4296f9b58caa01eeb7de0f8347eba40077ceee2f95acc69d032b0b48226d350339063ba580e87983f6dec + languageName: node + linkType: hard + "karma-chrome-launcher@npm:~3.1.0": version: 3.1.1 resolution: "karma-chrome-launcher@npm:3.1.1" @@ -9339,6 +9464,13 @@ __metadata: languageName: node linkType: hard +"lodash.range@npm:^3.2.0": + version: 3.2.0 + resolution: "lodash.range@npm:3.2.0" + checksum: 10c0/b1db80e6bcd92dd89e1ea42bf9f7ac4f1f04d53bc2e1da9589414f3ce50bb4a8558dbd2848ff800e6b455662ec707eab6aeba3cfebe3443e1712778d16829bae + languageName: node + linkType: hard + "lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" @@ -9400,6 +9532,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^11.0.0": + version: 11.0.1 + resolution: "lru-cache@npm:11.0.1" + checksum: 10c0/8bad6603dc67eb5b03520fba05bce5df6473dbba58ac4c6067ed088d29225a0a04416bb1462acd8c1f819d1fbf37920446a1c36bafd9c384bcc54cee0d3b697a + languageName: node + linkType: hard + "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -9634,6 +9773,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^10.0.0": + version: 10.0.1 + resolution: "minimatch@npm:10.0.1" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/e6c29a81fe83e1877ad51348306be2e8aeca18c88fdee7a99df44322314279e15799e41d7cb274e4e8bb0b451a3bc622d6182e157dfa1717d6cda75e9cd8cd5d + languageName: node + linkType: hard + "minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -10564,7 +10712,7 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.8.3": +"optionator@npm:^0.8.1, optionator@npm:^0.8.3": version: 0.8.3 resolution: "optionator@npm:0.8.3" dependencies: @@ -10919,6 +11067,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^2.0.0": + version: 2.0.0 + resolution: "path-scurry@npm:2.0.0" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 10c0/3da4adedaa8e7ef8d6dc4f35a0ff8f05a9b4d8365f2b28047752b62d4c1ad73eec21e37b1579ef2d075920157856a3b52ae8309c480a6f1a8bbe06ff8e52b33c + languageName: node + linkType: hard + "path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" @@ -12379,7 +12537,7 @@ __metadata: languageName: node linkType: hard -"source-map@npm:0.6.1, source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0": +"source-map@npm:0.6.1, source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 @@ -12498,6 +12656,15 @@ __metadata: languageName: node linkType: hard +"static-eval@npm:2.0.2": + version: 2.0.2 + resolution: "static-eval@npm:2.0.2" + dependencies: + escodegen: "npm:^1.8.1" + checksum: 10c0/9bc1114ea5ba2a6978664907c4dd3fde6f58767274f6cb4fbfb11ba3a73cb6e74dc11e89ec4a7bf1472a587c1f976fcd4ab8fe9aae1651f5e576f097745d48ff + languageName: node + linkType: hard + "statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" @@ -12737,9 +12904,11 @@ __metadata: eslint-plugin-jasmine: "npm:^4.1.2" eslint-plugin-jsdoc: "npm:^21.0.0" eslint-plugin-prefer-arrow: "npm:^1.2.3" + glob: "npm:^11.0.0" graphql: "npm:^16.9.0" jasmine-core: "npm:~3.6.0" jasmine-spec-reporter: "npm:~5.0.0" + json-merger: "npm:^1.1.10" karma: "npm:~6.3.4" karma-chrome-launcher: "npm:~3.1.0" karma-cli: "npm:^2.0.0" @@ -13260,6 +13429,13 @@ __metadata: languageName: node linkType: hard +"underscore@npm:1.12.1": + version: 1.12.1 + resolution: "underscore@npm:1.12.1" + checksum: 10c0/00f392357e363353ac485e7c156b749505087e31ff4fdad22e04ebd2f94a56fbc554cd41a6722e3895a818466cf298b1cae93ff6211d102d373a9b50db63bfd0 + languageName: node + linkType: hard + "undici-types@npm:~5.26.4": version: 5.26.5 resolution: "undici-types@npm:5.26.5" @@ -13482,6 +13658,18 @@ __metadata: languageName: node linkType: hard +"vm2@npm:^3.9.17": + version: 3.9.19 + resolution: "vm2@npm:3.9.19" + dependencies: + acorn: "npm:^8.7.0" + acorn-walk: "npm:^8.2.0" + bin: + vm2: bin/vm2 + checksum: 10c0/16e8e6bb389ae88b8ffbc439e8d7c09db3b98f7f738440af5b78080d6cb35db66b41b0ad055cc59bcc45cb8e270ed850667207348e90760b430403741f72337a + languageName: node + linkType: hard + "void-elements@npm:^2.0.0": version: 2.0.1 resolution: "void-elements@npm:2.0.1"