@angular/compiler 17.2.0-next.0 → 17.2.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/esm2022/src/compiler_util/expression_converter.mjs +98 -25
  2. package/esm2022/src/constant_pool.mjs +14 -4
  3. package/esm2022/src/expression_parser/ast.mjs +2 -3
  4. package/esm2022/src/expression_parser/parser.mjs +8 -27
  5. package/esm2022/src/jit_compiler_facade.mjs +9 -2
  6. package/esm2022/src/render3/partial/class_metadata.mjs +1 -1
  7. package/esm2022/src/render3/partial/directive.mjs +1 -1
  8. package/esm2022/src/render3/partial/factory.mjs +1 -1
  9. package/esm2022/src/render3/partial/injectable.mjs +1 -1
  10. package/esm2022/src/render3/partial/injector.mjs +1 -1
  11. package/esm2022/src/render3/partial/ng_module.mjs +1 -1
  12. package/esm2022/src/render3/partial/pipe.mjs +1 -1
  13. package/esm2022/src/render3/r3_class_metadata_compiler.mjs +5 -3
  14. package/esm2022/src/render3/r3_control_flow.mjs +39 -7
  15. package/esm2022/src/render3/r3_identifiers.mjs +6 -1
  16. package/esm2022/src/render3/r3_template_transform.mjs +6 -6
  17. package/esm2022/src/render3/view/api.mjs +1 -1
  18. package/esm2022/src/render3/view/compiler.mjs +12 -12
  19. package/esm2022/src/render3/view/template.mjs +21 -10
  20. package/esm2022/src/render3/view/util.mjs +4 -2
  21. package/esm2022/src/template/pipeline/ir/src/enums.mjs +27 -11
  22. package/esm2022/src/template/pipeline/ir/src/expression.mjs +32 -1
  23. package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +21 -3
  24. package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +22 -1
  25. package/esm2022/src/template/pipeline/src/compilation.mjs +4 -3
  26. package/esm2022/src/template/pipeline/src/emit.mjs +4 -2
  27. package/esm2022/src/template/pipeline/src/ingest.mjs +58 -15
  28. package/esm2022/src/template/pipeline/src/instruction.mjs +14 -1
  29. package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +15 -1
  30. package/esm2022/src/template/pipeline/src/phases/binding_specialization.mjs +11 -1
  31. package/esm2022/src/template/pipeline/src/phases/chaining.mjs +3 -1
  32. package/esm2022/src/template/pipeline/src/phases/const_collection.mjs +12 -5
  33. package/esm2022/src/template/pipeline/src/phases/create_defer_deps_fns.mjs +9 -3
  34. package/esm2022/src/template/pipeline/src/phases/generate_variables.mjs +2 -1
  35. package/esm2022/src/template/pipeline/src/phases/naming.mjs +14 -2
  36. package/esm2022/src/template/pipeline/src/phases/next_context_merging.mjs +2 -2
  37. package/esm2022/src/template/pipeline/src/phases/ordering.mjs +14 -5
  38. package/esm2022/src/template/pipeline/src/phases/reify.mjs +9 -1
  39. package/esm2022/src/template/pipeline/src/phases/resolve_contexts.mjs +2 -1
  40. package/esm2022/src/template/pipeline/src/phases/resolve_dollar_event.mjs +6 -3
  41. package/esm2022/src/template/pipeline/src/phases/resolve_names.mjs +3 -2
  42. package/esm2022/src/template/pipeline/src/phases/save_restore_view.mjs +2 -2
  43. package/esm2022/src/template/pipeline/src/phases/temporary_variables.mjs +2 -2
  44. package/esm2022/src/template/pipeline/src/phases/transform_two_way_binding_set.mjs +79 -0
  45. package/esm2022/src/template/pipeline/src/phases/var_counting.mjs +4 -1
  46. package/esm2022/src/template/pipeline/src/phases/variable_optimization.mjs +3 -3
  47. package/esm2022/src/template_parser/binding_parser.mjs +45 -17
  48. package/esm2022/src/version.mjs +1 -1
  49. package/fesm2022/compiler.mjs +599 -161
  50. package/fesm2022/compiler.mjs.map +1 -1
  51. package/index.d.ts +49 -223
  52. package/package.json +2 -2
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.2.0-next.0
2
+ * @license Angular v17.2.0-rc.0
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -157,12 +157,12 @@ export declare abstract class ASTWithName extends AST {
157
157
  constructor(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, nameSpan: AbsoluteSourceSpan);
158
158
  }
