diff --git a/devtools/tools/angular-optimization/esbuild-plugin.mjs b/devtools/tools/angular-optimization/esbuild-plugin.mjs index 17cf3a0011f3..769865d99d52 100644 --- a/devtools/tools/angular-optimization/esbuild-plugin.mjs +++ b/devtools/tools/angular-optimization/esbuild-plugin.mjs @@ -7,8 +7,8 @@ */ import fs from 'fs'; -import babel from '@babel/core'; +import {transformAsync, traverse} from '@babel/core'; import {assertNoPartialDeclaration} from './ensure-no-linker-decl.mjs'; /** @@ -97,7 +97,7 @@ export async function createEsbuildAngularOptimizePlugin(opts, additionalBabelPl const ensureNoPartialDeclaration = opts.enableLinker && opts.enableLinker.ensureNoPartialDeclaration; - const {code, ast} = await babel.transformAsync(content, { + const {code, ast} = await transformAsync(content, { filename: filePath, filenameRelative: filePath, plugins: plugins, @@ -109,7 +109,7 @@ export async function createEsbuildAngularOptimizePlugin(opts, additionalBabelPl }); if (ensureNoPartialDeclaration) { - assertNoPartialDeclaration(filePath, ast, babel.traverse); + assertNoPartialDeclaration(filePath, ast, traverse); } return {contents: code}; diff --git a/goldens/public-api/localize/tools/index.api.md b/goldens/public-api/localize/tools/index.api.md index d46528b47c14..674209321a28 100644 --- a/goldens/public-api/localize/tools/index.api.md +++ b/goldens/public-api/localize/tools/index.api.md @@ -11,7 +11,7 @@ import { MessageId } from '../../../../../index'; import { NodePath } from '@babel/core'; import { ParseError } from '@angular/compiler'; import { PathManipulation } from '@angular/compiler-cli/private/localize'; -import { PluginObj } from '@babel/core'; +import { PluginObject } from '@babel/core'; import { ReadonlyFileSystem } from '@angular/compiler-cli/private/localize'; import { types } from '@babel/core'; import { ɵParsedMessage } from '../../../index'; @@ -78,13 +78,13 @@ export class LegacyMessageIdMigrationSerializer implements TranslationSerializer } // @public -export function makeEs2015TranslatePlugin(diagnostics: Diagnostics, translations: Record, input?: TranslatePluginOptions, fs?: PathManipulation): PluginObj; +export function makeEs2015TranslatePlugin(diagnostics: Diagnostics, translations: Record, input?: TranslatePluginOptions, fs?: PathManipulation): PluginObject; // @public -export function makeEs5TranslatePlugin(diagnostics: Diagnostics, translations: Record, input?: TranslatePluginOptions, fs?: PathManipulation): PluginObj; +export function makeEs5TranslatePlugin(diagnostics: Diagnostics, translations: Record, input?: TranslatePluginOptions, fs?: PathManipulation): PluginObject; // @public -export function makeLocalePlugin(locale: string, input?: TranslatePluginOptions): PluginObj; +export function makeLocalePlugin(locale: string, input?: TranslatePluginOptions): PluginObject; // @public export class MessageExtractor { diff --git a/integration/ng_elements/package.json b/integration/ng_elements/package.json index c6418ffe6495..d60bbdd7667b 100644 --- a/integration/ng_elements/package.json +++ b/integration/ng_elements/package.json @@ -15,7 +15,7 @@ "zone.js": "0.16.2" }, "devDependencies": { - "@babel/core": "7.29.7", + "@babel/core": "8.0.1", "@rollup/plugin-babel": "^7.0.0", "@rollup/plugin-node-resolve": "^16.0.0", "@types/jasmine": "^6.0.0", diff --git a/integration/ng_elements/pnpm-lock.yaml b/integration/ng_elements/pnpm-lock.yaml index 86e16dae326c..4a2dccf9973d 100644 --- a/integration/ng_elements/pnpm-lock.yaml +++ b/integration/ng_elements/pnpm-lock.yaml @@ -40,11 +40,11 @@ importers: version: 0.16.2 devDependencies: '@babel/core': - specifier: 7.29.7 - version: 7.29.7 + specifier: 8.0.1 + version: 8.0.1 '@rollup/plugin-babel': specifier: ^7.0.0 - version: 7.1.0(@babel/core@7.29.7)(rollup@4.61.1) + version: 7.1.0(@babel/core@8.0.1)(rollup@4.61.1) '@rollup/plugin-node-resolve': specifier: ^16.0.0 version: 16.0.3(rollup@4.61.1) @@ -59,7 +59,7 @@ importers: version: 10.0.3 lite-server: specifier: 2.6.1 - version: 2.6.1 + version: 2.6.1(debug@4.3.2) protractor: specifier: ^7.0.0 version: 7.0.0 @@ -73,75 +73,103 @@ packages: resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.29.7': - resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} - engines: {node: '>=6.9.0'} + '@babel/code-frame@8.0.0': + resolution: {integrity: sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==} + engines: {node: ^22.18.0 || >=24.11.0} - '@babel/core@7.29.7': - resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} - engines: {node: '>=6.9.0'} + '@babel/compat-data@8.0.0': + resolution: {integrity: sha512-DOjnob/cXOUgDOozCDeq/aK2p5y8dUIVdf6tNhEV1HQRd6I8aQ4f4fbtHRVEvb6lP3BGomrKHiS8ICAASSVQSw==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@babel/core@8.0.1': + resolution: {integrity: sha512-5FgxM4dLQpMJHSiVATk8foW263dVHQHBVpXYiimNECVWG01f4nFyEbQixeT6Mwvg7TayREJ2gpKl3o2RoMdnqw==} + engines: {node: ^22.18.0 || >=24.11.0} '@babel/generator@7.29.7': resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.29.7': - resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} - engines: {node: '>=6.9.0'} + '@babel/generator@8.0.0': + resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@babel/helper-compilation-targets@8.0.0': + resolution: {integrity: sha512-JwculLABZvyPvyLBpwU/E/IbH2uM3mnxNtIJpxnIfb24y1PrdVxK5Dqjle4DpgqpGRnwgC7G8IkzPdSXZrO1Ew==} + engines: {node: ^22.18.0 || >=24.11.0} '@babel/helper-globals@7.29.7': resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} engines: {node: '>=6.9.0'} + '@babel/helper-globals@8.0.0': + resolution: {integrity: sha512-lLozHOM6sWWlxNo8CYqHy4MBZeTvHXNgVPBfPOGsjPKUzHC2Az9QwB6gxdQmpwHl6GlQtbGgS+lj5887guDiLw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-module-imports@7.29.7': resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.29.7': - resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-string-parser@7.29.7': resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@8.0.0': + resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-validator-identifier@7.29.7': resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.29.7': - resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} - engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@8.0.2': + resolution: {integrity: sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==} + engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helpers@7.29.7': - resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} - engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@8.0.0': + resolution: {integrity: sha512-U4Dybxh4WESWHt5XhBeExi4DrY0/DNK1aHpQbsrQXCUbFHuMweT0TpLEWKvaraV2Y6fS+ZXunsZ8zIuZIgvF2Q==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@babel/helpers@8.0.0': + resolution: {integrity: sha512-wfbi91pM3py96oIiJEz7qIpyXDytgr9zQC1HEWwlGNVRAEmItuU/0a41ZUKu1sJGyhhOIpc4t5vk4PYzt8wpsg==} + engines: {node: ^22.18.0 || >=24.11.0} '@babel/parser@7.29.7': resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@8.0.0': + resolution: {integrity: sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==} + engines: {node: ^22.18.0 || >=24.11.0} + hasBin: true + '@babel/template@7.29.7': resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} + '@babel/template@8.0.0': + resolution: {integrity: sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/traverse@7.29.7': resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} engines: {node: '>=6.9.0'} + '@babel/traverse@8.0.0': + resolution: {integrity: sha512-bxTj/W2VclGE6CctlfQOpxg8MPDzXArRqkOBePw8EHfebcjF7fETWSS3BriEECo+UiU/Yblq+xUtSImFu7cTbw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/types@7.29.7': resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} + '@babel/types@8.0.0': + resolution: {integrity: sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -330,12 +358,18 @@ packages: '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + '@types/gensync@1.0.5': + resolution: {integrity: sha512-MbsRCT7mTikHwKZ0X+LVUTLRrZZRLipTuXEO9qOYO+zmjMVk81axyClMROf6uoPD9MRVu46bx8zoR0Ad9q3NAg==} + '@types/jasmine@6.0.0': resolution: {integrity: sha512-18lgGsLmEh3VJk9eZ5wAjTISxdqzl6YOwu8UdMpolajN57QOCNbl+AbHUd+Yu9ItrsFdB+c8LSZSGNg8nHaguw==} '@types/jasminewd2@2.0.13': resolution: {integrity: sha512-aJ3wj8tXMpBrzQ5ghIaqMisD8C3FIrcO6sDKHqFbuqAsI7yOxj0fA7MrRCPLZHIVUjERIwsMmGn/vB0UQ9u0Hg==} + '@types/jsesc@2.5.1': + resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} + '@types/node@26.0.0': resolution: {integrity: sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==} @@ -676,6 +710,10 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + empathic@2.0.1: + resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} + engines: {node: '>=14'} + encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -867,6 +905,9 @@ packages: resolution: {integrity: sha512-AUY/VyX0E5XlibOmWt10uabJzam1zlYjwiEgQSDc5+UIkFNaF9WM0JxXKaNMGf+F/ffUF+7kRKXM9A7C0xXqMg==} engines: {node: '>=0.10.0'} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -946,6 +987,9 @@ packages: resolution: {integrity: sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==} engines: {node: '>= 6.9.x'} + js-tokens@10.0.0: + resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1006,8 +1050,9 @@ packages: lodash@4.18.1: resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@11.5.1: + resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} + engines: {node: 20 || >=22} micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} @@ -1065,6 +1110,10 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + obug@2.1.3: + resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} + engines: {node: '>=12.20.0'} + on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} engines: {node: '>= 0.8'} @@ -1253,8 +1302,9 @@ packages: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} hasBin: true send@0.16.2: @@ -1510,9 +1560,6 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -1556,27 +1603,31 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.29.7': {} + '@babel/code-frame@8.0.0': + dependencies: + '@babel/helper-validator-identifier': 8.0.2 + js-tokens: 10.0.0 + + '@babel/compat-data@8.0.0': {} - '@babel/core@7.29.7': + '@babel/core@8.0.1': dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) - '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 - '@jridgewell/remapping': 2.3.5 + '@babel/code-frame': 8.0.0 + '@babel/generator': 8.0.0 + '@babel/helper-compilation-targets': 8.0.0 + '@babel/helpers': 8.0.0 + '@babel/parser': 8.0.0 + '@babel/template': 8.0.0 + '@babel/traverse': 8.0.0 + '@babel/types': 8.0.0 + '@types/gensync': 1.0.5 convert-source-map: 2.0.0 - debug: 4.4.3 + empathic: 2.0.1 gensync: 1.0.0-beta.2 + import-meta-resolve: 4.2.0 json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + obug: 2.1.3 + semver: 7.8.5 '@babel/generator@7.29.7': dependencies: @@ -1586,16 +1637,27 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.29.7': + '@babel/generator@8.0.0': dependencies: - '@babel/compat-data': 7.29.7 - '@babel/helper-validator-option': 7.29.7 + '@babel/parser': 8.0.0 + '@babel/types': 8.0.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@types/jsesc': 2.5.1 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@8.0.0': + dependencies: + '@babel/compat-data': 8.0.0 + '@babel/helper-validator-option': 8.0.0 browserslist: 4.28.2 - lru-cache: 5.1.1 - semver: 6.3.1 + lru-cache: 11.5.1 + semver: 7.8.5 '@babel/helper-globals@7.29.7': {} + '@babel/helper-globals@8.0.0': {} + '@babel/helper-module-imports@7.29.7': dependencies: '@babel/traverse': 7.29.7 @@ -1603,36 +1665,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-imports': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/helper-string-parser@7.29.7': {} + '@babel/helper-string-parser@8.0.0': {} + '@babel/helper-validator-identifier@7.29.7': {} - '@babel/helper-validator-option@7.29.7': {} + '@babel/helper-validator-identifier@8.0.2': {} - '@babel/helpers@7.29.7': + '@babel/helper-validator-option@8.0.0': {} + + '@babel/helpers@8.0.0': dependencies: - '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + '@babel/template': 8.0.0 + '@babel/types': 8.0.0 '@babel/parser@7.29.7': dependencies: '@babel/types': 7.29.7 + '@babel/parser@8.0.0': + dependencies: + '@babel/types': 8.0.0 + '@babel/template@7.29.7': dependencies: '@babel/code-frame': 7.29.7 '@babel/parser': 7.29.7 '@babel/types': 7.29.7 + '@babel/template@8.0.0': + dependencies: + '@babel/code-frame': 8.0.0 + '@babel/parser': 8.0.0 + '@babel/types': 8.0.0 + '@babel/traverse@7.29.7': dependencies: '@babel/code-frame': 7.29.7 @@ -1645,19 +1712,29 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@8.0.0': + dependencies: + '@babel/code-frame': 8.0.0 + '@babel/generator': 8.0.0 + '@babel/helper-globals': 8.0.0 + '@babel/parser': 8.0.0 + '@babel/template': 8.0.0 + '@babel/types': 8.0.0 + obug: 2.1.3 + '@babel/types@7.29.7': dependencies: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@jridgewell/gen-mapping@0.3.13': + '@babel/types@8.0.0': dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 + '@babel/helper-string-parser': 8.0.0 + '@babel/helper-validator-identifier': 8.0.2 - '@jridgewell/remapping@2.3.5': + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} @@ -1669,9 +1746,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@rollup/plugin-babel@7.1.0(@babel/core@7.29.7)(rollup@4.61.1)': + '@rollup/plugin-babel@7.1.0(@babel/core@8.0.1)(rollup@4.61.1)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 8.0.1 '@babel/helper-module-imports': 7.29.7 '@rollup/pluginutils': 5.4.0(rollup@4.61.1) workerpool: 9.3.4 @@ -1781,12 +1858,16 @@ snapshots: '@types/estree@1.0.9': {} + '@types/gensync@1.0.5': {} + '@types/jasmine@6.0.0': {} '@types/jasminewd2@2.0.13': dependencies: '@types/jasmine': 6.0.0 + '@types/jsesc@2.5.1': {} + '@types/node@26.0.0': dependencies: undici-types: 8.3.0 @@ -1917,7 +1998,7 @@ snapshots: - supports-color - utf-8-validate - browser-sync@2.29.3: + browser-sync@2.29.3(debug@4.3.2): dependencies: browser-sync-client: 2.29.3 browser-sync-ui: 2.29.3 @@ -1932,7 +2013,7 @@ snapshots: etag: 1.8.1 fresh: 0.5.2 fs-extra: 3.0.1 - http-proxy: 1.18.1 + http-proxy: 1.18.1(debug@4.3.2) immutable: 3.8.3 localtunnel: 2.0.2 micromatch: 4.0.8 @@ -2145,6 +2226,8 @@ snapshots: emoji-regex@8.0.0: {} + empathic@2.0.1: {} + encodeurl@1.0.2: {} engine.io-client@6.6.6: @@ -2322,7 +2405,7 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 - http-proxy@1.18.1: + http-proxy@1.18.1(debug@4.3.2): dependencies: eventemitter3: 4.0.7 follow-redirects: 1.16.0(debug@4.3.2) @@ -2351,6 +2434,8 @@ snapshots: immutable@3.8.3: {} + import-meta-resolve@4.2.0: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -2414,6 +2499,8 @@ snapshots: jasminewd2@2.2.0: {} + js-tokens@10.0.0: {} + js-tokens@4.0.0: {} jsbn@0.1.1: {} @@ -2452,9 +2539,9 @@ snapshots: limiter@1.1.5: {} - lite-server@2.6.1: + lite-server@2.6.1(debug@4.3.2): dependencies: - browser-sync: 2.29.3 + browser-sync: 2.29.3(debug@4.3.2) connect-history-api-fallback: 1.6.0 connect-logger: 0.0.1 lodash: 4.18.1 @@ -2482,9 +2569,7 @@ snapshots: lodash@4.18.1: {} - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 + lru-cache@11.5.1: {} micromatch@4.0.8: dependencies: @@ -2525,6 +2610,8 @@ snapshots: object-assign@4.1.1: {} + obug@2.1.3: {} + on-finished@2.3.0: dependencies: ee-first: 1.1.1 @@ -2746,7 +2833,7 @@ snapshots: semver@5.7.2: {} - semver@6.3.1: {} + semver@7.8.5: {} send@0.16.2: dependencies: @@ -3024,8 +3111,6 @@ snapshots: y18n@5.0.8: {} - yallist@3.1.1: {} - yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 diff --git a/package.json b/package.json index d421dab637b6..3d34b57dac5c 100644 --- a/package.json +++ b/package.json @@ -79,9 +79,9 @@ "@angular/service-worker": "workspace:*", "@angular/ssr": "22.1.0-next.0", "@angular/upgrade": "workspace: *", - "@babel/cli": "7.29.7", - "@babel/core": "7.29.7", - "@babel/generator": "7.29.7", + "@babel/cli": "8.0.1", + "@babel/core": "8.0.1", + "@babel/generator": "8.0.0", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-node-resolve": "^16.0.0", "@schematics/angular": "22.1.0-next.0", @@ -139,7 +139,7 @@ "@actions/core": "^3.0.0", "@actions/github": "^9.0.0", "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#38a8db7ae818fd8f88bd3fe50ad2cb225d9021df", - "@babel/plugin-transform-async-generator-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^8.0.0", "@bazel/bazelisk": "^1.7.5", "@bazel/buildifier": "^8.0.0", "@bazel/ibazel": "0.28.0", diff --git a/packages/compiler-cli/linker/babel/src/ast/babel_ast_factory.ts b/packages/compiler-cli/linker/babel/src/ast/babel_ast_factory.ts index d5f7e6719c88..0f7f5c28241d 100644 --- a/packages/compiler-cli/linker/babel/src/ast/babel_ast_factory.ts +++ b/packages/compiler-cli/linker/babel/src/ast/babel_ast_factory.ts @@ -9,6 +9,7 @@ import {types as t} from '@babel/core'; import {assert} from '../../../../linker'; import { + AssignmentOperator, AstFactory, BinaryOperator, BuiltInType, @@ -49,7 +50,7 @@ export class BabelAstFactory implements AstFactory< createAssignment( target: t.Expression, - operator: BinaryOperator, + operator: AssignmentOperator, value: t.Expression, ): t.Expression { assert(target, isLExpression, 'must be a left hand side expression'); @@ -76,6 +77,12 @@ export class BabelAstFactory implements AstFactory< case '&&=': case '||=': case '??=': + case '|=': + case '&=': + case '>>=': + case '>>>=': + case '<<=': + case '^=': throw new Error(`Unexpected assignment operator ${operator}`); default: return t.binaryExpression(operator, leftOperand, rightOperand); @@ -179,17 +186,22 @@ export class BabelAstFactory implements AstFactory< createIfStatement = t.ifStatement; createDynamicImport(url: string | t.Expression): t.Expression { - return this.createCallExpression( - t.import(), - [typeof url === 'string' ? t.stringLiteral(url) : url], - false /* pure */, - ); + return t.importExpression(typeof url === 'string' ? t.stringLiteral(url) : url); } createLiteral(value: string | number | boolean | null | undefined): t.Expression { if (typeof value === 'string') { return t.stringLiteral(value); } else if (typeof value === 'number') { + if (Number.isNaN(value)) { + return t.identifier('NaN'); + } else if (value === Infinity) { + return t.identifier('Infinity'); + } else if (value === -Infinity) { + return t.unaryExpression('-', t.identifier('Infinity')); + } else if (value < 0) { + return t.unaryExpression('-', t.numericLiteral(-value)); + } return t.numericLiteral(value); } else if (typeof value === 'boolean') { return t.booleanLiteral(value); @@ -366,7 +378,9 @@ export class BabelAstFactory implements AstFactory< } } -function getEntityTypeFromExpression(expression: t.Expression): t.Identifier | t.TSQualifiedName { +function getEntityTypeFromExpression( + expression: t.Expression | t.Super, +): t.Identifier | t.TSQualifiedName { if (t.isIdentifier(expression)) { return expression; } diff --git a/packages/compiler-cli/linker/babel/src/babel_declaration_scope.ts b/packages/compiler-cli/linker/babel/src/babel_declaration_scope.ts index 146b63c29b2e..d6c5691c3f4d 100644 --- a/packages/compiler-cli/linker/babel/src/babel_declaration_scope.ts +++ b/packages/compiler-cli/linker/babel/src/babel_declaration_scope.ts @@ -40,7 +40,7 @@ export class BabelDeclarationScope implements DeclarationScope): PluginObj { - api.assertVersion(7); +export function defaultLinkerPlugin(api: ConfigAPI, options: Partial): PluginObject { + api.assertVersion(8); return createEs2015LinkerPlugin({ ...options, diff --git a/packages/compiler-cli/linker/babel/src/es2015_linker_plugin.ts b/packages/compiler-cli/linker/babel/src/es2015_linker_plugin.ts index 0fb76585856f..1e837c55919e 100644 --- a/packages/compiler-cli/linker/babel/src/es2015_linker_plugin.ts +++ b/packages/compiler-cli/linker/babel/src/es2015_linker_plugin.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import {BabelFile, NodePath, PluginObj, types as t} from '@babel/core'; +import {File, NodePath, PluginObject, types as t} from '@babel/core'; import {FileLinker, isFatalLinkerError, LinkerEnvironment} from '../../../linker'; @@ -25,7 +25,7 @@ export function createEs2015LinkerPlugin({ fileSystem, logger, ...options -}: LinkerPluginOptions): PluginObj { +}: LinkerPluginOptions): PluginObject { let fileLinker: FileLinker< ConstantScopePath, t.Statement, @@ -187,8 +187,8 @@ function assertNotNull(obj: T | null): asserts obj is T { /** * Create a string representation of an error that includes the code frame of the `node`. */ -function buildCodeFrameError(file: BabelFile, message: string, node: t.Node): string { +function buildCodeFrameError(file: File, message: string, node: t.Node): string { const filename = file.opts.filename || '(unknown file)'; - const error = file.hub.buildError(node, message); + const error = file.hub.buildError(node, message, Error); return `${filename}: ${error.message}`; } diff --git a/packages/compiler-cli/linker/babel/test/ast/babel_ast_factory_spec.ts b/packages/compiler-cli/linker/babel/test/ast/babel_ast_factory_spec.ts index d03642472723..7435df31aafa 100644 --- a/packages/compiler-cli/linker/babel/test/ast/babel_ast_factory_spec.ts +++ b/packages/compiler-cli/linker/babel/test/ast/babel_ast_factory_spec.ts @@ -7,14 +7,10 @@ */ import {leadingComment} from '@angular/compiler'; import {types as t, template} from '@babel/core'; -import _generate from '@babel/generator'; +import generate from '@babel/generator'; import {BabelAstFactory} from '../../src/ast/babel_ast_factory'; -// Babel is a CJS package and misuses the `default` named binding: -// https://github.com/babel/babel/issues/15269. -const generate = (_generate as any)['default'] as typeof _generate; - // Exposes shorthands for the `expression` and `statement` // methods exposed by `@babel/template`. const expression = template.expression; @@ -284,7 +280,7 @@ describe('BabelAstFactory', () => { it('should create a number literal for `NaN`', () => { const literal = factory.createLiteral(NaN); - expect(t.isNumericLiteral(literal)).toBe(true); + expect(t.isIdentifier(literal)).toBe(true); expect(generate(literal).code).toEqual('NaN'); }); diff --git a/packages/compiler-cli/linker/babel/test/ast/babel_ast_host_spec.ts b/packages/compiler-cli/linker/babel/test/ast/babel_ast_host_spec.ts index b4aed5c6dcd5..7d76396d3ea9 100644 --- a/packages/compiler-cli/linker/babel/test/ast/babel_ast_host_spec.ts +++ b/packages/compiler-cli/linker/babel/test/ast/babel_ast_host_spec.ts @@ -5,7 +5,7 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.dev/license */ -import {parse, template, types as t} from '@babel/core'; +import {parseSync, types as t, template} from '@babel/core'; import {BabelAstHost} from '../../src/ast/babel_ast_host'; @@ -358,7 +358,7 @@ describe('BabelAstHost', () => { describe('getRange()', () => { it('should extract the range from the expression', () => { - const file = parse("// preamble\nx = 'moo';"); + const file = parseSync("// preamble\nx = 'moo';", {sourceType: 'script'}); const stmt = file!.program.body[0] as t.Statement; assertExpressionStatement(stmt); assertAssignmentExpression(stmt.expression); diff --git a/packages/compiler-cli/linker/babel/test/babel_declaration_scope_spec.ts b/packages/compiler-cli/linker/babel/test/babel_declaration_scope_spec.ts index 1a0ae95c9b1c..166f5102772f 100644 --- a/packages/compiler-cli/linker/babel/test/babel_declaration_scope_spec.ts +++ b/packages/compiler-cli/linker/babel/test/babel_declaration_scope_spec.ts @@ -6,14 +6,14 @@ * found in the LICENSE file at https://angular.dev/license */ -import {NodePath, parse, traverse, types as t} from '@babel/core'; +import {NodePath, parseSync, types as t, traverse} from '@babel/core'; import {BabelDeclarationScope} from '../src/babel_declaration_scope'; describe('BabelDeclarationScope', () => { describe('getConstantScopeRef()', () => { it('should return a path to the ES module where the expression was imported', () => { - const ast = parse( + const ast = parseSync( [ "import * as core from '@angular/core';", 'function foo() {', @@ -30,7 +30,7 @@ describe('BabelDeclarationScope', () => { }); it('should return a path to the ES Module where the expression is declared', () => { - const ast = parse( + const ast = parseSync( ['var core;', 'export function foo() {', ' var TEST = core;', '}'].join('\n'), {sourceType: 'module'}, ) as t.File; @@ -42,9 +42,12 @@ describe('BabelDeclarationScope', () => { }); it('should return null if the file is not an ES module', () => { - const ast = parse(['var core;', 'function foo() {', ' var TEST = core;', '}'].join('\n'), { - sourceType: 'script', - }) as t.File; + const ast = parseSync( + ['var core;', 'function foo() {', ' var TEST = core;', '}'].join('\n'), + { + sourceType: 'script', + }, + ) as t.File; const nodePath = findVarDeclaration(ast, 'TEST'); const scope = new BabelDeclarationScope(nodePath.scope); const constantScope = scope.getConstantScopeRef(nodePath.get('init').node); @@ -52,7 +55,7 @@ describe('BabelDeclarationScope', () => { }); it('should return the IIFE factory function where the expression is a parameter', () => { - const ast = parse( + const ast = parseSync( [ 'var core;', '(function(core) {', diff --git a/packages/compiler-cli/linker/babel/test/babel_plugin_spec.ts b/packages/compiler-cli/linker/babel/test/babel_plugin_spec.ts index 6ae60f255ea5..b4b05817dcf0 100644 --- a/packages/compiler-cli/linker/babel/test/babel_plugin_spec.ts +++ b/packages/compiler-cli/linker/babel/test/babel_plugin_spec.ts @@ -5,7 +5,7 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.dev/license */ -import babel from '@babel/core'; +import * as babel from '@babel/core'; import path from 'node:path'; describe('default babel plugin entry-point', () => { diff --git a/packages/compiler-cli/linker/babel/test/es2015_linker_plugin_spec.ts b/packages/compiler-cli/linker/babel/test/es2015_linker_plugin_spec.ts index 50b326a1646b..d7494175beb1 100644 --- a/packages/compiler-cli/linker/babel/test/es2015_linker_plugin_spec.ts +++ b/packages/compiler-cli/linker/babel/test/es2015_linker_plugin_spec.ts @@ -6,12 +6,8 @@ * found in the LICENSE file at https://angular.dev/license */ import {outputAst as o} from '@angular/compiler'; -import babel, {NodePath, PluginObj, types as t} from '@babel/core'; -import _generate from '@babel/generator'; - -// Babel is a CJS package and misuses the `default` named binding: -// https://github.com/babel/babel/issues/15269. -const generate = (_generate as any)['default'] as typeof _generate; +import {type NodePath, type PluginObject, types as t, transformSync} from '@babel/core'; +import generate from '@babel/generator'; import {FileLinker} from '../../../linker'; import {MockFileSystemNative} from '../../../src/ngtsc/file_system/testing'; @@ -39,7 +35,7 @@ describe('createEs2015LinkerPlugin()', () => { const fileSystem = new MockFileSystemNative(); const logger = new MockLogger(); const plugin = createEs2015LinkerPlugin({fileSystem, logger}); - babel.transformSync( + transformSync( [ 'var core;', `fn1()`, @@ -48,7 +44,7 @@ describe('createEs2015LinkerPlugin()', () => { 'spread(...x);', ].join('\n'), { - plugins: [plugin], + plugins: [() => plugin], filename: '/test.js', parserOpts: {sourceType: 'unambiguous'}, }, @@ -70,7 +66,7 @@ describe('createEs2015LinkerPlugin()', () => { const fileSystem = new MockFileSystemNative(); const logger = new MockLogger(); - babel.transformSync( + transformSync( [ 'var core;', `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core, x: 1});`, @@ -80,7 +76,7 @@ describe('createEs2015LinkerPlugin()', () => { `i0['ɵɵngDeclareDirective']({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core, x: 4});`, ].join('\n'), { - plugins: [createEs2015LinkerPlugin({fileSystem, logger})], + plugins: [() => createEs2015LinkerPlugin({fileSystem, logger})], filename: '/test.js', parserOpts: {sourceType: 'unambiguous'}, }, @@ -114,7 +110,7 @@ describe('createEs2015LinkerPlugin()', () => { ); const fileSystem = new MockFileSystemNative(); const logger = new MockLogger(); - const result = babel.transformSync( + const result = transformSync( [ 'var core;', "ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core});", @@ -123,7 +119,7 @@ describe('createEs2015LinkerPlugin()', () => { 'spread(...x);', ].join('\n'), { - plugins: [createEs2015LinkerPlugin({fileSystem, logger})], + plugins: [() => createEs2015LinkerPlugin({fileSystem, logger})], filename: '/test.js', parserOpts: {sourceType: 'unambiguous'}, generatorOpts: {compact: true}, @@ -136,7 +132,7 @@ describe('createEs2015LinkerPlugin()', () => { spyOnLinkPartialDeclarationWithConstants(o.literal('REPLACEMENT')); const fileSystem = new MockFileSystemNative(); const logger = new MockLogger(); - const result = babel.transformSync( + const result = transformSync( [ "import * as core from 'some-module';", "import {id} from 'other-module';", @@ -145,7 +141,7 @@ describe('createEs2015LinkerPlugin()', () => { `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, ].join('\n'), { - plugins: [createEs2015LinkerPlugin({fileSystem, logger})], + plugins: [() => createEs2015LinkerPlugin({fileSystem, logger})], filename: '/test.js', parserOpts: {sourceType: 'unambiguous'}, generatorOpts: {compact: true}, @@ -160,7 +156,7 @@ describe('createEs2015LinkerPlugin()', () => { spyOnLinkPartialDeclarationWithConstants(o.literal('REPLACEMENT')); const fileSystem = new MockFileSystemNative(); const logger = new MockLogger(); - const result = babel.transformSync( + const result = transformSync( [ "import * as core from 'some-module';", "import {id} from 'other-module';", @@ -170,7 +166,7 @@ describe('createEs2015LinkerPlugin()', () => { "import {second} from 'second-module';", ].join('\n'), { - plugins: [createEs2015LinkerPlugin({fileSystem, logger})], + plugins: [() => createEs2015LinkerPlugin({fileSystem, logger})], filename: '/test.js', parserOpts: {sourceType: 'unambiguous'}, generatorOpts: {compact: true}, @@ -185,7 +181,7 @@ describe('createEs2015LinkerPlugin()', () => { spyOnLinkPartialDeclarationWithConstants(o.literal('REPLACEMENT')); const fileSystem = new MockFileSystemNative(); const logger = new MockLogger(); - const result = babel.transformSync( + const result = transformSync( [ 'var core;', `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, @@ -193,7 +189,7 @@ describe('createEs2015LinkerPlugin()', () => { `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, ].join('\n'), { - plugins: [createEs2015LinkerPlugin({fileSystem, logger})], + plugins: [() => createEs2015LinkerPlugin({fileSystem, logger})], filename: '/test.js', // We declare the file as a module because this cannot be inferred from the source parserOpts: {sourceType: 'module'}, @@ -209,7 +205,7 @@ describe('createEs2015LinkerPlugin()', () => { spyOnLinkPartialDeclarationWithConstants(o.literal('REPLACEMENT')); const fileSystem = new MockFileSystemNative(); const logger = new MockLogger(); - const result = babel.transformSync( + const result = transformSync( [ 'function run(core) {', ` ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, @@ -218,7 +214,7 @@ describe('createEs2015LinkerPlugin()', () => { '}', ].join('\n'), { - plugins: [createEs2015LinkerPlugin({fileSystem, logger})], + plugins: [() => createEs2015LinkerPlugin({fileSystem, logger})], filename: '/test.js', parserOpts: {sourceType: 'unambiguous'}, generatorOpts: {compact: true}, @@ -233,7 +229,7 @@ describe('createEs2015LinkerPlugin()', () => { spyOnLinkPartialDeclarationWithConstants(o.literal('REPLACEMENT')); const fileSystem = new MockFileSystemNative(); const logger = new MockLogger(); - const result = babel.transformSync( + const result = transformSync( [ 'function run() {', ` ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, @@ -242,7 +238,7 @@ describe('createEs2015LinkerPlugin()', () => { '}', ].join('\n'), { - plugins: [createEs2015LinkerPlugin({fileSystem, logger})], + plugins: [() => createEs2015LinkerPlugin({fileSystem, logger})], filename: '/test.js', parserOpts: {sourceType: 'unambiguous'}, generatorOpts: {compact: true}, @@ -263,15 +259,15 @@ describe('createEs2015LinkerPlugin()', () => { spyOnLinkPartialDeclarationWithConstants(o.fn([], [], null, null, 'FOO')); const fileSystem = new MockFileSystemNative(); const logger = new MockLogger(); - const result = babel.transformSync( + const result = transformSync( [ `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core}); FOO;`, ].join('\n'), { plugins: [ - createEs2015LinkerPlugin({fileSystem, logger}), - createIdentifierMapperPlugin('FOO', 'BAR'), - createIdentifierMapperPlugin('_c0', 'x1'), + () => createEs2015LinkerPlugin({fileSystem, logger}), + () => createIdentifierMapperPlugin('FOO', 'BAR'), + () => createIdentifierMapperPlugin('_c0', 'x1'), ], filename: '/test.js', parserOpts: {sourceType: 'module'}, @@ -284,30 +280,30 @@ describe('createEs2015LinkerPlugin()', () => { }); it('should not process call expressions within inserted functions', () => { - spyOn(PartialDirectiveLinkerVersion1.prototype, 'linkPartialDeclaration').and.callFake((( - constantPool, - ) => { - // Insert a call expression into the constant pool. This is inserted into - // Babel's AST upon program exit, and will therefore be visited by Babel - // outside of an active linker context. - constantPool.statements.push( - o - .fn( - /* params */ [], - /* body */ [], - /* type */ undefined, - /* sourceSpan */ undefined, - /* name */ 'inserted', - ) - .callFn([]) - .toStmt(), - ); + spyOn(PartialDirectiveLinkerVersion1.prototype, 'linkPartialDeclaration').and.callFake( + (constantPool) => { + // Insert a call expression into the constant pool. This is inserted into + // Babel's AST upon program exit, and will therefore be visited by Babel + // outside of an active linker context. + constantPool.statements.push( + o + .fn( + /* params */ [], + /* body */ [], + /* type */ undefined, + /* sourceSpan */ undefined, + /* name */ 'inserted', + ) + .callFn([]) + .toStmt(), + ); - return { - expression: o.literal('REPLACEMENT'), - statements: [], - }; - }) as typeof PartialDirectiveLinkerVersion1.prototype.linkPartialDeclaration); + return { + expression: o.literal('REPLACEMENT'), + statements: [], + }; + }, + ) as typeof PartialDirectiveLinkerVersion1.prototype.linkPartialDeclaration; const isPartialDeclarationSpy = spyOn( FileLinker.prototype, @@ -316,13 +312,13 @@ describe('createEs2015LinkerPlugin()', () => { const fileSystem = new MockFileSystemNative(); const logger = new MockLogger(); - const result = babel.transformSync( + const result = transformSync( [ "import * as core from 'some-module';", `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, ].join('\n'), { - plugins: [createEs2015LinkerPlugin({fileSystem, logger})], + plugins: [() => createEs2015LinkerPlugin({fileSystem, logger})], filename: '/test.js', parserOpts: {sourceType: 'unambiguous'}, generatorOpts: {compact: true}, @@ -351,25 +347,25 @@ function humanizeLinkerCalls( */ function spyOnLinkPartialDeclarationWithConstants(replacement: o.Expression) { let callCount = 0; - spyOn(PartialDirectiveLinkerVersion1.prototype, 'linkPartialDeclaration').and.callFake((( - constantPool, - ) => { - const constArray = o.literalArr([o.literal(++callCount)]); - // We have to add the constant twice or it will not create a shared statement - constantPool.getConstLiteral(constArray); - constantPool.getConstLiteral(constArray); - return { - expression: replacement, - statements: [], - }; - }) as typeof PartialDirectiveLinkerVersion1.prototype.linkPartialDeclaration); + spyOn(PartialDirectiveLinkerVersion1.prototype, 'linkPartialDeclaration').and.callFake( + (constantPool) => { + const constArray = o.literalArr([o.literal(++callCount)]); + // We have to add the constant twice or it will not create a shared statement + constantPool.getConstLiteral(constArray); + constantPool.getConstLiteral(constArray); + return { + expression: replacement, + statements: [], + }; + }, + ) as typeof PartialDirectiveLinkerVersion1.prototype.linkPartialDeclaration; } /** * A simple Babel plugin that will replace all identifiers that match `` with identifiers * called ``. */ -function createIdentifierMapperPlugin(src: string, dest: string): PluginObj { +function createIdentifierMapperPlugin(src: string, dest: string): PluginObject { return { visitor: { Identifier(path: NodePath) { diff --git a/packages/compiler-cli/package.json b/packages/compiler-cli/package.json index 8e687196c033..5c9a96c70ada 100644 --- a/packages/compiler-cli/package.json +++ b/packages/compiler-cli/package.json @@ -30,7 +30,7 @@ } }, "dependencies": { - "@babel/core": "7.29.7", + "@babel/core": "8.0.1", "@jridgewell/sourcemap-codec": "^1.4.14", "reflect-metadata": "^0.2.0", "chokidar": "^5.0.0", diff --git a/packages/compiler-cli/src/ngtsc/translator/src/api/ast_factory.ts b/packages/compiler-cli/src/ngtsc/translator/src/api/ast_factory.ts index 317e6bf0ead4..8d830d103974 100644 --- a/packages/compiler-cli/src/ngtsc/translator/src/api/ast_factory.ts +++ b/packages/compiler-cli/src/ngtsc/translator/src/api/ast_factory.ts @@ -388,6 +388,24 @@ export interface Parameter { type: TType | null; } +export type AssignmentOperator = + | '=' + | '+=' + | '-=' + | '*=' + | '/=' + | '%=' + | '**=' + | '&&=' + | '||=' + | '??=' + | '&=' + | '|=' + | '>>=' + | '>>>=' + | '<<=' + | '^='; + /** * The binary operators supported by the `AstFactory`. */ @@ -411,18 +429,9 @@ export type BinaryOperator = | '||' | '+' | '??' - | '=' - | '+=' - | '-=' - | '*=' - | '/=' - | '%=' - | '**=' - | '&&=' - | '||=' - | '??=' | 'in' - | 'instanceof'; + | 'instanceof' + | AssignmentOperator; /** * The original location of the start or end of a node created by the `AstFactory`. diff --git a/packages/compiler-cli/src/ngtsc/translator/src/typescript_ast_factory.ts b/packages/compiler-cli/src/ngtsc/translator/src/typescript_ast_factory.ts index 3db164f823c7..dc129f25c42b 100644 --- a/packages/compiler-cli/src/ngtsc/translator/src/typescript_ast_factory.ts +++ b/packages/compiler-cli/src/ngtsc/translator/src/typescript_ast_factory.ts @@ -80,6 +80,12 @@ export class TypeScriptAstFactory implements AstFactory>=': ts.SyntaxKind.GreaterThanGreaterThanEqualsToken, + '>>>=': ts.SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken, + '<<=': ts.SyntaxKind.LessThanLessThanEqualsToken, + '^=': ts.SyntaxKind.CaretEqualsToken, 'in': ts.SyntaxKind.InKeyword, 'instanceof': ts.SyntaxKind.InstanceOfKeyword, }))(); diff --git a/packages/compiler-cli/test/compliance/linked/linked_compile_spec.ts b/packages/compiler-cli/test/compliance/linked/linked_compile_spec.ts index ec710dd6252a..21705efb0110 100644 --- a/packages/compiler-cli/test/compliance/linked/linked_compile_spec.ts +++ b/packages/compiler-cli/test/compliance/linked/linked_compile_spec.ts @@ -5,7 +5,7 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.dev/license */ -import babel, {PluginObj} from '@babel/core'; +import {PluginItem, transformSync} from '@babel/core'; import {needsLinking} from '../../../linker'; import {createEs2015LinkerPlugin} from '../../../linker/babel'; @@ -69,7 +69,7 @@ function linkPartials(fileSystem: FileSystem, test: ComplianceTest): CompileResu fileName, source, sourceMap, - linkerPlugin, + () => linkerPlugin, ); if (linkedSourceMap !== undefined) { @@ -97,17 +97,22 @@ function applyLinker( filename: string, source: string, sourceMap: RawSourceMap | undefined, - linkerPlugin: PluginObj, + linkerPlugin: PluginItem, ): {linkedSource: string; linkedSourceMap: RawSourceMap | undefined} { if (!filename.endsWith('.js') || !needsLinking(filename, source)) { return {linkedSource: source, linkedSourceMap: sourceMap}; } - const result = babel.transformSync(source, { + const result = transformSync(source, { cwd, filename, sourceMaps: !!sourceMap, plugins: [linkerPlugin], parserOpts: {sourceType: 'unambiguous'}, + generatorOpts: { + // Keep escaped unicode sequences (e.g. `\uFFFD`) in golden-linked output. + // Babel 8 may emit raw non-ASCII characters with default jsesc settings. + jsescOption: {minimal: false}, + }, }); if (result === null) { throw fail('Babel transform did not have output'); @@ -115,7 +120,13 @@ function applyLinker( if (result.code == null) { throw fail('Babel transform result does not have any code'); } - return {linkedSource: result.code, linkedSourceMap: result.map || undefined}; + const linkedSourceMap = result.map + ? ({...result.map, file: result.map.file ?? undefined} as RawSourceMap) + : undefined; + return { + linkedSource: result.code, + linkedSourceMap, + }; } /** diff --git a/packages/localize/package.json b/packages/localize/package.json index 1a69f05bfe2c..61b50282cafd 100644 --- a/packages/localize/package.json +++ b/packages/localize/package.json @@ -33,7 +33,7 @@ "./fesm2022/init.mjs" ], "dependencies": { - "@babel/core": "7.29.7", + "@babel/core": "8.0.1", "@types/babel__core": "7.20.5", "tinyglobby": "^0.2.12", "yargs": "^18.0.0" diff --git a/packages/localize/tools/src/extract/extraction.ts b/packages/localize/tools/src/extract/extraction.ts index 6fdf0789e16b..23b84890ee75 100644 --- a/packages/localize/tools/src/extract/extraction.ts +++ b/packages/localize/tools/src/extract/extraction.ts @@ -12,8 +12,8 @@ import { SourceFile, SourceFileLoader, } from '@angular/compiler-cli/private/localize'; -import {ɵParsedMessage, ɵSourceLocation} from '../../../index'; import {transformSync} from '@babel/core'; +import {ɵParsedMessage, ɵSourceLocation} from '../../../index'; import {makeEs2015ExtractPlugin} from './source_files/es2015_extract_plugin'; import {makeEs5ExtractPlugin} from './source_files/es5_extract_plugin'; @@ -56,8 +56,8 @@ export class MessageExtractor { sourceRoot: this.basePath, filename, plugins: [ - makeEs2015ExtractPlugin(this.fs, messages, this.localizeName), - makeEs5ExtractPlugin(this.fs, messages, this.localizeName), + () => makeEs2015ExtractPlugin(this.fs, messages, this.localizeName), + () => makeEs5ExtractPlugin(this.fs, messages, this.localizeName), ], code: false, ast: false, diff --git a/packages/localize/tools/src/extract/source_files/es2015_extract_plugin.ts b/packages/localize/tools/src/extract/source_files/es2015_extract_plugin.ts index 1254a69e502e..43b6a275ee6a 100644 --- a/packages/localize/tools/src/extract/source_files/es2015_extract_plugin.ts +++ b/packages/localize/tools/src/extract/source_files/es2015_extract_plugin.ts @@ -6,8 +6,8 @@ * found in the LICENSE file at https://angular.dev/license */ import {PathManipulation} from '@angular/compiler-cli/private/localize'; +import {NodePath, PluginObject, types as t} from '@babel/core'; import {ɵParsedMessage, ɵparseMessage} from '../../../../index'; -import {NodePath, PluginObj, types as t} from '@babel/core'; import { getLocation, @@ -21,7 +21,7 @@ export function makeEs2015ExtractPlugin( fs: PathManipulation, messages: ɵParsedMessage[], localizeName = '$localize', -): PluginObj { +): PluginObject { return { visitor: { TaggedTemplateExpression(path: NodePath) { diff --git a/packages/localize/tools/src/extract/source_files/es5_extract_plugin.ts b/packages/localize/tools/src/extract/source_files/es5_extract_plugin.ts index 95a94414e9e8..5f3d911c9853 100644 --- a/packages/localize/tools/src/extract/source_files/es5_extract_plugin.ts +++ b/packages/localize/tools/src/extract/source_files/es5_extract_plugin.ts @@ -6,8 +6,8 @@ * found in the LICENSE file at https://angular.dev/license */ import {PathManipulation} from '@angular/compiler-cli/private/localize'; +import {NodePath, PluginObject, types as t} from '@babel/core'; import {ɵParsedMessage, ɵparseMessage} from '../../../../index'; -import {NodePath, PluginObj, types as t} from '@babel/core'; import { buildCodeFrameError, @@ -23,7 +23,7 @@ export function makeEs5ExtractPlugin( fs: PathManipulation, messages: ɵParsedMessage[], localizeName = '$localize', -): PluginObj { +): PluginObject { return { visitor: { CallExpression(callPath: NodePath, state) { diff --git a/packages/localize/tools/src/source_file_utils.ts b/packages/localize/tools/src/source_file_utils.ts index cfed6c6004e9..055e8a84a093 100644 --- a/packages/localize/tools/src/source_file_utils.ts +++ b/packages/localize/tools/src/source_file_utils.ts @@ -10,6 +10,7 @@ import { getFileSystem, PathManipulation, } from '@angular/compiler-cli/private/localize'; +import {File, NodePath, types as t} from '@babel/core'; import { ɵisMissingTranslationError, ɵmakeTemplateObject, @@ -17,7 +18,6 @@ import { ɵSourceLocation, ɵtranslate, } from '../../index'; -import {BabelFile, NodePath, types as t} from '@babel/core'; import {DiagnosticHandlingStrategy, Diagnostics} from './diagnostics'; @@ -118,12 +118,6 @@ export function unwrapMessagePartsFromLocalizeCall( const right = cooked.get('right'); if (right.isAssignmentExpression()) { cooked = right.get('right'); - if (!cooked.isExpression()) { - throw new BabelParseError( - cooked.node, - 'Unexpected "makeTemplateObject()" function (expected an expression).', - ); - } } else if (right.isSequenceExpression()) { const expressions = right.get('expressions'); if (expressions.length > 2) { @@ -234,7 +228,7 @@ export function unwrapMessagePartsFromTemplateLiteral( `Unexpected undefined message part in "${elements.map((q) => q.node.value.cooked)}"`, ); } - return q.node.value.cooked; + return q.node.value.cooked!; }); const raw = elements.map((q) => q.node.value.raw); const locations = elements.map((q) => getLocation(fs, q)); @@ -464,7 +458,7 @@ export function isBabelParseError(e: any): e is BabelParseError { export function buildCodeFrameError( fs: PathManipulation, path: NodePath, - file: BabelFile, + file: File, e: BabelParseError, ): string { let filename = file.opts.filename; @@ -478,7 +472,7 @@ export function buildCodeFrameError( } else { filename = '(unknown file)'; } - const {message} = file.hub.buildError(e.node, e.message); + const {message} = file.hub.buildError(e.node, e.message, Error); return `${filename}: ${message}`; } @@ -514,7 +508,7 @@ export function serializeLocationPosition(location: ɵSourceLocation): string { function getFileFromPath(fs: PathManipulation, path: NodePath | undefined): AbsoluteFsPath | null { // The file field is not guaranteed to be present for all node paths - const opts = (path?.hub as {file?: BabelFile}).file?.opts; + const opts = (path?.hub as {file?: File}).file?.opts; const filename = opts?.filename; if (!filename || !opts.cwd) { return null; diff --git a/packages/localize/tools/src/translate/source_files/es2015_translate_plugin.ts b/packages/localize/tools/src/translate/source_files/es2015_translate_plugin.ts index f12257dc2666..56a5978b28fe 100644 --- a/packages/localize/tools/src/translate/source_files/es2015_translate_plugin.ts +++ b/packages/localize/tools/src/translate/source_files/es2015_translate_plugin.ts @@ -6,8 +6,8 @@ * found in the LICENSE file at https://angular.dev/license */ import {getFileSystem, PathManipulation} from '@angular/compiler-cli/private/localize'; +import {NodePath, PluginObject, types as t} from '@babel/core'; import {ɵParsedTranslation} from '../../../../index'; -import {NodePath, PluginObj, types as t} from '@babel/core'; import {Diagnostics} from '../../diagnostics'; import { @@ -31,7 +31,7 @@ export function makeEs2015TranslatePlugin( translations: Record, {missingTranslation = 'error', localizeName = '$localize'}: TranslatePluginOptions = {}, fs: PathManipulation = getFileSystem(), -): PluginObj { +): PluginObject { return { visitor: { TaggedTemplateExpression(path: NodePath, state) { diff --git a/packages/localize/tools/src/translate/source_files/es5_translate_plugin.ts b/packages/localize/tools/src/translate/source_files/es5_translate_plugin.ts index 8b5f4ecd4555..6f71aec07ab1 100644 --- a/packages/localize/tools/src/translate/source_files/es5_translate_plugin.ts +++ b/packages/localize/tools/src/translate/source_files/es5_translate_plugin.ts @@ -6,8 +6,8 @@ * found in the LICENSE file at https://angular.dev/license */ import {getFileSystem, PathManipulation} from '@angular/compiler-cli/private/localize'; +import {NodePath, PluginObject, types as t} from '@babel/core'; import {ɵParsedTranslation} from '../../../../index'; -import {NodePath, PluginObj, types as t} from '@babel/core'; import {Diagnostics} from '../../diagnostics'; import { @@ -32,7 +32,7 @@ export function makeEs5TranslatePlugin( translations: Record, {missingTranslation = 'error', localizeName = '$localize'}: TranslatePluginOptions = {}, fs: PathManipulation = getFileSystem(), -): PluginObj { +): PluginObject { return { visitor: { CallExpression(callPath: NodePath, state) { diff --git a/packages/localize/tools/src/translate/source_files/locale_plugin.ts b/packages/localize/tools/src/translate/source_files/locale_plugin.ts index 2ac5c3f85751..b08f0fbd9fa6 100644 --- a/packages/localize/tools/src/translate/source_files/locale_plugin.ts +++ b/packages/localize/tools/src/translate/source_files/locale_plugin.ts @@ -5,7 +5,7 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.dev/license */ -import {NodePath, PluginObj, types as t} from '@babel/core'; +import {NodePath, PluginObject, types as t} from '@babel/core'; import {isLocalize, TranslatePluginOptions} from '../../source_file_utils'; @@ -25,7 +25,7 @@ import {isLocalize, TranslatePluginOptions} from '../../source_file_utils'; export function makeLocalePlugin( locale: string, {localizeName = '$localize'}: TranslatePluginOptions = {}, -): PluginObj { +): PluginObject { return { visitor: { MemberExpression(expression: NodePath) { diff --git a/packages/localize/tools/src/translate/source_files/source_file_translation_handler.ts b/packages/localize/tools/src/translate/source_files/source_file_translation_handler.ts index bbff36e3de7e..4a045a4b4f03 100644 --- a/packages/localize/tools/src/translate/source_files/source_file_translation_handler.ts +++ b/packages/localize/tools/src/translate/source_files/source_file_translation_handler.ts @@ -11,7 +11,7 @@ import { FileSystem, PathSegment, } from '@angular/compiler-cli/private/localize'; -import babel, {types as t} from '@babel/core'; +import {parseSync, types as t, transformFromAstSync} from '@babel/core'; import {Diagnostics} from '../../diagnostics'; import {TranslatePluginOptions} from '../../source_file_utils'; @@ -69,7 +69,7 @@ export class SourceFileTranslationHandler implements TranslationHandler { this.writeSourceFile(diagnostics, outputPathFn, sourceLocale, relativeFilePath, contents); } } else { - const ast = babel.parseSync(sourceCode, {sourceRoot, filename: relativeFilePath}); + const ast = parseSync(sourceCode, {sourceRoot, filename: relativeFilePath}); if (!ast) { diagnostics.error( `Unable to parse source file: ${this.fs.join(sourceRoot, relativeFilePath)}`, @@ -113,13 +113,14 @@ export class SourceFileTranslationHandler implements TranslationHandler { outputPathFn: OutputPathFn, options: TranslatePluginOptions, ) { - const translated = babel.transformFromAstSync(ast, undefined, { + const translated = transformFromAstSync(ast, '', { compact: true, generatorOpts: {minified: true}, plugins: [ - makeLocalePlugin(translationBundle.locale), - makeEs2015TranslatePlugin(diagnostics, translationBundle.translations, options, this.fs), - makeEs5TranslatePlugin(diagnostics, translationBundle.translations, options, this.fs), + () => makeLocalePlugin(translationBundle.locale), + () => + makeEs2015TranslatePlugin(diagnostics, translationBundle.translations, options, this.fs), + () => makeEs5TranslatePlugin(diagnostics, translationBundle.translations, options, this.fs), ], cwd: sourceRoot, filename, diff --git a/packages/localize/tools/test/extract/source_files/es5_extract_plugin_spec.ts b/packages/localize/tools/test/extract/source_files/es5_extract_plugin_spec.ts index a93fb5764bf4..42695ae95490 100644 --- a/packages/localize/tools/test/extract/source_files/es5_extract_plugin_spec.ts +++ b/packages/localize/tools/test/extract/source_files/es5_extract_plugin_spec.ts @@ -42,7 +42,7 @@ runInNativeFileSystem('makeEs5ExtractPlugin()', () => { const cwd = fs.resolve('/'); const filename = fs.resolve(cwd, testPath); transformSync(input, { - plugins: [makeEs5ExtractPlugin(getFileSystem(), messages)], + plugins: [() => makeEs5ExtractPlugin(getFileSystem(), messages)], filename, cwd, })!.code!; diff --git a/packages/localize/tools/test/source_file_utils_spec.ts b/packages/localize/tools/test/source_file_utils_spec.ts index 3fb1c3c6aee7..be2c009a9037 100644 --- a/packages/localize/tools/test/source_file_utils_spec.ts +++ b/packages/localize/tools/test/source_file_utils_spec.ts @@ -10,14 +10,10 @@ import { getFileSystem, PathManipulation, } from '@angular/compiler-cli/src/ngtsc/file_system'; -import babel, {NodePath, types as t, template, TransformOptions} from '@babel/core'; -import _generate from '@babel/generator'; +import {InputOptions, NodePath, types as t, template, transformSync} from '@babel/core'; +import generate from '@babel/generator'; import {ɵmakeTemplateObject} from '../../index'; -// Babel is a CJS package and misuses the `default` named binding: -// https://github.com/babel/babel/issues/15269. -const generate = (_generate as any)['default'] as typeof _generate; - import { buildLocalizeReplacement, getLocation, @@ -453,7 +449,7 @@ runInNativeFileSystem('utils', () => { function getTaggedTemplate( code: string, - options?: TransformOptions, + options?: InputOptions, ): NodePath { return getExpressions(code, options).find((e) => e.isTaggedTemplateExpression(), @@ -462,28 +458,28 @@ function getTaggedTemplate( function getFirstExpression( code: string, - options?: TransformOptions, + options?: InputOptions, ): NodePath { return getExpressions(code, options)[0]; } function getExpressions( code: string, - options?: TransformOptions, + options?: InputOptions, ): NodePath[] { const expressions: NodePath[] = []; - babel.transformSync(code, { + transformSync(code, { code: false, filename: 'test/file.js', cwd: '/', plugins: [ - { + () => ({ visitor: { Expression: (path: NodePath) => { expressions.push(path); }, }, - }, + }), ], ...options, }); @@ -492,18 +488,18 @@ function getExpressions( function getLocalizeCall(code: string): NodePath { let callPaths: NodePath[] = []; - babel.transformSync(code, { + transformSync(code, { code: false, filename: 'test/file.js', cwd: '/', plugins: [ - { + () => ({ visitor: { CallExpression(path) { callPaths.push(path); }, }, - }, + }), ], }); const localizeCall = callPaths.find((p) => { diff --git a/packages/localize/tools/test/translate/source_files/es2015_translate_plugin_spec.ts b/packages/localize/tools/test/translate/source_files/es2015_translate_plugin_spec.ts index 75f888f9d02f..2f46dee353b6 100644 --- a/packages/localize/tools/test/translate/source_files/es2015_translate_plugin_spec.ts +++ b/packages/localize/tools/test/translate/source_files/es2015_translate_plugin_spec.ts @@ -191,7 +191,7 @@ runInNativeFileSystem('makeEs2015Plugin', () => { const cwd = fs.resolve('/'); const filename = fs.resolve(cwd, 'app/dist/test.js'); return transformSync(input, { - plugins: [makeEs2015TranslatePlugin(diagnostics, translations, pluginOptions)], + plugins: [() => makeEs2015TranslatePlugin(diagnostics, translations, pluginOptions)], filename, cwd, })!.code!; diff --git a/packages/localize/tools/test/translate/source_files/es5_translate_plugin_spec.ts b/packages/localize/tools/test/translate/source_files/es5_translate_plugin_spec.ts index f683fe6081a8..f9e2bb9e513b 100644 --- a/packages/localize/tools/test/translate/source_files/es5_translate_plugin_spec.ts +++ b/packages/localize/tools/test/translate/source_files/es5_translate_plugin_spec.ts @@ -378,7 +378,7 @@ runInNativeFileSystem('source_files', () => { const cwd = fs.resolve('/'); const filename = fs.resolve(cwd, testPath); return transformSync(input, { - plugins: [makeEs5TranslatePlugin(diagnostics, translations, pluginOptions)], + plugins: [() => makeEs5TranslatePlugin(diagnostics, translations, pluginOptions)], filename, cwd, })!.code!; diff --git a/packages/localize/tools/test/translate/source_files/locale_plugin_spec.ts b/packages/localize/tools/test/translate/source_files/locale_plugin_spec.ts index 5b8a700f0b01..3be189e0e49f 100644 --- a/packages/localize/tools/test/translate/source_files/locale_plugin_spec.ts +++ b/packages/localize/tools/test/translate/source_files/locale_plugin_spec.ts @@ -12,85 +12,85 @@ import {makeLocalePlugin} from '../../../src/translate/source_files/locale_plugi describe('makeLocalePlugin', () => { it('should replace $localize.locale with the locale string', () => { const input = '$localize.locale;'; - const output = transformSync(input, {plugins: [makeLocalePlugin('fr')]})!; + const output = transformSync(input, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output.code).toEqual('"fr";'); }); it('should replace $localize.locale with the locale string in the context of a variable assignment', () => { const input = 'const a = $localize.locale;'; - const output = transformSync(input, {plugins: [makeLocalePlugin('fr')]})!; + const output = transformSync(input, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output.code).toEqual('const a = "fr";'); }); it('should replace $localize.locale with the locale string in the context of a binary expression', () => { const input = '$localize.locale || "default";'; - const output = transformSync(input, {plugins: [makeLocalePlugin('fr')]})!; + const output = transformSync(input, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output.code).toEqual('"fr" || "default";'); }); it('should remove reference to `$localize` if used to guard the locale', () => { const input = 'typeof $localize !== "undefined" && $localize.locale;'; - const output = transformSync(input, {plugins: [makeLocalePlugin('fr')]})!; + const output = transformSync(input, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output.code).toEqual('"fr";'); }); it('should remove reference to `$localize` if used in a longer logical expression to guard the locale', () => { const input1 = 'x || y && typeof $localize !== "undefined" && $localize.locale;'; - const output1 = transformSync(input1, {plugins: [makeLocalePlugin('fr')]})!; + const output1 = transformSync(input1, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output1.code).toEqual('x || y && "fr";'); const input2 = 'x || y && "undefined" !== typeof $localize && $localize.locale;'; - const output2 = transformSync(input2, {plugins: [makeLocalePlugin('fr')]})!; + const output2 = transformSync(input2, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output2.code).toEqual('x || y && "fr";'); const input3 = 'x || y && typeof $localize != "undefined" && $localize.locale;'; - const output3 = transformSync(input3, {plugins: [makeLocalePlugin('fr')]})!; + const output3 = transformSync(input3, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output3.code).toEqual('x || y && "fr";'); const input4 = 'x || y && "undefined" != typeof $localize && $localize.locale;'; - const output4 = transformSync(input4, {plugins: [makeLocalePlugin('fr')]})!; + const output4 = transformSync(input4, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output4.code).toEqual('x || y && "fr";'); }); it('should ignore properties on $localize other than `locale`', () => { const input = '$localize.notLocale;'; - const output = transformSync(input, {plugins: [makeLocalePlugin('fr')]})!; + const output = transformSync(input, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output.code).toEqual('$localize.notLocale;'); }); it('should ignore indexed property on $localize', () => { const input = '$localize["locale"];'; - const output = transformSync(input, {plugins: [makeLocalePlugin('fr')]})!; + const output = transformSync(input, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output.code).toEqual('$localize["locale"];'); }); it('should ignore `locale` on objects other than $localize', () => { const input = '$notLocalize.locale;'; - const output = transformSync(input, {plugins: [makeLocalePlugin('fr')]})!; + const output = transformSync(input, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output.code).toEqual('$notLocalize.locale;'); }); it('should ignore `$localize.locale` if `$localize` is not global', () => { const input = 'const $localize = {};\n$localize.locale;'; - const output = transformSync(input, {plugins: [makeLocalePlugin('fr')]})!; + const output = transformSync(input, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output.code).toEqual('const $localize = {};\n$localize.locale;'); }); it('should ignore `locale` if it is not directly accessed from `$localize`', () => { const input = 'const {locale} = $localize;\nconst a = locale;'; - const output = transformSync(input, {plugins: [makeLocalePlugin('fr')]})!; + const output = transformSync(input, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output.code).toEqual('const {\n locale\n} = $localize;\nconst a = locale;'); }); it('should ignore `$localize.locale` on LHS of an assignment', () => { const input = 'let a;\na = $localize.locale = "de";'; - const output = transformSync(input, {plugins: [makeLocalePlugin('fr')]})!; + const output = transformSync(input, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output.code).toEqual('let a;\na = $localize.locale = "de";'); }); it('should handle `$localize.locale on RHS of an assignment', () => { const input = 'let a;\na = $localize.locale;'; - const output = transformSync(input, {plugins: [makeLocalePlugin('fr')]})!; + const output = transformSync(input, {plugins: [() => makeLocalePlugin('fr')]})!; expect(output.code).toEqual('let a;\na = "fr";'); }); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 22f9402396cd..797b6a24528d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,13 +29,13 @@ importers: version: link:packages/benchpress '@angular/build': specifier: 22.1.0-next.0 - version: 22.1.0-next.0(90f8430bbbc48846098f894405a9c70a) + version: 22.1.0-next.0(68a1e159eaa1cd7da9ee383985b60190) '@angular/cdk': specifier: 22.1.0-next.1 version: 22.1.0-next.1(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) '@angular/cli': specifier: 22.1.0-next.0 - version: 22.1.0-next.0(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(chokidar@5.0.0) + version: 22.1.0-next.0(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) '@angular/common': specifier: workspace:* version: link:packages/common @@ -85,14 +85,14 @@ importers: specifier: 'workspace: *' version: link:packages/upgrade '@babel/cli': - specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7) + specifier: 8.0.1 + version: 8.0.1(@babel/core@8.0.1) '@babel/core': - specifier: 7.29.7 - version: 7.29.7 + specifier: 8.0.1 + version: 8.0.1 '@babel/generator': - specifier: 7.29.7 - version: 7.29.7 + specifier: 8.0.0 + version: 8.0.0 '@rollup/plugin-commonjs': specifier: ^29.0.0 version: 29.0.3(rollup@4.61.1) @@ -185,7 +185,7 @@ importers: version: 2.5.2 karma: specifier: ~6.4.0 - version: 6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) + version: 6.4.4(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6) karma-chrome-launcher: specifier: ^3.1.0 version: 3.2.0 @@ -194,7 +194,7 @@ importers: version: 2.1.3 karma-jasmine: specifier: ^5.0.0 - version: 5.1.0(karma@6.4.4(bufferutil@4.1.0)) + version: 5.1.0(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)) karma-sourcemap-loader: specifier: ^0.4.0 version: 0.4.0 @@ -203,7 +203,7 @@ importers: version: 0.30.21 protractor: specifier: ^7.0.0 - version: 7.0.0 + version: 7.0.0(supports-color@8.1.1) reflect-metadata: specifier: ^0.2.0 version: 0.2.2 @@ -257,8 +257,8 @@ importers: specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#38a8db7ae818fd8f88bd3fe50ad2cb225d9021df version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/38a8db7ae818fd8f88bd3fe50ad2cb225d9021df(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)) '@babel/plugin-transform-async-generator-functions': - specifier: ^7.27.1 - version: 7.29.7(@babel/core@7.29.7) + specifier: ^8.0.0 + version: 8.0.1(@babel/core@8.0.1) '@bazel/bazelisk': specifier: ^1.7.5 version: 1.28.1 @@ -297,7 +297,7 @@ importers: version: 15.17.0 firebase-tools: specifier: ^15.0.0 - version: 15.22.0(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(bufferutil@4.1.0)(encoding@0.1.13) + version: 15.22.0(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(bufferutil@4.1.0)(encoding@0.1.13)(supports-color@8.1.1) get-tsconfig: specifier: ^4.10.1 version: 4.14.0 @@ -312,10 +312,10 @@ importers: version: 9.1.7 karma-coverage: specifier: ^2.2.1 - version: 2.2.1 + version: 2.2.1(supports-color@8.1.1) karma-jasmine-html-reporter: specifier: ^2.2.0 - version: 2.2.0(jasmine-core@6.3.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)))(karma@6.4.4(bufferutil@4.1.0)) + version: 2.2.0(jasmine-core@6.3.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)))(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)) prettier: specifier: ^3.8.0 version: 3.8.4 @@ -498,7 +498,7 @@ importers: version: 24.13.1 '@typescript/vfs': specifier: 1.6.4 - version: 1.6.4(typescript@6.0.3) + version: 1.6.4(supports-color@8.1.1)(typescript@6.0.3) '@webcontainer/api': specifier: 1.6.4 version: 1.6.4 @@ -558,13 +558,13 @@ importers: version: 3.2.0 karma-coverage: specifier: 2.2.1 - version: 2.2.1 + version: 2.2.1(supports-color@8.1.1) karma-jasmine: specifier: 5.1.0 - version: 5.1.0(karma@6.4.4(bufferutil@4.1.0)) + version: 5.1.0(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)) karma-jasmine-html-reporter: specifier: 2.2.0 - version: 2.2.0(jasmine-core@6.3.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)))(karma@6.4.4(bufferutil@4.1.0)) + version: 2.2.0(jasmine-core@6.3.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)))(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)) marked: specifier: 18.0.5 version: 18.0.5 @@ -625,7 +625,7 @@ importers: version: 10.5.0(postcss@8.5.15) karma: specifier: ~6.4.4 - version: 6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) + version: 6.4.4(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6) postcss: specifier: 8.5.15 version: 8.5.15 @@ -876,7 +876,7 @@ importers: version: angular@1.8.3 protractor: specifier: 7.0.0 - version: 7.0.0 + version: 7.0.0(supports-color@8.1.1) reflect-metadata: specifier: 0.2.2 version: 0.2.2 @@ -944,8 +944,8 @@ importers: specifier: 'workspace: *' version: link:../compiler '@babel/core': - specifier: 7.29.7 - version: 7.29.7 + specifier: 8.0.1 + version: 8.0.1 '@jridgewell/sourcemap-codec': specifier: ^1.4.14 version: 1.5.5 @@ -1090,8 +1090,8 @@ importers: specifier: 'workspace: *' version: link:../compiler-cli '@babel/core': - specifier: 7.29.7 - version: 7.29.7 + specifier: 8.0.1 + version: 8.0.1 '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -1251,7 +1251,7 @@ importers: version: 2.5.2 jest: specifier: 30.4.2 - version: 30.4.2(@types/node@24.13.1)(ts-node@10.9.2(@types/node@24.13.1)(typescript@6.0.3)) + version: 30.4.2(@types/node@24.13.1)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@24.13.1)(typescript@6.0.3)) jest-environment-jsdom: specifier: 30.4.1 version: 30.4.1(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -1325,7 +1325,7 @@ importers: version: 3.0.0 '@vscode/vsce': specifier: ~3.9.0 - version: 3.9.2 + version: 3.9.2(supports-color@8.1.1) jasmine: specifier: 6.3.0 version: 6.3.0 @@ -1702,41 +1702,69 @@ packages: resolution: {integrity: sha512-RUuewWk9JvWJS5Yiy8/74Lm1rQAWlrU/qg/Bgtk1jIauVRtnb9XKwS5Xg0J+Whwjesq9EVrBIFgQEP8vHxgezA==} engines: {node: '>=20'} - '@babel/cli@7.29.7': - resolution: {integrity: sha512-/75HwRbAYPqXv/Ax1h7Fg3IZfXgdU98jnA8H93/m/QBaPV3Hp5ICoLqzGYye1yHBCgpmXvtqgSUN8oOKX5tojQ==} - engines: {node: '>=6.9.0'} + '@babel/cli@8.0.1': + resolution: {integrity: sha512-cttmeKZGho8XpXNz3nvGMjEnpDW5qkPVGNW2buav2byKxArJnBROsJrLA7CioPQhjzsZ26aZRqg+Gvpk+FHGEg==} + engines: {node: ^22.18.0 || >=24.11.0} hasBin: true peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^8.0.0 '@babel/code-frame@7.29.7': resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} + '@babel/code-frame@8.0.0': + resolution: {integrity: sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/compat-data@7.29.7': resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} engines: {node: '>=6.9.0'} + '@babel/compat-data@8.0.0': + resolution: {integrity: sha512-DOjnob/cXOUgDOozCDeq/aK2p5y8dUIVdf6tNhEV1HQRd6I8aQ4f4fbtHRVEvb6lP3BGomrKHiS8ICAASSVQSw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/core@7.29.7': resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} engines: {node: '>=6.9.0'} + '@babel/core@8.0.1': + resolution: {integrity: sha512-5FgxM4dLQpMJHSiVATk8foW263dVHQHBVpXYiimNECVWG01f4nFyEbQixeT6Mwvg7TayREJ2gpKl3o2RoMdnqw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/generator@7.29.7': resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} engines: {node: '>=6.9.0'} + '@babel/generator@8.0.0': + resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-annotate-as-pure@7.29.7': resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@8.0.0': + resolution: {integrity: sha512-NSpMkMsvvZqzThJ0p1B02cbtA2ObEyfBvq950bmNkyxsxvcxwhvvCB036rKhlEnuBBo30bOrk13u3FzlKSoRrw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-compilation-targets@7.29.7': resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@8.0.0': + resolution: {integrity: sha512-JwculLABZvyPvyLBpwU/E/IbH2uM3mnxNtIJpxnIfb24y1PrdVxK5Dqjle4DpgqpGRnwgC7G8IkzPdSXZrO1Ew==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-globals@7.29.7': resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} engines: {node: '>=6.9.0'} + '@babel/helper-globals@8.0.0': + resolution: {integrity: sha512-lLozHOM6sWWlxNo8CYqHy4MBZeTvHXNgVPBfPOGsjPKUzHC2Az9QwB6gxdQmpwHl6GlQtbGgS+lj5887guDiLw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-module-imports@7.29.7': resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} engines: {node: '>=6.9.0'} @@ -1751,11 +1779,17 @@ packages: resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.29.7': - resolution: {integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==} - engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@8.0.1': + resolution: {integrity: sha512-3PKFgjTyPlhFhorfP+SjKQxLViIL++zWjFOO4hGriYU+Bsm983DxEM1JmDRJVWXV0O9npu+xXRqz7Pbd3mh70g==} + engines: {node: ^22.18.0 || >=24.11.0} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^8.0.0 + + '@babel/helper-remap-async-to-generator@8.0.1': + resolution: {integrity: sha512-baAKuLEMmu6BCSY3tuiU7qglM1qOZt6F1SrFScA241oNqksxkxfEZEKztlGRmoVns9AQ5UgArH7RsUEjxWnzgQ==} + engines: {node: ^22.18.0 || >=24.11.0} + peerDependencies: + '@babel/core': ^8.0.0 '@babel/helper-split-export-declaration@7.24.7': resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} @@ -1765,27 +1799,48 @@ packages: resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@8.0.0': + resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-validator-identifier@7.29.7': resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@8.0.2': + resolution: {integrity: sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/helper-validator-option@7.29.7': resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.29.7': - resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==} - engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@8.0.0': + resolution: {integrity: sha512-U4Dybxh4WESWHt5XhBeExi4DrY0/DNK1aHpQbsrQXCUbFHuMweT0TpLEWKvaraV2Y6fS+ZXunsZ8zIuZIgvF2Q==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@babel/helper-wrap-function@8.0.0': + resolution: {integrity: sha512-Qpm8+wi5xfDkBfollanwriCcKniFfBmMmaKB01GVM6VGzKXo1fdxosZp04qEr5HM+LKhwr3hG1yRy8+ORsficA==} + engines: {node: ^22.18.0 || >=24.11.0} '@babel/helpers@7.29.7': resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} engines: {node: '>=6.9.0'} + '@babel/helpers@8.0.0': + resolution: {integrity: sha512-wfbi91pM3py96oIiJEz7qIpyXDytgr9zQC1HEWwlGNVRAEmItuU/0a41ZUKu1sJGyhhOIpc4t5vk4PYzt8wpsg==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/parser@7.29.7': resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@8.0.0': + resolution: {integrity: sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==} + engines: {node: ^22.18.0 || >=24.11.0} + hasBin: true + '@babel/plugin-syntax-async-generators@7.8.4': resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -1877,24 +1932,36 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.29.7': - resolution: {integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==} - engines: {node: '>=6.9.0'} + '@babel/plugin-transform-async-generator-functions@8.0.1': + resolution: {integrity: sha512-kqnSMF1YHBzuiQrl68675i5Ma1oljvo+SJsNEZFZVBu5BUrVIZm9KId3ui2PdtLK2sv2zM8sJnjPDfgLxQlEqQ==} + engines: {node: ^22.18.0 || >=24.11.0} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^8.0.0 '@babel/template@7.29.7': resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} + '@babel/template@8.0.0': + resolution: {integrity: sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/traverse@7.29.7': resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} engines: {node: '>=6.9.0'} + '@babel/traverse@8.0.0': + resolution: {integrity: sha512-bxTj/W2VclGE6CctlfQOpxg8MPDzXArRqkOBePw8EHfebcjF7fETWSS3BriEECo+UiU/Yblq+xUtSImFu7cTbw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@babel/types@7.29.7': resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} + '@babel/types@8.0.0': + resolution: {integrity: sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==} + engines: {node: ^22.18.0 || >=24.11.0} + '@bazel/bazelisk@1.28.1': resolution: {integrity: sha512-K21x83NXOtd0yb2qzjMES3UV4xEWZ1q1vnXFhADA1u7IoiMVQkJAVQRK3oZ5txpnrGafY15HS+YYr2nmsEP4Tg==} hasBin: true @@ -3359,9 +3426,6 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3': - resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -4466,6 +4530,9 @@ packages: '@types/folder-hash@4.0.4': resolution: {integrity: sha512-c+PwHm51Dw3fXM8SDK+93PO3oXdk4XNouCCvV67lj4aijRkZz5g67myk+9wqWWnyv3go6q96hT6ywcd3XtoZiQ==} + '@types/gensync@1.0.5': + resolution: {integrity: sha512-MbsRCT7mTikHwKZ0X+LVUTLRrZZRLipTuXEO9qOYO+zmjMVk81axyClMROf6uoPD9MRVu46bx8zoR0Ad9q3NAg==} + '@types/geojson@7946.0.16': resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} @@ -4499,6 +4566,9 @@ packages: '@types/jsdom@28.0.3': resolution: {integrity: sha512-/HQ2uFoetFTXuye8vzIcHw2z6Fwi7Hi/qcgC+RoS9NCyewiqxhVGqlG+ViGB6lkax481R6dmhf1I7lIGlzJStQ==} + '@types/jsesc@2.5.1': + resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -5635,6 +5705,10 @@ packages: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + commander@15.0.0: resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} engines: {node: '>=22.12.0'} @@ -6348,6 +6422,10 @@ packages: emojilib@2.4.0: resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + empathic@2.0.1: + resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} + engines: {node: '>=14'} + enabled@2.0.0: resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} @@ -6834,9 +6912,6 @@ packages: resolution: {integrity: sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==} engines: {node: '>=10.13.0'} - fs-readdir-recursive@1.1.0: - resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -7928,6 +8003,9 @@ packages: jose@6.2.3: resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + js-tokens@10.0.0: + resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -8324,10 +8402,6 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -9181,10 +9255,6 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - pinkie-promise@2.0.1: resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} engines: {node: '>=0.10.0'} @@ -9921,10 +9991,6 @@ packages: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} - slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -11493,7 +11559,7 @@ snapshots: beasties: 0.4.2 browserslist: 4.28.2 esbuild: 0.28.0 - https-proxy-agent: 9.0.0 + https-proxy-agent: 9.0.0(supports-color@8.1.1) jsonc-parser: 3.3.1 listr2: 10.2.1 magic-string: 0.30.21 @@ -11518,7 +11584,7 @@ snapshots: '@angular/service-worker': link:packages/service-worker '@angular/ssr': 22.1.0-next.0(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) istanbul-lib-instrument: 6.0.3 - karma: 6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) + karma: 6.4.4(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6) less: 4.6.6 lmdb: 3.5.5 ng-packagr: 22.1.0-next.2(@angular/compiler-cli@packages+compiler-cli)(tailwindcss@3.4.19(tsx@4.22.4)(yaml@2.9.0))(tslib@2.8.1)(typescript@6.0.3) @@ -11552,7 +11618,7 @@ snapshots: beasties: 0.4.2 browserslist: 4.28.2 esbuild: 0.28.0 - https-proxy-agent: 9.0.0 + https-proxy-agent: 9.0.0(supports-color@8.1.1) jsonc-parser: 3.3.1 listr2: 10.2.1 magic-string: 0.30.21 @@ -11577,7 +11643,7 @@ snapshots: '@angular/service-worker': link:packages/service-worker '@angular/ssr': 22.1.0-next.0(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) istanbul-lib-instrument: 6.0.3 - karma: 6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) + karma: 6.4.4(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6) less: 4.6.6 lmdb: 3.5.5 ng-packagr: 22.1.0-next.2(@angular/compiler-cli@packages+compiler-cli)(tailwindcss@3.4.19(tsx@4.22.4)(yaml@2.9.0))(tslib@2.8.1)(typescript@6.0.3) @@ -11597,7 +11663,7 @@ snapshots: - tsx - yaml - '@angular/build@22.1.0-next.0(90f8430bbbc48846098f894405a9c70a)': + '@angular/build@22.1.0-next.0(68a1e159eaa1cd7da9ee383985b60190)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2201.0-next.0(chokidar@5.0.0) @@ -11611,7 +11677,7 @@ snapshots: beasties: 0.4.2 browserslist: 4.28.2 esbuild: 0.28.0 - https-proxy-agent: 9.0.0 + https-proxy-agent: 9.0.0(supports-color@8.1.1) jsonc-parser: 3.3.1 listr2: 10.2.1 magic-string: 0.30.21 @@ -11636,7 +11702,7 @@ snapshots: '@angular/service-worker': link:packages/service-worker '@angular/ssr': 22.1.0-next.0(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) istanbul-lib-instrument: 6.0.3 - karma: 6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) + karma: 6.4.4(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6) less: 4.6.6 lmdb: 3.5.5 ng-packagr: 22.1.0-next.2(@angular/compiler-cli@packages+compiler-cli)(tailwindcss@3.4.19(tsx@4.22.4)(yaml@2.9.0))(tslib@2.8.1)(typescript@6.0.3) @@ -11665,7 +11731,7 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/cli@22.1.0-next.0(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(chokidar@5.0.0)': + '@angular/cli@22.1.0-next.0(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': dependencies: '@angular-devkit/architect': 0.2201.0-next.0(chokidar@5.0.0) '@angular-devkit/core': 22.1.0-next.0(chokidar@5.0.0) @@ -11680,7 +11746,7 @@ snapshots: jsonc-parser: 3.3.1 listr2: 10.2.1 npm-package-arg: 14.0.0 - pacote: 21.5.0 + pacote: 21.5.0(supports-color@8.1.1) parse5-html-rewriting-stream: 8.0.1 semver: 7.8.1 yargs: 18.0.0 @@ -11706,7 +11772,7 @@ snapshots: jsonc-parser: 3.3.1 listr2: 10.2.1 npm-package-arg: 14.0.0 - pacote: 21.5.0 + pacote: 21.5.0(supports-color@8.1.1) parse5-html-rewriting-stream: 8.0.1 semver: 7.8.1 yargs: 18.0.0 @@ -11732,7 +11798,7 @@ snapshots: jsonc-parser: 3.3.1 listr2: 10.2.1 npm-package-arg: 14.0.0 - pacote: 21.5.0 + pacote: 21.5.0(supports-color@8.1.1) parse5-html-rewriting-stream: 8.0.1 semver: 7.8.1 yargs: 18.0.0 @@ -11962,18 +12028,15 @@ snapshots: '@azure/msal-common': 16.9.0 jsonwebtoken: 9.0.3 - '@babel/cli@7.29.7(@babel/core@7.29.7)': + '@babel/cli@8.0.1(@babel/core@8.0.1)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 8.0.1 '@jridgewell/trace-mapping': 0.3.31 - commander: 6.2.1 + commander: 14.0.3 convert-source-map: 2.0.0 - fs-readdir-recursive: 1.1.0 - glob: 7.2.3 - make-dir: 2.1.0 - slash: 2.0.0 + glob: 13.0.6 + slash: 5.1.0 optionalDependencies: - '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 chokidar: 3.6.0 '@babel/code-frame@7.29.7': @@ -11982,8 +12045,15 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/code-frame@8.0.0': + dependencies: + '@babel/helper-validator-identifier': 8.0.2 + js-tokens: 10.0.0 + '@babel/compat-data@7.29.7': {} + '@babel/compat-data@8.0.0': {} + '@babel/core@7.29.7': dependencies: '@babel/code-frame': 7.29.7 @@ -12004,6 +12074,25 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@8.0.1': + dependencies: + '@babel/code-frame': 8.0.0 + '@babel/generator': 8.0.0 + '@babel/helper-compilation-targets': 8.0.0 + '@babel/helpers': 8.0.0 + '@babel/parser': 8.0.0 + '@babel/template': 8.0.0 + '@babel/traverse': 8.0.0 + '@babel/types': 8.0.0 + '@types/gensync': 1.0.5 + convert-source-map: 2.0.0 + empathic: 2.0.1 + gensync: 1.0.0-beta.2 + import-meta-resolve: 4.2.0 + json5: 2.2.3 + obug: 2.1.3 + semver: 7.8.4 + '@babel/generator@7.29.7': dependencies: '@babel/parser': 7.29.7 @@ -12012,10 +12101,23 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 + '@babel/generator@8.0.0': + dependencies: + '@babel/parser': 8.0.0 + '@babel/types': 8.0.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@types/jsesc': 2.5.1 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.29.7': dependencies: '@babel/types': 7.29.7 + '@babel/helper-annotate-as-pure@8.0.0': + dependencies: + '@babel/types': 8.0.0 + '@babel/helper-compilation-targets@7.29.7': dependencies: '@babel/compat-data': 7.29.7 @@ -12024,8 +12126,18 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@8.0.0': + dependencies: + '@babel/compat-data': 8.0.0 + '@babel/helper-validator-option': 8.0.0 + browserslist: 4.28.2 + lru-cache: 11.5.1 + semver: 7.8.4 + '@babel/helper-globals@7.29.7': {} + '@babel/helper-globals@8.0.0': {} + '@babel/helper-module-imports@7.29.7': dependencies: '@babel/traverse': 7.29.7 @@ -12044,14 +12156,16 @@ snapshots: '@babel/helper-plugin-utils@7.29.7': {} - '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7)': + '@babel/helper-plugin-utils@8.0.1(@babel/core@8.0.1)': dependencies: - '@babel/core': 7.29.7 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-wrap-function': 7.29.7 - '@babel/traverse': 7.29.7 - transitivePeerDependencies: - - supports-color + '@babel/core': 8.0.1 + + '@babel/helper-remap-async-to-generator@8.0.1(@babel/core@8.0.1)': + dependencies: + '@babel/core': 8.0.1 + '@babel/helper-annotate-as-pure': 8.0.0 + '@babel/helper-wrap-function': 8.0.0 + '@babel/traverse': 8.0.0 '@babel/helper-split-export-declaration@7.24.7': dependencies: @@ -12059,27 +12173,40 @@ snapshots: '@babel/helper-string-parser@7.29.7': {} + '@babel/helper-string-parser@8.0.0': {} + '@babel/helper-validator-identifier@7.29.7': {} + '@babel/helper-validator-identifier@8.0.2': {} + '@babel/helper-validator-option@7.29.7': {} - '@babel/helper-wrap-function@7.29.7': + '@babel/helper-validator-option@8.0.0': {} + + '@babel/helper-wrap-function@8.0.0': dependencies: - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 - transitivePeerDependencies: - - supports-color + '@babel/template': 8.0.0 + '@babel/traverse': 8.0.0 + '@babel/types': 8.0.0 '@babel/helpers@7.29.7': dependencies: '@babel/template': 7.29.7 '@babel/types': 7.29.7 + '@babel/helpers@8.0.0': + dependencies: + '@babel/template': 8.0.0 + '@babel/types': 8.0.0 + '@babel/parser@7.29.7': dependencies: '@babel/types': 7.29.7 + '@babel/parser@8.0.0': + dependencies: + '@babel/types': 8.0.0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -12165,14 +12292,12 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7)': + '@babel/plugin-transform-async-generator-functions@8.0.1(@babel/core@8.0.1)': dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) - '@babel/traverse': 7.29.7 - transitivePeerDependencies: - - supports-color + '@babel/core': 8.0.1 + '@babel/helper-plugin-utils': 8.0.1(@babel/core@8.0.1) + '@babel/helper-remap-async-to-generator': 8.0.1(@babel/core@8.0.1) + '@babel/traverse': 8.0.0 '@babel/template@7.29.7': dependencies: @@ -12180,6 +12305,12 @@ snapshots: '@babel/parser': 7.29.7 '@babel/types': 7.29.7 + '@babel/template@8.0.0': + dependencies: + '@babel/code-frame': 8.0.0 + '@babel/parser': 8.0.0 + '@babel/types': 8.0.0 + '@babel/traverse@7.29.7': dependencies: '@babel/code-frame': 7.29.7 @@ -12192,11 +12323,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@8.0.0': + dependencies: + '@babel/code-frame': 8.0.0 + '@babel/generator': 8.0.0 + '@babel/helper-globals': 8.0.0 + '@babel/parser': 8.0.0 + '@babel/template': 8.0.0 + '@babel/types': 8.0.0 + obug: 2.1.3 + '@babel/types@7.29.7': dependencies: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 + '@babel/types@8.0.0': + dependencies: + '@babel/helper-string-parser': 8.0.0 + '@babel/helper-validator-identifier': 8.0.2 + '@bazel/bazelisk@1.28.1': {} '@bazel/buildifier@8.2.1': {} @@ -13579,11 +13725,11 @@ snapshots: jest-util: 30.4.1 slash: 3.0.0 - '@jest/core@30.4.2(ts-node@10.9.2(@types/node@24.13.1)(typescript@6.0.3))': + '@jest/core@30.4.2(supports-color@8.1.1)(ts-node@10.9.2(@types/node@24.13.1)(typescript@6.0.3))': dependencies: '@jest/console': 30.4.1 '@jest/pattern': 30.4.0 - '@jest/reporters': 30.4.1 + '@jest/reporters': 30.4.1(supports-color@8.1.1) '@jest/test-result': 30.4.1 '@jest/transform': 30.4.1 '@jest/types': 30.4.1 @@ -13671,7 +13817,7 @@ snapshots: '@types/node': 24.13.1 jest-regex-util: 30.4.0 - '@jest/reporters@30.4.1': + '@jest/reporters@30.4.1(supports-color@8.1.1)': dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 30.4.1 @@ -13688,7 +13834,7 @@ snapshots: istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 + istanbul-lib-source-maps: 5.0.6(supports-color@8.1.1) istanbul-reports: 3.2.0 jest-message-util: 30.4.1 jest-util: 30.4.1 @@ -14010,9 +14156,6 @@ snapshots: '@tybys/wasm-util': 0.10.2 optional: true - '@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3': - optional: true - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -14736,10 +14879,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@sigstore/tuf@4.0.2': + '@sigstore/tuf@4.0.2(supports-color@8.1.1)': dependencies: '@sigstore/protobuf-specs': 0.5.1 - tuf-js: 4.1.0 + tuf-js: 4.1.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -15027,6 +15170,8 @@ snapshots: '@types/folder-hash@4.0.4': {} + '@types/gensync@1.0.5': {} + '@types/geojson@7946.0.16': {} '@types/har-format@1.2.16': {} @@ -15068,6 +15213,8 @@ snapshots: parse5: 8.0.1 undici-types: 7.28.0 + '@types/jsesc@2.5.1': {} + '@types/json-schema@7.0.15': {} '@types/mdast@4.0.4': @@ -15142,7 +15289,7 @@ snapshots: '@types/yarnpkg__lockfile@1.1.9': {} - '@typescript/vfs@1.6.4(typescript@6.0.3)': + '@typescript/vfs@1.6.4(supports-color@8.1.1)(typescript@6.0.3)': dependencies: debug: 4.4.3(supports-color@8.1.1) typescript: 6.0.3 @@ -15355,7 +15502,7 @@ snapshots: '@vscode/vsce-sign-win32-arm64': 2.0.6 '@vscode/vsce-sign-win32-x64': 2.0.6 - '@vscode/vsce@3.9.2': + '@vscode/vsce@3.9.2(supports-color@8.1.1)': dependencies: '@azure/identity': 4.13.1 '@secretlint/node': 10.2.2 @@ -15378,7 +15525,7 @@ snapshots: minimatch: 10.2.5 parse-semver: 1.1.1 read: 1.0.7 - secretlint: 10.2.2 + secretlint: 10.2.2(supports-color@8.1.1) semver: 7.8.5 tmp: 0.2.7 typed-rest-client: 1.8.11 @@ -15920,9 +16067,9 @@ snapshots: node-releases: 2.0.48 update-browserslist-db: 1.2.3(browserslist@4.28.2) - browserstack@1.6.1: + browserstack@1.6.1(supports-color@8.1.1): dependencies: - https-proxy-agent: 2.2.4 + https-proxy-agent: 2.2.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -16247,6 +16394,8 @@ snapshots: commander@12.1.0: {} + commander@14.0.3: {} + commander@15.0.0: {} commander@2.20.3: {} @@ -17012,6 +17161,8 @@ snapshots: emojilib@2.4.0: {} + empathic@2.0.1: {} + enabled@2.0.0: {} encodeurl@1.0.2: {} @@ -17033,7 +17184,7 @@ snapshots: engine.io-parser@5.2.3: {} - engine.io@6.6.9(bufferutil@4.1.0)(utf-8-validate@6.0.6): + engine.io@6.6.9(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6): dependencies: '@types/cors': 2.8.19 '@types/node': 24.13.1 @@ -17588,7 +17739,7 @@ snapshots: object.pick: 1.3.0 parse-filepath: 1.0.2 - firebase-tools@15.22.0(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(bufferutil@4.1.0)(encoding@0.1.13): + firebase-tools@15.22.0(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(bufferutil@4.1.0)(encoding@0.1.13)(supports-color@8.1.1): dependencies: '@apphosting/common': 0.0.8 '@electric-sql/pglite': 0.3.16 @@ -17639,9 +17790,9 @@ snapshots: pg: 8.22.0 pg-gateway: 0.3.0-beta.4 pglite-2: '@electric-sql/pglite@0.2.17' - portfinder: 1.0.38 + portfinder: 1.0.38(supports-color@8.1.1) progress: 2.0.3 - proxy-agent: 6.5.0 + proxy-agent: 6.5.0(supports-color@8.1.1) retry: 0.13.1 semver: 7.8.5 sql-formatter: 15.8.2 @@ -17652,7 +17803,7 @@ snapshots: tcp-port-used: 1.0.3 tmp: 0.2.7 triple-beam: 1.4.1 - universal-analytics: 0.5.4 + universal-analytics: 0.5.4(supports-color@8.1.1) update-notifier-cjs: 5.1.7(encoding@0.1.13) winston: 3.19.0 winston-transport: 4.9.0 @@ -17805,8 +17956,6 @@ snapshots: - bare-abort-controller - react-native-b4a - fs-readdir-recursive@1.1.0: {} - fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -17962,7 +18111,7 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - get-uri@6.0.5: + get-uri@6.0.5(supports-color@8.1.1): dependencies: basic-ftp: 5.3.1 data-uri-to-buffer: 6.0.2 @@ -18473,7 +18622,7 @@ snapshots: mime: 1.6.0 minimist: 1.2.8 opener: 1.5.2 - portfinder: 1.0.38 + portfinder: 1.0.38(supports-color@8.1.1) secure-compare: 3.0.1 union: 0.5.0 url-join: 4.0.1 @@ -18493,7 +18642,7 @@ snapshots: jsprim: 2.0.2 sshpk: 1.18.0 - https-proxy-agent@2.2.4: + https-proxy-agent@2.2.4(supports-color@8.1.1): dependencies: agent-base: 4.3.0 debug: 3.2.7(supports-color@8.1.1) @@ -18514,7 +18663,7 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@9.0.0: + https-proxy-agent@9.0.0(supports-color@8.1.1): dependencies: agent-base: 9.0.0 debug: 4.4.3(supports-color@8.1.1) @@ -18894,7 +19043,7 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@4.0.1: + istanbul-lib-source-maps@4.0.1(supports-color@8.1.1): dependencies: debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 @@ -18902,7 +19051,7 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-lib-source-maps@5.0.6: + istanbul-lib-source-maps@5.0.6(supports-color@8.1.1): dependencies: '@jridgewell/trace-mapping': 0.3.31 debug: 4.4.3(supports-color@8.1.1) @@ -18990,7 +19139,7 @@ snapshots: jest-cli@30.4.2(@types/node@24.13.1)(ts-node@10.9.2(@types/node@24.13.1)(typescript@6.0.3)): dependencies: - '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@24.13.1)(typescript@6.0.3)) + '@jest/core': 30.4.2(supports-color@8.1.1)(ts-node@10.9.2(@types/node@24.13.1)(typescript@6.0.3)) '@jest/test-result': 30.4.1 '@jest/types': 30.4.1 chalk: 4.1.2 @@ -19265,9 +19414,9 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@30.4.2(@types/node@24.13.1)(ts-node@10.9.2(@types/node@24.13.1)(typescript@6.0.3)): + jest@30.4.2(@types/node@24.13.1)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@24.13.1)(typescript@6.0.3)): dependencies: - '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@24.13.1)(typescript@6.0.3)) + '@jest/core': 30.4.2(supports-color@8.1.1)(ts-node@10.9.2(@types/node@24.13.1)(typescript@6.0.3)) '@jest/types': 30.4.1 import-local: 3.2.0 jest-cli: 30.4.2(@types/node@24.13.1)(ts-node@10.9.2(@types/node@24.13.1)(typescript@6.0.3)) @@ -19290,6 +19439,8 @@ snapshots: jose@6.2.3: {} + js-tokens@10.0.0: {} + js-tokens@4.0.0: {} js-yaml@3.14.2: @@ -19449,12 +19600,12 @@ snapshots: dependencies: which: 1.3.1 - karma-coverage@2.2.1: + karma-coverage@2.2.1(supports-color@8.1.1): dependencies: istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 5.2.1 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 + istanbul-lib-source-maps: 4.0.1(supports-color@8.1.1) istanbul-reports: 3.2.0 minimatch: 3.1.5 transitivePeerDependencies: @@ -19465,22 +19616,22 @@ snapshots: is-wsl: 2.2.0 which: 3.0.1 - karma-jasmine-html-reporter@2.2.0(jasmine-core@6.3.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)))(karma@6.4.4(bufferutil@4.1.0)): + karma-jasmine-html-reporter@2.2.0(jasmine-core@6.3.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)))(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)): dependencies: jasmine-core: 6.3.0 - karma: 6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) - karma-jasmine: 5.1.0(karma@6.4.4(bufferutil@4.1.0)) + karma: 6.4.4(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6) + karma-jasmine: 5.1.0(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)) - karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)): + karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)): dependencies: jasmine-core: 4.6.1 - karma: 6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) + karma: 6.4.4(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6) karma-sourcemap-loader@0.4.0: dependencies: graceful-fs: 4.2.11 - karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6): + karma@6.4.4(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6): dependencies: '@colors/colors': 1.5.0 body-parser: 1.20.5 @@ -19494,14 +19645,14 @@ snapshots: http-proxy: 1.18.1 isbinaryfile: 4.0.10 lodash: 4.18.1 - log4js: 6.9.1 + log4js: 6.9.1(supports-color@8.1.1) mime: 2.6.0 minimatch: 3.1.5 mkdirp: 0.5.6 qjobs: 1.2.0 range-parser: 1.2.1 rimraf: 3.0.2 - socket.io: 4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) + socket.io: 4.8.3(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6) source-map: 0.6.1 tmp: 0.2.7 ua-parser-js: 0.7.41 @@ -19726,13 +19877,13 @@ snapshots: strip-ansi: 7.2.0 wrap-ansi: 9.0.2 - log4js@6.9.1: + log4js@6.9.1(supports-color@8.1.1): dependencies: date-format: 4.0.14 debug: 4.4.3(supports-color@8.1.1) flatted: 3.4.2 rfdc: 1.4.1 - streamroller: 3.1.5 + streamroller: 3.1.5(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -19769,11 +19920,6 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - make-dir@2.1.0: - dependencies: - pify: 4.0.1 - semver: 5.7.2 - make-dir@3.1.0: dependencies: semver: 6.3.1 @@ -20524,12 +20670,12 @@ snapshots: p-try@2.2.0: {} - pac-proxy-agent@7.2.0: + pac-proxy-agent@7.2.0(supports-color@8.1.1): dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.4 debug: 4.4.3(supports-color@8.1.1) - get-uri: 6.0.5 + get-uri: 6.0.5(supports-color@8.1.1) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 pac-resolver: 7.0.1 @@ -20546,7 +20692,7 @@ snapshots: package-manager-detector@1.6.0: {} - pacote@21.5.0: + pacote@21.5.0(supports-color@8.1.1): dependencies: '@gar/promise-retry': 1.0.3 '@npmcli/git': 7.0.2 @@ -20562,7 +20708,7 @@ snapshots: npm-pick-manifest: 11.0.3 npm-registry-fetch: 19.1.1 proc-log: 6.1.0 - sigstore: 4.1.1 + sigstore: 4.1.1(supports-color@8.1.1) ssri: 13.0.1 tar: 7.5.16 transitivePeerDependencies: @@ -20727,8 +20873,6 @@ snapshots: pify@2.3.0: {} - pify@4.0.1: {} - pinkie-promise@2.0.1: dependencies: pinkie: 2.0.4 @@ -20772,7 +20916,7 @@ snapshots: path-data-parser: 0.1.0 points-on-curve: 0.2.0 - portfinder@1.0.38: + portfinder@1.0.38(supports-color@8.1.1): dependencies: async: 3.2.6 debug: 4.4.3(supports-color@8.1.1) @@ -20905,12 +21049,12 @@ snapshots: '@types/node': 24.13.1 long: 5.3.2 - protractor@7.0.0: + protractor@7.0.0(supports-color@8.1.1): dependencies: '@types/q': 0.0.32 '@types/selenium-webdriver': 3.0.7 blocking-proxy: 1.0.1 - browserstack: 1.6.1 + browserstack: 1.6.1(supports-color@8.1.1) chalk: 1.1.3 glob: 7.2.3 jasmine: 2.8.0 @@ -20930,14 +21074,14 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-agent@6.5.0: + proxy-agent@6.5.0(supports-color@8.1.1): dependencies: agent-base: 7.1.4 debug: 4.4.3(supports-color@8.1.1) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 lru-cache: 7.18.3 - pac-proxy-agent: 7.2.0 + pac-proxy-agent: 7.2.0(supports-color@8.1.1) proxy-from-env: 1.1.0 socks-proxy-agent: 8.0.5 transitivePeerDependencies: @@ -21440,7 +21584,7 @@ snapshots: saucelabs@1.5.0: dependencies: - https-proxy-agent: 2.2.4 + https-proxy-agent: 2.2.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -21450,7 +21594,7 @@ snapshots: dependencies: xmlchars: 2.2.0 - secretlint@10.2.2: + secretlint@10.2.2(supports-color@8.1.1): dependencies: '@secretlint/config-creator': 10.2.2 '@secretlint/formatter': 10.2.2 @@ -21636,13 +21780,13 @@ snapshots: signal-exit@4.1.0: {} - sigstore@4.1.1: + sigstore@4.1.1(supports-color@8.1.1): dependencies: '@sigstore/bundle': 4.0.0 '@sigstore/core': 3.2.1 '@sigstore/protobuf-specs': 0.5.1 '@sigstore/sign': 4.1.1 - '@sigstore/tuf': 4.0.2 + '@sigstore/tuf': 4.0.2(supports-color@8.1.1) '@sigstore/verify': 3.1.1 transitivePeerDependencies: - supports-color @@ -21661,8 +21805,6 @@ snapshots: dependencies: unicode-emoji-modifier-base: 1.0.0 - slash@2.0.0: {} - slash@3.0.0: {} slash@5.1.0: {} @@ -21690,7 +21832,7 @@ snapshots: smart-buffer@4.2.0: {} - socket.io-adapter@2.5.8(bufferutil@4.1.0)(utf-8-validate@6.0.6): + socket.io-adapter@2.5.8(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6): dependencies: debug: 4.4.3(supports-color@8.1.1) ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -21699,22 +21841,22 @@ snapshots: - supports-color - utf-8-validate - socket.io-parser@4.2.6: + socket.io-parser@4.2.6(supports-color@8.1.1): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - socket.io@4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6): + socket.io@4.8.3(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6): dependencies: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.6 debug: 4.4.3(supports-color@8.1.1) - engine.io: 6.6.9(bufferutil@4.1.0)(utf-8-validate@6.0.6) - socket.io-adapter: 2.5.8(bufferutil@4.1.0)(utf-8-validate@6.0.6) - socket.io-parser: 4.2.6 + engine.io: 6.6.9(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6) + socket.io-adapter: 2.5.8(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6) + socket.io-parser: 4.2.6(supports-color@8.1.1) transitivePeerDependencies: - bufferutil - supports-color @@ -21860,7 +22002,7 @@ snapshots: stream-shift@1.0.3: {} - streamroller@3.1.5: + streamroller@3.1.5(supports-color@8.1.1): dependencies: date-format: 4.0.14 debug: 4.4.3(supports-color@8.1.1) @@ -22372,7 +22514,7 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - tuf-js@4.1.0: + tuf-js@4.1.0(supports-color@8.1.1): dependencies: '@tufjs/models': 4.1.0 debug: 4.4.3(supports-color@8.1.1) @@ -22545,7 +22687,7 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - universal-analytics@0.5.4: + universal-analytics@0.5.4(supports-color@8.1.1): dependencies: debug: 4.4.3(supports-color@8.1.1) uuid: 14.0.1