From 1172ba317e40cb1b7d196b62d35eebad4aa35a87 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 27 Oct 2026 20:03:38 +0100 Subject: [PATCH 1/6] fix(compiler-cli): match ctorParameters behavior from ngtsc Resolves a test failure internally where we weren't matching how ngtsc emits `ctorParameters` for primitive types. It appears that in ngtsc we have some logic where `string` gets emitted as the `String` object, `number` as the `Number` object etc. --- .../ng-analyze/src/analyzer/mod.rs | 128 ++++++++++++++++++ .../ng-analyze/src/types/metadata.rs | 11 ++ .../preprocessor/src/processor.ts | 68 +++++++--- .../compiler-cli/preprocessor/src/types.ts | 10 ++ .../test/golden/jit_ctor_parameters/golden.md | 21 ++- .../golden/jit_ctor_parameters/golden.opt.md | 21 ++- .../test/golden/jit_ctor_parameters/source.md | 11 +- .../compiler-cli/test/ngtsc/ngtsc_spec.ts | 37 +++++ 8 files changed, 285 insertions(+), 22 deletions(-) diff --git a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/mod.rs b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/mod.rs index 8020d69890d..e292d69014f 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/mod.rs +++ b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/mod.rs @@ -522,6 +522,7 @@ pub struct CtorParamDi { pub name_span: oxc_span::Span, pub type_span: Option, pub type_name: Option, + pub jit_type_name: Option<&'static str>, pub type_info: TypeRefInfo, pub has_explicit_token: bool, } @@ -556,6 +557,8 @@ pub(crate) fn constructor_params_di<'a>( Ok((name, info)) => (Some(name), info), Err(reason) => (None, TypeRefInfo::unavailable(reason)), }; + let jit_type_name = type_annotation + .and_then(|annotation| extract_jit_builtin_type_name(&annotation.type_annotation)); let has_explicit_token = decorators.iter().any(|decorator| { matches!( get_canonical_decorator_name(decorator, semantic, angular_imports), @@ -568,6 +571,7 @@ pub(crate) fn constructor_params_di<'a>( type_span: type_annotation .map(|annotation| unwrap_union_type(&annotation.type_annotation).span()), type_name, + jit_type_name, type_info, has_explicit_token, } @@ -722,6 +726,8 @@ pub fn get_constructor_params<'a>( params.push(crate::ConstructorParamMetadata { type_name, + jit_type_name: di.jit_type_name.map(String::from), + has_type: di.type_span.is_some(), type_module, is_type_only, is_value_verified, @@ -945,6 +951,40 @@ fn unwrap_union_type<'a>(ts_type: &'a oxc_ast::ast::TSType<'a>) -> &'a oxc_ast:: ts_type } +/// Boxed runtime constructor identifier emitted by `ngtsc`'s `downlevel_decorators_transform` +/// (`typeReferenceToExpression`) for non-`TSTypeReference` parameter types on `jit: true` classes. +/// https://github.com/angular/angular/blob/83622ee/packages/compiler-cli/src/ngtsc/transform/jit/src/downlevel_decorators_transform.ts#L192-L235 +fn extract_jit_builtin_type_name(ts_type: &oxc_ast::ast::TSType<'_>) -> Option<&'static str> { + use oxc_ast::ast::{TSLiteral, TSType}; + + match ts_type { + TSType::TSFunctionType(_) | TSType::TSConstructorType(_) => Some("Function"), + TSType::TSArrayType(_) | TSType::TSTupleType(_) => Some("Array"), + TSType::TSTypePredicate(_) | TSType::TSBooleanKeyword(_) => Some("Boolean"), + TSType::TSStringKeyword(_) => Some("String"), + TSType::TSObjectKeyword(_) => Some("Object"), + TSType::TSNumberKeyword(_) => Some("Number"), + TSType::TSLiteralType(lit) => match &lit.literal { + TSLiteral::BooleanLiteral(_) => Some("Boolean"), + TSLiteral::StringLiteral(_) => Some("String"), + TSLiteral::NumericLiteral(_) => Some("Number"), + _ => None, + }, + TSType::TSUnionType(union) => { + let mut non_null = union + .types + .iter() + .filter(|t| !matches!(t, TSType::TSNullKeyword(_))); + let single = non_null.next()?; + if non_null.next().is_some() { + return None; + } + extract_jit_builtin_type_name(single) + } + _ => None, + } +} + // TypeScript built-in types from lib.es5.d.ts (and friends) that have no runtime value // declaration (decl.valueDeclaration === undefined in ngtsc): the utility type aliases, plus the // structural interfaces that shadow no global object. `ReadonlyMap` is the trap — `Map` exists at @@ -1291,4 +1331,92 @@ mod tests { ); } } + + #[test] + fn constructor_params_extract_jit_builtin_types_and_has_type() { + let source = r#" + import {Component, Optional} from '@angular/core'; + export interface MyInterface {} + export class DepService {} + + @Component({ template: '', jit: true }) + export class TestCmp { + constructor( + a: string, + b: boolean, + c: number, + d: object, + e: string[], + f: [string, number], + g: () => void, + h: new () => DepService, + i: 'lit', + j: true, + k: 42, + l: string | null, + m: string | undefined, + n: string | number, + o: MyInterface, + p: any, + q: DepService, + untyped, + @Optional() untypedOptional, + ...rest: number[] + ) {} + } + "#; + let fs = crate::test_utils::create_test_fs(&[ + ("/tsconfig.json", r#"{ "files": ["test.ts"] }"#), + ("/test.ts", source), + ]); + let results = crate::test_utils::run_analyzer(fs, "/tsconfig.json", false); + let class = results[0] + .classes + .iter() + .find(|c| c.class_name.as_deref() == Some("TestCmp")) + .expect("TestCmp metadata"); + let params = class.constructor_params.as_ref().expect("constructor_params"); + + let summary: Vec<(&str, Option<&str>, Option<&str>, bool)> = [ + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", + "untyped", "untypedOptional", "rest", + ] + .into_iter() + .zip(params.iter()) + .map(|(label, p)| { + ( + label, + p.type_name.as_deref(), + p.jit_type_name.as_deref(), + p.has_type, + ) + }) + .collect(); + + assert_eq!( + summary, + vec![ + ("a", None, Some("String"), true), + ("b", None, Some("Boolean"), true), + ("c", None, Some("Number"), true), + ("d", None, Some("Object"), true), + ("e", None, Some("Array"), true), + ("f", None, Some("Array"), true), + ("g", None, Some("Function"), true), + ("h", None, Some("Function"), true), + ("i", None, Some("String"), true), + ("j", None, Some("Boolean"), true), + ("k", None, Some("Number"), true), + ("l", None, Some("String"), true), + ("m", None, None, true), + ("n", None, None, true), + ("o", Some("MyInterface"), None, true), + ("p", None, None, true), + ("q", Some("DepService"), None, true), + ("untyped", None, None, false), + ("untypedOptional", None, None, false), + ("rest", None, Some("Array"), true), + ] + ); + } } diff --git a/packages/compiler-cli/preprocessor/ng-analyze/src/types/metadata.rs b/packages/compiler-cli/preprocessor/ng-analyze/src/types/metadata.rs index ab13e07b2ce..2c4de3145e7 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/src/types/metadata.rs +++ b/packages/compiler-cli/preprocessor/ng-analyze/src/types/metadata.rs @@ -859,6 +859,17 @@ pub struct HostListenerMetadata { pub struct ConstructorParamMetadata { #[serde(skip_serializing_if = "Option::is_none")] pub type_name: Option, + /// Boxed runtime constructor name (`String`, `Boolean`, `Number`, `Object`, `Array`, + /// `Function`) for non-`TSTypeReference` parameter types (primitives, literals, arrays/tuples, + /// functions/constructors, type predicates, and nullable `T | null` unions), mirroring + /// `ngtsc`'s `downlevel_decorators_transform` for `jit: true` `static ctorParameters`. + #[serde(skip_serializing_if = "Option::is_none")] + pub jit_type_name: Option, + /// Whether the parameter carries a TypeScript type annotation in source (`param.type != null` + /// in `downlevel_decorators_transform`). Untyped, undecorated parameters emit `null` in + /// `jit: true` `static ctorParameters`, whereas typed parameters whose type has no runtime + /// value emit `{ type: undefined }`. + pub has_type: bool, /// Module specifier the type was imported from, when the type resolves to a (non-aliased) /// named import (e.g. `@angular/core` for `ElementRef`). `None` for locally declared types. /// Used so DI tokens that reference an imported symbol are emitted through the matching diff --git a/packages/compiler-cli/preprocessor/src/processor.ts b/packages/compiler-cli/preprocessor/src/processor.ts index 6e3db03145c..8a76b45d95d 100644 --- a/packages/compiler-cli/preprocessor/src/processor.ts +++ b/packages/compiler-cli/preprocessor/src/processor.ts @@ -33,7 +33,6 @@ import { compileClassDebugInfo, compileComponentClassMetadata, compileComponentFromMetadata, - compileCtorParameters, compileDeferResolverFunction, compileDirectiveFromMetadata, compileFactoryFunction, @@ -533,17 +532,12 @@ export function processFileSync( } if (!ctx.emitDeclarationOnly && constructorParams && constructorParams.length > 0) { - const ctorParams = buildCtorParametersExpr(constructorParams, s, { - omitEmptyDecorators: true, - }); - if (ctorParams) { - const ctorExpr = compileCtorParameters(ctorParams, /* allowSuppressions */ true); - const nocollapse = ctx.isClosureCompilerEnabled ? '/** @nocollapse */\n ' : ''; - s.appendLeft( - span.end - 1, - `\n ${nocollapse}static ctorParameters = ${printer.print(ctorExpr)};\n`, - ); - } + const ctorExpr = buildJitCtorParametersExpr(constructorParams, s); + const nocollapse = ctx.isClosureCompilerEnabled ? '/** @nocollapse */\n ' : ''; + s.appendLeft( + span.end - 1, + `\n ${nocollapse}static ctorParameters = ${printer.print(ctorExpr)};\n`, + ); } continue; @@ -2260,7 +2254,6 @@ function buildCtorParametersExpr( constructorParams: nga.ConstructorParamMetadata[] | undefined, s: MagicString, options?: { - omitEmptyDecorators?: boolean; useCoreNamespace?: boolean; complianceMode?: boolean; }, @@ -2268,7 +2261,6 @@ function buildCtorParametersExpr( if (constructorParams == null) { return null; } - const omitEmptyDecorators = options?.omitEmptyDecorators ?? false; const useCoreNamespace = options?.useCoreNamespace ?? false; const complianceMode = options?.complianceMode ?? false; return constructorParams.map((param) => { @@ -2278,9 +2270,7 @@ function buildCtorParametersExpr( const ngDecorators = param.decorators .filter((d) => d.isAngular) .map((d) => buildDecoratorMetadataExpr(d.name, d.argsSpan, d.argsString, s, [])); - if (!omitEmptyDecorators || ngDecorators.length > 0) { - decorators = o.literalArr(ngDecorators); - } + decorators = o.literalArr(ngDecorators); } const useNamespaceImport = typeName != null && @@ -2302,6 +2292,50 @@ function buildCtorParametersExpr( }); } +/** + * Build the `() => [...]` callback assigned to `static ctorParameters` on `jit: true` classes, + * mirroring `ngtsc`'s `createCtorParametersClassProperty` in `downlevel_decorators_transform.ts`: + * primitive/built-in parameter types emit their boxed constructors (`String`, `Boolean`, `Number`, + * `Object`, `Array`, `Function`), and untyped, undecorated parameters emit `null`. + * https://github.com/angular/angular/blob/83622ee/packages/compiler-cli/src/ngtsc/transform/jit/src/downlevel_decorators_transform.ts#L108-L154 + */ +function buildJitCtorParametersExpr( + constructorParams: nga.ConstructorParamMetadata[], + s: MagicString, +): o.Expression { + const params = constructorParams.map((param): o.Expression => { + const ngDecorators = param.decorators + .filter((d) => d.isAngular) + .map((d) => buildDecoratorMetadataExpr(d.name, d.argsSpan, d.argsString, s, [])); + + if (!param.hasType && ngDecorators.length === 0) { + return o.literal(null); + } + + const valueRefTypeName = param.isTypeOnly ? undefined : param.typeName; + const resolvedTypeName = valueRefTypeName ?? param.jitTypeName; + const typeProp = new o.LiteralMapPropertyAssignment( + 'type', + resolvedTypeName == null ? o.literal(undefined) : o.variable(resolvedTypeName), + /* quoted */ false, + ); + + if (valueRefTypeName != null && !param.isValueVerified) { + typeProp.leadingComments = [o.leadingComment('@ts-ignore', true, true)]; + } + + const entries: o.LiteralMapEntry[] = [typeProp]; + if (ngDecorators.length > 0) { + entries.push( + new o.LiteralMapPropertyAssignment('decorators', o.literalArr(ngDecorators), false), + ); + } + return new o.LiteralMapExpr(entries); + }); + + return o.arrowFn([], o.literalArr(params), o.DYNAMIC_TYPE); +} + /** * Construct the property-decorator map (4th `ɵsetClassMetadata` argument), or `null` when no member * carries a decorator. Members with only non-Angular decorators still appear with an empty array. diff --git a/packages/compiler-cli/preprocessor/src/types.ts b/packages/compiler-cli/preprocessor/src/types.ts index 2f0397275db..5b743e0ec6b 100644 --- a/packages/compiler-cli/preprocessor/src/types.ts +++ b/packages/compiler-cli/preprocessor/src/types.ts @@ -318,6 +318,16 @@ export interface ComponentMetadata { export interface ConstructorParamMetadata { typeName?: string; + /** + * Boxed runtime constructor name (`String`, `Boolean`, `Number`, `Object`, `Array`, `Function`) + * for non-`TSTypeReference` parameter types, mirroring `ngtsc`'s `downlevel_decorators_transform` + * for `jit: true` `static ctorParameters`. + */ + jitTypeName?: string; + /** + * Whether the parameter carries a TypeScript type annotation in source. + */ + hasType: boolean; /** * Module specifier the type was imported from, when the type resolves to a (non-aliased) * named import (e.g. `@angular/core` for `ElementRef`). `None` for locally declared types. diff --git a/packages/compiler-cli/preprocessor/test/golden/jit_ctor_parameters/golden.md b/packages/compiler-cli/preprocessor/test/golden/jit_ctor_parameters/golden.md index cb83065eefb..69655d83e01 100644 --- a/packages/compiler-cli/preprocessor/test/golden/jit_ctor_parameters/golden.md +++ b/packages/compiler-cli/preprocessor/test/golden/jit_ctor_parameters/golden.md @@ -5,6 +5,7 @@ import { Component, Directive, Inject, InjectionToken, Optional } from '@angular import * as i0 from '@angular/core'; export class DepService {} +export interface SomeInterface {} export const TOKEN = new InjectionToken('TOKEN'); function CustomParamDec(): ParameterDecorator { @@ -20,12 +21,28 @@ export class JitCtorComponent { constructor( @Optional() @Inject(TOKEN) public token: string, count: number, - @CustomParamDec() public dep: DepService, + visible: boolean, + nullableLabel: string | null, + items: string[], + callback: () => void, + config: object, + iface: SomeInterface, + untyped = 'fallback', + @Optional() untypedOptional = 'opt', + @CustomParamDec() public dep: DepService = new DepService(), ) {} static ctorParameters = (): any => [ - { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [TOKEN] }] }, + { type: String, decorators: [{ type: Optional }, { type: Inject, args: [TOKEN] }] }, + { type: Number }, + { type: Boolean }, + { type: String }, + { type: Array }, + { type: Function }, + { type: Object }, { type: undefined }, + null, + { type: undefined, decorators: [{ type: Optional }] }, { type: DepService }, ]; } diff --git a/packages/compiler-cli/preprocessor/test/golden/jit_ctor_parameters/golden.opt.md b/packages/compiler-cli/preprocessor/test/golden/jit_ctor_parameters/golden.opt.md index cb83065eefb..69655d83e01 100644 --- a/packages/compiler-cli/preprocessor/test/golden/jit_ctor_parameters/golden.opt.md +++ b/packages/compiler-cli/preprocessor/test/golden/jit_ctor_parameters/golden.opt.md @@ -5,6 +5,7 @@ import { Component, Directive, Inject, InjectionToken, Optional } from '@angular import * as i0 from '@angular/core'; export class DepService {} +export interface SomeInterface {} export const TOKEN = new InjectionToken('TOKEN'); function CustomParamDec(): ParameterDecorator { @@ -20,12 +21,28 @@ export class JitCtorComponent { constructor( @Optional() @Inject(TOKEN) public token: string, count: number, - @CustomParamDec() public dep: DepService, + visible: boolean, + nullableLabel: string | null, + items: string[], + callback: () => void, + config: object, + iface: SomeInterface, + untyped = 'fallback', + @Optional() untypedOptional = 'opt', + @CustomParamDec() public dep: DepService = new DepService(), ) {} static ctorParameters = (): any => [ - { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [TOKEN] }] }, + { type: String, decorators: [{ type: Optional }, { type: Inject, args: [TOKEN] }] }, + { type: Number }, + { type: Boolean }, + { type: String }, + { type: Array }, + { type: Function }, + { type: Object }, { type: undefined }, + null, + { type: undefined, decorators: [{ type: Optional }] }, { type: DepService }, ]; } diff --git a/packages/compiler-cli/preprocessor/test/golden/jit_ctor_parameters/source.md b/packages/compiler-cli/preprocessor/test/golden/jit_ctor_parameters/source.md index 9f14ec38616..5585310e329 100644 --- a/packages/compiler-cli/preprocessor/test/golden/jit_ctor_parameters/source.md +++ b/packages/compiler-cli/preprocessor/test/golden/jit_ctor_parameters/source.md @@ -13,6 +13,7 @@ import {Component, Directive, Inject, InjectionToken, Optional} from '@angular/core'; export class DepService {} +export interface SomeInterface {} export const TOKEN = new InjectionToken('TOKEN'); function CustomParamDec(): ParameterDecorator { @@ -28,7 +29,15 @@ export class JitCtorComponent { constructor( @Optional() @Inject(TOKEN) public token: string, count: number, - @CustomParamDec() public dep: DepService, + visible: boolean, + nullableLabel: string | null, + items: string[], + callback: () => void, + config: object, + iface: SomeInterface, + untyped = 'fallback', + @Optional() untypedOptional = 'opt', + @CustomParamDec() public dep: DepService = new DepService(), ) {} } diff --git a/packages/compiler-cli/test/ngtsc/ngtsc_spec.ts b/packages/compiler-cli/test/ngtsc/ngtsc_spec.ts index d2ed8814c92..5d97a3604ef 100644 --- a/packages/compiler-cli/test/ngtsc/ngtsc_spec.ts +++ b/packages/compiler-cli/test/ngtsc/ngtsc_spec.ts @@ -985,6 +985,43 @@ runInEachFileSystem((os: string) => { expect(env.getContents('test.js')).not.toContain('NonJitModule.ctorParameters'); }); + it('should synthesize boxed primitive/built-in types and null for untyped params in `jit: true` ctorParameters', () => { + env.tsconfig({noImplicitAny: false}); + env.write( + 'test.ts', + ` + import {Component, Optional} from '@angular/core'; + + export interface SomeInterface {} + + @Component({ + template: '{{ view }}', + jit: true, + }) + export class TestHostComponent { + constructor( + public view: string, + public visible: boolean, + count: number, + nullable: string | null, + items: string[], + fn: () => void, + obj: object, + iface: SomeInterface, + untyped, + @Optional() untypedOptional, + ) {} + } + `, + ); + + env.driveMain(); + + expect(trim(env.getContents('test.js'))).toMatch( + /TestHostComponent\.ctorParameters = \(\) => \[\s*\{ type: String \},\s*\{ type: Boolean \},\s*\{ type: Number \},\s*\{ type: String \},\s*\{ type: Array \},\s*\{ type: Function \},\s*\{ type: Object \},\s*\{ type: undefined \},\s*null,\s*\{ type: undefined, decorators: \[\{ type: Optional \}\] \},?\s*\];/, + ); + }); + // This test triggers the Tsickle compiler which asserts that the file-paths // are valid for the real OS. When on non-Windows systems it doesn't like paths // that start with `C:`. From c35b3ad17bea8759cf5c8cb4b967793a3430f4a3 Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 27 Oct 2026 21:40:25 +0300 Subject: [PATCH 2/6] docs: fix inaccurate null and class notes in the template binding guide Interpolation renders null and undefined as an empty string instead of converting them with toString. Attribute bindings remove the attribute for undefined as well as null. The [class] binding does not drop strings that are not valid CSS class names, so describe the string form instead. --- adev/src/content/guide/templates/binding.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/adev/src/content/guide/templates/binding.md b/adev/src/content/guide/templates/binding.md index 08d576cd3e3..2985e2a642e 100644 --- a/adev/src/content/guide/templates/binding.md +++ b/adev/src/content/guide/templates/binding.md @@ -54,7 +54,7 @@ Continuing the theme example, if a user clicks on a button that updates the `the You can use text interpolation anywhere you would normally write text in HTML. -All expression values are converted to a string. Objects and arrays are converted using the value’s `toString` method. +Expression values are converted to a string. `null` and `undefined` render as an empty string. Objects and arrays are converted using the value’s `toString` method. ## Binding dynamic properties and attributes @@ -103,7 +103,7 @@ When you need to set HTML attributes that do not have corresponding DOM properti In this example, every time `listRole` changes, Angular automatically sets the `role` attribute of the `
    ` element by calling `setAttribute`. -If the value of an attribute binding is `null`, Angular removes the attribute by calling `removeAttribute`. +If the value of an attribute binding is `null` or `undefined`, Angular removes the attribute by calling `removeAttribute`. ### Text interpolation in properties and attributes @@ -164,7 +164,7 @@ The above example renders the following DOM: ``` -Angular ignores any string values that are not valid CSS class names. +Angular splits a string value on whitespace and ignores empty strings. When using static CSS classes, directly binding `class`, and binding specific classes, Angular intelligently combines all of the classes in the rendered result. @@ -258,6 +258,6 @@ Angular supports binding string values to ARIA attributes. ``` -Angular writes the string value to the element’s `aria-label` attribute and removes it when the bound value is `null`. +Angular writes the string value to the element’s `aria-label` attribute and removes it when the bound value is `null` or `undefined`. Some ARIA features expose DOM properties or directive inputs that accept structured values (such as element references). Use standard property bindings for those cases. See the [accessibility guide](/best-practices/a11y#aria-attributes-and-properties) for examples and additional guidance. From 56f45e04a5eadcea6bc15edb595883c08601c564 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 27 Oct 2026 23:51:42 +0000 Subject: [PATCH 3/6] docs: update cross-repo adev docs Updated Angular adev cross repo docs files. --- adev/src/content/cli/_build-info.json | 2 +- adev/src/content/cli/build.json | 2 +- adev/src/content/cli/generate.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/adev/src/content/cli/_build-info.json b/adev/src/content/cli/_build-info.json index 57f5bb14d86..9c74e08e8db 100644 --- a/adev/src/content/cli/_build-info.json +++ b/adev/src/content/cli/_build-info.json @@ -1,4 +1,4 @@ { "branchName": "refs/heads/main", - "sha": "154ccb2d6c50f9bcde6680fbffaa36c882cccc97" + "sha": "6bd4c82012b700520c6cd7023323ab5d69cdc98c" } \ No newline at end of file diff --git a/adev/src/content/cli/build.json b/adev/src/content/cli/build.json index 855200a033a..46771e6adba 100644 --- a/adev/src/content/cli/build.json +++ b/adev/src/content/cli/build.json @@ -242,7 +242,7 @@ "name": "stats-json", "type": "boolean", "default": false, - "description": "Generates a 'stats.json' file which can be analyzed with https://esbuild.github.io/analyze/." + "description": "Generates a 'browser-stats.json' file which can be analyzed with https://esbuild.github.io/analyze/. When server-side rendering is enabled, a 'server-stats.json' file is also generated." }, { "name": "styles", diff --git a/adev/src/content/cli/generate.json b/adev/src/content/cli/generate.json index ee2f9bfbf33..28c4c2fb37a 100644 --- a/adev/src/content/cli/generate.json +++ b/adev/src/content/cli/generate.json @@ -107,7 +107,7 @@ "aliases": [ "s" ], - "description": "Include the styles for the root component directly within the `app.ts` file. Only CSS styles can be included inline. By default, a separate stylesheet file (e.g., `app.css`) is created." + "description": "Include the styles for the root component directly within the `app.ts` file. By default, a separate stylesheet file (e.g., `app.css`) is created." }, { "name": "inline-template", From 338d0a286d3b26a475ef38e4fd0b5b2e9add73e4 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 27 Oct 2026 10:43:21 -0400 Subject: [PATCH 4/6] refactor(compiler-cli): decouple preprocessor HybridCompiler from tsconfigPath MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `HybridCompiler` wrote `.ngdiag.json` itself from `prepareChunk` and `prepareChunkSync`, which tied it to a `tsconfigPath` and to the Node filesystem, or to a `virtualFiles` overlay standing in for it. Now that the analyzer no longer requires a tsconfig, hosts that embed the compiler without one have nowhere to write such a file, and whether and where diagnostics are persisted is a decision for the build driver rather than for the compiler. `tsconfigPath` and `virtualFiles` are therefore removed from `HybridCompilerOptions`, together with `writeDiagnosticsFile` and `writeDiagnosticsFileSync`, and `hybrid_compiler.ts` no longer imports `node:fs`. In their place, `HybridCompiler.getDiagnostics()` returns the collected per-file diagnostics in the deterministic order the `.ngdiag.json` already used and leaves out diagnostics anchored on `.d.ts` files unless `includeDeclarationFiles` is set, making it the single place that filters and orders them; `serializeDiagnostics` now only formats that output. The `.ngdiag.json` write moves into `run` in `ngp.ts`, gated on a new optional `RunOptions.tsconfigPath`. The write that preceded the processing of each chunk is dropped as redundant, while `run` still writes after every chunk and once more at the end so that option diagnostics reach the file even when the analyzer produces no chunks. Without a tsconfig there is also nothing to resolve relative paths against, so `rootDir` and `rootDirs` on `HybridCompilerOptions` must now be absolute; relative `rootDirs` used to be resolved against `rootDir` or `dirname(tsconfigPath)`. This matters because `getProjectRelativePath`, which produces the `ɵsetClassDebugInfo` paths and HMR IDs, uses `path.posix.relative` and would silently resolve a relative root against the process cwd. Both options are normalized to forward slashes; `rootDir` previously was not, which would have broken that computation for backslash paths on Windows. `main.ts` resolves relative `rootDirs` against the tsconfig directory, matching TypeScript and the analyzer, and the test helpers do the same. --- packages/compiler-cli/preprocessor/main.ts | 12 +- packages/compiler-cli/preprocessor/ngp.ts | 26 +++- .../preprocessor/src/hybrid_compiler.ts | 131 ++++++++---------- .../create_analyzer_without_tsconfig_spec.ts | 42 +++++- .../test/extended_diagnostics_spec.ts | 7 +- .../preprocessor/test/ngp_spec.ts | 10 ++ .../test/project_relative_path_spec.ts | 37 +++-- .../compiler-cli/preprocessor/test/utils.ts | 14 +- .../src/ngtsc/testing/src/ngp_test_driver.ts | 4 - 9 files changed, 178 insertions(+), 105 deletions(-) diff --git a/packages/compiler-cli/preprocessor/main.ts b/packages/compiler-cli/preprocessor/main.ts index 57535a66cf3..175389f65a0 100644 --- a/packages/compiler-cli/preprocessor/main.ts +++ b/packages/compiler-cli/preprocessor/main.ts @@ -116,7 +116,13 @@ import {run} from './ngp.js'; angularCompilerOptions?.onlyPublishPublicTypingsForNgModules === true; const workspaceName = angularCompilerOptions?.workspaceName || bazelOptions?.workspaceName; - const rootDirs = angularCompilerOptions?.rootDirs || bazelOptions?.rootDirs; + // `readConfiguration` already makes `compilerOptions.rootDirs` absolute, so this only affects + // the raw `bazelOptions.rootDirs` fallback. Relative entries resolve against the tsconfig + // directory, as they do for TypeScript and the analyzer. + const rawRootDirs: string[] | undefined = + angularCompilerOptions?.rootDirs || bazelOptions?.rootDirs; + const tsconfigDir = path.dirname(tsconfigPath); + const rootDirs = rawRootDirs?.map((d) => path.resolve(tsconfigDir, d)); const enableHmr = angularCompilerOptions?._enableHmr; // Left undefined when unset so the analyzer falls back to the tsconfig's own value. const useHostForImportGeneration = @@ -160,8 +166,6 @@ import {run} from './ngp.js'; const optionDiagnostics = verifyCompilerOptions(angularCompilerOptions ?? {}); const compiler = new HybridCompiler(innerAnalyzer, { optimize, - // Where `writeDiagnosticsFile` writes the `.ngdiag.json` file; nothing is written without it. - tsconfigPath, tcbConfig, optionDiagnostics, legacyOptionalChaining: angularCompilerOptions?.legacyOptionalChaining, @@ -187,7 +191,7 @@ import {run} from './ngp.js'; }); console.log('Processing files...'); - await run(compiler, {outDir, rootDir, inPlace}); + await run(compiler, {outDir, rootDir, inPlace, tsconfigPath}); } catch (e) { console.error('Fatal Execution Error:', e); process.exit(1); diff --git a/packages/compiler-cli/preprocessor/ngp.ts b/packages/compiler-cli/preprocessor/ngp.ts index 059720d12ba..311ee6db881 100644 --- a/packages/compiler-cli/preprocessor/ngp.ts +++ b/packages/compiler-cli/preprocessor/ngp.ts @@ -10,7 +10,7 @@ import * as fs from 'fs/promises'; import * as path from 'path'; -import {HybridCompiler} from './src/hybrid_compiler.js'; +import {getDiagnosticPath, HybridCompiler, serializeDiagnostics} from './src/hybrid_compiler.js'; import {AnalysisResult} from './src/types.js'; import {ChunkContext} from './src/file_analysis.js'; @@ -18,10 +18,12 @@ export interface RunOptions { outDir: string | null; rootDir: string; inPlace?: boolean; + /** When set, writes `.ngdiag.json` from `compiler.getDiagnostics()`. */ + tsconfigPath?: string; } export async function run(compiler: HybridCompiler, options: RunOptions): Promise { - const {outDir, rootDir} = options; + const {outDir, rootDir, tsconfigPath} = options; const results = compiler.optimize && !compiler.emitDeclarationOnly ? compiler.analyzeOptimized() @@ -36,16 +38,32 @@ export async function run(compiler: HybridCompiler, options: RunOptions): Promis processFile(file, outDir, compiler, options, chunkContext, rootDir), ), ); - await compiler.writeDiagnosticsFile(); + await writeDiagnosticsFile(compiler, tsconfigPath); } // Also write when the analyzer produced no chunks so that option diagnostics (which don't // depend on any file) still make it into the `.ngdiag.json`. - await compiler.writeDiagnosticsFile(); + await writeDiagnosticsFile(compiler, tsconfigPath); } finally { compiler.analyzer.close(); } } +async function writeDiagnosticsFile( + compiler: HybridCompiler, + tsconfigPath: string | undefined, +): Promise { + if (!tsconfigPath) { + return; + } + const diagPath = getDiagnosticPath(tsconfigPath); + const content = serializeDiagnostics( + tsconfigPath, + compiler.getDiagnostics(), + compiler.optionDiagnostics, + ); + await fs.writeFile(diagPath, content, 'utf-8'); +} + async function processFile( file: AnalysisResult, outDir: string | null, diff --git a/packages/compiler-cli/preprocessor/src/hybrid_compiler.ts b/packages/compiler-cli/preprocessor/src/hybrid_compiler.ts index 3b1fa76d807..c0e1435106f 100644 --- a/packages/compiler-cli/preprocessor/src/hybrid_compiler.ts +++ b/packages/compiler-cli/preprocessor/src/hybrid_compiler.ts @@ -13,9 +13,6 @@ import { ParseTemplateOptions, TcbDirectiveMetadata, } from '@angular/compiler'; -import * as fsSync from 'node:fs'; -import * as fs from 'node:fs/promises'; -import * as path from 'path'; import {makeClassKey} from './compiler-utils.js'; import {verifyExtendedDiagnosticsOptions} from './compiler_options.js'; import {DependencyTemplates} from './dependency_templates.js'; @@ -41,13 +38,9 @@ export function getDiagnosticPath(tsconfigPath: string): string { } /** - * Serialize collected diagnostics to the `.ngdiag.json` payload. The map is keyed by - * completion order of the parallel analysis chunks, which varies from run to run (and across - * transports), so entries are sorted (file path, then span start) to keep the serialized file - * deterministic; the sort is stable, so a file's diagnostics sharing a span keep their - * reporting order. - * - * Diagnostics anchored on a `.d.ts` file are left out, see `targetsDeclarationFile`. + * Serialize diagnostics to the `.ngdiag.json` payload. `diagnostics` is the output of + * `HybridCompiler.getDiagnostics()`, which already leaves out diagnostics anchored on a `.d.ts` + * file and orders the rest deterministically. * * Compiler option diagnostics (`verifyCompilerOptions`) are serialized separately under * `optionDiagnostics` so downstream consumers reading `diagnostics` for per-file reporting @@ -55,22 +48,9 @@ export function getDiagnosticPath(tsconfigPath: string): string { */ export function serializeDiagnostics( tsconfigPath: string, - diagnosticsMap: ReadonlyMap, + diagnostics: readonly nga.NgDiagnostic[], optionDiagnostics: readonly nga.NgDiagnostic[] = [], ): string { - const allDiagnostics: Array = []; - for (const [analyzedPath, diags] of diagnosticsMap) { - for (const diag of diags) { - if (!targetsDeclarationFile(diag, analyzedPath)) { - allDiagnostics.push(diag); - } - } - } - allDiagnostics.sort( - (a, b) => - (a.filePath ?? '').localeCompare(b.filePath ?? '') || - (a.span?.start ?? -1) - (b.span?.start ?? -1), - ); return ( JSON.stringify( { @@ -78,7 +58,7 @@ export function serializeDiagnostics( ...(optionDiagnostics.length > 0 ? {optionDiagnostics: optionDiagnostics.map(formatSerializedDiagnostic)} : {}), - diagnostics: allDiagnostics.map(formatSerializedDiagnostic), + diagnostics: diagnostics.map(formatSerializedDiagnostic), }, null, 2, @@ -95,13 +75,17 @@ export function serializeDiagnostics( * ngtsc's `createValueHasWrongTypeError(entry.node, ...)`. ngtsc keeps such diagnostics in * `NgCompiler.getDiagnostics()`, but a build that asks for the diagnostics of each source file * of the compilation unit (`getDiagnosticsForFile`) never sees them, and that is what the - * `.ngdiag.json` consumers do. `diagnosticsMap` keeps them so that `getDiagnostics()` - * consumers still can. + * `.ngdiag.json` consumers do. `diagnosticsMap` keeps them so that + * `getDiagnostics({includeDeclarationFiles: true})` consumers still can. */ function targetsDeclarationFile(diag: nga.NgDiagnostic, analyzedPath: string): boolean { return (diag.filePath ?? analyzedPath).endsWith('.d.ts'); } +function isAbsolutePosixOrWindowsPath(p: string): boolean { + return p.startsWith('/') || /^[a-zA-Z]:\//.test(p); +} + export interface IAnalyzer { analyze(): AsyncIterable; analyzeOptimized(): AsyncIterable; @@ -138,10 +122,8 @@ export interface IAnalyzer { } export interface HybridCompilerOptions { optimize?: boolean; - tsconfigPath?: string; tcbConfig?: NgpTypeCheckingConfig; optionDiagnostics?: nga.NgDiagnostic[]; - virtualFiles?: Record; templateParseOptions?: Partial; legacyOptionalChaining?: boolean; isClosureCompilerEnabled?: boolean; @@ -171,11 +153,18 @@ export interface HybridCompilerOptions { * enables `emitHmrUpdateModule`. The analyzer must run with `enableHmr` as well. */ enableHmr?: boolean; - /** Project root used to compute the relative `filePath` emitted in `ɵsetClassDebugInfo`. */ + /** + * Absolute project root used to compute the relative `filePath` emitted in `ɵsetClassDebugInfo` + * and HMR component IDs. + */ rootDir?: string; /** If true, runs in compliance mode (emits trailing setClassMetadata to match Angular compiler goldens). */ complianceMode?: boolean; workspaceName?: string; + /** + * Absolute root directories used to compute the shortest project-relative `filePath` for + * `ɵsetClassDebugInfo` and HMR component IDs. + */ rootDirs?: string[]; } @@ -184,10 +173,8 @@ export class HybridCompiler { /** Bound targets and TCBs per file, keyed by `AnalysisResult.filePath`. */ readonly fileCache = new Map(); readonly optimize: boolean; - readonly tsconfigPath?: string; readonly diagnosticsMap = new Map(); readonly optionDiagnostics: nga.NgDiagnostic[] = []; - readonly virtualFiles?: Record; tcbConfig: NgpTypeCheckingConfig; readonly templateParseOptions: Partial; readonly legacyOptionalChaining: boolean; @@ -210,8 +197,6 @@ export class HybridCompiler { constructor(analyzer: IAnalyzer, options: HybridCompilerOptions = {}) { this.optimize = options.optimize ?? true; - this.tsconfigPath = options.tsconfigPath; - this.virtualFiles = options.virtualFiles; this.templateParseOptions = { preserveWhitespaces: options.preserveWhitespaces ?? false, preserveSignificantWhitespace: options.i18nPreserveWhitespaceForLegacyExtraction ?? true, @@ -256,64 +241,61 @@ export class HybridCompiler { if (this.optionDiagnostics.length > 0) { this.tcbConfig = {...this.tcbConfig, disabledExtendedDiagnostics: true}; } - this.rootDir = options.rootDir; + if (options.rootDir !== undefined) { + const norm = options.rootDir.replace(/\\/g, '/'); + if (!isAbsolutePosixOrWindowsPath(norm)) { + throw new Error(`'${options.rootDir}' in 'rootDir' must be an absolute path`); + } + this.rootDir = norm; + } this.complianceMode = options.complianceMode ?? false; this.workspaceName = options.workspaceName; if (options.rootDirs) { - const baseDir = options.rootDir - ? options.rootDir.replace(/\\/g, '/') - : options.tsconfigPath - ? path.posix.dirname(options.tsconfigPath.replace(/\\/g, '/')) - : '/'; this.rootDirs = options.rootDirs.map((d) => { const norm = d.replace(/\\/g, '/'); - if (norm.startsWith('/') || /^[a-zA-Z]:/.test(norm)) { - return norm; + if (!isAbsolutePosixOrWindowsPath(norm)) { + throw new Error(`'${d}' in 'rootDirs' must be an absolute path`); } - return path.posix.join(baseDir, norm); + return norm; }); } else { this.rootDirs = undefined; } } - async writeDiagnosticsFile(): Promise { - if (!this.tsconfigPath) { - return; - } - const diagPath = getDiagnosticPath(this.tsconfigPath); - const content = serializeDiagnostics( - this.tsconfigPath, - this.diagnosticsMap, - this.optionDiagnostics, - ); - if (this.virtualFiles) { - this.virtualFiles[diagPath] = content; - } else { - await fs.writeFile(diagPath, content, 'utf-8'); - } - } - - writeDiagnosticsFileSync(): void { - if (!this.tsconfigPath) { - return; + /** + * Returns the collected per-file diagnostics. `diagnosticsMap` is keyed by completion order of + * the parallel analysis chunks, which varies from run to run (and across transports), so the + * result is sorted (file path, then span start) to keep consumers such as the `.ngdiag.json` + * deterministic; the sort is stable, so a file's diagnostics sharing a span keep their + * reporting order. + * + * Diagnostics anchored on `.d.ts` files are excluded unless `includeDeclarationFiles` is + * `true` (see `targetsDeclarationFile`). + * + * Compiler option diagnostics (`this.optionDiagnostics`) are kept separate so per-file + * diagnostic consumers do not mix option diagnostics into file diagnostics. + */ + getDiagnostics(options?: {includeDeclarationFiles?: boolean}): nga.NgDiagnostic[] { + const includeDeclarationFiles = options?.includeDeclarationFiles ?? false; + const allDiagnostics: Array = []; + for (const [analyzedPath, diags] of this.diagnosticsMap) { + for (const diag of diags) { + if (includeDeclarationFiles || !targetsDeclarationFile(diag, analyzedPath)) { + allDiagnostics.push(diag); + } + } } - const diagPath = getDiagnosticPath(this.tsconfigPath); - const content = serializeDiagnostics( - this.tsconfigPath, - this.diagnosticsMap, - this.optionDiagnostics, + allDiagnostics.sort( + (a, b) => + (a.filePath ?? '').localeCompare(b.filePath ?? '') || + (a.span?.start ?? -1) - (b.span?.start ?? -1), ); - if (this.virtualFiles) { - this.virtualFiles[diagPath] = content; - } else { - fsSync.writeFileSync(diagPath, content, 'utf-8'); - } + return allDiagnostics; } async prepareChunk(chunk: nga.CompilationChunk): Promise { this.recordChunkDiagnostics(chunk); - await this.writeDiagnosticsFile(); const metadataMap = chunkMetadataMap(chunk); const boundFiles = await Promise.all( @@ -327,7 +309,6 @@ export class HybridCompiler { prepareChunkSync(chunk: nga.CompilationChunk): ChunkContext { this.recordChunkDiagnostics(chunk); - this.writeDiagnosticsFileSync(); const metadataMap = chunkMetadataMap(chunk); const boundFiles = chunk.files.map((file) => ({ diff --git a/packages/compiler-cli/preprocessor/test/create_analyzer_without_tsconfig_spec.ts b/packages/compiler-cli/preprocessor/test/create_analyzer_without_tsconfig_spec.ts index 8aeea5d096c..fe23ee24f15 100644 --- a/packages/compiler-cli/preprocessor/test/create_analyzer_without_tsconfig_spec.ts +++ b/packages/compiler-cli/preprocessor/test/create_analyzer_without_tsconfig_spec.ts @@ -40,7 +40,6 @@ describe('createAnalyzer without a tsconfig', () => { const compiler = new HybridCompiler(analyzer, { optimize: false, - virtualFiles, rootDirs: ['/app'], }); const processed = await compiler.processFile(COMP_PATH, COMP_CONTENT); @@ -67,4 +66,45 @@ describe('createAnalyzer without a tsconfig', () => { }), ).toBeRejectedWithError(/must be an absolute path when no tsconfig is given/); }); + + it('collects diagnostics via HybridCompiler.getDiagnostics() without a tsconfig', async () => { + const nonStandaloneContent = `import {Component} from '@angular/core'; + +@Component({ + selector: 'my-comp', + standalone: false, + template: '
    Hello
    ', +}) +export class MyComp {} +`; + const analyzer = await createAnalyzer({ + backend: 'wasm', + wasmBinding: resolveWasmBinding(), + virtualFiles: {[COMP_PATH]: nonStandaloneContent}, + optimize: true, + entryPoints: [COMP_PATH], + strictStandalone: true, + defaultHost: { + rootDirs: ['/app'], + nodeModulesPathOverride: resolveFixtureNodeModules(), + }, + }); + + try { + const compiler = new HybridCompiler(analyzer, { + optimize: true, + rootDirs: ['/app'], + }); + for await (const chunk of compiler.analyzeOptimized()) { + const chunkContext = await compiler.prepareChunk(chunk); + for (const file of chunk.files) { + await compiler.processFile(file.filePath, nonStandaloneContent, file, chunkContext); + } + } + const diagnostics = compiler.getDiagnostics(); + expect(diagnostics.map((d) => d.code)).toContain(2023); + } finally { + analyzer.close(); + } + }); }); diff --git a/packages/compiler-cli/preprocessor/test/extended_diagnostics_spec.ts b/packages/compiler-cli/preprocessor/test/extended_diagnostics_spec.ts index 9fba39588f4..8ab2fa058d1 100644 --- a/packages/compiler-cli/preprocessor/test/extended_diagnostics_spec.ts +++ b/packages/compiler-cli/preprocessor/test/extended_diagnostics_spec.ts @@ -139,8 +139,6 @@ async function createIncrementalSession( const compiler = new HybridCompiler(analyzer, { optimize: true, - tsconfigPath: '/tsconfig.json', - virtualFiles: {}, tcbConfig: buildTypeCheckingConfig( buildTsconfig(initialFiles, currentOptions).angularCompilerOptions, ), @@ -161,7 +159,7 @@ async function createIncrementalSession( } } } - const diagContent = serializeDiagnostics('/tsconfig.json', compiler.diagnosticsMap); + const diagContent = serializeDiagnostics('/tsconfig.json', compiler.getDiagnostics()); return (JSON.parse(diagContent).diagnostics ?? []) as DiagEntry[]; } @@ -381,8 +379,9 @@ describe('extendedDiagnostics configuration validation', () => { }); try { expect(await session.compileCurrent()).toEqual([]); + expect(session.compiler.getDiagnostics()).toEqual([]); - const collected = [...session.compiler.diagnosticsMap.values()].flat(); + const collected = session.compiler.getDiagnostics({includeDeclarationFiles: true}); expect(collected.length).toBe(1); expect(collected[0].code).toBe(1010); expect(collected[0].filePath).toMatch(/\.d\.ts$/); diff --git a/packages/compiler-cli/preprocessor/test/ngp_spec.ts b/packages/compiler-cli/preprocessor/test/ngp_spec.ts index 8b995d897fa..915a3d8b02f 100644 --- a/packages/compiler-cli/preprocessor/test/ngp_spec.ts +++ b/packages/compiler-cli/preprocessor/test/ngp_spec.ts @@ -84,6 +84,16 @@ describe('ngp CLI (main.ts)', () => { const generatedSourcePath = path.join(outDir, 'test.ts'); expect(await pathExists(generatedSourcePath)).toBe(true); expect(await pathExists(`${generatedSourcePath}.map`)).toBe(true); + + // `run()` writes the diagnostics file next to the tsconfig, not under `--out`. + const diagPath = path.join(tempDir, 'tsconfig.ngdiag.json'); + expect(await pathExists(diagPath)).toBe(true); + const diag = JSON.parse(await fs.readFile(diagPath, 'utf-8')) as { + tsconfigPath: string; + diagnostics: unknown[]; + }; + expect(diag.tsconfigPath).toBe(tsconfigPath); + expect(diag.diagnostics).toEqual([]); } finally { await fs.rm(outDir, {recursive: true, force: true}); } diff --git a/packages/compiler-cli/preprocessor/test/project_relative_path_spec.ts b/packages/compiler-cli/preprocessor/test/project_relative_path_spec.ts index f882fb65692..b46c94efa11 100644 --- a/packages/compiler-cli/preprocessor/test/project_relative_path_spec.ts +++ b/packages/compiler-cli/preprocessor/test/project_relative_path_spec.ts @@ -41,8 +41,6 @@ export class MyComp {} }); const compiler = new HybridCompiler(analyzer, { optimize: false, - tsconfigPath: '/workspace/tsconfig.json', - virtualFiles, rootDirs: ['/workspace', '/workspace/bazel-out/k8-fastbuild/bin'], // Intentionally omit `rootDir`. }); @@ -83,8 +81,6 @@ export class MyComp {} }); const compiler = new HybridCompiler(analyzer, { optimize: false, - tsconfigPath: '/workspace/tsconfig.json', - virtualFiles, enableHmr: true, rootDir: '/workspace', rootDirs: ['/workspace', '/workspace/bazel-out/k8-fastbuild/bin'], @@ -104,11 +100,36 @@ export class MyComp {} expect(hmrUpdateModule!).not.toContain('bazel-out/k8-fastbuild/bin/pkg/my_comp.ts'); }); - it('resolves relative rootDirs against dirname(tsconfigPath) when rootDir is not provided', () => { + it('rejects relative rootDir and rootDirs', () => { + expect( + () => + new HybridCompiler({} as IAnalyzer, { + rootDirs: ['.', 'bazel-out/k8-fastbuild/bin'], + }), + ).toThrowError(/'\.' in 'rootDirs' must be an absolute path/); + + expect( + () => + new HybridCompiler({} as IAnalyzer, { + rootDir: 'relative/root', + }), + ).toThrowError(/'relative\/root' in 'rootDir' must be an absolute path/); + }); + + it('accepts Windows absolute rootDir and rootDirs and normalizes them to posix', () => { const compiler = new HybridCompiler({} as IAnalyzer, { - tsconfigPath: '/workspace/tsconfig.json', - rootDirs: ['.', 'bazel-out/k8-fastbuild/bin'], + rootDir: 'C:\\workspace', + rootDirs: ['C:\\workspace', 'D:/other/root'], }); - expect(compiler.rootDirs).toEqual(['/workspace', '/workspace/bazel-out/k8-fastbuild/bin']); + expect(compiler.rootDir).toBe('C:/workspace'); + expect(compiler.rootDirs).toEqual(['C:/workspace', 'D:/other/root']); + + // Drive-relative paths (`C:foo`) are not absolute. + expect( + () => + new HybridCompiler({} as IAnalyzer, { + rootDir: 'C:workspace', + }), + ).toThrowError(/'C:workspace' in 'rootDir' must be an absolute path/); }); }); diff --git a/packages/compiler-cli/preprocessor/test/utils.ts b/packages/compiler-cli/preprocessor/test/utils.ts index bede1ec34ea..20a1a36471a 100644 --- a/packages/compiler-cli/preprocessor/test/utils.ts +++ b/packages/compiler-cli/preprocessor/test/utils.ts @@ -413,7 +413,13 @@ export async function runPipeline( }; const workspaceName = tsconfigOptions.workspaceName; - const rootDirs = compilerOptions.rootDirs; + const rootDir = path.posix.dirname(tsconfigFile.path); + const rootDirs = (compilerOptions.rootDirs as string[] | undefined)?.map((d) => { + const norm = d.replace(/\\/g, '/'); + return norm.startsWith('/') || /^[a-zA-Z]:\//.test(norm) + ? norm + : path.posix.join(rootDir, norm); + }); const useHostForImportGeneration = tsconfigOptions._useHostForImportGeneration || tsconfigOptions._useHostForImportAndAliasGeneration @@ -474,8 +480,6 @@ export async function runPipeline( const compiler = new HybridCompiler(analyzer, { optimize: options.optimize, - tsconfigPath: tsconfigFile.path, - virtualFiles, tcbConfig, optionDiagnostics, templateParseOptions: { @@ -494,7 +498,7 @@ export async function runPipeline( externalRuntimeStyles: tsconfigOptions.externalRuntimeStyles ?? options.templateParseOptions?.['externalRuntimeStyles'], - rootDir: path.posix.dirname(tsconfigFile.path), + rootDir, complianceMode: options.complianceMode, workspaceName, rootDirs, @@ -565,7 +569,7 @@ export async function runPipeline( const diagPath = getDiagnosticPath(tsconfigFile.path); const diagContent = serializeDiagnostics( tsconfigFile.path, - compiler.diagnosticsMap, + compiler.getDiagnostics(), compiler.optionDiagnostics, ); const serializedDiagnostics = JSON.parse(diagContent) as { diff --git a/packages/compiler-cli/src/ngtsc/testing/src/ngp_test_driver.ts b/packages/compiler-cli/src/ngtsc/testing/src/ngp_test_driver.ts index ca79d05acd2..4164fd2786b 100644 --- a/packages/compiler-cli/src/ngtsc/testing/src/ngp_test_driver.ts +++ b/packages/compiler-cli/src/ngtsc/testing/src/ngp_test_driver.ts @@ -371,8 +371,6 @@ export function performNgpCompilationSync(params: { try { compiler = new HybridCompiler(analyzer, { optimize, - tsconfigPath: posixTsconfigPath, - virtualFiles, tcbConfig, optionDiagnostics, templateParseOptions: { @@ -1357,8 +1355,6 @@ export function createNgpBoundTemplate( try { const compiler = new HybridCompiler(analyzer, { optimize: true, - tsconfigPath: posixTsconfigPath, - virtualFiles, templateParseOptions: options, }); for (const chunk of compiler.analyzeOptimizedSync()) { From 6ac3065b6954a4985f0f8712e87c9c4508549c5c Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Tue, 27 Oct 2026 06:39:18 +0100 Subject: [PATCH 5/6] refactor(compiler-cli): unconditionally use namespace imports for imported constructor tokens in ngp Align ngp with ngtsc by unconditionally emitting imported constructor DI tokens and class metadata through module namespace imports (e.g. i1.Service) instead of only doing so for @angular/core or in complianceMode. This removes the divergence and eliminates the need to pass complianceMode to buildDeps or useCoreNamespace/complianceMode to buildCtorParametersExpr. --- .../preprocessor/src/compiler-utils.ts | 6 +-- .../preprocessor/src/processor.ts | 27 +++------- .../ctor_param_type_only_reexport/golden.md | 54 ++++++++++--------- .../golden.opt.md | 54 ++++++++++--------- .../explicit_extension_imports/golden.md | 10 ++-- .../injectable_type_only_deps/golden.md | 25 +++++---- .../golden/injectable_with_deps/golden.md | 6 ++- .../golden.md | 6 ++- .../golden.opt.md | 6 ++- .../wildcard_export_private_shadow/golden.md | 10 ++-- .../golden.opt.md | 10 ++-- 11 files changed, 116 insertions(+), 98 deletions(-) diff --git a/packages/compiler-cli/preprocessor/src/compiler-utils.ts b/packages/compiler-cli/preprocessor/src/compiler-utils.ts index 1335ee02fae..ebd564e2c92 100644 --- a/packages/compiler-cli/preprocessor/src/compiler-utils.ts +++ b/packages/compiler-cli/preprocessor/src/compiler-utils.ts @@ -397,7 +397,6 @@ export function buildDeps( usesInheritance: boolean, o: typeof outputAst, s: MagicString, - complianceMode: boolean = false, ): | Array<{ token: outputAst.Expression; @@ -430,11 +429,10 @@ export function buildDeps( // ngtsc's valueReferenceToExpression() emits a named-import type reference as an // `ExternalExpr` (kind IMPORTED), which the import manager prints through the module's // namespace import — e.g. `i0.ElementRef` for a token imported from `@angular/core`. - // We scope this to `@angular/core` by default (and all imported tokens in compliance mode); - // other named imports keep their bare local name in `.ng.ts` goldens. // https://github.com/angular/angular/blob/83622ee/packages/compiler-cli/src/ngtsc/annotations/common/src/util.ts#L71-L82 + // TODO: Re-evaluate whether using namespace imports here is desirable, matching ngtsc behavior for now. token = - param.typeModule != null && (param.typeModule === '@angular/core' || complianceMode) + param.typeModule != null ? o.importExpr(new o.ExternalReference(param.typeModule, typeName)) : o.variable(typeName); } else { diff --git a/packages/compiler-cli/preprocessor/src/processor.ts b/packages/compiler-cli/preprocessor/src/processor.ts index 8a76b45d95d..17f229aff03 100644 --- a/packages/compiler-cli/preprocessor/src/processor.ts +++ b/packages/compiler-cli/preprocessor/src/processor.ts @@ -13,7 +13,6 @@ import { FactoryTarget, OutOfBandDiagnosticCategory, ParseTemplateOptions, - ParsedTemplate, R3ClassDebugInfo, R3ClassMetadataCtorParameter, R3CompiledExpression, @@ -51,6 +50,7 @@ import { import MagicString, {type SourceMap} from 'magic-string'; import * as fsSync from 'node:fs'; import * as path from 'path'; +import {hasAnimations} from './animations.js'; import { buildDeps, buildHostDirectives, @@ -79,7 +79,6 @@ import { ParsedComponentTemplate, getOrCreateFileAnalysis, } from './file_analysis.js'; -import {hasAnimations} from './animations.js'; import {analyzeForeignComponentFeatures} from './foreign_component.js'; import {extractHmrMetadata, getHmrUpdateDeclaration} from './hmr.js'; import type {IAnalyzer} from './hybrid_compiler.js'; @@ -545,13 +544,7 @@ export function processFileSync( // Build deps from constructor params // Use empty array for no-arg constructors (null means "inherit from parent") - const deps = buildDeps( - constructorParams, - classMeta.usesInheritance, - o, - s, - ctx.complianceMode ?? false, - ); + const deps = buildDeps(constructorParams, classMeta.usesInheritance, o, s); // Avoid duplicate `ɵfac` generation when a class carries multiple decorators (e.g. `@Component` + `@Injectable`). // https://github.com/angular/angular/blob/d27e2c2/packages/compiler-cli/src/ngtsc/transform/src/compilation.ts#L710-L718 @@ -2254,15 +2247,15 @@ function buildCtorParametersExpr( constructorParams: nga.ConstructorParamMetadata[] | undefined, s: MagicString, options?: { - useCoreNamespace?: boolean; - complianceMode?: boolean; + omitEmptyDecorators?: boolean; + useNamespaceImports?: boolean; }, ): R3ClassMetadataCtorParameter[] | null { if (constructorParams == null) { return null; } - const useCoreNamespace = options?.useCoreNamespace ?? false; - const complianceMode = options?.complianceMode ?? false; + const omitEmptyDecorators = options?.omitEmptyDecorators ?? false; + const useNamespaceImports = options?.useNamespaceImports ?? false; return constructorParams.map((param) => { const typeName = param.isTypeOnly ? undefined : param.typeName; let decorators: o.Expression | null = null; @@ -2272,10 +2265,7 @@ function buildCtorParametersExpr( .map((d) => buildDecoratorMetadataExpr(d.name, d.argsSpan, d.argsString, s, [])); decorators = o.literalArr(ngDecorators); } - const useNamespaceImport = - typeName != null && - param.typeModule != null && - ((useCoreNamespace && param.typeModule === '@angular/core') || complianceMode); + const useNamespaceImport = useNamespaceImports && typeName != null && param.typeModule != null; return { type: typeName == null @@ -2603,8 +2593,7 @@ function buildSetClassMetadata( type: o.variable(className), decorators: o.literalArr(decoratorObjs), ctorParameters: buildCtorParametersExpr(classMeta.constructorParams, s, { - useCoreNamespace: true, - complianceMode, + useNamespaceImports: true, }), propDecorators: buildPropDecoratorsExpr(classMeta, s, className, guards), }; diff --git a/packages/compiler-cli/preprocessor/test/golden/ctor_param_type_only_reexport/golden.md b/packages/compiler-cli/preprocessor/test/golden/ctor_param_type_only_reexport/golden.md index 6607d500b81..994b63c20df 100644 --- a/packages/compiler-cli/preprocessor/test/golden/ctor_param_type_only_reexport/golden.md +++ b/packages/compiler-cli/preprocessor/test/golden/ctor_param_type_only_reexport/golden.md @@ -16,6 +16,12 @@ import { ForwardedAsType, ForwardedDirect } from './forward'; import { PkgAsType, PkgValue } from 'pkg'; // @ts-ignore import * as i0 from '@angular/core'; +// @ts-ignore +import * as i1 from './barrel'; +// @ts-ignore +import * as i2 from './forward'; +// @ts-ignore +import * as i3 from 'pkg'; export class BarrelService { constructor( @@ -40,20 +46,20 @@ export class BarrelService { ): any { /* @ts-ignore */ return new (__ngFactoryType__ || BarrelService)( - i0.ɵɵinject(ImportedAsType), - i0.ɵɵinject(Direct), - i0.ɵɵinject(ExportedAsType), - i0.ɵɵinject(Renamed), - i0.ɵɵinject(InlineExportedAsType), - i0.ɵɵinject(ReexportedAsType), - i0.ɵɵinject(DeclaredAsType), - i0.ɵɵinject(RenamedType), - i0.ɵɵinject(ForwardedAsType), - i0.ɵɵinject(ForwardedDirect), + i0.ɵɵinject(i1.ImportedAsType), + i0.ɵɵinject(i1.Direct), + i0.ɵɵinject(i1.ExportedAsType), + i0.ɵɵinject(i1.Renamed), + i0.ɵɵinject(i1.InlineExportedAsType), + i0.ɵɵinject(i1.ReexportedAsType), + i0.ɵɵinject(i1.DeclaredAsType), + i0.ɵɵinject(i1.RenamedType), + i0.ɵɵinject(i2.ForwardedAsType), + i0.ɵɵinject(i2.ForwardedDirect), i0.ɵɵinject(barrel.ExportedAsType), i0.ɵɵinject(barrel.Direct), - i0.ɵɵinject(PkgAsType), - i0.ɵɵinject(PkgValue), + i0.ɵɵinject(i3.PkgAsType), + i0.ɵɵinject(i3.PkgValue), ); }; // @ts-ignore @@ -72,43 +78,43 @@ export class BarrelService { (): any => [ { /* @ts-ignore */ - type: ImportedAsType, + type: i1.ImportedAsType, }, { /* @ts-ignore */ - type: Direct, + type: i1.Direct, }, { /* @ts-ignore */ - type: ExportedAsType, + type: i1.ExportedAsType, }, { /* @ts-ignore */ - type: Renamed, + type: i1.Renamed, }, { /* @ts-ignore */ - type: InlineExportedAsType, + type: i1.InlineExportedAsType, }, { /* @ts-ignore */ - type: ReexportedAsType, + type: i1.ReexportedAsType, }, { /* @ts-ignore */ - type: DeclaredAsType, + type: i1.DeclaredAsType, }, { /* @ts-ignore */ - type: RenamedType, + type: i1.RenamedType, }, { /* @ts-ignore */ - type: ForwardedAsType, + type: i2.ForwardedAsType, }, { /* @ts-ignore */ - type: ForwardedDirect, + type: i2.ForwardedDirect, }, { /* @ts-ignore */ @@ -120,11 +126,11 @@ export class BarrelService { }, { /* @ts-ignore */ - type: PkgAsType, + type: i3.PkgAsType, }, { /* @ts-ignore */ - type: PkgValue, + type: i3.PkgValue, }, ], null, diff --git a/packages/compiler-cli/preprocessor/test/golden/ctor_param_type_only_reexport/golden.opt.md b/packages/compiler-cli/preprocessor/test/golden/ctor_param_type_only_reexport/golden.opt.md index 37ed33711c3..7e58409ab5c 100644 --- a/packages/compiler-cli/preprocessor/test/golden/ctor_param_type_only_reexport/golden.opt.md +++ b/packages/compiler-cli/preprocessor/test/golden/ctor_param_type_only_reexport/golden.opt.md @@ -16,6 +16,12 @@ import { ForwardedAsType, ForwardedDirect } from './forward'; import { PkgAsType, PkgValue } from 'pkg'; // @ts-ignore import * as i0 from '@angular/core'; +// @ts-ignore +import * as i1 from './barrel'; +// @ts-ignore +import * as i2 from './forward'; +// @ts-ignore +import * as i3 from 'pkg'; export class BarrelService { constructor( @@ -40,20 +46,20 @@ export class BarrelService { ): any { /* @ts-ignore */ return new (__ngFactoryType__ || BarrelService)( - i0.ɵɵinject(ImportedAsType), - i0.ɵɵinject(Direct), - i0.ɵɵinject(ExportedAsType), - i0.ɵɵinject(Renamed), - i0.ɵɵinject(InlineExportedAsType), - i0.ɵɵinject(ReexportedAsType), - i0.ɵɵinject(DeclaredAsType), - i0.ɵɵinject(RenamedType), - i0.ɵɵinject(ForwardedAsType), - i0.ɵɵinject(ForwardedDirect), + i0.ɵɵinject(i1.ImportedAsType), + i0.ɵɵinject(i1.Direct), + i0.ɵɵinject(i1.ExportedAsType), + i0.ɵɵinject(i1.Renamed), + i0.ɵɵinject(i1.InlineExportedAsType), + i0.ɵɵinject(i1.ReexportedAsType), + i0.ɵɵinject(i1.DeclaredAsType), + i0.ɵɵinject(i1.RenamedType), + i0.ɵɵinject(i2.ForwardedAsType), + i0.ɵɵinject(i2.ForwardedDirect), i0.ɵɵinject(barrel.ExportedAsType), i0.ɵɵinject(barrel.Direct), - i0.ɵɵinject(PkgAsType), - i0.ɵɵinject(PkgValue), + i0.ɵɵinject(i3.PkgAsType), + i0.ɵɵinject(i3.PkgValue), ); }; // @ts-ignore @@ -72,35 +78,35 @@ export class BarrelService { (): any => [ { /* @ts-ignore */ - type: ImportedAsType, + type: i1.ImportedAsType, }, - { type: Direct }, + { type: i1.Direct }, { /* @ts-ignore */ - type: ExportedAsType, + type: i1.ExportedAsType, }, - { type: Renamed }, + { type: i1.Renamed }, { /* @ts-ignore */ - type: InlineExportedAsType, + type: i1.InlineExportedAsType, }, { /* @ts-ignore */ - type: ReexportedAsType, + type: i1.ReexportedAsType, }, { /* @ts-ignore */ - type: DeclaredAsType, + type: i1.DeclaredAsType, }, { /* @ts-ignore */ - type: RenamedType, + type: i1.RenamedType, }, { /* @ts-ignore */ - type: ForwardedAsType, + type: i2.ForwardedAsType, }, - { type: ForwardedDirect }, + { type: i2.ForwardedDirect }, { /* @ts-ignore */ type: barrel.ExportedAsType, @@ -108,9 +114,9 @@ export class BarrelService { { type: barrel.Direct }, { /* @ts-ignore */ - type: PkgAsType, + type: i3.PkgAsType, }, - { type: PkgValue }, + { type: i3.PkgValue }, ], null, ); diff --git a/packages/compiler-cli/preprocessor/test/golden/explicit_extension_imports/golden.md b/packages/compiler-cli/preprocessor/test/golden/explicit_extension_imports/golden.md index 7d516e24984..e27103becc1 100644 --- a/packages/compiler-cli/preprocessor/test/golden/explicit_extension_imports/golden.md +++ b/packages/compiler-cli/preprocessor/test/golden/explicit_extension_imports/golden.md @@ -4,6 +4,8 @@ import { Component, Injectable } from '@angular/core'; import { MyService } from './types.ts'; // Explicit extension // @ts-ignore import * as i0 from '@angular/core'; +// @ts-ignore +import * as i1 from './types.ts'; export class TestService { constructor(private myService: MyService) {} @@ -12,7 +14,7 @@ export class TestService { __ngFactoryType__: any, ): any { /* @ts-ignore */ - return new (__ngFactoryType__ || TestService)(i0.ɵɵinject(MyService)); + return new (__ngFactoryType__ || TestService)(i0.ɵɵinject(i1.MyService)); }; // @ts-ignore static ɵprov: i0.ɵɵInjectableDeclaration = @@ -26,7 +28,7 @@ export class TestService { (): any => [ { /* @ts-ignore */ - type: MyService, + type: i1.MyService, }, ], null, @@ -41,7 +43,7 @@ export class TestComponent { __ngFactoryType__: any, ): any { /* @ts-ignore */ - return new (__ngFactoryType__ || TestComponent)(i0.ɵɵdirectiveInject(MyService)); + return new (__ngFactoryType__ || TestComponent)(i0.ɵɵdirectiveInject(i1.MyService)); }; // @ts-ignore static ɵcmp: i0.ɵɵComponentDeclaration< @@ -86,7 +88,7 @@ export class TestComponent { (): any => [ { /* @ts-ignore */ - type: MyService, + type: i1.MyService, }, ], null, diff --git a/packages/compiler-cli/preprocessor/test/golden/injectable_type_only_deps/golden.md b/packages/compiler-cli/preprocessor/test/golden/injectable_type_only_deps/golden.md index 4ba20a45ef2..961c5644eb3 100644 --- a/packages/compiler-cli/preprocessor/test/golden/injectable_type_only_deps/golden.md +++ b/packages/compiler-cli/preprocessor/test/golden/injectable_type_only_deps/golden.md @@ -4,6 +4,8 @@ import { Component } from '@angular/core'; import { MyType } from './types'; // @ts-ignore import * as i0 from '@angular/core'; +// @ts-ignore +import * as i1 from './types'; export class AppComponent { constructor(private myType: MyType) {} @@ -12,7 +14,7 @@ export class AppComponent { __ngFactoryType__: any, ): any { /* @ts-ignore */ - return new (__ngFactoryType__ || AppComponent)(i0.ɵɵdirectiveInject(MyType)); + return new (__ngFactoryType__ || AppComponent)(i0.ɵɵdirectiveInject(i1.MyType)); }; // @ts-ignore static ɵcmp: i0.ɵɵComponentDeclaration< @@ -59,7 +61,7 @@ export class AppComponent { (): any => [ { /* @ts-ignore */ - type: MyType, + type: i1.MyType, }, ], null, @@ -83,6 +85,8 @@ import { Injectable, Inject } from '@angular/core'; import { LoggerConfig, LogFormat, Logger } from './config'; // @ts-ignore import * as i0 from '@angular/core'; +// @ts-ignore +import * as i1 from './config'; // Local interface — type-only, no runtime value interface LocalConfig { @@ -98,7 +102,7 @@ export class InvalidDepsService { static ɵfac: i0.ɵɵFactoryDeclaration = function InvalidDepsService_Factory(__ngFactoryType__: any): any { /* @ts-ignore */ - return new (__ngFactoryType__ || InvalidDepsService)(i0.ɵɵinject(LoggerConfig)); + return new (__ngFactoryType__ || InvalidDepsService)(i0.ɵɵinject(i1.LoggerConfig)); }; // @ts-ignore static ɵprov: i0.ɵɵInjectableDeclaration = @@ -116,7 +120,7 @@ export class InvalidDepsService { (): any => [ { /* @ts-ignore */ - type: LoggerConfig, + type: i1.LoggerConfig, }, ], null, @@ -160,7 +164,7 @@ export class ValidDepsService { __ngFactoryType__: any, ): any { /* @ts-ignore */ - return new (__ngFactoryType__ || ValidDepsService)(i0.ɵɵinject(Logger)); + return new (__ngFactoryType__ || ValidDepsService)(i0.ɵɵinject(i1.Logger)); }; // @ts-ignore static ɵprov: i0.ɵɵInjectableDeclaration = @@ -178,7 +182,7 @@ export class ValidDepsService { (): any => [ { /* @ts-ignore */ - type: Logger, + type: i1.Logger, }, ], null, @@ -224,7 +228,10 @@ export class MixedDepsService { __ngFactoryType__: any, ): any { /* @ts-ignore */ - return new (__ngFactoryType__ || MixedDepsService)(i0.ɵɵinject(Logger), i0.ɵɵinject(LogFormat)); + return new (__ngFactoryType__ || MixedDepsService)( + i0.ɵɵinject(i1.Logger), + i0.ɵɵinject(i1.LogFormat), + ); }; // @ts-ignore static ɵprov: i0.ɵɵInjectableDeclaration = @@ -242,11 +249,11 @@ export class MixedDepsService { (): any => [ { /* @ts-ignore */ - type: Logger, + type: i1.Logger, }, { /* @ts-ignore */ - type: LogFormat, + type: i1.LogFormat, }, ], null, diff --git a/packages/compiler-cli/preprocessor/test/golden/injectable_with_deps/golden.md b/packages/compiler-cli/preprocessor/test/golden/injectable_with_deps/golden.md index 840204ad977..3e974d649dc 100644 --- a/packages/compiler-cli/preprocessor/test/golden/injectable_with_deps/golden.md +++ b/packages/compiler-cli/preprocessor/test/golden/injectable_with_deps/golden.md @@ -69,6 +69,8 @@ import { Injectable } from '@angular/core'; import { LoggerService } from './logger.service'; // @ts-ignore import * as i0 from '@angular/core'; +// @ts-ignore +import * as i1 from './logger.service'; export class DataService { constructor(private logger: LoggerService) {} @@ -77,7 +79,7 @@ export class DataService { __ngFactoryType__: any, ): any { /* @ts-ignore */ - return new (__ngFactoryType__ || DataService)(i0.ɵɵinject(LoggerService)); + return new (__ngFactoryType__ || DataService)(i0.ɵɵinject(i1.LoggerService)); }; // @ts-ignore static ɵprov: i0.ɵɵInjectableDeclaration = @@ -95,7 +97,7 @@ export class DataService { (): any => [ { /* @ts-ignore */ - type: LoggerService, + type: i1.LoggerService, }, ], null, diff --git a/packages/compiler-cli/preprocessor/test/golden/repro_actions_subject_no_provider/golden.md b/packages/compiler-cli/preprocessor/test/golden/repro_actions_subject_no_provider/golden.md index 990bb12f5fe..d9c481bf42b 100644 --- a/packages/compiler-cli/preprocessor/test/golden/repro_actions_subject_no_provider/golden.md +++ b/packages/compiler-cli/preprocessor/test/golden/repro_actions_subject_no_provider/golden.md @@ -4,6 +4,8 @@ import { Component } from '@angular/core'; import { ActionsSubject } from '@ngrx/store'; // @ts-ignore import * as i0 from '@angular/core'; +// @ts-ignore +import * as i1 from '@ngrx/store'; export class AppComponent { constructor(private actions$: ActionsSubject) {} @@ -12,7 +14,7 @@ export class AppComponent { __ngFactoryType__: any, ): any { /* @ts-ignore */ - return new (__ngFactoryType__ || AppComponent)(i0.ɵɵdirectiveInject(ActionsSubject)); + return new (__ngFactoryType__ || AppComponent)(i0.ɵɵdirectiveInject(i1.ActionsSubject)); }; // @ts-ignore static ɵcmp: i0.ɵɵComponentDeclaration< @@ -62,7 +64,7 @@ export class AppComponent { (): any => [ { /* @ts-ignore */ - type: ActionsSubject, + type: i1.ActionsSubject, }, ], null, diff --git a/packages/compiler-cli/preprocessor/test/golden/repro_actions_subject_no_provider/golden.opt.md b/packages/compiler-cli/preprocessor/test/golden/repro_actions_subject_no_provider/golden.opt.md index de051998e71..3d7ed93de9e 100644 --- a/packages/compiler-cli/preprocessor/test/golden/repro_actions_subject_no_provider/golden.opt.md +++ b/packages/compiler-cli/preprocessor/test/golden/repro_actions_subject_no_provider/golden.opt.md @@ -21,6 +21,8 @@ import { Component } from '@angular/core'; import { ActionsSubject } from '@ngrx/store'; // @ts-ignore import * as i0 from '@angular/core'; +// @ts-ignore +import * as i1 from '@ngrx/store'; export class AppComponent { constructor(private actions$: ActionsSubject) {} @@ -29,7 +31,7 @@ export class AppComponent { __ngFactoryType__: any, ): any { /* @ts-ignore */ - return new (__ngFactoryType__ || AppComponent)(i0.ɵɵdirectiveInject(ActionsSubject)); + return new (__ngFactoryType__ || AppComponent)(i0.ɵɵdirectiveInject(i1.ActionsSubject)); }; // @ts-ignore static ɵcmp: i0.ɵɵComponentDeclaration< @@ -75,7 +77,7 @@ export class AppComponent { ], }, ], - (): any => [{ type: ActionsSubject }], + (): any => [{ type: i1.ActionsSubject }], null, ); } diff --git a/packages/compiler-cli/preprocessor/test/golden/wildcard_export_private_shadow/golden.md b/packages/compiler-cli/preprocessor/test/golden/wildcard_export_private_shadow/golden.md index aa9c13ed31d..59fd24336bb 100644 --- a/packages/compiler-cli/preprocessor/test/golden/wildcard_export_private_shadow/golden.md +++ b/packages/compiler-cli/preprocessor/test/golden/wildcard_export_private_shadow/golden.md @@ -4,6 +4,8 @@ import { Directive, Optional, Self } from '@angular/core'; import { MatFormFieldControl, ShadowedByPrivateImport } from './public-api'; // @ts-ignore import * as i0 from '@angular/core'; +// @ts-ignore +import * as i1 from './public-api'; export class FooDirective { constructor( @@ -15,8 +17,8 @@ export class FooDirective { function FooDirective_Factory(__ngFactoryType__: any): any { /* @ts-ignore */ return new (__ngFactoryType__ || FooDirective)( - i0.ɵɵdirectiveInject(MatFormFieldControl, 10), - i0.ɵɵdirectiveInject(ShadowedByPrivateImport), + i0.ɵɵdirectiveInject(i1.MatFormFieldControl, 10), + i0.ɵɵdirectiveInject(i1.ShadowedByPrivateImport), ); }; // @ts-ignore @@ -41,12 +43,12 @@ export class FooDirective { (): any => [ { /* @ts-ignore */ - type: MatFormFieldControl, + type: i1.MatFormFieldControl, decorators: [{ type: Optional }, { type: Self }], }, { /* @ts-ignore */ - type: ShadowedByPrivateImport, + type: i1.ShadowedByPrivateImport, }, ], null, diff --git a/packages/compiler-cli/preprocessor/test/golden/wildcard_export_private_shadow/golden.opt.md b/packages/compiler-cli/preprocessor/test/golden/wildcard_export_private_shadow/golden.opt.md index 9623a97bcf7..9aa3af188e9 100644 --- a/packages/compiler-cli/preprocessor/test/golden/wildcard_export_private_shadow/golden.opt.md +++ b/packages/compiler-cli/preprocessor/test/golden/wildcard_export_private_shadow/golden.opt.md @@ -4,6 +4,8 @@ import { Directive, Optional, Self } from '@angular/core'; import { MatFormFieldControl, ShadowedByPrivateImport } from './public-api'; // @ts-ignore import * as i0 from '@angular/core'; +// @ts-ignore +import * as i1 from './public-api'; export class FooDirective { constructor( @@ -15,8 +17,8 @@ export class FooDirective { function FooDirective_Factory(__ngFactoryType__: any): any { /* @ts-ignore */ return new (__ngFactoryType__ || FooDirective)( - i0.ɵɵdirectiveInject(MatFormFieldControl, 10), - i0.ɵɵdirectiveInject(ShadowedByPrivateImport), + i0.ɵɵdirectiveInject(i1.MatFormFieldControl, 10), + i0.ɵɵdirectiveInject(i1.ShadowedByPrivateImport), ); }; // @ts-ignore @@ -39,8 +41,8 @@ export class FooDirective { FooDirective, [{ type: Directive, args: [{ selector: '[foo]' }] }], (): any => [ - { type: MatFormFieldControl, decorators: [{ type: Optional }, { type: Self }] }, - { type: ShadowedByPrivateImport }, + { type: i1.MatFormFieldControl, decorators: [{ type: Optional }, { type: Self }] }, + { type: i1.ShadowedByPrivateImport }, ], null, ); From b81b37d58b966882c6cea7cf1f76e990bb2059e9 Mon Sep 17 00:00:00 2001 From: Matt Berry Date: Tue, 27 Oct 2026 17:01:03 -0700 Subject: [PATCH 6/6] Revert "build: update rust dependencies" This reverts commit 3d5bfdf16776e933ffa333a102513f18259cf7eb. Also reverts follow-up commit 4690b54bec4dc92395d600e9cada3d4334d3a5b3 (#71651). The Oxc 0.144 -> 0.155 update in `ng-analyze` (#71599) requires a separate dependency update in google3. Reverting to unblock google3 sync. --- Cargo.lock | 87 ++++--- MODULE.bazel.lock | 214 ++++++++++-------- .../preprocessor/ng-analyze/BUILD.bazel | 2 - .../preprocessor/ng-analyze/Cargo.toml | 17 +- .../src/analyzer/closure_nocollapse.rs | 6 +- .../ng-analyze/src/analyzer/component.rs | 5 +- .../ng-analyze/src/analyzer/dts.rs | 22 +- .../ng-analyze/src/analyzer/imports.rs | 14 +- .../ng-analyze/src/analyzer/mod.rs | 4 +- .../src/analyzer/signal_debug_name.rs | 8 +- .../ng-analyze/src/analyzer/utils/mod.rs | 72 ++---- .../ng-analyze/src/analyzer/utils/tests.rs | 20 -- .../ng-analyze/src/evaluator/interpreter.rs | 19 +- .../ng-analyze/src/query/engine.rs | 6 +- 14 files changed, 236 insertions(+), 260 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2a6393b86e8..1988b1ebaba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -586,7 +586,6 @@ dependencies = [ "oxc_resolver", "oxc_semantic", "oxc_span", - "oxc_str", "oxc_syntax", "pathdiff", "regex", @@ -649,6 +648,26 @@ version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" +[[package]] +name = "owo-colors" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c45bb4a6ae1280ec0803b1ef9d3455eb50f01efbbe1447ab020f1d54fba9d8" + +[[package]] +name = "oxc-miette" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330e07b3807046e0afa8fcc94f1fe976e93831b370d148bfe1168cb53da1b913" +dependencies = [ + "bytecount", + "memchr", + "owo-colors", + "textwrap", + "unicode-segmentation", + "unicode-width", +] + [[package]] name = "oxc-miette-derive" version = "3.0.1" @@ -662,9 +681,9 @@ dependencies = [ [[package]] name = "oxc_allocator" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c8f46c8923b4afb4dd588d4684d5dd32332f1341225c066cc6af31094e7e3d" +checksum = "9262c7bbd58c8c32c2c60d1a7b6c274cd2aeaff1b726a2fb86081b75084698cb" dependencies = [ "allocator-api2", "hashbrown 0.17.1", @@ -676,9 +695,9 @@ dependencies = [ [[package]] name = "oxc_ast" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35465751cfc99739fee42d8345b57d5b5087b462bea7bc5bb17d1f248e1efa22" +checksum = "e8134809b665d524d9a0ddeee87a5d3602776aa2410a10a0439fd25eeb594a5d" dependencies = [ "bitflags", "oxc_allocator", @@ -694,9 +713,9 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78e5d50ecf9fbf6c00afb29dbd670784b2ac407fd676f625d1f3515a1a2d577" +checksum = "ac120c6863a9d036c78a42a5e4d2f58bb27c5df795d61d904f6e19e48c681a37" dependencies = [ "phf", "proc-macro2", @@ -706,9 +725,9 @@ dependencies = [ [[package]] name = "oxc_ast_visit" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6836d2fde033c44eae57ab1be3fcc7bd6a57465783bdfce654ca28064a334dbe" +checksum = "4a57626cd6ef87f5173110a301868e3c438fd8e0576f489d9a61540ef133f686" dependencies = [ "oxc_allocator", "oxc_ast", @@ -718,33 +737,28 @@ dependencies = [ [[package]] name = "oxc_data_structures" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a46b759a8cb13a1111649370f1d769322b082edabd625466254f238818bdc9e9" +checksum = "2a71efea56db93d3ce9e88e1d9f74f6d50fc2b06092444cdd08579f5827fd8db" [[package]] name = "oxc_diagnostics" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b80f4b05a80879518ebe85a8df9368758ebc1e176327b659e1e97389f8561c7" +checksum = "e5ff8638533094ecdcd38a63930c003c261d81650e4531c3bc805c797aec2a52" dependencies = [ - "bytecount", "cow-utils", - "itoa", "memchr", - "oxc_span", + "oxc-miette", "percent-encoding", "smallvec", - "textwrap", - "unicode-segmentation", - "unicode-width", ] [[package]] name = "oxc_ecmascript" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c634665e0be5dde95549146734ab4939b8d1b5d2e7cc006d38b9f5d17a58a2" +checksum = "77c7a326f49f06da37affdcad2fb3ebab46ac4ada8953a428f7cbd04e5cc9e6e" dependencies = [ "dragonbox_ecma", "itoa", @@ -753,15 +767,14 @@ dependencies = [ "oxc_ast", "oxc_data_structures", "oxc_span", - "oxc_str", "oxc_syntax", ] [[package]] name = "oxc_estree" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dcdd8235762cc9305d619842b73c1e89a0ebec8ccf2f27142ef597521443c1f" +checksum = "8275fcb9674a1c320f0bdbc2f534ba9bb09fcb8b1c9fe306c9595d262a06bfcb" dependencies = [ "dragonbox_ecma", "itoa", @@ -780,9 +793,9 @@ dependencies = [ [[package]] name = "oxc_parser" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "635c4e1bb876a9d4ee0e338fa68547a1d75add58637e5c3921fb81ae10a60439" +checksum = "d13016de81370106ea4065cfabe4a278dc09e82523cfe22bb6a8ab8e993b4c3a" dependencies = [ "bitflags", "cow-utils", @@ -804,9 +817,9 @@ dependencies = [ [[package]] name = "oxc_regular_expression" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae3f2c42773d16336a75d5c61dae45a34aea399f0b5399a7a25c8509d79662f" +checksum = "c375b89d88ec03301b0e62528715699551871861197aa39148e95a1422e1ae9b" dependencies = [ "bitflags", "oxc_allocator", @@ -848,9 +861,9 @@ dependencies = [ [[package]] name = "oxc_semantic" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b24ee2095e2ddac60c2063b59693bbf2b80936c8a9e036463b153a203857831b" +checksum = "0d8d80604c4220c8f5b1c19682216921397fb45a616db47d3a044474662f0c2e" dependencies = [ "itertools", "memchr", @@ -871,11 +884,12 @@ dependencies = [ [[package]] name = "oxc_span" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cb5bee6f7a9829ddc4d8c05102fe1aa7e2ca31c7ff0bcfbb7069ca977334840" +checksum = "abd732008dbfb09984106925f7ff7268687c8020b89bd7ee0f0b695c5bb07950" dependencies = [ "compact_str", + "oxc-miette", "oxc_allocator", "oxc_ast_macros", "oxc_estree", @@ -885,13 +899,12 @@ dependencies = [ [[package]] name = "oxc_str" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c04d966af690d3b780ee4c47436174e558750eed6ca40b07d695fa4910ad8e33" +checksum = "e1d2ccb0f5aa4da9fc98ef70f59553c2779e28e064a8b271fcb1e88c11a63607" dependencies = [ "compact_str", "hashbrown 0.17.1", - "memchr", "oxc_allocator", "oxc_estree", "serde", @@ -899,9 +912,9 @@ dependencies = [ [[package]] name = "oxc_syntax" -version = "0.155.0" +version = "0.144.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684d5f6db25b6e3d026582b3926166c80eeda9aac8a879782292c6a33b7d13a0" +checksum = "15ff0e987ab15a71dae36fd544b9859513e76639e2cc6c5e25895081162755b1" dependencies = [ "bitflags", "cow-utils", diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index e99084672a8..0106f58e8a0 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -1011,18 +1011,18 @@ "REPO_MAPPING:rules_rust+,bazel_skylib bazel_skylib+", "REPO_MAPPING:rules_rust+,bazel_tools bazel_tools", "REPO_MAPPING:rules_rust+,rules_cc rules_cc+", - "FILE:@@//Cargo.lock a6b17ba3b33e30717735bf8e37b1abddb054b37f9bbde9030c64042ebce38b4c", + "FILE:@@//Cargo.lock d9f7736413a11a30dedf8b8eca026e4f62889c20859eb73b9393ffd29c3d3747", "FILE:@@//Cargo.toml fc01cb4d18d554ba93e0da9e9d2b6bca0467927c00677984a69a08e29ebd7b16", - "FILE:@@//packages/compiler-cli/preprocessor/ng-analyze/Cargo.toml ca8cb114efd8e0b629b30d8c52078dc785d846ffd8f27da4e655891f7d2e1932" + "FILE:@@//packages/compiler-cli/preprocessor/ng-analyze/Cargo.toml d409feeadd817c1a459bb5a0fd1ea261dd229b7c63b232be13acf761cff4021c" ], "generatedRepoSpecs": { "crates": { "repoRuleId": "@@rules_rust+//crate_universe/private:crates_vendor.bzl%crates_vendor_remote_repository", "attributes": { "contents": { - "BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files(\n [\n \"cargo-bazel.json\",\n \"crates.bzl\",\n \"defs.bzl\",\n ] + glob(\n allow_empty = True,\n include = [\"*.bazel\"],\n ),\n)\n\nfilegroup(\n name = \"srcs\",\n srcs = glob(\n allow_empty = True,\n include = [\n \"*.bazel\",\n \"*.bzl\",\n ],\n ),\n)\n\n# Workspace Member Dependencies\nalias(\n name = \"futures-0.3.34\",\n actual = \"@crates__futures-0.3.34//:futures\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"futures\",\n actual = \"@crates__futures-0.3.34//:futures\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"glob-0.3.4\",\n actual = \"@crates__glob-0.3.4//:glob\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"glob\",\n actual = \"@crates__glob-0.3.4//:glob\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"js-sys-0.3.98\",\n actual = \"@crates__js-sys-0.3.98//:js_sys\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"js-sys\",\n actual = \"@crates__js-sys-0.3.98//:js_sys\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"json-strip-comments-3.1.2\",\n actual = \"@crates__json-strip-comments-3.1.2//:json_strip_comments\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"json-strip-comments\",\n actual = \"@crates__json-strip-comments-3.1.2//:json_strip_comments\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc-miette-derive-3.0.1\",\n actual = \"@crates__oxc-miette-derive-3.0.1//:oxc_miette_derive\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc-miette-derive\",\n actual = \"@crates__oxc-miette-derive-3.0.1//:oxc_miette_derive\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_allocator-0.155.0\",\n actual = \"@crates__oxc_allocator-0.155.0//:oxc_allocator\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_allocator\",\n actual = \"@crates__oxc_allocator-0.155.0//:oxc_allocator\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_ast-0.155.0\",\n actual = \"@crates__oxc_ast-0.155.0//:oxc_ast\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_ast\",\n actual = \"@crates__oxc_ast-0.155.0//:oxc_ast\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_ast_visit-0.155.0\",\n actual = \"@crates__oxc_ast_visit-0.155.0//:oxc_ast_visit\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_ast_visit\",\n actual = \"@crates__oxc_ast_visit-0.155.0//:oxc_ast_visit\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_diagnostics-0.155.0\",\n actual = \"@crates__oxc_diagnostics-0.155.0//:oxc_diagnostics\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_diagnostics\",\n actual = \"@crates__oxc_diagnostics-0.155.0//:oxc_diagnostics\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_parser-0.155.0\",\n actual = \"@crates__oxc_parser-0.155.0//:oxc_parser\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_parser\",\n actual = \"@crates__oxc_parser-0.155.0//:oxc_parser\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_resolver-11.24.3\",\n actual = \"@crates__oxc_resolver-11.24.3//:oxc_resolver\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_resolver\",\n actual = \"@crates__oxc_resolver-11.24.3//:oxc_resolver\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_semantic-0.155.0\",\n actual = \"@crates__oxc_semantic-0.155.0//:oxc_semantic\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_semantic\",\n actual = \"@crates__oxc_semantic-0.155.0//:oxc_semantic\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_span-0.155.0\",\n actual = \"@crates__oxc_span-0.155.0//:oxc_span\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_span\",\n actual = \"@crates__oxc_span-0.155.0//:oxc_span\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_str-0.155.0\",\n actual = \"@crates__oxc_str-0.155.0//:oxc_str\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_str\",\n actual = \"@crates__oxc_str-0.155.0//:oxc_str\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_syntax-0.155.0\",\n actual = \"@crates__oxc_syntax-0.155.0//:oxc_syntax\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_syntax\",\n actual = \"@crates__oxc_syntax-0.155.0//:oxc_syntax\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pathdiff-0.2.3\",\n actual = \"@crates__pathdiff-0.2.3//:pathdiff\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pathdiff\",\n actual = \"@crates__pathdiff-0.2.3//:pathdiff\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"regex-1.13.1\",\n actual = \"@crates__regex-1.13.1//:regex\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"regex\",\n actual = \"@crates__regex-1.13.1//:regex\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"self_cell-1.3.0\",\n actual = \"@crates__self_cell-1.3.0//:self_cell\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"self_cell\",\n actual = \"@crates__self_cell-1.3.0//:self_cell\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde-1.0.229\",\n actual = \"@crates__serde-1.0.229//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde\",\n actual = \"@crates__serde-1.0.229//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json-1.0.154\",\n actual = \"@crates__serde_json-1.0.154//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json\",\n actual = \"@crates__serde_json-1.0.154//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tempfile-3.27.0\",\n actual = \"@crates__tempfile-3.27.0//:tempfile\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tempfile\",\n actual = \"@crates__tempfile-3.27.0//:tempfile\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"wasm-bindgen-0.2.121\",\n actual = \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"wasm-bindgen\",\n actual = \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\",\n tags = [\"manual\"],\n)\n", + "BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files(\n [\n \"cargo-bazel.json\",\n \"crates.bzl\",\n \"defs.bzl\",\n ] + glob(\n allow_empty = True,\n include = [\"*.bazel\"],\n ),\n)\n\nfilegroup(\n name = \"srcs\",\n srcs = glob(\n allow_empty = True,\n include = [\n \"*.bazel\",\n \"*.bzl\",\n ],\n ),\n)\n\n# Workspace Member Dependencies\nalias(\n name = \"futures-0.3.34\",\n actual = \"@crates__futures-0.3.34//:futures\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"futures\",\n actual = \"@crates__futures-0.3.34//:futures\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"glob-0.3.4\",\n actual = \"@crates__glob-0.3.4//:glob\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"glob\",\n actual = \"@crates__glob-0.3.4//:glob\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"js-sys-0.3.98\",\n actual = \"@crates__js-sys-0.3.98//:js_sys\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"js-sys\",\n actual = \"@crates__js-sys-0.3.98//:js_sys\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"json-strip-comments-3.1.2\",\n actual = \"@crates__json-strip-comments-3.1.2//:json_strip_comments\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"json-strip-comments\",\n actual = \"@crates__json-strip-comments-3.1.2//:json_strip_comments\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc-miette-derive-3.0.1\",\n actual = \"@crates__oxc-miette-derive-3.0.1//:oxc_miette_derive\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc-miette-derive\",\n actual = \"@crates__oxc-miette-derive-3.0.1//:oxc_miette_derive\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_allocator-0.144.0\",\n actual = \"@crates__oxc_allocator-0.144.0//:oxc_allocator\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_allocator\",\n actual = \"@crates__oxc_allocator-0.144.0//:oxc_allocator\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_ast-0.144.0\",\n actual = \"@crates__oxc_ast-0.144.0//:oxc_ast\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_ast\",\n actual = \"@crates__oxc_ast-0.144.0//:oxc_ast\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_ast_visit-0.144.0\",\n actual = \"@crates__oxc_ast_visit-0.144.0//:oxc_ast_visit\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_ast_visit\",\n actual = \"@crates__oxc_ast_visit-0.144.0//:oxc_ast_visit\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_diagnostics-0.144.0\",\n actual = \"@crates__oxc_diagnostics-0.144.0//:oxc_diagnostics\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_diagnostics\",\n actual = \"@crates__oxc_diagnostics-0.144.0//:oxc_diagnostics\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_parser-0.144.0\",\n actual = \"@crates__oxc_parser-0.144.0//:oxc_parser\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_parser\",\n actual = \"@crates__oxc_parser-0.144.0//:oxc_parser\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_resolver-11.24.3\",\n actual = \"@crates__oxc_resolver-11.24.3//:oxc_resolver\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_resolver\",\n actual = \"@crates__oxc_resolver-11.24.3//:oxc_resolver\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_semantic-0.144.0\",\n actual = \"@crates__oxc_semantic-0.144.0//:oxc_semantic\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_semantic\",\n actual = \"@crates__oxc_semantic-0.144.0//:oxc_semantic\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_span-0.144.0\",\n actual = \"@crates__oxc_span-0.144.0//:oxc_span\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_span\",\n actual = \"@crates__oxc_span-0.144.0//:oxc_span\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_syntax-0.144.0\",\n actual = \"@crates__oxc_syntax-0.144.0//:oxc_syntax\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"oxc_syntax\",\n actual = \"@crates__oxc_syntax-0.144.0//:oxc_syntax\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pathdiff-0.2.3\",\n actual = \"@crates__pathdiff-0.2.3//:pathdiff\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pathdiff\",\n actual = \"@crates__pathdiff-0.2.3//:pathdiff\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"regex-1.13.1\",\n actual = \"@crates__regex-1.13.1//:regex\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"regex\",\n actual = \"@crates__regex-1.13.1//:regex\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"self_cell-1.3.0\",\n actual = \"@crates__self_cell-1.3.0//:self_cell\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"self_cell\",\n actual = \"@crates__self_cell-1.3.0//:self_cell\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde-1.0.229\",\n actual = \"@crates__serde-1.0.229//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde\",\n actual = \"@crates__serde-1.0.229//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json-1.0.154\",\n actual = \"@crates__serde_json-1.0.154//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json\",\n actual = \"@crates__serde_json-1.0.154//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tempfile-3.27.0\",\n actual = \"@crates__tempfile-3.27.0//:tempfile\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tempfile\",\n actual = \"@crates__tempfile-3.27.0//:tempfile\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"wasm-bindgen-0.2.121\",\n actual = \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"wasm-bindgen\",\n actual = \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\",\n tags = [\"manual\"],\n)\n", "alias_rules.bzl": "\"\"\"Alias that transitions its target to `compilation_mode=opt`. Use `transition_alias=\"opt\"` to enable.\"\"\"\n\nload(\"@rules_cc//cc:defs.bzl\", \"CcInfo\")\nload(\"@rules_rust//rust:rust_common.bzl\", \"COMMON_PROVIDERS\")\n\ndef _transition_alias_impl(ctx):\n # `ctx.attr.actual` is a list of 1 item due to the transition\n providers = [ctx.attr.actual[0][provider] for provider in COMMON_PROVIDERS]\n if CcInfo in ctx.attr.actual[0]:\n providers.append(ctx.attr.actual[0][CcInfo])\n return providers\n\ndef _change_compilation_mode(compilation_mode):\n def _change_compilation_mode_impl(_settings, _attr):\n return {\n \"//command_line_option:compilation_mode\": compilation_mode,\n }\n\n return transition(\n implementation = _change_compilation_mode_impl,\n inputs = [],\n outputs = [\n \"//command_line_option:compilation_mode\",\n ],\n )\n\ndef _transition_alias_rule(compilation_mode):\n return rule(\n implementation = _transition_alias_impl,\n provides = COMMON_PROVIDERS,\n attrs = {\n \"actual\": attr.label(\n mandatory = True,\n doc = \"`rust_library()` target to transition to `compilation_mode=opt`.\",\n providers = COMMON_PROVIDERS,\n cfg = _change_compilation_mode(compilation_mode),\n ),\n \"_allowlist_function_transition\": attr.label(\n default = \"@bazel_tools//tools/allowlists/function_transition_allowlist\",\n ),\n },\n doc = \"Transitions a Rust library crate to the `compilation_mode=opt`.\",\n )\n\ntransition_alias_dbg = _transition_alias_rule(\"dbg\")\ntransition_alias_fastbuild = _transition_alias_rule(\"fastbuild\")\ntransition_alias_opt = _transition_alias_rule(\"opt\")\n", - "crates.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\"\"\"\n# `crates_repository` API\n\n- [aliases](#aliases)\n- [crate_edition](#crate_edition)\n- [crate_deps](#crate_deps)\n- [all_crate_deps](#all_crate_deps)\n- [crate_repositories](#crate_repositories)\n\n\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"git_repository\")\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nload(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")\nload(\"@bazel_skylib//lib:selects.bzl\", \"selects\")\nload(\"@rules_rust//crate_universe:defs.bzl\", \"crates_vendor_remote_repository\", \"local_crate_mirror\")\n\n###############################################################################\n# MACROS API\n###############################################################################\n\n# An identifier that represent common dependencies (unconditional).\n_COMMON_CONDITION = \"\"\n\ndef _flatten_dependency_maps(all_dependency_maps):\n \"\"\"Flatten a list of dependency maps into one dictionary.\n\n Dependency maps have the following structure:\n\n ```python\n DEPENDENCIES_MAP = {\n # The first key in the map is a Bazel package\n # name of the workspace this file is defined in.\n \"workspace_member_package\": {\n\n # Not all dependencies are supported for all platforms.\n # the condition key is the condition required to be true\n # on the host platform.\n \"condition\": {\n\n # An alias to a crate target. # The label of the crate target the\n # Aliases are only crate names. # package name refers to.\n \"package_name\": \"@full//:label\",\n }\n }\n }\n ```\n\n Args:\n all_dependency_maps (list): A list of dicts as described above\n\n Returns:\n dict: A dictionary as described above\n \"\"\"\n dependencies = {}\n\n for workspace_deps_map in all_dependency_maps:\n for pkg_name, conditional_deps_map in workspace_deps_map.items():\n if pkg_name not in dependencies:\n non_frozen_map = dict()\n for key, values in conditional_deps_map.items():\n non_frozen_map.update({key: dict(values.items())})\n dependencies.setdefault(pkg_name, non_frozen_map)\n continue\n\n for condition, deps_map in conditional_deps_map.items():\n # If the condition has not been recorded, do so and continue\n if condition not in dependencies[pkg_name]:\n dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))\n continue\n\n # Alert on any miss-matched dependencies\n inconsistent_entries = []\n for crate_name, crate_label in deps_map.items():\n existing = dependencies[pkg_name][condition].get(crate_name)\n if existing and existing != crate_label:\n inconsistent_entries.append((crate_name, existing, crate_label))\n dependencies[pkg_name][condition].update({crate_name: crate_label})\n\n return dependencies\n\ndef crate_deps(deps, package_name = None):\n \"\"\"Finds the fully qualified label of the requested crates for the package where this macro is called.\n\n Args:\n deps (list): The desired list of crate targets.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()`.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if not deps:\n return []\n\n if package_name == None:\n package_name = native.package_name()\n\n # Join both sets of dependencies\n dependencies = _flatten_dependency_maps([\n _NORMAL_DEPENDENCIES,\n _NORMAL_DEV_DEPENDENCIES,\n _PROC_MACRO_DEPENDENCIES,\n _PROC_MACRO_DEV_DEPENDENCIES,\n _BUILD_DEPENDENCIES,\n _BUILD_PROC_MACRO_DEPENDENCIES,\n ]).pop(package_name, {})\n\n # Combine all conditional packages so we can easily index over a flat list\n # TODO: Perhaps this should actually return select statements and maintain\n # the conditionals of the dependencies\n flat_deps = {}\n for deps_set in dependencies.values():\n for crate_name, crate_label in deps_set.items():\n flat_deps.update({crate_name: crate_label})\n\n missing_crates = []\n crate_targets = []\n for crate_target in deps:\n if crate_target not in flat_deps:\n missing_crates.append(crate_target)\n else:\n crate_targets.append(flat_deps[crate_target])\n\n if missing_crates:\n fail(\"Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`\".format(\n missing_crates,\n package_name,\n dependencies,\n ))\n\n return crate_targets\n\ndef crate_edition(package_name = None):\n \"\"\"Finds the Rust edition for the package where this macro is called.\n\n Args:\n package_name (str, optional): The package name whose edition should be\n looked up. Defaults to `native.package_name()` when unset.\n\n Returns:\n str: The Rust edition declared by the package's Cargo.toml file.\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n if package_name not in _CRATE_EDITIONS:\n fail(\"Tried to get crate_edition for package \" + package_name + \" but that package had no Cargo.toml file\")\n\n return _CRATE_EDITIONS[package_name]\n\ndef all_crate_deps(\n normal = False, \n normal_dev = False, \n proc_macro = False, \n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Finds the fully qualified label of all requested direct crate dependencies \\\n for the package where this macro is called.\n\n If no parameters are set, all normal dependencies are returned. Setting any one flag will\n otherwise impact the contents of the returned list.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list.\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_dependency_maps = []\n if normal:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n if normal_dev:\n all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)\n if proc_macro:\n all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)\n if proc_macro_dev:\n all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)\n if build:\n all_dependency_maps.append(_BUILD_DEPENDENCIES)\n if build_proc_macro:\n all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)\n\n # Default to always using normal dependencies\n if not all_dependency_maps:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n\n dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)\n\n if not dependencies:\n if dependencies == None:\n fail(\"Tried to get all_crate_deps for package \" + package_name + \" but that package had no Cargo.toml file\")\n else:\n return []\n\n crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())\n for condition, deps in dependencies.items():\n crate_deps += selects.with_or({\n tuple(_CONDITIONS[condition]): deps.values(),\n \"//conditions:default\": [],\n })\n\n return crate_deps\n\ndef aliases(\n normal = False,\n normal_dev = False,\n proc_macro = False,\n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Produces a map of Crate alias names to their original label\n\n If no dependency kinds are specified, `normal` and `proc_macro` are used by default.\n Setting any one flag will otherwise determine the contents of the returned dict.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n dict: The aliases of all associated packages\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_aliases_maps = []\n if normal:\n all_aliases_maps.append(_NORMAL_ALIASES)\n if normal_dev:\n all_aliases_maps.append(_NORMAL_DEV_ALIASES)\n if proc_macro:\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n if proc_macro_dev:\n all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)\n if build:\n all_aliases_maps.append(_BUILD_ALIASES)\n if build_proc_macro:\n all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)\n\n # Default to always using normal aliases\n if not all_aliases_maps:\n all_aliases_maps.append(_NORMAL_ALIASES)\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n\n aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)\n\n if not aliases:\n return dict()\n\n common_items = aliases.pop(_COMMON_CONDITION, {}).items()\n\n # If there are only common items in the dictionary, immediately return them\n if not len(aliases.keys()) == 1:\n return dict(common_items)\n\n # Build a single select statement where each conditional has accounted for the\n # common set of aliases.\n crate_aliases = {\"//conditions:default\": dict(common_items)}\n for condition, deps in aliases.items():\n condition_triples = _CONDITIONS[condition]\n for triple in condition_triples:\n if triple in crate_aliases:\n crate_aliases[triple].update(deps)\n else:\n crate_aliases.update({triple: dict(deps.items() + common_items)})\n\n return select(crate_aliases)\n\n###############################################################################\n# WORKSPACE MEMBER DEPS, ALIASES, AND EDITIONS\n###############################################################################\n\n_CRATE_EDITIONS = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": \"2021\",\n}\n\n_NORMAL_DEPENDENCIES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n _COMMON_CONDITION: {\n \"futures\": Label(\"@crates//futures-0.3.34\"),\n \"glob\": Label(\"@crates//glob-0.3.4\"),\n \"js-sys\": Label(\"@crates//js-sys-0.3.98\"),\n \"json-strip-comments\": Label(\"@crates//json-strip-comments-3.1.2\"),\n \"oxc_allocator\": Label(\"@crates//oxc_allocator-0.155.0\"),\n \"oxc_ast\": Label(\"@crates//oxc_ast-0.155.0\"),\n \"oxc_ast_visit\": Label(\"@crates//oxc_ast_visit-0.155.0\"),\n \"oxc_diagnostics\": Label(\"@crates//oxc_diagnostics-0.155.0\"),\n \"oxc_parser\": Label(\"@crates//oxc_parser-0.155.0\"),\n \"oxc_resolver\": Label(\"@crates//oxc_resolver-11.24.3\"),\n \"oxc_semantic\": Label(\"@crates//oxc_semantic-0.155.0\"),\n \"oxc_span\": Label(\"@crates//oxc_span-0.155.0\"),\n \"oxc_str\": Label(\"@crates//oxc_str-0.155.0\"),\n \"oxc_syntax\": Label(\"@crates//oxc_syntax-0.155.0\"),\n \"pathdiff\": Label(\"@crates//pathdiff-0.2.3\"),\n \"regex\": Label(\"@crates//regex-1.13.1\"),\n \"self_cell\": Label(\"@crates//self_cell-1.3.0\"),\n \"serde\": Label(\"@crates//serde-1.0.229\"),\n \"serde_json\": Label(\"@crates//serde_json-1.0.154\"),\n \"wasm-bindgen\": Label(\"@crates//wasm-bindgen-0.2.121\"),\n },\n },\n}\n\n\n_NORMAL_ALIASES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_NORMAL_DEV_DEPENDENCIES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n _COMMON_CONDITION: {\n \"tempfile\": Label(\"@crates//tempfile-3.27.0\"),\n },\n },\n}\n\n\n_NORMAL_DEV_ALIASES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_PROC_MACRO_DEPENDENCIES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n _COMMON_CONDITION: {\n \"oxc-miette-derive\": Label(\"@crates//oxc-miette-derive-3.0.1\"),\n },\n },\n}\n\n\n_PROC_MACRO_ALIASES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n },\n}\n\n\n_PROC_MACRO_DEV_DEPENDENCIES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n },\n}\n\n\n_PROC_MACRO_DEV_ALIASES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_BUILD_DEPENDENCIES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n },\n}\n\n\n_BUILD_ALIASES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_DEPENDENCIES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_ALIASES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n },\n}\n\n\n_CONDITIONS = {\n \"aarch64-apple-darwin\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"aarch64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [],\n \"cfg(all(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"), not(any(all(target_os = \\\"linux\\\", target_env = \\\"\\\"), getrandom_backend = \\\"custom\\\", getrandom_backend = \\\"linux_raw\\\", getrandom_backend = \\\"rdrand\\\", getrandom_backend = \\\"rndr\\\"))))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(not(rustix_use_libc), not(miri), target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\"))))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(all(target_os = \\\"uefi\\\", getrandom_backend = \\\"efi_rng\\\"))\": [],\n \"cfg(any())\": [],\n \"cfg(any(target_os = \\\"dragonfly\\\", target_os = \\\"freebsd\\\", target_os = \\\"hurd\\\", target_os = \\\"illumos\\\", target_os = \\\"cygwin\\\", all(target_os = \\\"horizon\\\", target_arch = \\\"arm\\\")))\": [],\n \"cfg(any(target_os = \\\"haiku\\\", target_os = \\\"redox\\\", target_os = \\\"nto\\\", target_os = \\\"aix\\\"))\": [],\n \"cfg(any(target_os = \\\"ios\\\", target_os = \\\"visionos\\\", target_os = \\\"watchos\\\", target_os = \\\"tvos\\\"))\": [],\n \"cfg(any(target_os = \\\"macos\\\", target_os = \\\"linux\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any(target_os = \\\"macos\\\", target_os = \\\"openbsd\\\", target_os = \\\"vita\\\", target_os = \\\"emscripten\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(any(unix, target_os = \\\"wasi\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_arch = \\\"x86_64\\\")\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_endian = \\\"little\\\")\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_os = \\\"hermit\\\")\": [],\n \"cfg(target_os = \\\"netbsd\\\")\": [],\n \"cfg(target_os = \\\"redox\\\")\": [],\n \"cfg(target_os = \\\"solaris\\\")\": [],\n \"cfg(target_os = \\\"vxworks\\\")\": [],\n \"cfg(target_os = \\\"wasi\\\")\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(target_os = \\\"windows\\\")\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(unix)\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(windows)\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"wasm32-unknown-unknown\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"wasm32-wasip1\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"x86_64-pc-windows-msvc\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"x86_64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"x86_64-unknown-nixos-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n}\n\n###############################################################################\n\ndef crate_repositories():\n \"\"\"A macro for defining repositories for all generated crates.\n\n Returns:\n A list of repos visible to the module through the module extension.\n \"\"\"\n maybe(\n crates_vendor_remote_repository,\n name = \"crates\",\n # Lean interface: just point at `crates.bzl`; the repo rule\n # derives the sibling `BUILD.bazel` and `defs.bzl`.\n crates_module = Label(\"@crates//crates:crates.bzl\"),\n )\n maybe(\n http_archive,\n name = \"crates__aho-corasick-1.1.5\",\n sha256 = \"c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aho-corasick/1.1.5/download\"],\n strip_prefix = \"aho-corasick-1.1.5\",\n build_file = Label(\"@crates//crates:BUILD.aho-corasick-1.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__allocator-api2-0.2.21\",\n sha256 = \"683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/allocator-api2/0.2.21/download\"],\n strip_prefix = \"allocator-api2-0.2.21\",\n build_file = Label(\"@crates//crates:BUILD.allocator-api2-0.2.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__arrayvec-0.7.8\",\n sha256 = \"d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/arrayvec/0.7.8/download\"],\n strip_prefix = \"arrayvec-0.7.8\",\n build_file = Label(\"@crates//crates:BUILD.arrayvec-0.7.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__autocfg-1.5.1\",\n sha256 = \"f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/autocfg/1.5.1/download\"],\n strip_prefix = \"autocfg-1.5.1\",\n build_file = Label(\"@crates//crates:BUILD.autocfg-1.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bitflags-2.13.2\",\n sha256 = \"3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitflags/2.13.2/download\"],\n strip_prefix = \"bitflags-2.13.2\",\n build_file = Label(\"@crates//crates:BUILD.bitflags-2.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bumpalo-3.20.3\",\n sha256 = \"72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bumpalo/3.20.3/download\"],\n strip_prefix = \"bumpalo-3.20.3\",\n build_file = Label(\"@crates//crates:BUILD.bumpalo-3.20.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bytecount-0.6.9\",\n sha256 = \"175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bytecount/0.6.9/download\"],\n strip_prefix = \"bytecount-0.6.9\",\n build_file = Label(\"@crates//crates:BUILD.bytecount-0.6.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__castaway-0.2.4\",\n sha256 = \"dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/castaway/0.2.4/download\"],\n strip_prefix = \"castaway-0.2.4\",\n build_file = Label(\"@crates//crates:BUILD.castaway-0.2.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cfg-if-1.0.5\",\n sha256 = \"4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cfg-if/1.0.5/download\"],\n strip_prefix = \"cfg-if-1.0.5\",\n build_file = Label(\"@crates//crates:BUILD.cfg-if-1.0.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__compact_str-0.10.0\",\n sha256 = \"79fcda08c33bb58b97008b2cdada6622500e949e060f5913361763121abd2416\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/compact_str/0.10.0/download\"],\n strip_prefix = \"compact_str-0.10.0\",\n build_file = Label(\"@crates//crates:BUILD.compact_str-0.10.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cow-utils-0.1.3\",\n sha256 = \"417bef24afe1460300965a25ff4a24b8b45ad011948302ec221e8a0a81eb2c79\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cow-utils/0.1.3/download\"],\n strip_prefix = \"cow-utils-0.1.3\",\n build_file = Label(\"@crates//crates:BUILD.cow-utils-0.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-utils-0.8.23\",\n sha256 = \"a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-utils/0.8.23/download\"],\n strip_prefix = \"crossbeam-utils-0.8.23\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-utils-0.8.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dashmap-6.2.1\",\n sha256 = \"e6361d5c062261c78a176addb82d4c821ae42bed6089de0e12603cd25de2059c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dashmap/6.2.1/download\"],\n strip_prefix = \"dashmap-6.2.1\",\n build_file = Label(\"@crates//crates:BUILD.dashmap-6.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__displaydoc-0.2.7\",\n sha256 = \"c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/displaydoc/0.2.7/download\"],\n strip_prefix = \"displaydoc-0.2.7\",\n build_file = Label(\"@crates//crates:BUILD.displaydoc-0.2.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dragonbox_ecma-0.1.12\",\n sha256 = \"fd8e701084c37e7ef62d3f9e453b618130cbc0ef3573847785952a3ac3f746bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dragonbox_ecma/0.1.12/download\"],\n strip_prefix = \"dragonbox_ecma-0.1.12\",\n build_file = Label(\"@crates//crates:BUILD.dragonbox_ecma-0.1.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__either-1.19.0\",\n sha256 = \"0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/either/1.19.0/download\"],\n strip_prefix = \"either-1.19.0\",\n build_file = Label(\"@crates//crates:BUILD.either-1.19.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__equivalent-1.0.3\",\n sha256 = \"00d174d5400e5e8fd687ad1049e2f578285fa914201b1af7e8b112a4546bd826\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/equivalent/1.0.3/download\"],\n strip_prefix = \"equivalent-1.0.3\",\n build_file = Label(\"@crates//crates:BUILD.equivalent-1.0.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__errno-0.3.14\",\n sha256 = \"39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/errno/0.3.14/download\"],\n strip_prefix = \"errno-0.3.14\",\n build_file = Label(\"@crates//crates:BUILD.errno-0.3.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fast-glob-1.1.2\",\n sha256 = \"2a044ed96eb57253e806d08b74260638af189687e583f04947a5e11e75e0b0d1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fast-glob/1.1.2/download\"],\n strip_prefix = \"fast-glob-1.1.2\",\n build_file = Label(\"@crates//crates:BUILD.fast-glob-1.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fastrand-2.5.0\",\n sha256 = \"da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fastrand/2.5.0/download\"],\n strip_prefix = \"fastrand-2.5.0\",\n build_file = Label(\"@crates//crates:BUILD.fastrand-2.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__float-cmp-0.10.0\",\n sha256 = \"b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/float-cmp/0.10.0/download\"],\n strip_prefix = \"float-cmp-0.10.0\",\n build_file = Label(\"@crates//crates:BUILD.float-cmp-0.10.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__foldhash-0.2.0\",\n sha256 = \"77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/foldhash/0.2.0/download\"],\n strip_prefix = \"foldhash-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.foldhash-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-0.3.34\",\n sha256 = \"9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures/0.3.34/download\"],\n strip_prefix = \"futures-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-channel-0.3.34\",\n sha256 = \"b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-channel/0.3.34/download\"],\n strip_prefix = \"futures-channel-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-channel-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-core-0.3.34\",\n sha256 = \"92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-core/0.3.34/download\"],\n strip_prefix = \"futures-core-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-core-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-executor-0.3.34\",\n sha256 = \"031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-executor/0.3.34/download\"],\n strip_prefix = \"futures-executor-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-executor-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-io-0.3.34\",\n sha256 = \"53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-io/0.3.34/download\"],\n strip_prefix = \"futures-io-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-io-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-macro-0.3.34\",\n sha256 = \"9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-macro/0.3.34/download\"],\n strip_prefix = \"futures-macro-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-macro-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-sink-0.3.34\",\n sha256 = \"1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-sink/0.3.34/download\"],\n strip_prefix = \"futures-sink-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-sink-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-task-0.3.34\",\n sha256 = \"cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-task/0.3.34/download\"],\n strip_prefix = \"futures-task-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-task-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-util-0.3.34\",\n sha256 = \"0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-util/0.3.34/download\"],\n strip_prefix = \"futures-util-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-util-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__getrandom-0.4.3\",\n sha256 = \"300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/getrandom/0.4.3/download\"],\n strip_prefix = \"getrandom-0.4.3\",\n build_file = Label(\"@crates//crates:BUILD.getrandom-0.4.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__glob-0.3.4\",\n sha256 = \"e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/glob/0.3.4/download\"],\n strip_prefix = \"glob-0.3.4\",\n build_file = Label(\"@crates//crates:BUILD.glob-0.3.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__halfbrown-0.4.0\",\n sha256 = \"0c7ed2f2edad8a14c8186b847909a41fbb9c3eafa44f88bd891114ed5019da09\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/halfbrown/0.4.0/download\"],\n strip_prefix = \"halfbrown-0.4.0\",\n build_file = Label(\"@crates//crates:BUILD.halfbrown-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.14.5\",\n sha256 = \"e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.14.5/download\"],\n strip_prefix = \"hashbrown-0.14.5\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.14.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.16.1\",\n sha256 = \"841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.16.1/download\"],\n strip_prefix = \"hashbrown-0.16.1\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.16.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.17.1\",\n sha256 = \"ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.17.1/download\"],\n strip_prefix = \"hashbrown-0.17.1\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.17.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_collections-2.3.0\",\n sha256 = \"fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_collections/2.3.0/download\"],\n strip_prefix = \"icu_collections-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_collections-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_locale_core-2.3.0\",\n sha256 = \"d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_locale_core/2.3.0/download\"],\n strip_prefix = \"icu_locale_core-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_locale_core-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_locale_fallback-2.3.0\",\n sha256 = \"251af8e57c9400e3eb58242fe5b8b1152b2a64fdf4cf632f923c38ccee6f2fa9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_locale_fallback/2.3.0/download\"],\n strip_prefix = \"icu_locale_fallback-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_locale_fallback-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_locale_fallback_data-2.3.0\",\n sha256 = \"decf2a22ec8fa68f1a0c1129a3f8583f8f8bc24e8b9ccbe98ead99f62a4dc3a8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_locale_fallback_data/2.3.0/download\"],\n strip_prefix = \"icu_locale_fallback_data-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_locale_fallback_data-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_provider-2.3.1\",\n sha256 = \"d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_provider/2.3.1/download\"],\n strip_prefix = \"icu_provider-2.3.1\",\n build_file = Label(\"@crates//crates:BUILD.icu_provider-2.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_segmenter-2.3.0\",\n sha256 = \"82d07aafccd67af15d02512a6adf5896fbc5ed00f2e99b471d2efa14016db3db\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_segmenter/2.3.0/download\"],\n strip_prefix = \"icu_segmenter-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_segmenter-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_segmenter_data-2.3.0\",\n sha256 = \"ae293c039020f9ec10710af98d29ce6aa2051486638b49c9a6409f3b4a9e98ad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_segmenter_data/2.3.0/download\"],\n strip_prefix = \"icu_segmenter_data-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_segmenter_data-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__indexmap-2.14.2\",\n sha256 = \"cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indexmap/2.14.2/download\"],\n strip_prefix = \"indexmap-2.14.2\",\n build_file = Label(\"@crates//crates:BUILD.indexmap-2.14.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itertools-0.15.0\",\n sha256 = \"8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itertools/0.15.0/download\"],\n strip_prefix = \"itertools-0.15.0\",\n build_file = Label(\"@crates//crates:BUILD.itertools-0.15.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itoa-1.0.18\",\n sha256 = \"8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itoa/1.0.18/download\"],\n strip_prefix = \"itoa-1.0.18\",\n build_file = Label(\"@crates//crates:BUILD.itoa-1.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__js-sys-0.3.98\",\n sha256 = \"67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/js-sys/0.3.98/download\"],\n strip_prefix = \"js-sys-0.3.98\",\n build_file = Label(\"@crates//crates:BUILD.js-sys-0.3.98.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__json-strip-comments-3.1.2\",\n sha256 = \"01ed659c5f428031b9c1fb7de6729af2eb491654d4bcd416a5b5b704986b9658\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/json-strip-comments/3.1.2/download\"],\n strip_prefix = \"json-strip-comments-3.1.2\",\n build_file = Label(\"@crates//crates:BUILD.json-strip-comments-3.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libc-0.2.191\",\n sha256 = \"65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libc/0.2.191/download\"],\n strip_prefix = \"libc-0.2.191\",\n build_file = Label(\"@crates//crates:BUILD.libc-0.2.191.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__linux-raw-sys-0.12.1\",\n sha256 = \"32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/linux-raw-sys/0.12.1/download\"],\n strip_prefix = \"linux-raw-sys-0.12.1\",\n build_file = Label(\"@crates//crates:BUILD.linux-raw-sys-0.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__litemap-0.8.3\",\n sha256 = \"47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/litemap/0.8.3/download\"],\n strip_prefix = \"litemap-0.8.3\",\n build_file = Label(\"@crates//crates:BUILD.litemap-0.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lock_api-0.4.14\",\n sha256 = \"224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lock_api/0.4.14/download\"],\n strip_prefix = \"lock_api-0.4.14\",\n build_file = Label(\"@crates//crates:BUILD.lock_api-0.4.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memchr-2.8.3\",\n sha256 = \"cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memchr/2.8.3/download\"],\n strip_prefix = \"memchr-2.8.3\",\n build_file = Label(\"@crates//crates:BUILD.memchr-2.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__nodejs-built-in-modules-1.0.0\",\n sha256 = \"a5eb86a92577833b75522336f210c49d9ebd7dd55a44d80a92e68c668a75f27c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nodejs-built-in-modules/1.0.0/download\"],\n strip_prefix = \"nodejs-built-in-modules-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.nodejs-built-in-modules-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__nonmax-0.5.5\",\n sha256 = \"610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nonmax/0.5.5/download\"],\n strip_prefix = \"nonmax-0.5.5\",\n build_file = Label(\"@crates//crates:BUILD.nonmax-0.5.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-bigint-0.5.1\",\n sha256 = \"93e7820bc0a80a0238e650327316f929ba18d5be054b647490a3a6a339f3e7c0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-bigint/0.5.1/download\"],\n strip_prefix = \"num-bigint-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.num-bigint-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-integer-0.1.47\",\n sha256 = \"7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-integer/0.1.47/download\"],\n strip_prefix = \"num-integer-0.1.47\",\n build_file = Label(\"@crates//crates:BUILD.num-integer-0.1.47.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-traits-0.2.19\",\n sha256 = \"071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-traits/0.2.19/download\"],\n strip_prefix = \"num-traits-0.2.19\",\n build_file = Label(\"@crates//crates:BUILD.num-traits-0.2.19.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__once_cell-1.21.4\",\n sha256 = \"9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/once_cell/1.21.4/download\"],\n strip_prefix = \"once_cell-1.21.4\",\n build_file = Label(\"@crates//crates:BUILD.once_cell-1.21.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc-miette-derive-3.0.1\",\n sha256 = \"acc072d11d45ebe7801459b4e829184ba0934d68027fdc51d327335b53a95a49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc-miette-derive/3.0.1/download\"],\n strip_prefix = \"oxc-miette-derive-3.0.1\",\n build_file = Label(\"@crates//crates:BUILD.oxc-miette-derive-3.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_allocator-0.155.0\",\n sha256 = \"45c8f46c8923b4afb4dd588d4684d5dd32332f1341225c066cc6af31094e7e3d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_allocator/0.155.0/download\"],\n strip_prefix = \"oxc_allocator-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_allocator-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_ast-0.155.0\",\n sha256 = \"35465751cfc99739fee42d8345b57d5b5087b462bea7bc5bb17d1f248e1efa22\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_ast/0.155.0/download\"],\n strip_prefix = \"oxc_ast-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_ast-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_ast_macros-0.155.0\",\n sha256 = \"e78e5d50ecf9fbf6c00afb29dbd670784b2ac407fd676f625d1f3515a1a2d577\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_ast_macros/0.155.0/download\"],\n strip_prefix = \"oxc_ast_macros-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_ast_macros-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_ast_visit-0.155.0\",\n sha256 = \"6836d2fde033c44eae57ab1be3fcc7bd6a57465783bdfce654ca28064a334dbe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_ast_visit/0.155.0/download\"],\n strip_prefix = \"oxc_ast_visit-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_ast_visit-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_data_structures-0.155.0\",\n sha256 = \"a46b759a8cb13a1111649370f1d769322b082edabd625466254f238818bdc9e9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_data_structures/0.155.0/download\"],\n strip_prefix = \"oxc_data_structures-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_data_structures-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_diagnostics-0.155.0\",\n sha256 = \"5b80f4b05a80879518ebe85a8df9368758ebc1e176327b659e1e97389f8561c7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_diagnostics/0.155.0/download\"],\n strip_prefix = \"oxc_diagnostics-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_diagnostics-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_ecmascript-0.155.0\",\n sha256 = \"f8c634665e0be5dde95549146734ab4939b8d1b5d2e7cc006d38b9f5d17a58a2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_ecmascript/0.155.0/download\"],\n strip_prefix = \"oxc_ecmascript-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_ecmascript-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_estree-0.155.0\",\n sha256 = \"5dcdd8235762cc9305d619842b73c1e89a0ebec8ccf2f27142ef597521443c1f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_estree/0.155.0/download\"],\n strip_prefix = \"oxc_estree-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_estree-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_index-5.0.0\",\n sha256 = \"191884bee6c3744909a51acc7d78d4ae370d817b25875b10642f632327b6296e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_index/5.0.0/download\"],\n strip_prefix = \"oxc_index-5.0.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_index-5.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_parser-0.155.0\",\n sha256 = \"635c4e1bb876a9d4ee0e338fa68547a1d75add58637e5c3921fb81ae10a60439\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_parser/0.155.0/download\"],\n strip_prefix = \"oxc_parser-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_parser-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_regular_expression-0.155.0\",\n sha256 = \"3ae3f2c42773d16336a75d5c61dae45a34aea399f0b5399a7a25c8509d79662f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_regular_expression/0.155.0/download\"],\n strip_prefix = \"oxc_regular_expression-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_regular_expression-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_resolver-11.24.3\",\n sha256 = \"2c7fd0839a5ecee17c0d2c88c8006e8ab4dff25d4a79e3a0bf7a9f0cce17f4e3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_resolver/11.24.3/download\"],\n strip_prefix = \"oxc_resolver-11.24.3\",\n build_file = Label(\"@crates//crates:BUILD.oxc_resolver-11.24.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_semantic-0.155.0\",\n sha256 = \"b24ee2095e2ddac60c2063b59693bbf2b80936c8a9e036463b153a203857831b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_semantic/0.155.0/download\"],\n strip_prefix = \"oxc_semantic-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_semantic-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_span-0.155.0\",\n sha256 = \"0cb5bee6f7a9829ddc4d8c05102fe1aa7e2ca31c7ff0bcfbb7069ca977334840\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_span/0.155.0/download\"],\n strip_prefix = \"oxc_span-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_span-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_str-0.155.0\",\n sha256 = \"c04d966af690d3b780ee4c47436174e558750eed6ca40b07d695fa4910ad8e33\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_str/0.155.0/download\"],\n strip_prefix = \"oxc_str-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_str-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_syntax-0.155.0\",\n sha256 = \"684d5f6db25b6e3d026582b3926166c80eeda9aac8a879782292c6a33b7d13a0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_syntax/0.155.0/download\"],\n strip_prefix = \"oxc_syntax-0.155.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_syntax-0.155.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__parking_lot_core-0.9.12\",\n sha256 = \"2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/parking_lot_core/0.9.12/download\"],\n strip_prefix = \"parking_lot_core-0.9.12\",\n build_file = Label(\"@crates//crates:BUILD.parking_lot_core-0.9.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pathdiff-0.2.3\",\n sha256 = \"df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pathdiff/0.2.3/download\"],\n strip_prefix = \"pathdiff-0.2.3\",\n build_file = Label(\"@crates//crates:BUILD.pathdiff-0.2.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__percent-encoding-2.3.2\",\n sha256 = \"9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/percent-encoding/2.3.2/download\"],\n strip_prefix = \"percent-encoding-2.3.2\",\n build_file = Label(\"@crates//crates:BUILD.percent-encoding-2.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf-0.14.0\",\n sha256 = \"010378780309880b08997fae13be7834dba947d36393bd372f2b1556deb2a2f6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf/0.14.0/download\"],\n strip_prefix = \"phf-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.phf-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_generator-0.14.0\",\n sha256 = \"aeb62e0959d5a1bebc965f4d15d9e2b7cea002b6b0f5ba8cde6cc26738467100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_generator/0.14.0/download\"],\n strip_prefix = \"phf_generator-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.phf_generator-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_macros-0.14.0\",\n sha256 = \"5fa8d0ca26d424d27630da600c6624696e7dec8bf7b3b492b383c5dc49e5e085\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_macros/0.14.0/download\"],\n strip_prefix = \"phf_macros-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.phf_macros-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_shared-0.14.0\",\n sha256 = \"c6fd9027e2d9319be6349febd1db4e8d02aa544921200c9b777720ac34a3aa89\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_shared/0.14.0/download\"],\n strip_prefix = \"phf_shared-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.phf_shared-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pin-project-lite-0.2.17\",\n sha256 = \"a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project-lite/0.2.17/download\"],\n strip_prefix = \"pin-project-lite-0.2.17\",\n build_file = Label(\"@crates//crates:BUILD.pin-project-lite-0.2.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__potential_utf-0.1.6\",\n sha256 = \"d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/potential_utf/0.1.6/download\"],\n strip_prefix = \"potential_utf-0.1.6\",\n build_file = Label(\"@crates//crates:BUILD.potential_utf-0.1.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro2-1.0.107\",\n sha256 = \"985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2/1.0.107/download\"],\n strip_prefix = \"proc-macro2-1.0.107\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro2-1.0.107.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quote-1.0.47\",\n sha256 = \"1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quote/1.0.47/download\"],\n strip_prefix = \"quote-1.0.47\",\n build_file = Label(\"@crates//crates:BUILD.quote-1.0.47.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__r-efi-6.0.0\",\n sha256 = \"f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/r-efi/6.0.0/download\"],\n strip_prefix = \"r-efi-6.0.0\",\n build_file = Label(\"@crates//crates:BUILD.r-efi-6.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__redox_syscall-0.5.18\",\n sha256 = \"ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/redox_syscall/0.5.18/download\"],\n strip_prefix = \"redox_syscall-0.5.18\",\n build_file = Label(\"@crates//crates:BUILD.redox_syscall-0.5.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ref-cast-1.0.27\",\n sha256 = \"7e440fb4e4b4147295338efb76001ab9e4efc0e5839df2c47fc5ac2381d365c3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ref-cast/1.0.27/download\"],\n strip_prefix = \"ref-cast-1.0.27\",\n build_file = Label(\"@crates//crates:BUILD.ref-cast-1.0.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ref-cast-impl-1.0.27\",\n sha256 = \"92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ref-cast-impl/1.0.27/download\"],\n strip_prefix = \"ref-cast-impl-1.0.27\",\n build_file = Label(\"@crates//crates:BUILD.ref-cast-impl-1.0.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-1.13.1\",\n sha256 = \"f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex/1.13.1/download\"],\n strip_prefix = \"regex-1.13.1\",\n build_file = Label(\"@crates//crates:BUILD.regex-1.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-automata-0.4.18\",\n sha256 = \"ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex-automata/0.4.18/download\"],\n strip_prefix = \"regex-automata-0.4.18\",\n build_file = Label(\"@crates//crates:BUILD.regex-automata-0.4.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-syntax-0.8.11\",\n sha256 = \"d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex-syntax/0.8.11/download\"],\n strip_prefix = \"regex-syntax-0.8.11\",\n build_file = Label(\"@crates//crates:BUILD.regex-syntax-0.8.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustc-hash-2.1.3\",\n sha256 = \"6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc-hash/2.1.3/download\"],\n strip_prefix = \"rustc-hash-2.1.3\",\n build_file = Label(\"@crates//crates:BUILD.rustc-hash-2.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustix-1.1.5\",\n sha256 = \"891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustix/1.1.5/download\"],\n strip_prefix = \"rustix-1.1.5\",\n build_file = Label(\"@crates//crates:BUILD.rustix-1.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustversion-1.0.23\",\n sha256 = \"cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustversion/1.0.23/download\"],\n strip_prefix = \"rustversion-1.0.23\",\n build_file = Label(\"@crates//crates:BUILD.rustversion-1.0.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ryu-1.0.23\",\n sha256 = \"9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ryu/1.0.23/download\"],\n strip_prefix = \"ryu-1.0.23\",\n build_file = Label(\"@crates//crates:BUILD.ryu-1.0.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__scopeguard-1.2.0\",\n sha256 = \"94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/scopeguard/1.2.0/download\"],\n strip_prefix = \"scopeguard-1.2.0\",\n build_file = Label(\"@crates//crates:BUILD.scopeguard-1.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__self_cell-1.3.0\",\n sha256 = \"2ab42ca02749e120097e328d91d415325bdf43b1c72c4c8badf37375fe40a813\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/self_cell/1.3.0/download\"],\n strip_prefix = \"self_cell-1.3.0\",\n build_file = Label(\"@crates//crates:BUILD.self_cell-1.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__seq-macro-0.3.6\",\n sha256 = \"1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/seq-macro/0.3.6/download\"],\n strip_prefix = \"seq-macro-0.3.6\",\n build_file = Label(\"@crates//crates:BUILD.seq-macro-0.3.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde-1.0.229\",\n sha256 = \"4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde/1.0.229/download\"],\n strip_prefix = \"serde-1.0.229\",\n build_file = Label(\"@crates//crates:BUILD.serde-1.0.229.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_core-1.0.229\",\n sha256 = \"67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_core/1.0.229/download\"],\n strip_prefix = \"serde_core-1.0.229\",\n build_file = Label(\"@crates//crates:BUILD.serde_core-1.0.229.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_derive-1.0.229\",\n sha256 = \"e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_derive/1.0.229/download\"],\n strip_prefix = \"serde_derive-1.0.229\",\n build_file = Label(\"@crates//crates:BUILD.serde_derive-1.0.229.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_json-1.0.154\",\n sha256 = \"e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_json/1.0.154/download\"],\n strip_prefix = \"serde_json-1.0.154\",\n build_file = Label(\"@crates//crates:BUILD.serde_json-1.0.154.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__simd-json-0.18.1\",\n sha256 = \"6ebe141eb4a23ecc4d5de93fa5b139ac65dc07c38037a2fe9a8fb7c9d36bd832\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/simd-json/0.18.1/download\"],\n strip_prefix = \"simd-json-0.18.1\",\n build_file = Label(\"@crates//crates:BUILD.simd-json-0.18.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__simdutf8-0.1.5\",\n sha256 = \"e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/simdutf8/0.1.5/download\"],\n strip_prefix = \"simdutf8-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.simdutf8-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__siphasher-1.0.4\",\n sha256 = \"33f4fe9184a62d842c9ef383018f3306d8ba224fd9d836f56d7288308847c256\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/siphasher/1.0.4/download\"],\n strip_prefix = \"siphasher-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.siphasher-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__slab-0.4.12\",\n sha256 = \"0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/slab/0.4.12/download\"],\n strip_prefix = \"slab-0.4.12\",\n build_file = Label(\"@crates//crates:BUILD.slab-0.4.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__smallvec-1.16.3\",\n sha256 = \"5b3dc8af474f516a851ff4bd12db780f948b9250ad37211e4eec0bccea54e01b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smallvec/1.16.3/download\"],\n strip_prefix = \"smallvec-1.16.3\",\n build_file = Label(\"@crates//crates:BUILD.smallvec-1.16.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__smawk-0.3.3\",\n sha256 = \"e8e2fb0f499abb4d162f2bedad68f5ef91a1682b5a03596ddb67efd37768d100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smawk/0.3.3/download\"],\n strip_prefix = \"smawk-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.smawk-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__stable_deref_trait-1.2.1\",\n sha256 = \"6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/stable_deref_trait/1.2.1/download\"],\n strip_prefix = \"stable_deref_trait-1.2.1\",\n build_file = Label(\"@crates//crates:BUILD.stable_deref_trait-1.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__static_assertions-1.1.0\",\n sha256 = \"a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/static_assertions/1.1.0/download\"],\n strip_prefix = \"static_assertions-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.static_assertions-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-2.0.119\",\n sha256 = \"872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/2.0.119/download\"],\n strip_prefix = \"syn-2.0.119\",\n build_file = Label(\"@crates//crates:BUILD.syn-2.0.119.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-3.0.9\",\n sha256 = \"d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/3.0.9/download\"],\n strip_prefix = \"syn-3.0.9\",\n build_file = Label(\"@crates//crates:BUILD.syn-3.0.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__synstructure-0.14.0\",\n sha256 = \"901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/synstructure/0.14.0/download\"],\n strip_prefix = \"synstructure-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.synstructure-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tempfile-3.27.0\",\n sha256 = \"32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tempfile/3.27.0/download\"],\n strip_prefix = \"tempfile-3.27.0\",\n build_file = Label(\"@crates//crates:BUILD.tempfile-3.27.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__textwrap-0.16.4\",\n sha256 = \"6ecfad6c3abc80a577f2b91c1e412ee57e7a060d430b553c1b0c940974ebcd49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/textwrap/0.16.4/download\"],\n strip_prefix = \"textwrap-0.16.4\",\n build_file = Label(\"@crates//crates:BUILD.textwrap-0.16.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-2.0.21\",\n sha256 = \"09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror/2.0.21/download\"],\n strip_prefix = \"thiserror-2.0.21\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-2.0.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-impl-2.0.21\",\n sha256 = \"fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror-impl/2.0.21/download\"],\n strip_prefix = \"thiserror-impl-2.0.21\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-impl-2.0.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tinystr-0.8.4\",\n sha256 = \"b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tinystr/0.8.4/download\"],\n strip_prefix = \"tinystr-0.8.4\",\n build_file = Label(\"@crates//crates:BUILD.tinystr-0.8.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-0.1.44\",\n sha256 = \"63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing/0.1.44/download\"],\n strip_prefix = \"tracing-0.1.44\",\n build_file = Label(\"@crates//crates:BUILD.tracing-0.1.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-attributes-0.1.31\",\n sha256 = \"7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-attributes/0.1.31/download\"],\n strip_prefix = \"tracing-attributes-0.1.31\",\n build_file = Label(\"@crates//crates:BUILD.tracing-attributes-0.1.31.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-core-0.1.36\",\n sha256 = \"db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-core/0.1.36/download\"],\n strip_prefix = \"tracing-core-0.1.36\",\n build_file = Label(\"@crates//crates:BUILD.tracing-core-0.1.36.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-id-start-1.5.0\",\n sha256 = \"0825d2e09dcae814a4273c1e1435979d414ede25b2ee235b1545da6682483765\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-id-start/1.5.0/download\"],\n strip_prefix = \"unicode-id-start-1.5.0\",\n build_file = Label(\"@crates//crates:BUILD.unicode-id-start-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-ident-1.0.27\",\n sha256 = \"a2c754d6c33795a1c324727428e5a7dedb5b06195f9890bdbcba760d3e246563\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-ident/1.0.27/download\"],\n strip_prefix = \"unicode-ident-1.0.27\",\n build_file = Label(\"@crates//crates:BUILD.unicode-ident-1.0.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-segmentation-1.13.3\",\n sha256 = \"c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-segmentation/1.13.3/download\"],\n strip_prefix = \"unicode-segmentation-1.13.3\",\n build_file = Label(\"@crates//crates:BUILD.unicode-segmentation-1.13.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-width-0.2.2\",\n sha256 = \"b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-width/0.2.2/download\"],\n strip_prefix = \"unicode-width-0.2.2\",\n build_file = Label(\"@crates//crates:BUILD.unicode-width-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__utf8_iter-1.0.4\",\n sha256 = \"b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/utf8_iter/1.0.4/download\"],\n strip_prefix = \"utf8_iter-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.utf8_iter-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__value-trait-0.12.2\",\n sha256 = \"f3f4b4a98dfe54bc9ed3641af7ffcb837240269627dbd5cb047d13daa39736cc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/value-trait/0.12.2/download\"],\n strip_prefix = \"value-trait-0.12.2\",\n build_file = Label(\"@crates//crates:BUILD.value-trait-0.12.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-0.2.121\",\n sha256 = \"49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen/0.2.121/download\"],\n strip_prefix = \"wasm-bindgen-0.2.121\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-0.2.121.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-macro-0.2.121\",\n sha256 = \"8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-macro/0.2.121/download\"],\n strip_prefix = \"wasm-bindgen-macro-0.2.121\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-macro-0.2.121.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-macro-support-0.2.121\",\n sha256 = \"d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.121/download\"],\n strip_prefix = \"wasm-bindgen-macro-support-0.2.121\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-macro-support-0.2.121.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-shared-0.2.121\",\n sha256 = \"c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-shared/0.2.121/download\"],\n strip_prefix = \"wasm-bindgen-shared-0.2.121\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-shared-0.2.121.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-0.62.2\",\n sha256 = \"527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows/0.62.2/download\"],\n strip_prefix = \"windows-0.62.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-0.62.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-collections-0.3.2\",\n sha256 = \"23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-collections/0.3.2/download\"],\n strip_prefix = \"windows-collections-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-collections-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-core-0.62.2\",\n sha256 = \"b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-core/0.62.2/download\"],\n strip_prefix = \"windows-core-0.62.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-core-0.62.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-future-0.3.2\",\n sha256 = \"e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-future/0.3.2/download\"],\n strip_prefix = \"windows-future-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-future-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-implement-0.60.2\",\n sha256 = \"053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-implement/0.60.2/download\"],\n strip_prefix = \"windows-implement-0.60.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-implement-0.60.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-interface-0.59.3\",\n sha256 = \"3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-interface/0.59.3/download\"],\n strip_prefix = \"windows-interface-0.59.3\",\n build_file = Label(\"@crates//crates:BUILD.windows-interface-0.59.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-link-0.2.1\",\n sha256 = \"f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-link/0.2.1/download\"],\n strip_prefix = \"windows-link-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-link-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-numerics-0.3.1\",\n sha256 = \"6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-numerics/0.3.1/download\"],\n strip_prefix = \"windows-numerics-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-numerics-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-result-0.4.1\",\n sha256 = \"7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-result/0.4.1/download\"],\n strip_prefix = \"windows-result-0.4.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-result-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-strings-0.5.1\",\n sha256 = \"7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-strings/0.5.1/download\"],\n strip_prefix = \"windows-strings-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-strings-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.61.2\",\n sha256 = \"ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.61.2/download\"],\n strip_prefix = \"windows-sys-0.61.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.61.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-threading-0.2.1\",\n sha256 = \"3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-threading/0.2.1/download\"],\n strip_prefix = \"windows-threading-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-threading-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__writeable-0.6.4\",\n sha256 = \"3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/writeable/0.6.4/download\"],\n strip_prefix = \"writeable-0.6.4\",\n build_file = Label(\"@crates//crates:BUILD.writeable-0.6.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__yoke-0.8.3\",\n sha256 = \"709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/yoke/0.8.3/download\"],\n strip_prefix = \"yoke-0.8.3\",\n build_file = Label(\"@crates//crates:BUILD.yoke-0.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__yoke-derive-0.8.4\",\n sha256 = \"ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/yoke-derive/0.8.4/download\"],\n strip_prefix = \"yoke-derive-0.8.4\",\n build_file = Label(\"@crates//crates:BUILD.yoke-derive-0.8.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerofrom-0.1.8\",\n sha256 = \"0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerofrom/0.1.8/download\"],\n strip_prefix = \"zerofrom-0.1.8\",\n build_file = Label(\"@crates//crates:BUILD.zerofrom-0.1.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerofrom-derive-0.1.8\",\n sha256 = \"f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerofrom-derive/0.1.8/download\"],\n strip_prefix = \"zerofrom-derive-0.1.8\",\n build_file = Label(\"@crates//crates:BUILD.zerofrom-derive-0.1.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerotrie-0.2.5\",\n sha256 = \"4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerotrie/0.2.5/download\"],\n strip_prefix = \"zerotrie-0.2.5\",\n build_file = Label(\"@crates//crates:BUILD.zerotrie-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerovec-0.11.8\",\n sha256 = \"bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerovec/0.11.8/download\"],\n strip_prefix = \"zerovec-0.11.8\",\n build_file = Label(\"@crates//crates:BUILD.zerovec-0.11.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerovec-derive-0.11.6\",\n sha256 = \"34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerovec-derive/0.11.6/download\"],\n strip_prefix = \"zerovec-derive-0.11.6\",\n build_file = Label(\"@crates//crates:BUILD.zerovec-derive-0.11.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zmij-1.0.23\",\n sha256 = \"29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zmij/1.0.23/download\"],\n strip_prefix = \"zmij-1.0.23\",\n build_file = Label(\"@crates//crates:BUILD.zmij-1.0.23.bazel\"),\n )\n\n return [\n struct(repo = \"crates\", is_dev_dep = False),\n struct(repo=\"crates__futures-0.3.34\", is_dev_dep = False),\n struct(repo=\"crates__glob-0.3.4\", is_dev_dep = False),\n struct(repo=\"crates__js-sys-0.3.98\", is_dev_dep = False),\n struct(repo=\"crates__json-strip-comments-3.1.2\", is_dev_dep = False),\n struct(repo=\"crates__oxc-miette-derive-3.0.1\", is_dev_dep = False),\n struct(repo=\"crates__oxc_allocator-0.155.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_ast-0.155.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_ast_visit-0.155.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_diagnostics-0.155.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_parser-0.155.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_resolver-11.24.3\", is_dev_dep = False),\n struct(repo=\"crates__oxc_semantic-0.155.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_span-0.155.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_str-0.155.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_syntax-0.155.0\", is_dev_dep = False),\n struct(repo=\"crates__pathdiff-0.2.3\", is_dev_dep = False),\n struct(repo=\"crates__regex-1.13.1\", is_dev_dep = False),\n struct(repo=\"crates__self_cell-1.3.0\", is_dev_dep = False),\n struct(repo=\"crates__serde-1.0.229\", is_dev_dep = False),\n struct(repo=\"crates__serde_json-1.0.154\", is_dev_dep = False),\n struct(repo=\"crates__wasm-bindgen-0.2.121\", is_dev_dep = False),\n struct(repo = \"crates__tempfile-3.27.0\", is_dev_dep = True),\n ]\n", + "crates.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\"\"\"\n# `crates_repository` API\n\n- [aliases](#aliases)\n- [crate_edition](#crate_edition)\n- [crate_deps](#crate_deps)\n- [all_crate_deps](#all_crate_deps)\n- [crate_repositories](#crate_repositories)\n\n\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"git_repository\")\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nload(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")\nload(\"@bazel_skylib//lib:selects.bzl\", \"selects\")\nload(\"@rules_rust//crate_universe:defs.bzl\", \"crates_vendor_remote_repository\", \"local_crate_mirror\")\n\n###############################################################################\n# MACROS API\n###############################################################################\n\n# An identifier that represent common dependencies (unconditional).\n_COMMON_CONDITION = \"\"\n\ndef _flatten_dependency_maps(all_dependency_maps):\n \"\"\"Flatten a list of dependency maps into one dictionary.\n\n Dependency maps have the following structure:\n\n ```python\n DEPENDENCIES_MAP = {\n # The first key in the map is a Bazel package\n # name of the workspace this file is defined in.\n \"workspace_member_package\": {\n\n # Not all dependencies are supported for all platforms.\n # the condition key is the condition required to be true\n # on the host platform.\n \"condition\": {\n\n # An alias to a crate target. # The label of the crate target the\n # Aliases are only crate names. # package name refers to.\n \"package_name\": \"@full//:label\",\n }\n }\n }\n ```\n\n Args:\n all_dependency_maps (list): A list of dicts as described above\n\n Returns:\n dict: A dictionary as described above\n \"\"\"\n dependencies = {}\n\n for workspace_deps_map in all_dependency_maps:\n for pkg_name, conditional_deps_map in workspace_deps_map.items():\n if pkg_name not in dependencies:\n non_frozen_map = dict()\n for key, values in conditional_deps_map.items():\n non_frozen_map.update({key: dict(values.items())})\n dependencies.setdefault(pkg_name, non_frozen_map)\n continue\n\n for condition, deps_map in conditional_deps_map.items():\n # If the condition has not been recorded, do so and continue\n if condition not in dependencies[pkg_name]:\n dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))\n continue\n\n # Alert on any miss-matched dependencies\n inconsistent_entries = []\n for crate_name, crate_label in deps_map.items():\n existing = dependencies[pkg_name][condition].get(crate_name)\n if existing and existing != crate_label:\n inconsistent_entries.append((crate_name, existing, crate_label))\n dependencies[pkg_name][condition].update({crate_name: crate_label})\n\n return dependencies\n\ndef crate_deps(deps, package_name = None):\n \"\"\"Finds the fully qualified label of the requested crates for the package where this macro is called.\n\n Args:\n deps (list): The desired list of crate targets.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()`.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if not deps:\n return []\n\n if package_name == None:\n package_name = native.package_name()\n\n # Join both sets of dependencies\n dependencies = _flatten_dependency_maps([\n _NORMAL_DEPENDENCIES,\n _NORMAL_DEV_DEPENDENCIES,\n _PROC_MACRO_DEPENDENCIES,\n _PROC_MACRO_DEV_DEPENDENCIES,\n _BUILD_DEPENDENCIES,\n _BUILD_PROC_MACRO_DEPENDENCIES,\n ]).pop(package_name, {})\n\n # Combine all conditional packages so we can easily index over a flat list\n # TODO: Perhaps this should actually return select statements and maintain\n # the conditionals of the dependencies\n flat_deps = {}\n for deps_set in dependencies.values():\n for crate_name, crate_label in deps_set.items():\n flat_deps.update({crate_name: crate_label})\n\n missing_crates = []\n crate_targets = []\n for crate_target in deps:\n if crate_target not in flat_deps:\n missing_crates.append(crate_target)\n else:\n crate_targets.append(flat_deps[crate_target])\n\n if missing_crates:\n fail(\"Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`\".format(\n missing_crates,\n package_name,\n dependencies,\n ))\n\n return crate_targets\n\ndef crate_edition(package_name = None):\n \"\"\"Finds the Rust edition for the package where this macro is called.\n\n Args:\n package_name (str, optional): The package name whose edition should be\n looked up. Defaults to `native.package_name()` when unset.\n\n Returns:\n str: The Rust edition declared by the package's Cargo.toml file.\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n if package_name not in _CRATE_EDITIONS:\n fail(\"Tried to get crate_edition for package \" + package_name + \" but that package had no Cargo.toml file\")\n\n return _CRATE_EDITIONS[package_name]\n\ndef all_crate_deps(\n normal = False, \n normal_dev = False, \n proc_macro = False, \n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Finds the fully qualified label of all requested direct crate dependencies \\\n for the package where this macro is called.\n\n If no parameters are set, all normal dependencies are returned. Setting any one flag will\n otherwise impact the contents of the returned list.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list.\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_dependency_maps = []\n if normal:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n if normal_dev:\n all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)\n if proc_macro:\n all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)\n if proc_macro_dev:\n all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)\n if build:\n all_dependency_maps.append(_BUILD_DEPENDENCIES)\n if build_proc_macro:\n all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)\n\n # Default to always using normal dependencies\n if not all_dependency_maps:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n\n dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)\n\n if not dependencies:\n if dependencies == None:\n fail(\"Tried to get all_crate_deps for package \" + package_name + \" but that package had no Cargo.toml file\")\n else:\n return []\n\n crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())\n for condition, deps in dependencies.items():\n crate_deps += selects.with_or({\n tuple(_CONDITIONS[condition]): deps.values(),\n \"//conditions:default\": [],\n })\n\n return crate_deps\n\ndef aliases(\n normal = False,\n normal_dev = False,\n proc_macro = False,\n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Produces a map of Crate alias names to their original label\n\n If no dependency kinds are specified, `normal` and `proc_macro` are used by default.\n Setting any one flag will otherwise determine the contents of the returned dict.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n dict: The aliases of all associated packages\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_aliases_maps = []\n if normal:\n all_aliases_maps.append(_NORMAL_ALIASES)\n if normal_dev:\n all_aliases_maps.append(_NORMAL_DEV_ALIASES)\n if proc_macro:\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n if proc_macro_dev:\n all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)\n if build:\n all_aliases_maps.append(_BUILD_ALIASES)\n if build_proc_macro:\n all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)\n\n # Default to always using normal aliases\n if not all_aliases_maps:\n all_aliases_maps.append(_NORMAL_ALIASES)\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n\n aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)\n\n if not aliases:\n return dict()\n\n common_items = aliases.pop(_COMMON_CONDITION, {}).items()\n\n # If there are only common items in the dictionary, immediately return them\n if not len(aliases.keys()) == 1:\n return dict(common_items)\n\n # Build a single select statement where each conditional has accounted for the\n # common set of aliases.\n crate_aliases = {\"//conditions:default\": dict(common_items)}\n for condition, deps in aliases.items():\n condition_triples = _CONDITIONS[condition]\n for triple in condition_triples:\n if triple in crate_aliases:\n crate_aliases[triple].update(deps)\n else:\n crate_aliases.update({triple: dict(deps.items() + common_items)})\n\n return select(crate_aliases)\n\n###############################################################################\n# WORKSPACE MEMBER DEPS, ALIASES, AND EDITIONS\n###############################################################################\n\n_CRATE_EDITIONS = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": \"2021\",\n}\n\n_NORMAL_DEPENDENCIES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n _COMMON_CONDITION: {\n \"futures\": Label(\"@crates//futures-0.3.34\"),\n \"glob\": Label(\"@crates//glob-0.3.4\"),\n \"js-sys\": Label(\"@crates//js-sys-0.3.98\"),\n \"json-strip-comments\": Label(\"@crates//json-strip-comments-3.1.2\"),\n \"oxc_allocator\": Label(\"@crates//oxc_allocator-0.144.0\"),\n \"oxc_ast\": Label(\"@crates//oxc_ast-0.144.0\"),\n \"oxc_ast_visit\": Label(\"@crates//oxc_ast_visit-0.144.0\"),\n \"oxc_diagnostics\": Label(\"@crates//oxc_diagnostics-0.144.0\"),\n \"oxc_parser\": Label(\"@crates//oxc_parser-0.144.0\"),\n \"oxc_resolver\": Label(\"@crates//oxc_resolver-11.24.3\"),\n \"oxc_semantic\": Label(\"@crates//oxc_semantic-0.144.0\"),\n \"oxc_span\": Label(\"@crates//oxc_span-0.144.0\"),\n \"oxc_syntax\": Label(\"@crates//oxc_syntax-0.144.0\"),\n \"pathdiff\": Label(\"@crates//pathdiff-0.2.3\"),\n \"regex\": Label(\"@crates//regex-1.13.1\"),\n \"self_cell\": Label(\"@crates//self_cell-1.3.0\"),\n \"serde\": Label(\"@crates//serde-1.0.229\"),\n \"serde_json\": Label(\"@crates//serde_json-1.0.154\"),\n \"wasm-bindgen\": Label(\"@crates//wasm-bindgen-0.2.121\"),\n },\n },\n}\n\n\n_NORMAL_ALIASES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_NORMAL_DEV_DEPENDENCIES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n _COMMON_CONDITION: {\n \"tempfile\": Label(\"@crates//tempfile-3.27.0\"),\n },\n },\n}\n\n\n_NORMAL_DEV_ALIASES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_PROC_MACRO_DEPENDENCIES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n _COMMON_CONDITION: {\n \"oxc-miette-derive\": Label(\"@crates//oxc-miette-derive-3.0.1\"),\n },\n },\n}\n\n\n_PROC_MACRO_ALIASES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n },\n}\n\n\n_PROC_MACRO_DEV_DEPENDENCIES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n },\n}\n\n\n_PROC_MACRO_DEV_ALIASES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_BUILD_DEPENDENCIES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n },\n}\n\n\n_BUILD_ALIASES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_DEPENDENCIES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_ALIASES = {\n \"packages/compiler-cli/preprocessor/ng-analyze\": {\n },\n}\n\n\n_CONDITIONS = {\n \"aarch64-apple-darwin\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"aarch64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [],\n \"cfg(all(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"), not(any(all(target_os = \\\"linux\\\", target_env = \\\"\\\"), getrandom_backend = \\\"custom\\\", getrandom_backend = \\\"linux_raw\\\", getrandom_backend = \\\"rdrand\\\", getrandom_backend = \\\"rndr\\\"))))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(not(rustix_use_libc), not(miri), target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\"))))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(all(target_os = \\\"uefi\\\", getrandom_backend = \\\"efi_rng\\\"))\": [],\n \"cfg(any())\": [],\n \"cfg(any(target_os = \\\"dragonfly\\\", target_os = \\\"freebsd\\\", target_os = \\\"hurd\\\", target_os = \\\"illumos\\\", target_os = \\\"cygwin\\\", all(target_os = \\\"horizon\\\", target_arch = \\\"arm\\\")))\": [],\n \"cfg(any(target_os = \\\"haiku\\\", target_os = \\\"redox\\\", target_os = \\\"nto\\\", target_os = \\\"aix\\\"))\": [],\n \"cfg(any(target_os = \\\"ios\\\", target_os = \\\"visionos\\\", target_os = \\\"watchos\\\", target_os = \\\"tvos\\\"))\": [],\n \"cfg(any(target_os = \\\"macos\\\", target_os = \\\"linux\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any(target_os = \\\"macos\\\", target_os = \\\"openbsd\\\", target_os = \\\"vita\\\", target_os = \\\"emscripten\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(any(unix, target_os = \\\"wasi\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_arch = \\\"x86_64\\\")\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_endian = \\\"little\\\")\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_os = \\\"hermit\\\")\": [],\n \"cfg(target_os = \\\"netbsd\\\")\": [],\n \"cfg(target_os = \\\"redox\\\")\": [],\n \"cfg(target_os = \\\"solaris\\\")\": [],\n \"cfg(target_os = \\\"vxworks\\\")\": [],\n \"cfg(target_os = \\\"wasi\\\")\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(target_os = \\\"windows\\\")\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(unix)\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(windows)\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"wasm32-unknown-unknown\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"wasm32-wasip1\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"x86_64-pc-windows-msvc\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"x86_64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"x86_64-unknown-nixos-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n}\n\n###############################################################################\n\ndef crate_repositories():\n \"\"\"A macro for defining repositories for all generated crates.\n\n Returns:\n A list of repos visible to the module through the module extension.\n \"\"\"\n maybe(\n crates_vendor_remote_repository,\n name = \"crates\",\n # Lean interface: just point at `crates.bzl`; the repo rule\n # derives the sibling `BUILD.bazel` and `defs.bzl`.\n crates_module = Label(\"@crates//crates:crates.bzl\"),\n )\n maybe(\n http_archive,\n name = \"crates__aho-corasick-1.1.5\",\n sha256 = \"c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aho-corasick/1.1.5/download\"],\n strip_prefix = \"aho-corasick-1.1.5\",\n build_file = Label(\"@crates//crates:BUILD.aho-corasick-1.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__allocator-api2-0.2.21\",\n sha256 = \"683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/allocator-api2/0.2.21/download\"],\n strip_prefix = \"allocator-api2-0.2.21\",\n build_file = Label(\"@crates//crates:BUILD.allocator-api2-0.2.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__arrayvec-0.7.8\",\n sha256 = \"d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/arrayvec/0.7.8/download\"],\n strip_prefix = \"arrayvec-0.7.8\",\n build_file = Label(\"@crates//crates:BUILD.arrayvec-0.7.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__autocfg-1.5.1\",\n sha256 = \"f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/autocfg/1.5.1/download\"],\n strip_prefix = \"autocfg-1.5.1\",\n build_file = Label(\"@crates//crates:BUILD.autocfg-1.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bitflags-2.13.2\",\n sha256 = \"3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitflags/2.13.2/download\"],\n strip_prefix = \"bitflags-2.13.2\",\n build_file = Label(\"@crates//crates:BUILD.bitflags-2.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bumpalo-3.20.3\",\n sha256 = \"72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bumpalo/3.20.3/download\"],\n strip_prefix = \"bumpalo-3.20.3\",\n build_file = Label(\"@crates//crates:BUILD.bumpalo-3.20.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bytecount-0.6.9\",\n sha256 = \"175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bytecount/0.6.9/download\"],\n strip_prefix = \"bytecount-0.6.9\",\n build_file = Label(\"@crates//crates:BUILD.bytecount-0.6.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__castaway-0.2.4\",\n sha256 = \"dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/castaway/0.2.4/download\"],\n strip_prefix = \"castaway-0.2.4\",\n build_file = Label(\"@crates//crates:BUILD.castaway-0.2.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cfg-if-1.0.5\",\n sha256 = \"4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cfg-if/1.0.5/download\"],\n strip_prefix = \"cfg-if-1.0.5\",\n build_file = Label(\"@crates//crates:BUILD.cfg-if-1.0.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__compact_str-0.10.0\",\n sha256 = \"79fcda08c33bb58b97008b2cdada6622500e949e060f5913361763121abd2416\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/compact_str/0.10.0/download\"],\n strip_prefix = \"compact_str-0.10.0\",\n build_file = Label(\"@crates//crates:BUILD.compact_str-0.10.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cow-utils-0.1.3\",\n sha256 = \"417bef24afe1460300965a25ff4a24b8b45ad011948302ec221e8a0a81eb2c79\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cow-utils/0.1.3/download\"],\n strip_prefix = \"cow-utils-0.1.3\",\n build_file = Label(\"@crates//crates:BUILD.cow-utils-0.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-utils-0.8.23\",\n sha256 = \"a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-utils/0.8.23/download\"],\n strip_prefix = \"crossbeam-utils-0.8.23\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-utils-0.8.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dashmap-6.2.1\",\n sha256 = \"e6361d5c062261c78a176addb82d4c821ae42bed6089de0e12603cd25de2059c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dashmap/6.2.1/download\"],\n strip_prefix = \"dashmap-6.2.1\",\n build_file = Label(\"@crates//crates:BUILD.dashmap-6.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__displaydoc-0.2.7\",\n sha256 = \"c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/displaydoc/0.2.7/download\"],\n strip_prefix = \"displaydoc-0.2.7\",\n build_file = Label(\"@crates//crates:BUILD.displaydoc-0.2.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dragonbox_ecma-0.1.12\",\n sha256 = \"fd8e701084c37e7ef62d3f9e453b618130cbc0ef3573847785952a3ac3f746bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dragonbox_ecma/0.1.12/download\"],\n strip_prefix = \"dragonbox_ecma-0.1.12\",\n build_file = Label(\"@crates//crates:BUILD.dragonbox_ecma-0.1.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__either-1.19.0\",\n sha256 = \"0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/either/1.19.0/download\"],\n strip_prefix = \"either-1.19.0\",\n build_file = Label(\"@crates//crates:BUILD.either-1.19.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__equivalent-1.0.3\",\n sha256 = \"00d174d5400e5e8fd687ad1049e2f578285fa914201b1af7e8b112a4546bd826\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/equivalent/1.0.3/download\"],\n strip_prefix = \"equivalent-1.0.3\",\n build_file = Label(\"@crates//crates:BUILD.equivalent-1.0.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__errno-0.3.14\",\n sha256 = \"39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/errno/0.3.14/download\"],\n strip_prefix = \"errno-0.3.14\",\n build_file = Label(\"@crates//crates:BUILD.errno-0.3.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fast-glob-1.1.2\",\n sha256 = \"2a044ed96eb57253e806d08b74260638af189687e583f04947a5e11e75e0b0d1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fast-glob/1.1.2/download\"],\n strip_prefix = \"fast-glob-1.1.2\",\n build_file = Label(\"@crates//crates:BUILD.fast-glob-1.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fastrand-2.5.0\",\n sha256 = \"da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fastrand/2.5.0/download\"],\n strip_prefix = \"fastrand-2.5.0\",\n build_file = Label(\"@crates//crates:BUILD.fastrand-2.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__float-cmp-0.10.0\",\n sha256 = \"b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/float-cmp/0.10.0/download\"],\n strip_prefix = \"float-cmp-0.10.0\",\n build_file = Label(\"@crates//crates:BUILD.float-cmp-0.10.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__foldhash-0.2.0\",\n sha256 = \"77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/foldhash/0.2.0/download\"],\n strip_prefix = \"foldhash-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.foldhash-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-0.3.34\",\n sha256 = \"9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures/0.3.34/download\"],\n strip_prefix = \"futures-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-channel-0.3.34\",\n sha256 = \"b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-channel/0.3.34/download\"],\n strip_prefix = \"futures-channel-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-channel-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-core-0.3.34\",\n sha256 = \"92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-core/0.3.34/download\"],\n strip_prefix = \"futures-core-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-core-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-executor-0.3.34\",\n sha256 = \"031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-executor/0.3.34/download\"],\n strip_prefix = \"futures-executor-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-executor-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-io-0.3.34\",\n sha256 = \"53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-io/0.3.34/download\"],\n strip_prefix = \"futures-io-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-io-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-macro-0.3.34\",\n sha256 = \"9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-macro/0.3.34/download\"],\n strip_prefix = \"futures-macro-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-macro-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-sink-0.3.34\",\n sha256 = \"1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-sink/0.3.34/download\"],\n strip_prefix = \"futures-sink-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-sink-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-task-0.3.34\",\n sha256 = \"cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-task/0.3.34/download\"],\n strip_prefix = \"futures-task-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-task-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-util-0.3.34\",\n sha256 = \"0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-util/0.3.34/download\"],\n strip_prefix = \"futures-util-0.3.34\",\n build_file = Label(\"@crates//crates:BUILD.futures-util-0.3.34.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__getrandom-0.4.3\",\n sha256 = \"300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/getrandom/0.4.3/download\"],\n strip_prefix = \"getrandom-0.4.3\",\n build_file = Label(\"@crates//crates:BUILD.getrandom-0.4.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__glob-0.3.4\",\n sha256 = \"e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/glob/0.3.4/download\"],\n strip_prefix = \"glob-0.3.4\",\n build_file = Label(\"@crates//crates:BUILD.glob-0.3.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__halfbrown-0.4.0\",\n sha256 = \"0c7ed2f2edad8a14c8186b847909a41fbb9c3eafa44f88bd891114ed5019da09\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/halfbrown/0.4.0/download\"],\n strip_prefix = \"halfbrown-0.4.0\",\n build_file = Label(\"@crates//crates:BUILD.halfbrown-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.14.5\",\n sha256 = \"e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.14.5/download\"],\n strip_prefix = \"hashbrown-0.14.5\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.14.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.16.1\",\n sha256 = \"841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.16.1/download\"],\n strip_prefix = \"hashbrown-0.16.1\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.16.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.17.1\",\n sha256 = \"ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.17.1/download\"],\n strip_prefix = \"hashbrown-0.17.1\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.17.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_collections-2.3.0\",\n sha256 = \"fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_collections/2.3.0/download\"],\n strip_prefix = \"icu_collections-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_collections-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_locale_core-2.3.0\",\n sha256 = \"d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_locale_core/2.3.0/download\"],\n strip_prefix = \"icu_locale_core-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_locale_core-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_locale_fallback-2.3.0\",\n sha256 = \"251af8e57c9400e3eb58242fe5b8b1152b2a64fdf4cf632f923c38ccee6f2fa9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_locale_fallback/2.3.0/download\"],\n strip_prefix = \"icu_locale_fallback-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_locale_fallback-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_locale_fallback_data-2.3.0\",\n sha256 = \"decf2a22ec8fa68f1a0c1129a3f8583f8f8bc24e8b9ccbe98ead99f62a4dc3a8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_locale_fallback_data/2.3.0/download\"],\n strip_prefix = \"icu_locale_fallback_data-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_locale_fallback_data-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_provider-2.3.1\",\n sha256 = \"d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_provider/2.3.1/download\"],\n strip_prefix = \"icu_provider-2.3.1\",\n build_file = Label(\"@crates//crates:BUILD.icu_provider-2.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_segmenter-2.3.0\",\n sha256 = \"82d07aafccd67af15d02512a6adf5896fbc5ed00f2e99b471d2efa14016db3db\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_segmenter/2.3.0/download\"],\n strip_prefix = \"icu_segmenter-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_segmenter-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_segmenter_data-2.3.0\",\n sha256 = \"ae293c039020f9ec10710af98d29ce6aa2051486638b49c9a6409f3b4a9e98ad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_segmenter_data/2.3.0/download\"],\n strip_prefix = \"icu_segmenter_data-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_segmenter_data-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__indexmap-2.14.2\",\n sha256 = \"cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indexmap/2.14.2/download\"],\n strip_prefix = \"indexmap-2.14.2\",\n build_file = Label(\"@crates//crates:BUILD.indexmap-2.14.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itertools-0.15.0\",\n sha256 = \"8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itertools/0.15.0/download\"],\n strip_prefix = \"itertools-0.15.0\",\n build_file = Label(\"@crates//crates:BUILD.itertools-0.15.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itoa-1.0.18\",\n sha256 = \"8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itoa/1.0.18/download\"],\n strip_prefix = \"itoa-1.0.18\",\n build_file = Label(\"@crates//crates:BUILD.itoa-1.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__js-sys-0.3.98\",\n sha256 = \"67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/js-sys/0.3.98/download\"],\n strip_prefix = \"js-sys-0.3.98\",\n build_file = Label(\"@crates//crates:BUILD.js-sys-0.3.98.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__json-strip-comments-3.1.2\",\n sha256 = \"01ed659c5f428031b9c1fb7de6729af2eb491654d4bcd416a5b5b704986b9658\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/json-strip-comments/3.1.2/download\"],\n strip_prefix = \"json-strip-comments-3.1.2\",\n build_file = Label(\"@crates//crates:BUILD.json-strip-comments-3.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libc-0.2.191\",\n sha256 = \"65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libc/0.2.191/download\"],\n strip_prefix = \"libc-0.2.191\",\n build_file = Label(\"@crates//crates:BUILD.libc-0.2.191.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__linux-raw-sys-0.12.1\",\n sha256 = \"32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/linux-raw-sys/0.12.1/download\"],\n strip_prefix = \"linux-raw-sys-0.12.1\",\n build_file = Label(\"@crates//crates:BUILD.linux-raw-sys-0.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__litemap-0.8.3\",\n sha256 = \"47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/litemap/0.8.3/download\"],\n strip_prefix = \"litemap-0.8.3\",\n build_file = Label(\"@crates//crates:BUILD.litemap-0.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lock_api-0.4.14\",\n sha256 = \"224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lock_api/0.4.14/download\"],\n strip_prefix = \"lock_api-0.4.14\",\n build_file = Label(\"@crates//crates:BUILD.lock_api-0.4.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memchr-2.8.3\",\n sha256 = \"cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memchr/2.8.3/download\"],\n strip_prefix = \"memchr-2.8.3\",\n build_file = Label(\"@crates//crates:BUILD.memchr-2.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__nodejs-built-in-modules-1.0.0\",\n sha256 = \"a5eb86a92577833b75522336f210c49d9ebd7dd55a44d80a92e68c668a75f27c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nodejs-built-in-modules/1.0.0/download\"],\n strip_prefix = \"nodejs-built-in-modules-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.nodejs-built-in-modules-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__nonmax-0.5.5\",\n sha256 = \"610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nonmax/0.5.5/download\"],\n strip_prefix = \"nonmax-0.5.5\",\n build_file = Label(\"@crates//crates:BUILD.nonmax-0.5.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-bigint-0.5.1\",\n sha256 = \"93e7820bc0a80a0238e650327316f929ba18d5be054b647490a3a6a339f3e7c0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-bigint/0.5.1/download\"],\n strip_prefix = \"num-bigint-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.num-bigint-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-integer-0.1.47\",\n sha256 = \"7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-integer/0.1.47/download\"],\n strip_prefix = \"num-integer-0.1.47\",\n build_file = Label(\"@crates//crates:BUILD.num-integer-0.1.47.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-traits-0.2.19\",\n sha256 = \"071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-traits/0.2.19/download\"],\n strip_prefix = \"num-traits-0.2.19\",\n build_file = Label(\"@crates//crates:BUILD.num-traits-0.2.19.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__once_cell-1.21.4\",\n sha256 = \"9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/once_cell/1.21.4/download\"],\n strip_prefix = \"once_cell-1.21.4\",\n build_file = Label(\"@crates//crates:BUILD.once_cell-1.21.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__owo-colors-4.4.0\",\n sha256 = \"13c45bb4a6ae1280ec0803b1ef9d3455eb50f01efbbe1447ab020f1d54fba9d8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/owo-colors/4.4.0/download\"],\n strip_prefix = \"owo-colors-4.4.0\",\n build_file = Label(\"@crates//crates:BUILD.owo-colors-4.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc-miette-4.0.0\",\n sha256 = \"330e07b3807046e0afa8fcc94f1fe976e93831b370d148bfe1168cb53da1b913\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc-miette/4.0.0/download\"],\n strip_prefix = \"oxc-miette-4.0.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc-miette-4.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc-miette-derive-3.0.1\",\n sha256 = \"acc072d11d45ebe7801459b4e829184ba0934d68027fdc51d327335b53a95a49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc-miette-derive/3.0.1/download\"],\n strip_prefix = \"oxc-miette-derive-3.0.1\",\n build_file = Label(\"@crates//crates:BUILD.oxc-miette-derive-3.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_allocator-0.144.0\",\n sha256 = \"9262c7bbd58c8c32c2c60d1a7b6c274cd2aeaff1b726a2fb86081b75084698cb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_allocator/0.144.0/download\"],\n strip_prefix = \"oxc_allocator-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_allocator-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_ast-0.144.0\",\n sha256 = \"e8134809b665d524d9a0ddeee87a5d3602776aa2410a10a0439fd25eeb594a5d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_ast/0.144.0/download\"],\n strip_prefix = \"oxc_ast-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_ast-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_ast_macros-0.144.0\",\n sha256 = \"ac120c6863a9d036c78a42a5e4d2f58bb27c5df795d61d904f6e19e48c681a37\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_ast_macros/0.144.0/download\"],\n strip_prefix = \"oxc_ast_macros-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_ast_macros-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_ast_visit-0.144.0\",\n sha256 = \"4a57626cd6ef87f5173110a301868e3c438fd8e0576f489d9a61540ef133f686\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_ast_visit/0.144.0/download\"],\n strip_prefix = \"oxc_ast_visit-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_ast_visit-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_data_structures-0.144.0\",\n sha256 = \"2a71efea56db93d3ce9e88e1d9f74f6d50fc2b06092444cdd08579f5827fd8db\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_data_structures/0.144.0/download\"],\n strip_prefix = \"oxc_data_structures-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_data_structures-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_diagnostics-0.144.0\",\n sha256 = \"e5ff8638533094ecdcd38a63930c003c261d81650e4531c3bc805c797aec2a52\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_diagnostics/0.144.0/download\"],\n strip_prefix = \"oxc_diagnostics-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_diagnostics-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_ecmascript-0.144.0\",\n sha256 = \"77c7a326f49f06da37affdcad2fb3ebab46ac4ada8953a428f7cbd04e5cc9e6e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_ecmascript/0.144.0/download\"],\n strip_prefix = \"oxc_ecmascript-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_ecmascript-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_estree-0.144.0\",\n sha256 = \"8275fcb9674a1c320f0bdbc2f534ba9bb09fcb8b1c9fe306c9595d262a06bfcb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_estree/0.144.0/download\"],\n strip_prefix = \"oxc_estree-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_estree-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_index-5.0.0\",\n sha256 = \"191884bee6c3744909a51acc7d78d4ae370d817b25875b10642f632327b6296e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_index/5.0.0/download\"],\n strip_prefix = \"oxc_index-5.0.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_index-5.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_parser-0.144.0\",\n sha256 = \"d13016de81370106ea4065cfabe4a278dc09e82523cfe22bb6a8ab8e993b4c3a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_parser/0.144.0/download\"],\n strip_prefix = \"oxc_parser-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_parser-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_regular_expression-0.144.0\",\n sha256 = \"c375b89d88ec03301b0e62528715699551871861197aa39148e95a1422e1ae9b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_regular_expression/0.144.0/download\"],\n strip_prefix = \"oxc_regular_expression-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_regular_expression-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_resolver-11.24.3\",\n sha256 = \"2c7fd0839a5ecee17c0d2c88c8006e8ab4dff25d4a79e3a0bf7a9f0cce17f4e3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_resolver/11.24.3/download\"],\n strip_prefix = \"oxc_resolver-11.24.3\",\n build_file = Label(\"@crates//crates:BUILD.oxc_resolver-11.24.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_semantic-0.144.0\",\n sha256 = \"0d8d80604c4220c8f5b1c19682216921397fb45a616db47d3a044474662f0c2e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_semantic/0.144.0/download\"],\n strip_prefix = \"oxc_semantic-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_semantic-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_span-0.144.0\",\n sha256 = \"abd732008dbfb09984106925f7ff7268687c8020b89bd7ee0f0b695c5bb07950\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_span/0.144.0/download\"],\n strip_prefix = \"oxc_span-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_span-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_str-0.144.0\",\n sha256 = \"e1d2ccb0f5aa4da9fc98ef70f59553c2779e28e064a8b271fcb1e88c11a63607\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_str/0.144.0/download\"],\n strip_prefix = \"oxc_str-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_str-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oxc_syntax-0.144.0\",\n sha256 = \"15ff0e987ab15a71dae36fd544b9859513e76639e2cc6c5e25895081162755b1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oxc_syntax/0.144.0/download\"],\n strip_prefix = \"oxc_syntax-0.144.0\",\n build_file = Label(\"@crates//crates:BUILD.oxc_syntax-0.144.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__parking_lot_core-0.9.12\",\n sha256 = \"2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/parking_lot_core/0.9.12/download\"],\n strip_prefix = \"parking_lot_core-0.9.12\",\n build_file = Label(\"@crates//crates:BUILD.parking_lot_core-0.9.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pathdiff-0.2.3\",\n sha256 = \"df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pathdiff/0.2.3/download\"],\n strip_prefix = \"pathdiff-0.2.3\",\n build_file = Label(\"@crates//crates:BUILD.pathdiff-0.2.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__percent-encoding-2.3.2\",\n sha256 = \"9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/percent-encoding/2.3.2/download\"],\n strip_prefix = \"percent-encoding-2.3.2\",\n build_file = Label(\"@crates//crates:BUILD.percent-encoding-2.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf-0.14.0\",\n sha256 = \"010378780309880b08997fae13be7834dba947d36393bd372f2b1556deb2a2f6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf/0.14.0/download\"],\n strip_prefix = \"phf-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.phf-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_generator-0.14.0\",\n sha256 = \"aeb62e0959d5a1bebc965f4d15d9e2b7cea002b6b0f5ba8cde6cc26738467100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_generator/0.14.0/download\"],\n strip_prefix = \"phf_generator-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.phf_generator-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_macros-0.14.0\",\n sha256 = \"5fa8d0ca26d424d27630da600c6624696e7dec8bf7b3b492b383c5dc49e5e085\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_macros/0.14.0/download\"],\n strip_prefix = \"phf_macros-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.phf_macros-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_shared-0.14.0\",\n sha256 = \"c6fd9027e2d9319be6349febd1db4e8d02aa544921200c9b777720ac34a3aa89\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_shared/0.14.0/download\"],\n strip_prefix = \"phf_shared-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.phf_shared-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pin-project-lite-0.2.17\",\n sha256 = \"a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project-lite/0.2.17/download\"],\n strip_prefix = \"pin-project-lite-0.2.17\",\n build_file = Label(\"@crates//crates:BUILD.pin-project-lite-0.2.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__potential_utf-0.1.6\",\n sha256 = \"d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/potential_utf/0.1.6/download\"],\n strip_prefix = \"potential_utf-0.1.6\",\n build_file = Label(\"@crates//crates:BUILD.potential_utf-0.1.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro2-1.0.107\",\n sha256 = \"985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2/1.0.107/download\"],\n strip_prefix = \"proc-macro2-1.0.107\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro2-1.0.107.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quote-1.0.47\",\n sha256 = \"1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quote/1.0.47/download\"],\n strip_prefix = \"quote-1.0.47\",\n build_file = Label(\"@crates//crates:BUILD.quote-1.0.47.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__r-efi-6.0.0\",\n sha256 = \"f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/r-efi/6.0.0/download\"],\n strip_prefix = \"r-efi-6.0.0\",\n build_file = Label(\"@crates//crates:BUILD.r-efi-6.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__redox_syscall-0.5.18\",\n sha256 = \"ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/redox_syscall/0.5.18/download\"],\n strip_prefix = \"redox_syscall-0.5.18\",\n build_file = Label(\"@crates//crates:BUILD.redox_syscall-0.5.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ref-cast-1.0.27\",\n sha256 = \"7e440fb4e4b4147295338efb76001ab9e4efc0e5839df2c47fc5ac2381d365c3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ref-cast/1.0.27/download\"],\n strip_prefix = \"ref-cast-1.0.27\",\n build_file = Label(\"@crates//crates:BUILD.ref-cast-1.0.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ref-cast-impl-1.0.27\",\n sha256 = \"92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ref-cast-impl/1.0.27/download\"],\n strip_prefix = \"ref-cast-impl-1.0.27\",\n build_file = Label(\"@crates//crates:BUILD.ref-cast-impl-1.0.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-1.13.1\",\n sha256 = \"f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex/1.13.1/download\"],\n strip_prefix = \"regex-1.13.1\",\n build_file = Label(\"@crates//crates:BUILD.regex-1.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-automata-0.4.18\",\n sha256 = \"ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex-automata/0.4.18/download\"],\n strip_prefix = \"regex-automata-0.4.18\",\n build_file = Label(\"@crates//crates:BUILD.regex-automata-0.4.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-syntax-0.8.11\",\n sha256 = \"d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex-syntax/0.8.11/download\"],\n strip_prefix = \"regex-syntax-0.8.11\",\n build_file = Label(\"@crates//crates:BUILD.regex-syntax-0.8.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustc-hash-2.1.3\",\n sha256 = \"6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc-hash/2.1.3/download\"],\n strip_prefix = \"rustc-hash-2.1.3\",\n build_file = Label(\"@crates//crates:BUILD.rustc-hash-2.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustix-1.1.5\",\n sha256 = \"891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustix/1.1.5/download\"],\n strip_prefix = \"rustix-1.1.5\",\n build_file = Label(\"@crates//crates:BUILD.rustix-1.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustversion-1.0.23\",\n sha256 = \"cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustversion/1.0.23/download\"],\n strip_prefix = \"rustversion-1.0.23\",\n build_file = Label(\"@crates//crates:BUILD.rustversion-1.0.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ryu-1.0.23\",\n sha256 = \"9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ryu/1.0.23/download\"],\n strip_prefix = \"ryu-1.0.23\",\n build_file = Label(\"@crates//crates:BUILD.ryu-1.0.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__scopeguard-1.2.0\",\n sha256 = \"94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/scopeguard/1.2.0/download\"],\n strip_prefix = \"scopeguard-1.2.0\",\n build_file = Label(\"@crates//crates:BUILD.scopeguard-1.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__self_cell-1.3.0\",\n sha256 = \"2ab42ca02749e120097e328d91d415325bdf43b1c72c4c8badf37375fe40a813\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/self_cell/1.3.0/download\"],\n strip_prefix = \"self_cell-1.3.0\",\n build_file = Label(\"@crates//crates:BUILD.self_cell-1.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__seq-macro-0.3.6\",\n sha256 = \"1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/seq-macro/0.3.6/download\"],\n strip_prefix = \"seq-macro-0.3.6\",\n build_file = Label(\"@crates//crates:BUILD.seq-macro-0.3.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde-1.0.229\",\n sha256 = \"4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde/1.0.229/download\"],\n strip_prefix = \"serde-1.0.229\",\n build_file = Label(\"@crates//crates:BUILD.serde-1.0.229.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_core-1.0.229\",\n sha256 = \"67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_core/1.0.229/download\"],\n strip_prefix = \"serde_core-1.0.229\",\n build_file = Label(\"@crates//crates:BUILD.serde_core-1.0.229.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_derive-1.0.229\",\n sha256 = \"e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_derive/1.0.229/download\"],\n strip_prefix = \"serde_derive-1.0.229\",\n build_file = Label(\"@crates//crates:BUILD.serde_derive-1.0.229.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_json-1.0.154\",\n sha256 = \"e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_json/1.0.154/download\"],\n strip_prefix = \"serde_json-1.0.154\",\n build_file = Label(\"@crates//crates:BUILD.serde_json-1.0.154.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__simd-json-0.18.1\",\n sha256 = \"6ebe141eb4a23ecc4d5de93fa5b139ac65dc07c38037a2fe9a8fb7c9d36bd832\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/simd-json/0.18.1/download\"],\n strip_prefix = \"simd-json-0.18.1\",\n build_file = Label(\"@crates//crates:BUILD.simd-json-0.18.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__simdutf8-0.1.5\",\n sha256 = \"e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/simdutf8/0.1.5/download\"],\n strip_prefix = \"simdutf8-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.simdutf8-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__siphasher-1.0.4\",\n sha256 = \"33f4fe9184a62d842c9ef383018f3306d8ba224fd9d836f56d7288308847c256\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/siphasher/1.0.4/download\"],\n strip_prefix = \"siphasher-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.siphasher-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__slab-0.4.12\",\n sha256 = \"0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/slab/0.4.12/download\"],\n strip_prefix = \"slab-0.4.12\",\n build_file = Label(\"@crates//crates:BUILD.slab-0.4.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__smallvec-1.16.3\",\n sha256 = \"5b3dc8af474f516a851ff4bd12db780f948b9250ad37211e4eec0bccea54e01b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smallvec/1.16.3/download\"],\n strip_prefix = \"smallvec-1.16.3\",\n build_file = Label(\"@crates//crates:BUILD.smallvec-1.16.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__smawk-0.3.3\",\n sha256 = \"e8e2fb0f499abb4d162f2bedad68f5ef91a1682b5a03596ddb67efd37768d100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smawk/0.3.3/download\"],\n strip_prefix = \"smawk-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.smawk-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__stable_deref_trait-1.2.1\",\n sha256 = \"6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/stable_deref_trait/1.2.1/download\"],\n strip_prefix = \"stable_deref_trait-1.2.1\",\n build_file = Label(\"@crates//crates:BUILD.stable_deref_trait-1.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__static_assertions-1.1.0\",\n sha256 = \"a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/static_assertions/1.1.0/download\"],\n strip_prefix = \"static_assertions-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.static_assertions-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-2.0.119\",\n sha256 = \"872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/2.0.119/download\"],\n strip_prefix = \"syn-2.0.119\",\n build_file = Label(\"@crates//crates:BUILD.syn-2.0.119.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-3.0.9\",\n sha256 = \"d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/3.0.9/download\"],\n strip_prefix = \"syn-3.0.9\",\n build_file = Label(\"@crates//crates:BUILD.syn-3.0.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__synstructure-0.14.0\",\n sha256 = \"901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/synstructure/0.14.0/download\"],\n strip_prefix = \"synstructure-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.synstructure-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tempfile-3.27.0\",\n sha256 = \"32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tempfile/3.27.0/download\"],\n strip_prefix = \"tempfile-3.27.0\",\n build_file = Label(\"@crates//crates:BUILD.tempfile-3.27.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__textwrap-0.16.4\",\n sha256 = \"6ecfad6c3abc80a577f2b91c1e412ee57e7a060d430b553c1b0c940974ebcd49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/textwrap/0.16.4/download\"],\n strip_prefix = \"textwrap-0.16.4\",\n build_file = Label(\"@crates//crates:BUILD.textwrap-0.16.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-2.0.21\",\n sha256 = \"09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror/2.0.21/download\"],\n strip_prefix = \"thiserror-2.0.21\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-2.0.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-impl-2.0.21\",\n sha256 = \"fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror-impl/2.0.21/download\"],\n strip_prefix = \"thiserror-impl-2.0.21\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-impl-2.0.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tinystr-0.8.4\",\n sha256 = \"b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tinystr/0.8.4/download\"],\n strip_prefix = \"tinystr-0.8.4\",\n build_file = Label(\"@crates//crates:BUILD.tinystr-0.8.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-0.1.44\",\n sha256 = \"63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing/0.1.44/download\"],\n strip_prefix = \"tracing-0.1.44\",\n build_file = Label(\"@crates//crates:BUILD.tracing-0.1.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-attributes-0.1.31\",\n sha256 = \"7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-attributes/0.1.31/download\"],\n strip_prefix = \"tracing-attributes-0.1.31\",\n build_file = Label(\"@crates//crates:BUILD.tracing-attributes-0.1.31.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-core-0.1.36\",\n sha256 = \"db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-core/0.1.36/download\"],\n strip_prefix = \"tracing-core-0.1.36\",\n build_file = Label(\"@crates//crates:BUILD.tracing-core-0.1.36.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-id-start-1.5.0\",\n sha256 = \"0825d2e09dcae814a4273c1e1435979d414ede25b2ee235b1545da6682483765\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-id-start/1.5.0/download\"],\n strip_prefix = \"unicode-id-start-1.5.0\",\n build_file = Label(\"@crates//crates:BUILD.unicode-id-start-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-ident-1.0.27\",\n sha256 = \"a2c754d6c33795a1c324727428e5a7dedb5b06195f9890bdbcba760d3e246563\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-ident/1.0.27/download\"],\n strip_prefix = \"unicode-ident-1.0.27\",\n build_file = Label(\"@crates//crates:BUILD.unicode-ident-1.0.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-segmentation-1.13.3\",\n sha256 = \"c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-segmentation/1.13.3/download\"],\n strip_prefix = \"unicode-segmentation-1.13.3\",\n build_file = Label(\"@crates//crates:BUILD.unicode-segmentation-1.13.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-width-0.2.2\",\n sha256 = \"b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-width/0.2.2/download\"],\n strip_prefix = \"unicode-width-0.2.2\",\n build_file = Label(\"@crates//crates:BUILD.unicode-width-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__utf8_iter-1.0.4\",\n sha256 = \"b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/utf8_iter/1.0.4/download\"],\n strip_prefix = \"utf8_iter-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.utf8_iter-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__value-trait-0.12.2\",\n sha256 = \"f3f4b4a98dfe54bc9ed3641af7ffcb837240269627dbd5cb047d13daa39736cc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/value-trait/0.12.2/download\"],\n strip_prefix = \"value-trait-0.12.2\",\n build_file = Label(\"@crates//crates:BUILD.value-trait-0.12.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-0.2.121\",\n sha256 = \"49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen/0.2.121/download\"],\n strip_prefix = \"wasm-bindgen-0.2.121\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-0.2.121.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-macro-0.2.121\",\n sha256 = \"8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-macro/0.2.121/download\"],\n strip_prefix = \"wasm-bindgen-macro-0.2.121\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-macro-0.2.121.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-macro-support-0.2.121\",\n sha256 = \"d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.121/download\"],\n strip_prefix = \"wasm-bindgen-macro-support-0.2.121\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-macro-support-0.2.121.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-shared-0.2.121\",\n sha256 = \"c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-shared/0.2.121/download\"],\n strip_prefix = \"wasm-bindgen-shared-0.2.121\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-shared-0.2.121.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-0.62.2\",\n sha256 = \"527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows/0.62.2/download\"],\n strip_prefix = \"windows-0.62.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-0.62.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-collections-0.3.2\",\n sha256 = \"23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-collections/0.3.2/download\"],\n strip_prefix = \"windows-collections-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-collections-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-core-0.62.2\",\n sha256 = \"b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-core/0.62.2/download\"],\n strip_prefix = \"windows-core-0.62.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-core-0.62.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-future-0.3.2\",\n sha256 = \"e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-future/0.3.2/download\"],\n strip_prefix = \"windows-future-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-future-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-implement-0.60.2\",\n sha256 = \"053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-implement/0.60.2/download\"],\n strip_prefix = \"windows-implement-0.60.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-implement-0.60.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-interface-0.59.3\",\n sha256 = \"3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-interface/0.59.3/download\"],\n strip_prefix = \"windows-interface-0.59.3\",\n build_file = Label(\"@crates//crates:BUILD.windows-interface-0.59.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-link-0.2.1\",\n sha256 = \"f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-link/0.2.1/download\"],\n strip_prefix = \"windows-link-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-link-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-numerics-0.3.1\",\n sha256 = \"6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-numerics/0.3.1/download\"],\n strip_prefix = \"windows-numerics-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-numerics-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-result-0.4.1\",\n sha256 = \"7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-result/0.4.1/download\"],\n strip_prefix = \"windows-result-0.4.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-result-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-strings-0.5.1\",\n sha256 = \"7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-strings/0.5.1/download\"],\n strip_prefix = \"windows-strings-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-strings-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.61.2\",\n sha256 = \"ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.61.2/download\"],\n strip_prefix = \"windows-sys-0.61.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.61.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-threading-0.2.1\",\n sha256 = \"3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-threading/0.2.1/download\"],\n strip_prefix = \"windows-threading-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-threading-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__writeable-0.6.4\",\n sha256 = \"3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/writeable/0.6.4/download\"],\n strip_prefix = \"writeable-0.6.4\",\n build_file = Label(\"@crates//crates:BUILD.writeable-0.6.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__yoke-0.8.3\",\n sha256 = \"709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/yoke/0.8.3/download\"],\n strip_prefix = \"yoke-0.8.3\",\n build_file = Label(\"@crates//crates:BUILD.yoke-0.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__yoke-derive-0.8.4\",\n sha256 = \"ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/yoke-derive/0.8.4/download\"],\n strip_prefix = \"yoke-derive-0.8.4\",\n build_file = Label(\"@crates//crates:BUILD.yoke-derive-0.8.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerofrom-0.1.8\",\n sha256 = \"0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerofrom/0.1.8/download\"],\n strip_prefix = \"zerofrom-0.1.8\",\n build_file = Label(\"@crates//crates:BUILD.zerofrom-0.1.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerofrom-derive-0.1.8\",\n sha256 = \"f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerofrom-derive/0.1.8/download\"],\n strip_prefix = \"zerofrom-derive-0.1.8\",\n build_file = Label(\"@crates//crates:BUILD.zerofrom-derive-0.1.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerotrie-0.2.5\",\n sha256 = \"4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerotrie/0.2.5/download\"],\n strip_prefix = \"zerotrie-0.2.5\",\n build_file = Label(\"@crates//crates:BUILD.zerotrie-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerovec-0.11.8\",\n sha256 = \"bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerovec/0.11.8/download\"],\n strip_prefix = \"zerovec-0.11.8\",\n build_file = Label(\"@crates//crates:BUILD.zerovec-0.11.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerovec-derive-0.11.6\",\n sha256 = \"34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerovec-derive/0.11.6/download\"],\n strip_prefix = \"zerovec-derive-0.11.6\",\n build_file = Label(\"@crates//crates:BUILD.zerovec-derive-0.11.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zmij-1.0.23\",\n sha256 = \"29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zmij/1.0.23/download\"],\n strip_prefix = \"zmij-1.0.23\",\n build_file = Label(\"@crates//crates:BUILD.zmij-1.0.23.bazel\"),\n )\n\n return [\n struct(repo = \"crates\", is_dev_dep = False),\n struct(repo=\"crates__futures-0.3.34\", is_dev_dep = False),\n struct(repo=\"crates__glob-0.3.4\", is_dev_dep = False),\n struct(repo=\"crates__js-sys-0.3.98\", is_dev_dep = False),\n struct(repo=\"crates__json-strip-comments-3.1.2\", is_dev_dep = False),\n struct(repo=\"crates__oxc-miette-derive-3.0.1\", is_dev_dep = False),\n struct(repo=\"crates__oxc_allocator-0.144.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_ast-0.144.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_ast_visit-0.144.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_diagnostics-0.144.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_parser-0.144.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_resolver-11.24.3\", is_dev_dep = False),\n struct(repo=\"crates__oxc_semantic-0.144.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_span-0.144.0\", is_dev_dep = False),\n struct(repo=\"crates__oxc_syntax-0.144.0\", is_dev_dep = False),\n struct(repo=\"crates__pathdiff-0.2.3\", is_dev_dep = False),\n struct(repo=\"crates__regex-1.13.1\", is_dev_dep = False),\n struct(repo=\"crates__self_cell-1.3.0\", is_dev_dep = False),\n struct(repo=\"crates__serde-1.0.229\", is_dev_dep = False),\n struct(repo=\"crates__serde_json-1.0.154\", is_dev_dep = False),\n struct(repo=\"crates__wasm-bindgen-0.2.121\", is_dev_dep = False),\n struct(repo = \"crates__tempfile-3.27.0\", is_dev_dep = True),\n ]\n", "defs.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\"\"\"Deprecated: re-exports the crate_universe macros from `:crates.bzl`.\"\"\"\n\nload(\n \":crates.bzl\",\n _aliases = \"aliases\",\n _all_crate_deps = \"all_crate_deps\",\n _crate_deps = \"crate_deps\",\n _crate_edition = \"crate_edition\",\n _crate_repositories = \"crate_repositories\",\n)\n\naliases = _aliases\nall_crate_deps = _all_crate_deps\ncrate_deps = _crate_deps\ncrate_edition = _crate_edition\ncrate_repositories = _crate_repositories\n", "futures-0.3.34/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"futures-0.3.34\",\n actual = \"@crates__futures-0.3.34//:futures\",\n tags = [\"manual\"],\n)\n", "futures/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"futures\",\n actual = \"@crates__futures-0.3.34//:futures\",\n tags = [\"manual\"],\n)\n", @@ -1034,26 +1034,24 @@ "json-strip-comments/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"json-strip-comments\",\n actual = \"@crates__json-strip-comments-3.1.2//:json_strip_comments\",\n tags = [\"manual\"],\n)\n", "oxc-miette-derive-3.0.1/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc-miette-derive-3.0.1\",\n actual = \"@crates__oxc-miette-derive-3.0.1//:oxc_miette_derive\",\n tags = [\"manual\"],\n)\n", "oxc-miette-derive/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc-miette-derive\",\n actual = \"@crates__oxc-miette-derive-3.0.1//:oxc_miette_derive\",\n tags = [\"manual\"],\n)\n", - "oxc_allocator-0.155.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_allocator-0.155.0\",\n actual = \"@crates__oxc_allocator-0.155.0//:oxc_allocator\",\n tags = [\"manual\"],\n)\n", - "oxc_allocator/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_allocator\",\n actual = \"@crates__oxc_allocator-0.155.0//:oxc_allocator\",\n tags = [\"manual\"],\n)\n", - "oxc_ast-0.155.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_ast-0.155.0\",\n actual = \"@crates__oxc_ast-0.155.0//:oxc_ast\",\n tags = [\"manual\"],\n)\n", - "oxc_ast/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_ast\",\n actual = \"@crates__oxc_ast-0.155.0//:oxc_ast\",\n tags = [\"manual\"],\n)\n", - "oxc_ast_visit-0.155.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_ast_visit-0.155.0\",\n actual = \"@crates__oxc_ast_visit-0.155.0//:oxc_ast_visit\",\n tags = [\"manual\"],\n)\n", - "oxc_ast_visit/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_ast_visit\",\n actual = \"@crates__oxc_ast_visit-0.155.0//:oxc_ast_visit\",\n tags = [\"manual\"],\n)\n", - "oxc_diagnostics-0.155.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_diagnostics-0.155.0\",\n actual = \"@crates__oxc_diagnostics-0.155.0//:oxc_diagnostics\",\n tags = [\"manual\"],\n)\n", - "oxc_diagnostics/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_diagnostics\",\n actual = \"@crates__oxc_diagnostics-0.155.0//:oxc_diagnostics\",\n tags = [\"manual\"],\n)\n", - "oxc_parser-0.155.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_parser-0.155.0\",\n actual = \"@crates__oxc_parser-0.155.0//:oxc_parser\",\n tags = [\"manual\"],\n)\n", - "oxc_parser/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_parser\",\n actual = \"@crates__oxc_parser-0.155.0//:oxc_parser\",\n tags = [\"manual\"],\n)\n", + "oxc_allocator-0.144.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_allocator-0.144.0\",\n actual = \"@crates__oxc_allocator-0.144.0//:oxc_allocator\",\n tags = [\"manual\"],\n)\n", + "oxc_allocator/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_allocator\",\n actual = \"@crates__oxc_allocator-0.144.0//:oxc_allocator\",\n tags = [\"manual\"],\n)\n", + "oxc_ast-0.144.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_ast-0.144.0\",\n actual = \"@crates__oxc_ast-0.144.0//:oxc_ast\",\n tags = [\"manual\"],\n)\n", + "oxc_ast/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_ast\",\n actual = \"@crates__oxc_ast-0.144.0//:oxc_ast\",\n tags = [\"manual\"],\n)\n", + "oxc_ast_visit-0.144.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_ast_visit-0.144.0\",\n actual = \"@crates__oxc_ast_visit-0.144.0//:oxc_ast_visit\",\n tags = [\"manual\"],\n)\n", + "oxc_ast_visit/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_ast_visit\",\n actual = \"@crates__oxc_ast_visit-0.144.0//:oxc_ast_visit\",\n tags = [\"manual\"],\n)\n", + "oxc_diagnostics-0.144.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_diagnostics-0.144.0\",\n actual = \"@crates__oxc_diagnostics-0.144.0//:oxc_diagnostics\",\n tags = [\"manual\"],\n)\n", + "oxc_diagnostics/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_diagnostics\",\n actual = \"@crates__oxc_diagnostics-0.144.0//:oxc_diagnostics\",\n tags = [\"manual\"],\n)\n", + "oxc_parser-0.144.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_parser-0.144.0\",\n actual = \"@crates__oxc_parser-0.144.0//:oxc_parser\",\n tags = [\"manual\"],\n)\n", + "oxc_parser/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_parser\",\n actual = \"@crates__oxc_parser-0.144.0//:oxc_parser\",\n tags = [\"manual\"],\n)\n", "oxc_resolver-11.24.3/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_resolver-11.24.3\",\n actual = \"@crates__oxc_resolver-11.24.3//:oxc_resolver\",\n tags = [\"manual\"],\n)\n", "oxc_resolver/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_resolver\",\n actual = \"@crates__oxc_resolver-11.24.3//:oxc_resolver\",\n tags = [\"manual\"],\n)\n", - "oxc_semantic-0.155.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_semantic-0.155.0\",\n actual = \"@crates__oxc_semantic-0.155.0//:oxc_semantic\",\n tags = [\"manual\"],\n)\n", - "oxc_semantic/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_semantic\",\n actual = \"@crates__oxc_semantic-0.155.0//:oxc_semantic\",\n tags = [\"manual\"],\n)\n", - "oxc_span-0.155.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_span-0.155.0\",\n actual = \"@crates__oxc_span-0.155.0//:oxc_span\",\n tags = [\"manual\"],\n)\n", - "oxc_span/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_span\",\n actual = \"@crates__oxc_span-0.155.0//:oxc_span\",\n tags = [\"manual\"],\n)\n", - "oxc_str-0.155.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_str-0.155.0\",\n actual = \"@crates__oxc_str-0.155.0//:oxc_str\",\n tags = [\"manual\"],\n)\n", - "oxc_str/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_str\",\n actual = \"@crates__oxc_str-0.155.0//:oxc_str\",\n tags = [\"manual\"],\n)\n", - "oxc_syntax-0.155.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_syntax-0.155.0\",\n actual = \"@crates__oxc_syntax-0.155.0//:oxc_syntax\",\n tags = [\"manual\"],\n)\n", - "oxc_syntax/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_syntax\",\n actual = \"@crates__oxc_syntax-0.155.0//:oxc_syntax\",\n tags = [\"manual\"],\n)\n", + "oxc_semantic-0.144.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_semantic-0.144.0\",\n actual = \"@crates__oxc_semantic-0.144.0//:oxc_semantic\",\n tags = [\"manual\"],\n)\n", + "oxc_semantic/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_semantic\",\n actual = \"@crates__oxc_semantic-0.144.0//:oxc_semantic\",\n tags = [\"manual\"],\n)\n", + "oxc_span-0.144.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_span-0.144.0\",\n actual = \"@crates__oxc_span-0.144.0//:oxc_span\",\n tags = [\"manual\"],\n)\n", + "oxc_span/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_span\",\n actual = \"@crates__oxc_span-0.144.0//:oxc_span\",\n tags = [\"manual\"],\n)\n", + "oxc_syntax-0.144.0/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_syntax-0.144.0\",\n actual = \"@crates__oxc_syntax-0.144.0//:oxc_syntax\",\n tags = [\"manual\"],\n)\n", + "oxc_syntax/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"oxc_syntax\",\n actual = \"@crates__oxc_syntax-0.144.0//:oxc_syntax\",\n tags = [\"manual\"],\n)\n", "pathdiff-0.2.3/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"pathdiff-0.2.3\",\n actual = \"@crates__pathdiff-0.2.3//:pathdiff\",\n tags = [\"manual\"],\n)\n", "pathdiff/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"pathdiff\",\n actual = \"@crates__pathdiff-0.2.3//:pathdiff\",\n tags = [\"manual\"],\n)\n", "regex-1.13.1/BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nalias(\n name = \"regex-1.13.1\",\n actual = \"@crates__regex-1.13.1//:regex\",\n tags = [\"manual\"],\n)\n", @@ -2031,6 +2029,38 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"once_cell\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"race\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=once_cell\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.21.4\",\n)\n" } }, + "crates__owo-colors-4.4.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "13c45bb4a6ae1280ec0803b1ef9d3455eb50f01efbbe1447ab020f1d54fba9d8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/owo-colors/4.4.0/download" + ], + "strip_prefix": "owo-colors-4.4.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"owo_colors\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=owo-colors\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.4.0\",\n)\n" + } + }, + "crates__oxc-miette-4.0.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "330e07b3807046e0afa8fcc94f1fe976e93831b370d148bfe1168cb53da1b913", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/oxc-miette/4.0.0/download" + ], + "strip_prefix": "oxc-miette-4.0.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"miette\",\n deps = [\n \"@crates__bytecount-0.6.9//:bytecount\",\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__owo-colors-4.4.0//:owo_colors\",\n \"@crates__textwrap-0.16.4//:textwrap\",\n \"@crates__unicode-segmentation-1.13.3//:unicode_segmentation\",\n \"@crates__unicode-width-0.2.2//:unicode_width\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc-miette\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.0.0\",\n)\n" + } + }, "crates__oxc-miette-derive-3.0.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -2047,132 +2077,132 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"oxc_miette_derive\",\n deps = [\n \"@crates__proc-macro2-1.0.107//:proc_macro2\",\n \"@crates__quote-1.0.47//:quote\",\n \"@crates__syn-2.0.119//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc-miette-derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.0.1\",\n)\n" } }, - "crates__oxc_allocator-0.155.0": { + "crates__oxc_allocator-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "45c8f46c8923b4afb4dd588d4684d5dd32332f1341225c066cc6af31094e7e3d", + "sha256": "9262c7bbd58c8c32c2c60d1a7b6c274cd2aeaff1b726a2fb86081b75084698cb", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_allocator/0.155.0/download" + "https://static.crates.io/crates/oxc_allocator/0.144.0/download" ], - "strip_prefix": "oxc_allocator-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_allocator\",\n deps = [\n \"@crates__allocator-api2-0.2.21//:allocator_api2\",\n \"@crates__hashbrown-0.17.1//:hashbrown\",\n \"@crates__oxc_data_structures-0.155.0//:oxc_data_structures\",\n \"@crates__oxc_estree-0.155.0//:oxc_estree\",\n \"@crates__rustc-hash-2.1.3//:rustc_hash\",\n \"@crates__serde-1.0.229//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bitset\",\n \"oxc_estree\",\n \"serialize\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_allocator\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_allocator-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_allocator\",\n deps = [\n \"@crates__allocator-api2-0.2.21//:allocator_api2\",\n \"@crates__hashbrown-0.17.1//:hashbrown\",\n \"@crates__oxc_data_structures-0.144.0//:oxc_data_structures\",\n \"@crates__oxc_estree-0.144.0//:oxc_estree\",\n \"@crates__rustc-hash-2.1.3//:rustc_hash\",\n \"@crates__serde-1.0.229//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bitset\",\n \"oxc_estree\",\n \"serialize\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_allocator\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, - "crates__oxc_ast-0.155.0": { + "crates__oxc_ast-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "35465751cfc99739fee42d8345b57d5b5087b462bea7bc5bb17d1f248e1efa22", + "sha256": "e8134809b665d524d9a0ddeee87a5d3602776aa2410a10a0439fd25eeb594a5d", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_ast/0.155.0/download" + "https://static.crates.io/crates/oxc_ast/0.144.0/download" ], - "strip_prefix": "oxc_ast-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_ast\",\n deps = [\n \"@crates__bitflags-2.13.2//:bitflags\",\n \"@crates__oxc_allocator-0.155.0//:oxc_allocator\",\n \"@crates__oxc_data_structures-0.155.0//:oxc_data_structures\",\n \"@crates__oxc_diagnostics-0.155.0//:oxc_diagnostics\",\n \"@crates__oxc_estree-0.155.0//:oxc_estree\",\n \"@crates__oxc_regular_expression-0.155.0//:oxc_regular_expression\",\n \"@crates__oxc_span-0.155.0//:oxc_span\",\n \"@crates__oxc_str-0.155.0//:oxc_str\",\n \"@crates__oxc_syntax-0.155.0//:oxc_syntax\",\n ],\n proc_macro_deps = [\n \"@crates__oxc_ast_macros-0.155.0//:oxc_ast_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"serialize\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_ast\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_ast-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_ast\",\n deps = [\n \"@crates__bitflags-2.13.2//:bitflags\",\n \"@crates__oxc_allocator-0.144.0//:oxc_allocator\",\n \"@crates__oxc_data_structures-0.144.0//:oxc_data_structures\",\n \"@crates__oxc_diagnostics-0.144.0//:oxc_diagnostics\",\n \"@crates__oxc_estree-0.144.0//:oxc_estree\",\n \"@crates__oxc_regular_expression-0.144.0//:oxc_regular_expression\",\n \"@crates__oxc_span-0.144.0//:oxc_span\",\n \"@crates__oxc_str-0.144.0//:oxc_str\",\n \"@crates__oxc_syntax-0.144.0//:oxc_syntax\",\n ],\n proc_macro_deps = [\n \"@crates__oxc_ast_macros-0.144.0//:oxc_ast_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"serialize\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_ast\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, - "crates__oxc_ast_macros-0.155.0": { + "crates__oxc_ast_macros-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "e78e5d50ecf9fbf6c00afb29dbd670784b2ac407fd676f625d1f3515a1a2d577", + "sha256": "ac120c6863a9d036c78a42a5e4d2f58bb27c5df795d61d904f6e19e48c681a37", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_ast_macros/0.155.0/download" + "https://static.crates.io/crates/oxc_ast_macros/0.144.0/download" ], - "strip_prefix": "oxc_ast_macros-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"oxc_ast_macros\",\n deps = [\n \"@crates__phf-0.14.0//:phf\",\n \"@crates__proc-macro2-1.0.107//:proc_macro2\",\n \"@crates__quote-1.0.47//:quote\",\n \"@crates__syn-3.0.9//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_ast_macros\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_ast_macros-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"oxc_ast_macros\",\n deps = [\n \"@crates__phf-0.14.0//:phf\",\n \"@crates__proc-macro2-1.0.107//:proc_macro2\",\n \"@crates__quote-1.0.47//:quote\",\n \"@crates__syn-3.0.9//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_ast_macros\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, - "crates__oxc_ast_visit-0.155.0": { + "crates__oxc_ast_visit-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "6836d2fde033c44eae57ab1be3fcc7bd6a57465783bdfce654ca28064a334dbe", + "sha256": "4a57626cd6ef87f5173110a301868e3c438fd8e0576f489d9a61540ef133f686", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_ast_visit/0.155.0/download" + "https://static.crates.io/crates/oxc_ast_visit/0.144.0/download" ], - "strip_prefix": "oxc_ast_visit-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_ast_visit\",\n deps = [\n \"@crates__oxc_allocator-0.155.0//:oxc_allocator\",\n \"@crates__oxc_ast-0.155.0//:oxc_ast\",\n \"@crates__oxc_span-0.155.0//:oxc_span\",\n \"@crates__oxc_syntax-0.155.0//:oxc_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"serialize\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_ast_visit\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_ast_visit-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_ast_visit\",\n deps = [\n \"@crates__oxc_allocator-0.144.0//:oxc_allocator\",\n \"@crates__oxc_ast-0.144.0//:oxc_ast\",\n \"@crates__oxc_span-0.144.0//:oxc_span\",\n \"@crates__oxc_syntax-0.144.0//:oxc_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"serialize\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_ast_visit\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, - "crates__oxc_data_structures-0.155.0": { + "crates__oxc_data_structures-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "a46b759a8cb13a1111649370f1d769322b082edabd625466254f238818bdc9e9", + "sha256": "2a71efea56db93d3ce9e88e1d9f74f6d50fc2b06092444cdd08579f5827fd8db", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_data_structures/0.155.0/download" + "https://static.crates.io/crates/oxc_data_structures/0.144.0/download" ], - "strip_prefix": "oxc_data_structures-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_data_structures\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"assert_unchecked\",\n \"branch_hints\",\n \"code_buffer\",\n \"default\",\n \"fieldless_enum\",\n \"inline_string\",\n \"slice_iter\",\n \"stack\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_data_structures\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_data_structures-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_data_structures\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"assert_unchecked\",\n \"branch_hints\",\n \"code_buffer\",\n \"default\",\n \"fieldless_enum\",\n \"inline_string\",\n \"slice_iter\",\n \"stack\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_data_structures\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, - "crates__oxc_diagnostics-0.155.0": { + "crates__oxc_diagnostics-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "5b80f4b05a80879518ebe85a8df9368758ebc1e176327b659e1e97389f8561c7", + "sha256": "e5ff8638533094ecdcd38a63930c003c261d81650e4531c3bc805c797aec2a52", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_diagnostics/0.155.0/download" + "https://static.crates.io/crates/oxc_diagnostics/0.144.0/download" ], - "strip_prefix": "oxc_diagnostics-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_diagnostics\",\n deps = [\n \"@crates__bytecount-0.6.9//:bytecount\",\n \"@crates__cow-utils-0.1.3//:cow_utils\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__oxc_span-0.155.0//:oxc_span\",\n \"@crates__percent-encoding-2.3.2//:percent_encoding\",\n \"@crates__smallvec-1.16.3//:smallvec\",\n \"@crates__textwrap-0.16.4//:textwrap\",\n \"@crates__unicode-segmentation-1.13.3//:unicode_segmentation\",\n \"@crates__unicode-width-0.2.2//:unicode_width\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_diagnostics\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_diagnostics-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_diagnostics\",\n deps = [\n \"@crates__cow-utils-0.1.3//:cow_utils\",\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__oxc-miette-4.0.0//:miette\",\n \"@crates__percent-encoding-2.3.2//:percent_encoding\",\n \"@crates__smallvec-1.16.3//:smallvec\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_diagnostics\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, - "crates__oxc_ecmascript-0.155.0": { + "crates__oxc_ecmascript-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "f8c634665e0be5dde95549146734ab4939b8d1b5d2e7cc006d38b9f5d17a58a2", + "sha256": "77c7a326f49f06da37affdcad2fb3ebab46ac4ada8953a428f7cbd04e5cc9e6e", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_ecmascript/0.155.0/download" + "https://static.crates.io/crates/oxc_ecmascript/0.144.0/download" ], - "strip_prefix": "oxc_ecmascript-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_ecmascript\",\n deps = [\n \"@crates__dragonbox_ecma-0.1.12//:dragonbox_ecma\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__num-bigint-0.5.1//:num_bigint\",\n \"@crates__num-traits-0.2.19//:num_traits\",\n \"@crates__oxc_ast-0.155.0//:oxc_ast\",\n \"@crates__oxc_data_structures-0.155.0//:oxc_data_structures\",\n \"@crates__oxc_span-0.155.0//:oxc_span\",\n \"@crates__oxc_str-0.155.0//:oxc_str\",\n \"@crates__oxc_syntax-0.155.0//:oxc_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_ecmascript\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_ecmascript-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_ecmascript\",\n deps = [\n \"@crates__dragonbox_ecma-0.1.12//:dragonbox_ecma\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__num-bigint-0.5.1//:num_bigint\",\n \"@crates__num-traits-0.2.19//:num_traits\",\n \"@crates__oxc_ast-0.144.0//:oxc_ast\",\n \"@crates__oxc_data_structures-0.144.0//:oxc_data_structures\",\n \"@crates__oxc_span-0.144.0//:oxc_span\",\n \"@crates__oxc_syntax-0.144.0//:oxc_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_ecmascript\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, - "crates__oxc_estree-0.155.0": { + "crates__oxc_estree-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "5dcdd8235762cc9305d619842b73c1e89a0ebec8ccf2f27142ef597521443c1f", + "sha256": "8275fcb9674a1c320f0bdbc2f534ba9bb09fcb8b1c9fe306c9595d262a06bfcb", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_estree/0.155.0/download" + "https://static.crates.io/crates/oxc_estree/0.144.0/download" ], - "strip_prefix": "oxc_estree-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_estree\",\n deps = [\n \"@crates__dragonbox_ecma-0.1.12//:dragonbox_ecma\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__oxc_data_structures-0.155.0//:oxc_data_structures\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"serialize\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_estree\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_estree-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_estree\",\n deps = [\n \"@crates__dragonbox_ecma-0.1.12//:dragonbox_ecma\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__oxc_data_structures-0.144.0//:oxc_data_structures\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"serialize\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_estree\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, "crates__oxc_index-5.0.0": { @@ -2191,36 +2221,36 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_index\",\n deps = [\n \"@crates__nonmax-0.5.5//:nonmax\",\n \"@crates__serde-1.0.229//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"nonmax\",\n \"serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_index\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"5.0.0\",\n)\n" } }, - "crates__oxc_parser-0.155.0": { + "crates__oxc_parser-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "635c4e1bb876a9d4ee0e338fa68547a1d75add58637e5c3921fb81ae10a60439", + "sha256": "d13016de81370106ea4065cfabe4a278dc09e82523cfe22bb6a8ab8e993b4c3a", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_parser/0.155.0/download" + "https://static.crates.io/crates/oxc_parser/0.144.0/download" ], - "strip_prefix": "oxc_parser-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_parser\",\n deps = [\n \"@crates__bitflags-2.13.2//:bitflags\",\n \"@crates__cow-utils-0.1.3//:cow_utils\",\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__num-bigint-0.5.1//:num_bigint\",\n \"@crates__num-traits-0.2.19//:num_traits\",\n \"@crates__oxc_allocator-0.155.0//:oxc_allocator\",\n \"@crates__oxc_ast-0.155.0//:oxc_ast\",\n \"@crates__oxc_data_structures-0.155.0//:oxc_data_structures\",\n \"@crates__oxc_diagnostics-0.155.0//:oxc_diagnostics\",\n \"@crates__oxc_ecmascript-0.155.0//:oxc_ecmascript\",\n \"@crates__oxc_regular_expression-0.155.0//:oxc_regular_expression\",\n \"@crates__oxc_span-0.155.0//:oxc_span\",\n \"@crates__oxc_str-0.155.0//:oxc_str\",\n \"@crates__oxc_syntax-0.155.0//:oxc_syntax\",\n \"@crates__rustc-hash-2.1.3//:rustc_hash\",\n ],\n proc_macro_deps = [\n \"@crates__seq-macro-0.3.6//:seq_macro\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"regular_expression\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_parser\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_parser-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_parser\",\n deps = [\n \"@crates__bitflags-2.13.2//:bitflags\",\n \"@crates__cow-utils-0.1.3//:cow_utils\",\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__num-bigint-0.5.1//:num_bigint\",\n \"@crates__num-traits-0.2.19//:num_traits\",\n \"@crates__oxc_allocator-0.144.0//:oxc_allocator\",\n \"@crates__oxc_ast-0.144.0//:oxc_ast\",\n \"@crates__oxc_data_structures-0.144.0//:oxc_data_structures\",\n \"@crates__oxc_diagnostics-0.144.0//:oxc_diagnostics\",\n \"@crates__oxc_ecmascript-0.144.0//:oxc_ecmascript\",\n \"@crates__oxc_regular_expression-0.144.0//:oxc_regular_expression\",\n \"@crates__oxc_span-0.144.0//:oxc_span\",\n \"@crates__oxc_str-0.144.0//:oxc_str\",\n \"@crates__oxc_syntax-0.144.0//:oxc_syntax\",\n \"@crates__rustc-hash-2.1.3//:rustc_hash\",\n ],\n proc_macro_deps = [\n \"@crates__seq-macro-0.3.6//:seq_macro\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"regular_expression\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_parser\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, - "crates__oxc_regular_expression-0.155.0": { + "crates__oxc_regular_expression-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "3ae3f2c42773d16336a75d5c61dae45a34aea399f0b5399a7a25c8509d79662f", + "sha256": "c375b89d88ec03301b0e62528715699551871861197aa39148e95a1422e1ae9b", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_regular_expression/0.155.0/download" + "https://static.crates.io/crates/oxc_regular_expression/0.144.0/download" ], - "strip_prefix": "oxc_regular_expression-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_regular_expression\",\n deps = [\n \"@crates__bitflags-2.13.2//:bitflags\",\n \"@crates__oxc_allocator-0.155.0//:oxc_allocator\",\n \"@crates__oxc_diagnostics-0.155.0//:oxc_diagnostics\",\n \"@crates__oxc_span-0.155.0//:oxc_span\",\n \"@crates__oxc_str-0.155.0//:oxc_str\",\n \"@crates__phf-0.14.0//:phf\",\n \"@crates__rustc-hash-2.1.3//:rustc_hash\",\n \"@crates__unicode-id-start-1.5.0//:unicode_id_start\",\n ],\n proc_macro_deps = [\n \"@crates__oxc_ast_macros-0.155.0//:oxc_ast_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_regular_expression\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_regular_expression-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_regular_expression\",\n deps = [\n \"@crates__bitflags-2.13.2//:bitflags\",\n \"@crates__oxc_allocator-0.144.0//:oxc_allocator\",\n \"@crates__oxc_diagnostics-0.144.0//:oxc_diagnostics\",\n \"@crates__oxc_span-0.144.0//:oxc_span\",\n \"@crates__oxc_str-0.144.0//:oxc_str\",\n \"@crates__phf-0.14.0//:phf\",\n \"@crates__rustc-hash-2.1.3//:rustc_hash\",\n \"@crates__unicode-id-start-1.5.0//:unicode_id_start\",\n ],\n proc_macro_deps = [\n \"@crates__oxc_ast_macros-0.144.0//:oxc_ast_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_regular_expression\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, "crates__oxc_resolver-11.24.3": { @@ -2239,68 +2269,68 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_resolver\",\n deps = [\n \"@crates__compact_str-0.10.0//:compact_str\",\n \"@crates__dashmap-6.2.1//:dashmap\",\n \"@crates__fast-glob-1.1.2//:fast_glob\",\n \"@crates__indexmap-2.14.2//:indexmap\",\n \"@crates__json-strip-comments-3.1.2//:json_strip_comments\",\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__nodejs-built-in-modules-1.0.0//:nodejs_built_in_modules\",\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__percent-encoding-2.3.2//:percent_encoding\",\n \"@crates__rustc-hash-2.1.3//:rustc_hash\",\n \"@crates__serde-1.0.229//:serde\",\n \"@crates__serde_json-1.0.154//:serde_json\",\n \"@crates__simdutf8-0.1.5//:simdutf8\",\n \"@crates__thiserror-2.0.21//:thiserror\",\n \"@crates__tracing-0.1.44//:tracing\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__rustix-1.1.5//:rustix\", # cfg(any(target_os = \"macos\", target_os = \"linux\"))\n \"@crates__self_cell-1.3.0//:self_cell\", # cfg(target_endian = \"little\")\n \"@crates__simd-json-0.18.1//:simd_json\", # cfg(target_endian = \"little\")\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__rustix-1.1.5//:rustix\", # cfg(any(target_os = \"macos\", target_os = \"linux\"))\n \"@crates__self_cell-1.3.0//:self_cell\", # cfg(target_endian = \"little\")\n \"@crates__simd-json-0.18.1//:simd_json\", # cfg(target_endian = \"little\")\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__self_cell-1.3.0//:self_cell\", # cfg(target_endian = \"little\")\n \"@crates__simd-json-0.18.1//:simd_json\", # cfg(target_endian = \"little\")\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__self_cell-1.3.0//:self_cell\", # cfg(target_endian = \"little\")\n \"@crates__simd-json-0.18.1//:simd_json\", # cfg(target_endian = \"little\")\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__self_cell-1.3.0//:self_cell\", # cfg(target_endian = \"little\")\n \"@crates__simd-json-0.18.1//:simd_json\", # cfg(target_endian = \"little\")\n \"@crates__windows-0.62.2//:windows\", # cfg(target_os = \"windows\")\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__rustix-1.1.5//:rustix\", # cfg(any(target_os = \"macos\", target_os = \"linux\"))\n \"@crates__self_cell-1.3.0//:self_cell\", # cfg(target_endian = \"little\")\n \"@crates__simd-json-0.18.1//:simd_json\", # cfg(target_endian = \"little\")\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__rustix-1.1.5//:rustix\", # cfg(any(target_os = \"macos\", target_os = \"linux\"))\n \"@crates__self_cell-1.3.0//:self_cell\", # cfg(target_endian = \"little\")\n \"@crates__simd-json-0.18.1//:simd_json\", # cfg(target_endian = \"little\")\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_resolver\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"11.24.3\",\n)\n" } }, - "crates__oxc_semantic-0.155.0": { + "crates__oxc_semantic-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "b24ee2095e2ddac60c2063b59693bbf2b80936c8a9e036463b153a203857831b", + "sha256": "0d8d80604c4220c8f5b1c19682216921397fb45a616db47d3a044474662f0c2e", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_semantic/0.155.0/download" + "https://static.crates.io/crates/oxc_semantic/0.144.0/download" ], - "strip_prefix": "oxc_semantic-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_semantic\",\n deps = [\n \"@crates__itertools-0.15.0//:itertools\",\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__oxc_allocator-0.155.0//:oxc_allocator\",\n \"@crates__oxc_ast-0.155.0//:oxc_ast\",\n \"@crates__oxc_ast_visit-0.155.0//:oxc_ast_visit\",\n \"@crates__oxc_data_structures-0.155.0//:oxc_data_structures\",\n \"@crates__oxc_diagnostics-0.155.0//:oxc_diagnostics\",\n \"@crates__oxc_ecmascript-0.155.0//:oxc_ecmascript\",\n \"@crates__oxc_index-5.0.0//:oxc_index\",\n \"@crates__oxc_span-0.155.0//:oxc_span\",\n \"@crates__oxc_str-0.155.0//:oxc_str\",\n \"@crates__oxc_syntax-0.155.0//:oxc_syntax\",\n \"@crates__rustc-hash-2.1.3//:rustc_hash\",\n \"@crates__self_cell-1.3.0//:self_cell\",\n \"@crates__smallvec-1.16.3//:smallvec\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_semantic\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_semantic-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_semantic\",\n deps = [\n \"@crates__itertools-0.15.0//:itertools\",\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__oxc_allocator-0.144.0//:oxc_allocator\",\n \"@crates__oxc_ast-0.144.0//:oxc_ast\",\n \"@crates__oxc_ast_visit-0.144.0//:oxc_ast_visit\",\n \"@crates__oxc_data_structures-0.144.0//:oxc_data_structures\",\n \"@crates__oxc_diagnostics-0.144.0//:oxc_diagnostics\",\n \"@crates__oxc_ecmascript-0.144.0//:oxc_ecmascript\",\n \"@crates__oxc_index-5.0.0//:oxc_index\",\n \"@crates__oxc_span-0.144.0//:oxc_span\",\n \"@crates__oxc_str-0.144.0//:oxc_str\",\n \"@crates__oxc_syntax-0.144.0//:oxc_syntax\",\n \"@crates__rustc-hash-2.1.3//:rustc_hash\",\n \"@crates__self_cell-1.3.0//:self_cell\",\n \"@crates__smallvec-1.16.3//:smallvec\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_semantic\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, - "crates__oxc_span-0.155.0": { + "crates__oxc_span-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "0cb5bee6f7a9829ddc4d8c05102fe1aa7e2ca31c7ff0bcfbb7069ca977334840", + "sha256": "abd732008dbfb09984106925f7ff7268687c8020b89bd7ee0f0b695c5bb07950", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_span/0.155.0/download" + "https://static.crates.io/crates/oxc_span/0.144.0/download" ], - "strip_prefix": "oxc_span-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_span\",\n deps = [\n \"@crates__compact_str-0.10.0//:compact_str\",\n \"@crates__oxc_allocator-0.155.0//:oxc_allocator\",\n \"@crates__oxc_estree-0.155.0//:oxc_estree\",\n \"@crates__oxc_str-0.155.0//:oxc_str\",\n \"@crates__serde-1.0.229//:serde\",\n ],\n proc_macro_deps = [\n \"@crates__oxc_ast_macros-0.155.0//:oxc_ast_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"serialize\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_span\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_span-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_span\",\n deps = [\n \"@crates__compact_str-0.10.0//:compact_str\",\n \"@crates__oxc-miette-4.0.0//:miette\",\n \"@crates__oxc_allocator-0.144.0//:oxc_allocator\",\n \"@crates__oxc_estree-0.144.0//:oxc_estree\",\n \"@crates__oxc_str-0.144.0//:oxc_str\",\n \"@crates__serde-1.0.229//:serde\",\n ],\n proc_macro_deps = [\n \"@crates__oxc_ast_macros-0.144.0//:oxc_ast_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"serialize\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_span\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, - "crates__oxc_str-0.155.0": { + "crates__oxc_str-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "c04d966af690d3b780ee4c47436174e558750eed6ca40b07d695fa4910ad8e33", + "sha256": "e1d2ccb0f5aa4da9fc98ef70f59553c2779e28e064a8b271fcb1e88c11a63607", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_str/0.155.0/download" + "https://static.crates.io/crates/oxc_str/0.144.0/download" ], - "strip_prefix": "oxc_str-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_str\",\n deps = [\n \"@crates__compact_str-0.10.0//:compact_str\",\n \"@crates__hashbrown-0.17.1//:hashbrown\",\n \"@crates__memchr-2.8.3//:memchr\",\n \"@crates__oxc_allocator-0.155.0//:oxc_allocator\",\n \"@crates__oxc_estree-0.155.0//:oxc_estree\",\n \"@crates__serde-1.0.229//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"serialize\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_str\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_str-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_str\",\n deps = [\n \"@crates__compact_str-0.10.0//:compact_str\",\n \"@crates__hashbrown-0.17.1//:hashbrown\",\n \"@crates__oxc_allocator-0.144.0//:oxc_allocator\",\n \"@crates__oxc_estree-0.144.0//:oxc_estree\",\n \"@crates__serde-1.0.229//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"serialize\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_str\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, - "crates__oxc_syntax-0.155.0": { + "crates__oxc_syntax-0.144.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "684d5f6db25b6e3d026582b3926166c80eeda9aac8a879782292c6a33b7d13a0", + "sha256": "15ff0e987ab15a71dae36fd544b9859513e76639e2cc6c5e25895081162755b1", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/oxc_syntax/0.155.0/download" + "https://static.crates.io/crates/oxc_syntax/0.144.0/download" ], - "strip_prefix": "oxc_syntax-0.155.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_syntax\",\n deps = [\n \"@crates__bitflags-2.13.2//:bitflags\",\n \"@crates__cow-utils-0.1.3//:cow_utils\",\n \"@crates__dragonbox_ecma-0.1.12//:dragonbox_ecma\",\n \"@crates__nonmax-0.5.5//:nonmax\",\n \"@crates__oxc_allocator-0.155.0//:oxc_allocator\",\n \"@crates__oxc_estree-0.155.0//:oxc_estree\",\n \"@crates__oxc_index-5.0.0//:oxc_index\",\n \"@crates__oxc_span-0.155.0//:oxc_span\",\n \"@crates__oxc_str-0.155.0//:oxc_str\",\n \"@crates__phf-0.14.0//:phf\",\n \"@crates__serde-1.0.229//:serde\",\n \"@crates__unicode-id-start-1.5.0//:unicode_id_start\",\n ],\n proc_macro_deps = [\n \"@crates__oxc_ast_macros-0.155.0//:oxc_ast_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"serialize\",\n \"to_js_string\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_syntax\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.155.0\",\n)\n" + "strip_prefix": "oxc_syntax-0.144.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'angular'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oxc_syntax\",\n deps = [\n \"@crates__bitflags-2.13.2//:bitflags\",\n \"@crates__cow-utils-0.1.3//:cow_utils\",\n \"@crates__dragonbox_ecma-0.1.12//:dragonbox_ecma\",\n \"@crates__nonmax-0.5.5//:nonmax\",\n \"@crates__oxc_allocator-0.144.0//:oxc_allocator\",\n \"@crates__oxc_estree-0.144.0//:oxc_estree\",\n \"@crates__oxc_index-5.0.0//:oxc_index\",\n \"@crates__oxc_span-0.144.0//:oxc_span\",\n \"@crates__oxc_str-0.144.0//:oxc_str\",\n \"@crates__phf-0.14.0//:phf\",\n \"@crates__serde-1.0.229//:serde\",\n \"@crates__unicode-id-start-1.5.0//:unicode_id_start\",\n ],\n proc_macro_deps = [\n \"@crates__oxc_ast_macros-0.144.0//:oxc_ast_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"serialize\",\n \"to_js_string\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oxc_syntax\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.144.0\",\n)\n" } }, "crates__parking_lot_core-0.9.12": { diff --git a/packages/compiler-cli/preprocessor/ng-analyze/BUILD.bazel b/packages/compiler-cli/preprocessor/ng-analyze/BUILD.bazel index 4de96692895..4bee09dc12c 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/BUILD.bazel +++ b/packages/compiler-cli/preprocessor/ng-analyze/BUILD.bazel @@ -27,7 +27,6 @@ rust_shared_library( "@crates//:oxc_resolver", "@crates//:oxc_semantic", "@crates//:oxc_span", - "@crates//:oxc_str", "@crates//:oxc_syntax", "@crates//:pathdiff", "@crates//:regex", @@ -76,7 +75,6 @@ rust_library( "@crates//:oxc_resolver", "@crates//:oxc_semantic", "@crates//:oxc_span", - "@crates//:oxc_str", "@crates//:oxc_syntax", "@crates//:pathdiff", "@crates//:regex", diff --git a/packages/compiler-cli/preprocessor/ng-analyze/Cargo.toml b/packages/compiler-cli/preprocessor/ng-analyze/Cargo.toml index 61b1a266fcf..e9b9afc8c1d 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/Cargo.toml +++ b/packages/compiler-cli/preprocessor/ng-analyze/Cargo.toml @@ -10,16 +10,15 @@ crate-type = ["cdylib", "rlib"] napi = { version = "3", features = ["napi4", "tokio_rt"], optional = true } napi-derive = { version = "3", optional = true } futures = { version = "0.3", features = ["executor", "alloc", "std", "thread-pool"] } -oxc_allocator = "0.155.0" -oxc_parser = "0.155.0" -oxc_ast = "0.155.0" -oxc_ast_visit = { version = "0.155.0", features = ["serialize"] } +oxc_allocator = "0.144.0" +oxc_parser = "0.144.0" +oxc_ast = "0.144.0" +oxc_ast_visit = { version = "0.144.0", features = ["serialize"] } oxc_resolver = "11.24.2" -oxc_span = "0.155.0" -oxc_str = "0.155.0" -oxc_semantic = "0.155.0" -oxc_syntax = "0.155.0" -oxc_diagnostics = "0.155.0" +oxc_span = "0.144.0" +oxc_semantic = "0.144.0" +oxc_syntax = "0.144.0" +oxc_diagnostics = "0.144.0" oxc-miette-derive = "3.0.1" self_cell = "1.3.0" diff --git a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/closure_nocollapse.rs b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/closure_nocollapse.rs index 0b58f302fca..617771e2f1e 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/closure_nocollapse.rs +++ b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/closure_nocollapse.rs @@ -10,8 +10,6 @@ use oxc_ast::ast::{Class, ClassElement, Comment, PropertyKey}; use oxc_semantic::Semantic; use oxc_span::GetSpan; -use super::utils::js_str_to_string_lossy; - const NOCOLLAPSE_TAG: &str = "nocollapse"; #[derive(Clone, Debug, PartialEq, Eq)] @@ -62,9 +60,7 @@ fn is_closure_static_property(element: &ClassElement<'_>) -> bool { } match key { PropertyKey::StaticIdentifier(_) => true, - PropertyKey::StringLiteral(literal) => { - is_valid_closure_property_name(&js_str_to_string_lossy(literal.value)) - } + PropertyKey::StringLiteral(literal) => is_valid_closure_property_name(&literal.value), _ => false, } } diff --git a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/component.rs b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/component.rs index c874f1eb8c4..afb88fab6c9 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/component.rs +++ b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/component.rs @@ -16,8 +16,7 @@ use crate::evaluator::{evaluate_expression, EvalInput, Resolved, ResolvedValue}; use super::imports::{resolve_imports_expression, ImportInfo, ImportedSymbol}; use super::utils::{ - extract_bool, extract_property_key, extract_schemas, extract_string, js_str_to_string_lossy, - resolve_local_expression, + extract_bool, extract_property_key, extract_schemas, extract_string, resolve_local_expression, }; #[allow(clippy::too_many_arguments)] @@ -264,7 +263,7 @@ fn parse_component_metadata<'a, Fs: ResourceResolverFs>( Some(id.name.to_string()) } oxc_ast::ast::PropertyKey::StringLiteral(s) => { - Some(js_str_to_string_lossy(s.value).into_owned()) + Some(s.value.to_string()) } _ => None, }; diff --git a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/dts.rs b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/dts.rs index 3c12833b856..e0a1436dfc5 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/dts.rs +++ b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/dts.rs @@ -7,7 +7,6 @@ use crate::{ClassType, HostDirectiveBinding, InputMetadata, OutputMetadata}; use super::imports::{FileExportInfo, LocalExportAlias, ReexportInfo, WildcardExport}; use super::utils::{ extract_class_body_type_check_meta, extract_property_key, extract_type_parameters, - js_str_to_string_lossy, }; use oxc_ast_visit::utf8_to_utf16::Utf8ToUtf16; @@ -132,7 +131,7 @@ pub fn analyze_dts( named_exports.push(ReexportInfo { exported_name: spec.exported.name().to_string(), local_name: spec.local.name().to_string(), - source: js_str_to_string_lossy(export.source.value).into_owned(), + source: export.source.value.to_string(), // `export … from` in a `.d.ts` forwards the symbol without // binding it here. binds_locally: false, @@ -149,13 +148,13 @@ pub fn analyze_dts( named_exports.push(ReexportInfo { exported_name: exported.name().to_string(), local_name: "*".to_string(), - source: js_str_to_string_lossy(decl.source.value).into_owned(), + source: decl.source.value.to_string(), binds_locally: false, is_type: decl.export_kind.is_type(), }); } else { wildcards.push(WildcardExport { - source: js_str_to_string_lossy(decl.source.value).into_owned(), + source: decl.source.value.to_string(), is_type: decl.export_kind.is_type(), }); } @@ -822,7 +821,7 @@ fn extract_string_from_type_argument( let TSLiteral::StringLiteral(s) = &lit.literal else { return None; }; - Some(js_str_to_string_lossy(s.value).into_owned()) + Some(s.value.to_string()) } /// Extract ngContentSelectors from position 7 (index 6) of: i0.ɵɵComponentDeclaration @@ -841,7 +840,7 @@ fn extract_ng_content_selectors_from_type( let TSLiteral::StringLiteral(s) = &lit.literal else { continue; }; - selectors.push(js_str_to_string_lossy(s.value).into_owned()); + selectors.push(s.value.to_string()); } if !selectors.is_empty() { return Some(selectors); @@ -864,7 +863,7 @@ fn extract_export_as_from_type( let TSLiteral::StringLiteral(s) = &lit.literal else { continue; }; - exports.push(js_str_to_string_lossy(s.value).into_owned()); + exports.push(s.value.to_string()); } if !exports.is_empty() { return Some(exports); @@ -906,7 +905,7 @@ fn extract_inputs_map(ts_type: &TSType) -> Vec { if let Some(type_ann) = &prop.type_annotation { if let TSType::TSLiteralType(lit_type) = &type_ann.type_annotation { if let TSLiteral::StringLiteral(s) = &lit_type.literal { - binding_property_name = js_str_to_string_lossy(s.value).into_owned(); + binding_property_name = s.value.to_string(); } } else if let TSType::TSTypeLiteral(obj_type) = &type_ann.type_annotation { // { alias: "aliasName", required: true, isSignal: true } @@ -926,8 +925,7 @@ fn extract_inputs_map(ts_type: &TSType) -> Vec { { if let TSLiteral::StringLiteral(s) = &inner_lit_type.literal { - binding_property_name = - js_str_to_string_lossy(s.value).into_owned(); + binding_property_name = s.value.to_string(); } } } @@ -1014,7 +1012,7 @@ fn extract_outputs_map(ts_type: &TSType) -> Vec { if let Some(type_ann) = &prop.type_annotation { if let TSType::TSLiteralType(lit_type) = &type_ann.type_annotation { if let TSLiteral::StringLiteral(s) = &lit_type.literal { - binding_property_name = js_str_to_string_lossy(s.value).into_owned(); + binding_property_name = s.value.to_string(); } } } @@ -1093,7 +1091,7 @@ fn extract_string_literal_from_type_annotation( let TSLiteral::StringLiteral(s) = &lit_type.literal else { return None; }; - Some(js_str_to_string_lossy(s.value).into_owned()) + Some(s.value.to_string()) } fn extract_directive_name_and_specifier( diff --git a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/imports.rs b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/imports.rs index 58b1dcee913..fe1bde14005 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/imports.rs +++ b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/imports.rs @@ -1,4 +1,4 @@ -use crate::analyzer::utils::{js_str_to_string_lossy, unwrap_forward_ref_evaluated}; +use crate::analyzer::utils::unwrap_forward_ref_evaluated; use crate::resource_loader::ResourceResolverFs; use oxc_ast::ast::{ ArrayExpression, ArrayExpressionElement, BindingPattern, Expression, ImportDeclaration, @@ -117,18 +117,18 @@ pub fn extract_imports( match stmt { Statement::ImportDeclaration(decl) => { if !is_type_only_import_declaration(decl) { - runtime_specifiers.insert(js_str_to_string_lossy(decl.source.value)); + runtime_specifiers.insert(decl.source.value.as_str()); } } Statement::ExportFromDeclaration(decl) if !decl.export_kind.is_type() => { let has_runtime_export = decl.specifiers.is_empty() || decl.specifiers.iter().any(|s| !s.export_kind.is_type()); if has_runtime_export { - runtime_specifiers.insert(js_str_to_string_lossy(decl.source.value)); + runtime_specifiers.insert(decl.source.value.as_str()); } } Statement::ExportAllDeclaration(decl) if !decl.export_kind.is_type() => { - runtime_specifiers.insert(js_str_to_string_lossy(decl.source.value)); + runtime_specifiers.insert(decl.source.value.as_str()); } _ => {} } @@ -169,9 +169,7 @@ pub fn extract_dynamic_imports(semantic: &Semantic<'_>) -> Vec { AstKind::ImportExpression(import) => { crate::analyzer::utils::extract_literal_string(&import.source) } - AstKind::TSImportType(import_type) => { - Some(js_str_to_string_lossy(import_type.source.value).into_owned()) - } + AstKind::TSImportType(import_type) => Some(import_type.source.value.to_string()), _ => None, }) .collect() @@ -433,7 +431,7 @@ pub fn collect_import_declarations( decl.span.start, extend_past_line_end(source_text, decl.span.end), ), - specifier: js_str_to_string_lossy(decl.source.value).into_owned(), + specifier: decl.source.value.to_string(), bindings: collect_import_bindings(decl, semantic, dependency_refs), }) .collect() diff --git a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/mod.rs b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/mod.rs index e292d69014f..aa958746db1 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/mod.rs +++ b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/mod.rs @@ -1,6 +1,6 @@ use self::utils::{ expression_to_string, extract_decorator_name, get_canonical_decorator_name, get_decorator_args, - is_angular_decorator, js_str_to_string_lossy, + is_angular_decorator, }; use crate::types::metadata::SpanMetadata; @@ -1273,7 +1273,7 @@ fn extract_decorator_args<'a>( match arg { oxc_ast::ast::Argument::StringLiteral(lit) => { decorator_args.push(crate::DecoratorArg { - value: js_str_to_string_lossy(lit.value).into_owned(), + value: lit.value.to_string(), is_literal: true, }); } diff --git a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/signal_debug_name.rs b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/signal_debug_name.rs index 0f7610cd587..2cd825ab836 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/signal_debug_name.rs +++ b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/signal_debug_name.rs @@ -64,9 +64,9 @@ fn imports_signal_package(program: &Program<'_>) -> bool { let oxc_ast::ast::Statement::ImportDeclaration(decl) = stmt else { return false; }; - let specifier = super::utils::js_str_to_string_lossy(decl.source.value); - is_package_or_entry_point(&specifier, crate::utils::ANGULAR_CORE) - || is_package_or_entry_point(&specifier, "@angular/common") + let specifier = decl.source.value.as_str(); + is_package_or_entry_point(specifier, crate::utils::ANGULAR_CORE) + || is_package_or_entry_point(specifier, "@angular/common") }) } @@ -232,7 +232,7 @@ fn is_angular_import(ident: &IdentifierReference<'_>, semantic: &Semantic<'_>) - let Some(package) = package_of_signal_function(ident.name.as_str()) else { return false; }; - is_package_or_entry_point(&specifier, package) + is_package_or_entry_point(specifier, package) } /// Where the `debugName` goes in `call`, or `None` if the options argument isn't an object literal diff --git a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/utils/mod.rs b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/utils/mod.rs index fd4c8f7656c..c7f2fb80e24 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/utils/mod.rs +++ b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/utils/mod.rs @@ -4,42 +4,12 @@ use oxc_ast::ast::{ Argument, BindingPattern, Decorator, Expression, IdentifierReference, Program, PropertyKey, Statement, TSQualifiedName, TSTypeName, }; -use oxc_ast::{AstKind, StaticPropertyName}; +use oxc_ast::AstKind; use oxc_semantic::{Scoping, Semantic, SymbolFlags}; use oxc_span::GetSpan; -use oxc_str::JSStr; use oxc_syntax::module_record::{ExportEntry, ExportExportName, ModuleRecord}; use oxc_syntax::operator::BinaryOperator; use oxc_syntax::scope::ScopeId; -use std::borrow::Cow; - -/// Converts an Oxc JavaScript string value into a Rust string. -/// -/// Values that are valid UTF-8 are borrowed as is. Rust strings cannot represent lone -/// surrogates, so each one is encoded as U+FFFD followed by its code unit in lowercase hex -/// (e.g. `\u{FFFD}d83d`), matching how Oxc stored them before 0.155. -/// -/// TODO: Decide how lone surrogates should be handled. -pub fn js_str_to_string_lossy(value: JSStr<'_>) -> Cow<'_, str> { - match value.as_str() { - Some(value) => Cow::Borrowed(value), - None => value - .chars() - .map(|c| match c.to_char() { - Some(c) => c.to_string(), - None => format!("\u{FFFD}{:04x}", c.to_u32()), - }) - .collect(), - } -} - -/// Converts a statically known property name into a Rust string. See [`js_str_to_string_lossy`]. -fn static_property_name_to_string_lossy(name: StaticPropertyName<'_>) -> Cow<'_, str> { - match name { - StaticPropertyName::Borrowed(value) => js_str_to_string_lossy(value), - StaticPropertyName::Owned(value) => Cow::Owned(value.into_string()), - } -} /// Recursively resolves a local identifier reference to its assigned expression. /// Returns the original expression if it cannot be resolved or is imported from another file. @@ -147,7 +117,7 @@ pub fn reflect_object_literal<'o, 'a>( /// Extract a string value from a PropertyKey expression. pub fn extract_property_key<'a>(key: &'a PropertyKey<'a>) -> Option> { if let Some(name) = key.static_name() { - return Some(static_property_name_to_string_lossy(name)); + return Some(name); } match key { PropertyKey::Identifier(ident) => Some(std::borrow::Cow::Borrowed(ident.name.as_str())), @@ -166,14 +136,15 @@ pub fn class_member_name<'a>(key: &'a PropertyKey<'a>) -> Option) -> Option { match expr { - Expression::StringLiteral(s) => Some(js_str_to_string_lossy(s.value).into_owned()), + Expression::StringLiteral(s) => Some(s.value.to_string()), Expression::TemplateLiteral(t) if t.expressions.is_empty() => { let q = t.quasis.first()?; Some( q.value .cooked - .map_or(Cow::Borrowed(q.value.raw.as_str()), js_str_to_string_lossy) - .into_owned(), + .as_deref() + .unwrap_or(q.value.raw.as_str()) + .to_string(), ) } _ => None, @@ -186,7 +157,7 @@ pub fn extract_string_resolved<'a>( semantic: &Semantic<'a>, ) -> Option { match expr { - Expression::StringLiteral(s) => Some(js_str_to_string_lossy(s.value).into_owned()), + Expression::StringLiteral(s) => Some(s.value.to_string()), Expression::NumericLiteral(n) => Some(n.value.to_string()), Expression::BooleanLiteral(b) => Some(b.value.to_string()), Expression::NullLiteral(_) => Some("null".to_string()), @@ -196,11 +167,12 @@ pub fn extract_string_resolved<'a>( // https://github.com/angular/angular/blob/0e16bb7/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts#L219-L232 let mut result = String::new(); for (i, quasi) in t.quasis.iter().enumerate() { - let cooked = quasi.value.cooked.map_or( - Cow::Borrowed(quasi.value.raw.as_str()), - js_str_to_string_lossy, - ); - result.push_str(&cooked); + let cooked = quasi + .value + .cooked + .as_deref() + .unwrap_or(quasi.value.raw.as_str()); + result.push_str(cooked); if let Some(sub) = t.expressions.get(i) { result.push_str(&extract_string(sub, semantic)?); } @@ -275,7 +247,7 @@ use crate::utils::ANGULAR_CORE; pub(crate) fn import_of_identifier<'a>( ident: &oxc_ast::ast::IdentifierReference<'a>, semantic: &Semantic<'a>, -) -> Option<(Cow<'a, str>, Option<&'a str>)> { +) -> Option<(&'a str, Option<&'a str>)> { let ref_id = ident.reference_id.get()?; let scoping = semantic.scoping(); let symbol_id = scoping.get_reference(ref_id).symbol_id()?; @@ -297,7 +269,7 @@ pub(crate) fn import_of_identifier<'a>( let AstKind::ImportDeclaration(decl) = parent.kind() else { return None; }; - Some((js_str_to_string_lossy(decl.source.value), imported_name)) + Some((decl.source.value.as_str(), imported_name)) } /// Whether a call's callee is `@angular/core`'s `forwardRef`, reached through an import @@ -312,7 +284,7 @@ fn is_angular_forward_ref_callee<'a>(callee: &Expression<'a>, semantic: &Semanti Expression::Identifier(ident) => { matches!( import_of_identifier(ident, semantic), - Some((specifier, Some("forwardRef"))) if specifier == ANGULAR_CORE + Some((ANGULAR_CORE, Some("forwardRef"))) ) } Expression::StaticMemberExpression(member) => { @@ -326,7 +298,7 @@ fn is_angular_forward_ref_callee<'a>(callee: &Expression<'a>, semantic: &Semanti }; matches!( import_of_identifier(object, semantic), - Some((specifier, None)) if specifier == ANGULAR_CORE + Some((ANGULAR_CORE, None)) ) } _ => false, @@ -733,8 +705,8 @@ pub fn extract_class_body_type_check_meta( let Some(name) = public_instance_method_name(method) else { continue; }; - if !public_methods.iter().any(|existing| *existing == name) { - public_methods.push(name.into_owned()); + if !public_methods.iter().any(|existing| existing == name) { + public_methods.push(name.to_string()); } continue; } @@ -804,7 +776,7 @@ pub fn extract_class_body_type_check_meta( fn public_instance_method_name<'a>( method: &'a oxc_ast::ast::MethodDefinition<'a>, -) -> Option> { +) -> Option<&'a str> { use oxc_ast::ast::{MethodDefinitionKind, PropertyKey, TSAccessibility}; if method.kind != MethodDefinitionKind::Method { @@ -817,8 +789,8 @@ fn public_instance_method_name<'a>( return None; } match &method.key { - PropertyKey::StaticIdentifier(ident) => Some(Cow::Borrowed(ident.name.as_str())), - PropertyKey::StringLiteral(literal) => Some(js_str_to_string_lossy(literal.value)), + PropertyKey::StaticIdentifier(ident) => Some(ident.name.as_str()), + PropertyKey::StringLiteral(literal) => Some(literal.value.as_str()), _ => None, } } diff --git a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/utils/tests.rs b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/utils/tests.rs index 7438497e216..12384b03cd5 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/utils/tests.rs +++ b/packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/utils/tests.rs @@ -743,23 +743,3 @@ type T1 = a.b.c; let leftmost = get_leftmost_identifier_in_qualified(qualified).expect("should find leftmost"); assert_eq!(leftmost.name.as_str(), "a"); } - -#[test] -fn test_js_str_to_string_lossy() { - let allocator = Allocator::default(); - let source = r#""a\uFFFDb"; "a\uD83D\uDE00b"; "a\uD83Db"; "a\uDE00b";"#; - let ret = Parser::new(&allocator, source, SourceType::default()).parse(); - let values: Vec<_> = ret - .program - .directives - .iter() - .map(|directive| js_str_to_string_lossy(directive.expression.value)) - .collect(); - - // Well-formed values, including surrogate pairs, are borrowed unchanged. - assert!(matches!(&values[0], Cow::Borrowed("a\u{FFFD}b"))); - assert!(matches!(&values[1], Cow::Borrowed("a\u{1F600}b"))); - // Lone surrogates are encoded as U+FFFD followed by the code unit in hex. - assert_eq!(values[2], "a\u{FFFD}d83db"); - assert_eq!(values[3], "a\u{FFFD}de00b"); -} diff --git a/packages/compiler-cli/preprocessor/ng-analyze/src/evaluator/interpreter.rs b/packages/compiler-cli/preprocessor/ng-analyze/src/evaluator/interpreter.rs index 926ea90aa17..eb01ee6a573 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/src/evaluator/interpreter.rs +++ b/packages/compiler-cli/preprocessor/ng-analyze/src/evaluator/interpreter.rs @@ -7,7 +7,6 @@ //! binding in value position yields an [`IncompleteValue`] hole, which the async semantic //! driver resolves between locks and feeds back through the [`ResolvedEnv`] on a re-run. -use crate::analyzer::utils::js_str_to_string_lossy; use crate::analyzer::{ImportKind, ImportedSymbol}; use crate::evaluator::foreign::{ForeignFunctionResolver, FunctionTarget, TypeNameRef}; use crate::evaluator::value::{ @@ -115,9 +114,7 @@ pub fn evaluate_node_id( AstKind::BooleanLiteral(b) => Some(ResolvedValue::Boolean(b.value)), AstKind::NullLiteral(_) => Some(ResolvedValue::Null), AstKind::NumericLiteral(n) => Some(ResolvedValue::Number(n.value)), - AstKind::StringLiteral(s) => Some(ResolvedValue::String( - js_str_to_string_lossy(s.value).into_owned(), - )), + AstKind::StringLiteral(s) => Some(ResolvedValue::String(s.value.to_string())), AstKind::TemplateLiteral(t) => Some(interp.visit_template(t, &scope)), AstKind::IdentifierReference(ident) => { let ref_id = ident.reference_id.get()?; @@ -452,7 +449,7 @@ impl<'a, 'e, 'i> Interpreter<'a, 'e, 'i> { let Some(qualifier) = &import_type.qualifier else { return self.dynamic(import_type.span, DynamicReason::UnsupportedSyntax); }; - let specifier = js_str_to_string_lossy(import_type.source.value).into_owned(); + let specifier = import_type.source.value.to_string(); self.resolve_import_type_qualifier(qualifier, &specifier, import_type.span, scope) } @@ -503,9 +500,7 @@ impl<'a, 'e, 'i> Interpreter<'a, 'e, 'i> { match &literal.literal { TSLiteral::BooleanLiteral(b) => ResolvedValue::Boolean(b.value), TSLiteral::NumericLiteral(n) => ResolvedValue::Number(n.value), - TSLiteral::StringLiteral(s) => { - ResolvedValue::String(js_str_to_string_lossy(s.value).into_owned()) - } + TSLiteral::StringLiteral(s) => ResolvedValue::String(s.value.to_string()), TSLiteral::TemplateLiteral(t) => self.visit_template(t, scope), TSLiteral::UnaryExpression(u) => { self.visit_unary(u.operator, &u.argument, u.span, scope) @@ -812,9 +807,7 @@ impl<'a, 'e, 'i> Interpreter<'a, 'e, 'i> { Expression::BooleanLiteral(b) => ResolvedValue::Boolean(b.value), Expression::NullLiteral(_) => ResolvedValue::Null, Expression::NumericLiteral(n) => ResolvedValue::Number(n.value), - Expression::StringLiteral(s) => { - ResolvedValue::String(js_str_to_string_lossy(s.value).into_owned()) - } + Expression::StringLiteral(s) => ResolvedValue::String(s.value.to_string()), Expression::TemplateLiteral(t) => self.visit_template(t, scope), Expression::Identifier(ident) => { let res = if let Some(ref_id) = ident.reference_id.get() { @@ -998,7 +991,7 @@ impl<'a, 'e, 'i> Interpreter<'a, 'e, 'i> { let mut result = String::new(); for (i, quasi) in t.quasis.iter().enumerate() { match &quasi.value.cooked { - Some(cooked) => result.push_str(&js_str_to_string_lossy(*cooked)), + Some(cooked) => result.push_str(cooked.as_str()), None => result.push_str(quasi.value.raw.as_str()), } let Some(expr) = t.expressions.get(i) else { @@ -1355,7 +1348,7 @@ impl<'a, 'e, 'i> Interpreter<'a, 'e, 'i> { let name = match &member.id { TSEnumMemberName::Identifier(ident) => ident.name.to_string(), TSEnumMemberName::String(s) | TSEnumMemberName::ComputedString(s) => { - js_str_to_string_lossy(s.value).into_owned() + s.value.to_string() } TSEnumMemberName::ComputedTemplateString(t) => { let ResolvedValue::String(s) = self.visit_template(t, scope) else { diff --git a/packages/compiler-cli/preprocessor/ng-analyze/src/query/engine.rs b/packages/compiler-cli/preprocessor/ng-analyze/src/query/engine.rs index 486cfdd8ec4..f3056315fc5 100644 --- a/packages/compiler-cli/preprocessor/ng-analyze/src/query/engine.rs +++ b/packages/compiler-cli/preprocessor/ng-analyze/src/query/engine.rs @@ -416,10 +416,10 @@ impl QueryEngine { .with_class_table(true) .build(program); - // Only treat unrecoverable parse errors as fatal. When `ret.fatal_error` is false, the + // Only treat unrecoverable parse errors as fatal. When `ret.panicked` is false, the // parser has recovered and produced a complete AST that we can analyze. // We can rely on TS to perform the final verification downstream. - let errors = if ret.fatal_error { + let errors = if ret.panicked { ret.diagnostics.into_iter().map(|e| e.to_string()).collect() } else { Vec::new() @@ -1486,7 +1486,7 @@ async fn resolve_ambient_module_member let oxc_ast::ast::Statement::TSExternalModuleDeclaration(decl) = stmt else { continue; }; - if crate::analyzer::utils::js_str_to_string_lossy(decl.id.value) != specifier { + if decl.id.value.as_str() != specifier { continue; } match resolve_in_ambient_module(decl, dep, member) {