159
159
 
160
- export declare class ASTWithSource extends AST {
161
- ast: AST;
160
+ export declare class ASTWithSource<T extends AST = AST> extends AST {
161
+ ast: T;
162
162
  source: string | null;
163
163
  location: string;
164
164
  errors: ParserError[];
165
- constructor(ast: AST, source: string | null, location: string, absoluteOffset: number, errors: ParserError[]);
165
+ constructor(ast: T, source: string | null, location: string, absoluteOffset: number, errors: ParserError[]);
166
166
  visit(visitor: AstVisitor, context?: any): any;
167
167
  toString(): string;
168
168
  }
@@ -401,7 +401,7 @@ declare class BindingParser {
401
401
  */
402
402
  private _parseTemplateBindings;
403
403
  parseLiteralAttr(name: string, value: string | null, sourceSpan: ParseSourceSpan, absoluteOffset: number, valueSpan: ParseSourceSpan | undefined, targetMatchableAttrs: string[][], targetProps: ParsedProperty[], keySpan: ParseSourceSpan): void;
404
- parsePropertyBinding(name: string, expression: string, isHost: boolean, sourceSpan: ParseSourceSpan, absoluteOffset: number, valueSpan: ParseSourceSpan | undefined, targetMatchableAttrs: string[][], targetProps: ParsedProperty[], keySpan: ParseSourceSpan): void;
404
+ parsePropertyBinding(name: string, expression: string, isHost: boolean, isPartOfAssignmentBinding: boolean, sourceSpan: ParseSourceSpan, absoluteOffset: number, valueSpan: ParseSourceSpan | undefined, targetMatchableAttrs: string[][], targetProps: ParsedProperty[], keySpan: ParseSourceSpan): void;
405
405
  parsePropertyInterpolation(name: string, value: string, sourceSpan: ParseSourceSpan, valueSpan: ParseSourceSpan | undefined, targetMatchableAttrs: string[][], targetProps: ParsedProperty[], keySpan: ParseSourceSpan, interpolatedTokens: InterpolatedAttributeToken[] | InterpolatedTextToken[] | null): boolean;
406
406
  private _parsePropertyAst;
407
407
  private _parseAnimation;
@@ -420,6 +420,11 @@ declare class BindingParser {
420
420
  * @param isAttr true when binding to an attribute
421
421
  */
422
422
  private _validatePropertyOrAttributeName;
423
+ /**
424
+ * Returns whether a parsed AST is allowed to be used within the event side of a two-way binding.
425
+ * @param ast Parsed AST to be checked.
426
+ */
427
+ private _isAllowedAssignmentEvent;
423
428
  }
424
429
 
425
430
  export declare class BindingPipe extends ASTWithName {
@@ -435,7 +440,8 @@ export declare const enum BindingType {
435
440
  Attribute = 1,
436
441
  Class = 2,
437
442
  Style = 3,
438
- Animation = 4
443
+ Animation = 4,
444
+ TwoWay = 5
439
445
  }
440
446
 
441
447
  export declare class Block extends NodeWithI18n {
@@ -691,7 +697,10 @@ export declare type CompileClassMetadataFn = (metadata: R3ClassMetadata) => outp
691
697
  * Similar to the `setClassMetadata` call, it's wrapped into the `ngDevMode`
692
698
  * check to tree-shake away this code in production mode.
693
699
  */
694
- export declare function compileComponentClassMetadata(metadata: R3ClassMetadata, deferrableTypes: Map<string, string> | null): outputAst.Expression;
700
+ export declare function compileComponentClassMetadata(metadata: R3ClassMetadata, deferrableTypes: Map<string, {
701
+ importPath: string;
702
+ isDefaultImport: boolean;
703
+ }> | null): outputAst.Expression;
695
704
 
696
705
  /**
697
706
  * Compile a component for the render3 runtime as defined by the `R3ComponentMetadata`.
@@ -799,6 +808,13 @@ export declare class ConstantPool {
799
808
  private literals;
800
809
  private literalFactories;
801
810
  private sharedConstants;
811
+ /**
812
+ * Constant pool also tracks claimed names from {@link uniqueName}.
813
+ * This is useful to avoid collisions if variables are intended to be
814
+ * named a certain way- but may conflict. We wouldn't want to always suffix
815
+ * them with unique numbers.
816
+ */
817
+ private _claimedNames;
802
818
  private nextNameIndex;
803
819
  constructor(isClosureCompilerEnabled?: boolean);
804
820
  getConstLiteral(literal: outputAst.Expression, forceShared?: boolean): outputAst.Expression;
@@ -810,13 +826,13 @@ export declare class ConstantPool {
810
826
  getSharedFunctionReference(fn: outputAst.FunctionExpr | outputAst.ArrowFunctionExpr, prefix: string, useUniqueName?: boolean): outputAst.Expression;
811
827
  private _getLiteralFactory;
812
828
  /**
813
- * Produce a unique name.
829
+ * Produce a unique name in the context of this pool.
814
830
  *
815
831
  * The name might be unique among different prefixes if any of the prefixes end in
816
832
  * a digit so the prefix should be a constant string (not based on user input) and
817
833
  * must not end in a digit.
818
834
  */
819
- uniqueName(prefix: string): string;
835
+ uniqueName(name: string, alwaysIncludeSuffix?: boolean): string;
820
836
  private freshName;
821
837
  }
822
838
 
@@ -2217,210 +2233,6 @@ declare namespace outputAst {
2217
2233
  }
2218
2234
  export { outputAst }
2219
2235
 
2220
- export declare class _ParseAST {
2221
- input: string;
2222
- location: string;
2223
- absoluteOffset: number;
2224
- tokens: Token[];
2225
- parseFlags: ParseFlags;
2226
- private errors;
2227
- private offset;
2228
- private rparensExpected;
2229
- private rbracketsExpected;
2230
- private rbracesExpected;
2231
- private context;
2232
- private sourceSpanCache;
2233
- index: number;
2234
- constructor(input: string, location: string, absoluteOffset: number, tokens: Token[], parseFlags: ParseFlags, errors: ParserError[], offset: number);
2235
- peek(offset: number): Token;
2236
- get next(): Token;
2237
- /** Whether all the parser input has been processed. */
2238
- get atEOF(): boolean;
2239
- /**
2240
- * Index of the next token to be processed, or the end of the last token if all have been
2241
- * processed.
2242
- */
2243
- get inputIndex(): number;
2244
- /**
2245
- * End index of the last processed token, or the start of the first token if none have been
2246
- * processed.
2247
- */
2248
- get currentEndIndex(): number;
2249
- /**
2250
- * Returns the absolute offset of the start of the current token.
2251
- */
2252
- get currentAbsoluteOffset(): number;
2253
- /**
2254
- * Retrieve a `ParseSpan` from `start` to the current position (or to `artificialEndIndex` if
2255
- * provided).
2256
- *
2257
- * @param start Position from which the `ParseSpan` will start.
2258
- * @param artificialEndIndex Optional ending index to be used if provided (and if greater than the
2259
- * natural ending index)
2260
- */
2261
- span(start: number, artificialEndIndex?: number): ParseSpan;
2262
- sourceSpan(start: number, artificialEndIndex?: number): AbsoluteSourceSpan;
2263
- advance(): void;
2264
- /**
2265
- * Executes a callback in the provided context.
2266
- */
2267
- private withContext;
2268
- consumeOptionalCharacter(code: number): boolean;
2269
- peekKeywordLet(): boolean;
2270
- peekKeywordAs(): boolean;
2271
- /**
2272
- * Consumes an expected character, otherwise emits an error about the missing expected character
2273
- * and skips over the token stream until reaching a recoverable point.
2274
- *
2275
- * See `this.error` and `this.skip` for more details.
2276
- */
2277
- expectCharacter(code: number): void;
2278
- consumeOptionalOperator(op: string): boolean;
2279
- expectOperator(operator: string): void;
2280
- prettyPrintToken(tok: Token): string;
2281
- expectIdentifierOrKeyword(): string | null;
2282
- expectIdentifierOrKeywordOrString(): string;
2283
- parseChain(): AST;
2284
- parsePipe(): AST;
2285
- parseExpression(): AST;
2286
- parseConditional(): AST;
2287
- parseLogicalOr(): AST;
2288
- parseLogicalAnd(): AST;
2289
- parseNullishCoalescing(): AST;
2290
- parseEquality(): AST;
2291
- parseRelational(): AST;
2292
- parseAdditive(): AST;
2293
- parseMultiplicative(): AST;
2294
- parsePrefix(): AST;
2295
- parseCallChain(): AST;
2296
- parsePrimary(): AST;
2297
- parseExpressionList(terminator: number): AST[];
2298
- parseLiteralMap(): LiteralMap;
2299
- parseAccessMember(readReceiver: AST, start: number, isSafe: boolean): AST;
2300
- parseCall(receiver: AST, start: number, isSafe: boolean): AST;
2301
- private consumeOptionalAssignment;
2302
- parseCallArguments(): BindingPipe[];
2303
- /**
2304
- * Parses an identifier, a keyword, a string with an optional `-` in between,
2305
- * and returns the string along with its absolute source span.
2306
- */
2307
- expectTemplateBindingKey(): TemplateBindingIdentifier;
2308
- /**
2309
- * Parse microsyntax template expression and return a list of bindings or
2310
- * parsing errors in case the given expression is invalid.
2311
- *
2312
- * For example,
2313
- * ```
2314
- * <div *ngFor="let item of items; index as i; trackBy: func">
2315
- * ```
2316
- * contains five bindings:
2317
- * 1. ngFor -> null
2318
- * 2. item -> NgForOfContext.$implicit
2319
- * 3. ngForOf -> items
2320
- * 4. i -> NgForOfContext.index
2321
- * 5. ngForTrackBy -> func
2322
- *
2323
- * For a full description of the microsyntax grammar, see
2324
- * https://gist.github.com/mhevery/d3530294cff2e4a1b3fe15ff75d08855
2325
- *
2326
- * @param templateKey name of the microsyntax directive, like ngIf, ngFor,
2327
- * without the *, along with its absolute span.
2328
- */
2329
- parseTemplateBindings(templateKey: TemplateBindingIdentifier): TemplateBindingParseResult;
2330
- parseKeyedReadOrWrite(receiver: AST, start: number, isSafe: boolean): AST;
2331
- /**
2332
- * Parse a directive keyword, followed by a mandatory expression.
2333
- * For example, "of items", "trackBy: func".
2334
- * The bindings are: ngForOf -> items, ngForTrackBy -> func
2335
- * There could be an optional "as" binding that follows the expression.
2336
- * For example,
2337
- * ```
2338
- * *ngFor="let item of items | slice:0:1 as collection".
2339
- * ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^
2340
- * keyword bound target optional 'as' binding
2341
- * ```
2342
- *
2343
- * @param key binding key, for example, ngFor, ngIf, ngForOf, along with its
2344
- * absolute span.
2345
- */
2346
- private parseDirectiveKeywordBindings;
2347
- /**
2348
- * Return the expression AST for the bound target of a directive keyword
2349
- * binding. For example,
2350
- * ```
2351
- * *ngIf="condition | pipe"
2352
- * ^^^^^^^^^^^^^^^^ bound target for "ngIf"
2353
- * *ngFor="let item of items"
2354
- * ^^^^^ bound target for "ngForOf"
2355
- * ```
2356
- */
2357
- private getDirectiveBoundTarget;
2358
- /**
2359
- * Return the binding for a variable declared using `as`. Note that the order
2360
- * of the key-value pair in this declaration is reversed. For example,
2361
- * ```
2362
- * *ngFor="let item of items; index as i"
2363
- * ^^^^^ ^
2364
- * value key
2365
- * ```
2366
- *
2367
- * @param value name of the value in the declaration, "ngIf" in the example
2368
- * above, along with its absolute span.
2369
- */
2370
- private parseAsBinding;
2371
- /**
2372
- * Return the binding for a variable declared using `let`. For example,
2373
- * ```
2374
- * *ngFor="let item of items; let i=index;"
2375
- * ^^^^^^^^ ^^^^^^^^^^^
2376
- * ```
2377
- * In the first binding, `item` is bound to `NgForOfContext.$implicit`.
2378
- * In the second binding, `i` is bound to `NgForOfContext.index`.
2379
- */
2380
- private parseLetBinding;
2381
- /**
2382
- * Consume the optional statement terminator: semicolon or comma.
2383
- */
2384
- private consumeStatementTerminator;
2385
- /**
2386
- * Records an error and skips over the token stream until reaching a recoverable point. See
2387
- * `this.skip` for more details on token skipping.
2388
- */
2389
- error(message: string, index?: number | null): void;
2390
- private locationText;
2391
- /**
2392
- * Records an error for an unexpected private identifier being discovered.
2393
- * @param token Token representing a private identifier.
2394
- * @param extraMessage Optional additional message being appended to the error.
2395
- */
2396
- private _reportErrorForPrivateIdentifier;
2397
- /**
2398
- * Error recovery should skip tokens until it encounters a recovery point.
2399
- *
2400
- * The following are treated as unconditional recovery points:
2401
- * - end of input
2402
- * - ';' (parseChain() is always the root production, and it expects a ';')
2403
- * - '|' (since pipes may be chained and each pipe expression may be treated independently)
2404
- *
2405
- * The following are conditional recovery points:
2406
- * - ')', '}', ']' if one of calling productions is expecting one of these symbols
2407
- * - This allows skip() to recover from errors such as '(a.) + 1' allowing more of the AST to
2408
- * be retained (it doesn't skip any tokens as the ')' is retained because of the '(' begins
2409
- * an '(' <expr> ')' production).
2410
- * The recovery points of grouping symbols must be conditional as they must be skipped if
2411
- * none of the calling productions are not expecting the closing token else we will never
2412
- * make progress in the case of an extraneous group closing symbol (such as a stray ')').
2413
- * That is, we skip a closing symbol if we are not in a grouping production.
2414
- * - '=' in a `Writable` context
2415
- * - In this context, we are able to recover after seeing the `=` operator, which
2416
- * signals the presence of an independent rvalue expression following the `=` operator.
2417
- *
2418
- * If a production expects one of these token it increments the corresponding nesting count,
2419
- * and then decrements it just prior to checking if the token is in the input.
2420
- */
2421
- private skip;
2422
- }
2423
-
2424
2236
  export declare class ParsedEvent {
2425
2237
  name: string;
2426
2238
  targetOrPhase: string;
@@ -2429,12 +2241,14 @@ export declare class ParsedEvent {
2429
2241
  sourceSpan: ParseSourceSpan;
2430
2242
  handlerSpan: ParseSourceSpan;
2431
2243
  readonly keySpan: ParseSourceSpan;
2244
+ constructor(name: string, targetOrPhase: string, type: ParsedEventType.TwoWay, handler: ASTWithSource<NonNullAssert | PropertyRead | KeyedRead>, sourceSpan: ParseSourceSpan, handlerSpan: ParseSourceSpan, keySpan: ParseSourceSpan);
2432
2245
  constructor(name: string, targetOrPhase: string, type: ParsedEventType, handler: ASTWithSource, sourceSpan: ParseSourceSpan, handlerSpan: ParseSourceSpan, keySpan: ParseSourceSpan);
2433
2246
  }
2434
2247
 
2435
2248
  export declare const enum ParsedEventType {
2436
2249
  Regular = 0,
2437
- Animation = 1
2250
+ Animation = 1,
2251
+ TwoWay = 2
2438
2252
  }
2439
2253
 
2440
2254
  export declare interface ParsedHostBindings {
@@ -2468,7 +2282,8 @@ export declare class ParsedProperty {
2468
2282
  export declare enum ParsedPropertyType {
2469
2283
  DEFAULT = 0,
2470
2284
  LITERAL_ATTR = 1,
2471
- ANIMATION = 2
2285
+ ANIMATION = 2,
2286
+ TWO_WAY = 3
2472
2287
  }
2473
2288
 
2474
2289
  /**
@@ -2549,12 +2364,7 @@ export declare const enum ParseFlags {
2549
2364
  /**
2550
2365
  * Whether an output binding is being parsed.
2551
2366
  */
2552
- Action = 1,
2553
- /**
2554
- * Whether an assignment event is being parsed, i.e. an expression originating from
2555
- * two-way-binding aka banana-in-a-box syntax.
2556
- */
2557
- AssignmentEvent = 2
2367
+ Action = 1
2558
2368
  }
2559
2369
 
2560
2370
  export declare function parseHostBindings(host: {
@@ -2579,7 +2389,7 @@ export declare class Parser {
2579
2389
  private _lexer;
2580
2390
  private errors;
2581
2391
  constructor(_lexer: Lexer);
2582
- parseAction(input: string, isAssignmentEvent: boolean, location: string, absoluteOffset: number, interpolationConfig?: InterpolationConfig): ASTWithSource;
2392
+ parseAction(input: string, location: string, absoluteOffset: number, interpolationConfig?: InterpolationConfig): ASTWithSource;
2583
2393
  parseBinding(input: string, location: string, absoluteOffset: number, interpolationConfig?: InterpolationConfig): ASTWithSource;
2584
2394
  private checkSimpleExpression;
2585
2395
  parseSimpleBinding(input: string, location: string, absoluteOffset: number, interpolationConfig?: InterpolationConfig): ASTWithSource;
@@ -3035,7 +2845,10 @@ export declare interface R3ComponentMetadata<DeclarationT extends R3TemplateDepe
3035
2845
  /**
3036
2846
  * Map of deferrable symbol names -> corresponding import paths.
3037
2847
  */
3038
- deferrableTypes: Map<string, string>;
2848
+ deferrableTypes: Map<string, {
2849
+ importPath: string;
2850
+ isDefaultImport: boolean;
2851
+ }>;
3039
2852
  /**
3040
2853
  * Specifies how the 'directives' and/or `pipes` array, if generated, need to be emitted.
3041
2854
  */
@@ -3090,6 +2903,7 @@ export declare interface R3ComponentMetadata<DeclarationT extends R3TemplateDepe
3090
2903
  * not be set. If component has empty array imports then this field is not set.
3091
2904
  */
3092
2905
  rawImports?: outputAst.Expression;
2906
+ useTemplatePipeline: boolean;
3093
2907
  }
3094
2908
 
3095
2909
  /**
@@ -3622,6 +3436,10 @@ export declare interface R3DeferBlockTemplateDependency {
3622
3436
  * Import path where this dependency is located.
3623
3437
  */
3624
3438
  importPath: string | null;
3439
+ /**
3440
+ * Whether the symbol is the default export.
3441
+ */
3442
+ isDefaultImport: boolean;
3625
3443
  }
3626
3444
 
3627
3445
  declare interface R3DelegatedFnOrClassMetadata extends R3ConstructorFactoryMetadata {
@@ -3840,6 +3658,7 @@ export declare interface R3HostMetadata {
3840
3658
  styleAttr?: string;
3841
3659
  classAttr?: string;
3842
3660
  };
3661
+ useTemplatePipeline: boolean;
3843
3662
  }
3844
3663
 
3845
3664
  export declare class R3Identifiers {
@@ -4029,6 +3848,9 @@ export declare class R3Identifiers {
4029
3848
  static viewQuerySignal: outputAst.ExternalReference;
4030
3849
  static contentQuerySignal: outputAst.ExternalReference;
4031
3850
  static queryAdvance: outputAst.ExternalReference;
3851
+ static twoWayProperty: outputAst.ExternalReference;
3852
+ static twoWayBindingSet: outputAst.ExternalReference;
3853
+ static twoWayListener: outputAst.ExternalReference;
4032
3854
  static NgOnChangesFeature: outputAst.ExternalReference;
4033
3855
  static InheritDefinitionFeature: outputAst.ExternalReference;
4034
3856
  static CopyDefinitionFeature: outputAst.ExternalReference;
@@ -4056,6 +3878,10 @@ export declare class R3Identifiers {
4056
3878
  name: string;
4057
3879
  moduleName: string;
4058
3880
  };
3881
+ static unwrapWritableSignal: {
3882
+ name: string;
3883
+ moduleName: string;
3884
+ };
4059
3885
  }
4060
3886
 
4061
3887
  export declare interface R3InjectableMetadata {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/compiler",
3
- "version": "17.2.0-next.0",
3
+ "version": "17.2.0-rc.0",
4
4
  "description": "Angular - the compiler library",
5
5
  "author": "angular",
6
6
  "license": "MIT",
@@ -11,7 +11,7 @@
11
11
  "tslib": "^2.3.0"
12
12
  },
13
13
  "peerDependencies": {
14
- "@angular/core": "17.2.0-next.0"
14
+ "@angular/core": "17.2.0-rc.0"
15
15
  },
16
16
  "peerDependenciesMeta": {
17
17
  "@angular/core": {