@angular/compiler-cli 16.1.0-next.1 → 16.1.0-next.3

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 (50) hide show
  1. package/bundles/{chunk-Q5UROHFU.js → chunk-2LWEHGUD.js} +119 -110
  2. package/bundles/chunk-2LWEHGUD.js.map +6 -0
  3. package/bundles/{chunk-B6WD2R2T.js → chunk-2PV6GDIB.js} +22 -21
  4. package/bundles/chunk-2PV6GDIB.js.map +6 -0
  5. package/bundles/{chunk-VLCBVJOY.js → chunk-4KV4DPNH.js} +8 -8
  6. package/bundles/{chunk-QCPJUH3P.js → chunk-7ECYCAFM.js} +224 -104
  7. package/bundles/chunk-7ECYCAFM.js.map +6 -0
  8. package/bundles/{chunk-OVMU6P3K.js → chunk-C5JIFUTE.js} +5 -6
  9. package/bundles/{chunk-OVMU6P3K.js.map → chunk-C5JIFUTE.js.map} +1 -1
  10. package/bundles/{chunk-LYJKWJUC.js → chunk-CF2CT7RQ.js} +3 -3
  11. package/bundles/{chunk-TBUSSXUA.js → chunk-K2U2VZ7S.js} +7 -7
  12. package/bundles/{chunk-WOVOJRYO.js → chunk-OPZ2XHZS.js} +46 -36
  13. package/bundles/chunk-OPZ2XHZS.js.map +6 -0
  14. package/bundles/{chunk-EKTJ7622.js → chunk-OULZQUKT.js} +7 -7
  15. package/bundles/{chunk-7PCPPTTO.js → chunk-URH5LEAG.js} +5 -5
  16. package/bundles/{chunk-64MYZ5SD.js → chunk-UZO5WCWI.js} +5 -5
  17. package/bundles/{chunk-T2BBDUF3.js → chunk-ZE33XMQ7.js} +9 -6
  18. package/bundles/chunk-ZE33XMQ7.js.map +6 -0
  19. package/bundles/index.js +13 -13
  20. package/bundles/linker/babel/index.js +13 -13
  21. package/bundles/linker/index.js +5 -5
  22. package/bundles/ngcc/index.js +1 -1
  23. package/bundles/private/bazel.js +1 -1
  24. package/bundles/private/localize.js +3 -3
  25. package/bundles/private/migrations.js +6 -6
  26. package/bundles/private/tooling.js +4 -4
  27. package/bundles/src/bin/ng_xi18n.js +11 -11
  28. package/bundles/src/bin/ngc.js +9 -9
  29. package/bundles_metadata.json +1 -1
  30. package/package.json +3 -3
  31. package/src/ngtsc/annotations/common/index.d.ts +1 -0
  32. package/src/ngtsc/annotations/common/src/input_transforms.d.ts +11 -0
  33. package/src/ngtsc/annotations/common/src/util.d.ts +1 -1
  34. package/src/ngtsc/diagnostics/src/error_code.d.ts +5 -0
  35. package/src/ngtsc/metadata/src/api.d.ts +6 -0
  36. package/src/ngtsc/metadata/src/property_mapping.d.ts +3 -2
  37. package/src/ngtsc/reflection/src/host.d.ts +4 -0
  38. package/src/ngtsc/transform/src/api.d.ts +1 -1
  39. package/src/ngtsc/typecheck/api/api.d.ts +1 -2
  40. package/bundles/chunk-B6WD2R2T.js.map +0 -6
  41. package/bundles/chunk-Q5UROHFU.js.map +0 -6
  42. package/bundles/chunk-QCPJUH3P.js.map +0 -6
  43. package/bundles/chunk-T2BBDUF3.js.map +0 -6
  44. package/bundles/chunk-WOVOJRYO.js.map +0 -6
  45. /package/bundles/{chunk-VLCBVJOY.js.map → chunk-4KV4DPNH.js.map} +0 -0
  46. /package/bundles/{chunk-LYJKWJUC.js.map → chunk-CF2CT7RQ.js.map} +0 -0
  47. /package/bundles/{chunk-TBUSSXUA.js.map → chunk-K2U2VZ7S.js.map} +0 -0
  48. /package/bundles/{chunk-EKTJ7622.js.map → chunk-OULZQUKT.js.map} +0 -0
  49. /package/bundles/{chunk-7PCPPTTO.js.map → chunk-URH5LEAG.js.map} +0 -0
  50. /package/bundles/{chunk-64MYZ5SD.js.map → chunk-UZO5WCWI.js.map} +0 -0
@@ -9,13 +9,13 @@ import {
9
9
  reflectObjectLiteral,
10
10
  reflectTypeEntityToDeclaration,
11
11
  typeNodeToValueExpr
12
- } from "./chunk-T2BBDUF3.js";
12
+ } from "./chunk-ZE33XMQ7.js";
13
13
  import {
14
14
  ImportManager,
15
15
  translateExpression,
16
16
  translateStatement,
17
17
  translateType
18
- } from "./chunk-VLCBVJOY.js";
18
+ } from "./chunk-4KV4DPNH.js";
19
19
  import {
20
20
  ErrorCode,
21
21
  FatalDiagnosticError,
@@ -32,18 +32,18 @@ import {
32
32
  makeRelatedInformation,
33
33
  nodeDebugInfo,
34
34
  nodeNameForError
35
- } from "./chunk-B6WD2R2T.js";
35
+ } from "./chunk-2PV6GDIB.js";
36
36
  import {
37
37
  PerfEvent,
38
38
  PerfPhase
39
- } from "./chunk-7PCPPTTO.js";
39
+ } from "./chunk-URH5LEAG.js";
40
40
  import {
41
41
  absoluteFrom,
42
42
  absoluteFromSourceFile,
43
43
  relative
44
- } from "./chunk-TBUSSXUA.js";
44
+ } from "./chunk-K2U2VZ7S.js";
45
45
 
46
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/util.mjs
46
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/util.mjs
47
47
  import { ExternalExpr, ParseLocation, ParseSourceFile, ParseSourceSpan, ReadPropExpr, WrappedNodeExpr } from "@angular/compiler";
48
48
  import ts from "typescript";
49
49
  function valueReferenceToExpression(valueRef) {
@@ -234,12 +234,12 @@ function createSourceSpan(node) {
234
234
  const parseSf = new ParseSourceFile(sf.getFullText(), sf.fileName);
235
235
  return new ParseSourceSpan(new ParseLocation(parseSf, startOffset, startLine + 1, startCol + 1), new ParseLocation(parseSf, endOffset, endLine + 1, endCol + 1));
236
236
  }
237
- function compileResults(fac, def, metadataStmt, propName) {
237
+ function compileResults(fac, def, metadataStmt, propName, additionalFields) {
238
238
  const statements = def.statements;
239
239
  if (metadataStmt !== null) {
240
240
  statements.push(metadataStmt);
241
241
  }
242
- return [
242
+ const results = [
243
243
  fac,
244
244
  {
245
245
  name: propName,
@@ -248,6 +248,10 @@ function compileResults(fac, def, metadataStmt, propName) {
248
248
  type: def.type
249
249
  }
250
250
  ];
251
+ if (additionalFields !== null) {
252
+ results.push(...additionalFields);
253
+ }
254
+ return results;
251
255
  }
252
256
  function toFactoryMetadata(meta, target) {
253
257
  return {
@@ -280,7 +284,7 @@ function isAbstractClassDeclaration(clazz) {
280
284
  return ts.canHaveModifiers(clazz) && clazz.modifiers !== void 0 ? clazz.modifiers.some((mod) => mod.kind === ts.SyntaxKind.AbstractKeyword) : false;
281
285
  }
282
286
 
283
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/dynamic.mjs
287
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/dynamic.mjs
284
288
  var DynamicValue = class {
285
289
  constructor(node, reason, code) {
286
290
  this.node = node;
@@ -370,10 +374,10 @@ var DynamicValue = class {
370
374
  }
371
375
  };
372
376
 
373
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.mjs
377
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.mjs
374
378
  import ts2 from "typescript";
375
379
 
376
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/result.mjs
380
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/result.mjs
377
381
  var ResolvedModule = class {
378
382
  constructor(exports, evaluate) {
379
383
  this.exports = exports;
@@ -403,7 +407,7 @@ var EnumValue = class {
403
407
  var KnownFn = class {
404
408
  };
405
409
 
406
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/builtin.mjs
410
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/builtin.mjs
407
411
  var ArraySliceBuiltinFn = class extends KnownFn {
408
412
  constructor(lhs) {
409
413
  super();
@@ -455,14 +459,14 @@ var StringConcatBuiltinFn = class extends KnownFn {
455
459
  }
456
460
  };
457
461
 
458
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/synthetic.mjs
462
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/synthetic.mjs
459
463
  var SyntheticValue = class {
460
464
  constructor(value) {
461
465
  this.value = value;
462
466
  }
463
467
  };
464
468
 
465
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.mjs
469
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.mjs
466
470
  function literalBinaryOp(op) {
467
471
  return { op, literal: true };
468
472
  }
@@ -619,7 +623,7 @@ var StaticInterpreter = class {
619
623
  visitIdentifier(node, context) {
620
624
  const decl = this.host.getDeclarationOfIdentifier(node);
621
625
  if (decl === null) {
622
- if (node.originalKeywordKind === ts2.SyntaxKind.UndefinedKeyword) {
626
+ if (getOriginalKeywordKind(node) === ts2.SyntaxKind.UndefinedKeyword) {
623
627
  return void 0;
624
628
  } else {
625
629
  if (this.dependencyTracker !== null && this.host.getImportOfIdentifier(node) !== null) {
@@ -1039,8 +1043,11 @@ function owningModule(context, override = null) {
1039
1043
  return null;
1040
1044
  }
1041
1045
  }
1046
+ function getOriginalKeywordKind(identifier) {
1047
+ return typeof ts2.identifierToKeywordKind === "function" ? ts2.identifierToKeywordKind(identifier) : identifier.originalKeywordKind;
1048
+ }
1042
1049
 
1043
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interface.mjs
1050
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interface.mjs
1044
1051
  var PartialEvaluator = class {
1045
1052
  constructor(host, checker, dependencyTracker) {
1046
1053
  this.host = host;
@@ -1060,7 +1067,7 @@ var PartialEvaluator = class {
1060
1067
  }
1061
1068
  };
1062
1069
 
1063
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/diagnostics.mjs
1070
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/partial_evaluator/src/diagnostics.mjs
1064
1071
  import ts3 from "typescript";
1065
1072
  function describeResolvedType(value, maxDepth = 1) {
1066
1073
  var _a, _b;
@@ -1190,7 +1197,7 @@ function getContainerNode(node) {
1190
1197
  return node.getSourceFile();
1191
1198
  }
1192
1199
 
1193
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/di.mjs
1200
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/di.mjs
1194
1201
  import { LiteralExpr, WrappedNodeExpr as WrappedNodeExpr2 } from "@angular/compiler";
1195
1202
  import ts4 from "typescript";
1196
1203
  function getConstructorDependencies(clazz, reflector, isCore) {
@@ -1334,10 +1341,10 @@ function createUnsuitableInjectionTokenError(clazz, error) {
1334
1341
  return new FatalDiagnosticError(ErrorCode.PARAM_MISSING_TOKEN, param.nameNode, chain, hints);
1335
1342
  }
1336
1343
 
1337
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/diagnostics.mjs
1344
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/diagnostics.mjs
1338
1345
  import ts7 from "typescript";
1339
1346
 
1340
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/api.mjs
1347
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/api.mjs
1341
1348
  var MetaKind;
1342
1349
  (function(MetaKind2) {
1343
1350
  MetaKind2[MetaKind2["Directive"] = 0] = "Directive";
@@ -1350,10 +1357,10 @@ var MatchSource;
1350
1357
  MatchSource2[MatchSource2["HostDirective"] = 1] = "HostDirective";
1351
1358
  })(MatchSource || (MatchSource = {}));
1352
1359
 
1353
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/dts.mjs
1360
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/dts.mjs
1354
1361
  import ts6 from "typescript";
1355
1362
 
1356
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/property_mapping.mjs
1363
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/property_mapping.mjs
1357
1364
  var ClassPropertyMapping = class {
1358
1365
  constructor(forwardMap) {
1359
1366
  this.forwardMap = forwardMap;
@@ -1407,10 +1414,10 @@ var ClassPropertyMapping = class {
1407
1414
  }
1408
1415
  return obj;
1409
1416
  }
1410
- toJointMappedObject() {
1417
+ toJointMappedObject(transform) {
1411
1418
  const obj = {};
1412
1419
  for (const [classPropertyName, inputOrOutput] of this.forwardMap) {
1413
- obj[classPropertyName] = inputOrOutput;
1420
+ obj[classPropertyName] = transform(inputOrOutput);
1414
1421
  }
1415
1422
  return obj;
1416
1423
  }
@@ -1431,7 +1438,7 @@ function reverseMapFromForwardMap(forwardMap) {
1431
1438
  return reverseMap;
1432
1439
  }
1433
1440
 
1434
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/util.mjs
1441
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/util.mjs
1435
1442
  import ts5 from "typescript";
1436
1443
  function extractReferencesFromType(checker, def, bestGuessOwningModule) {
1437
1444
  if (!ts5.isTupleTypeNode(def)) {
@@ -1513,7 +1520,7 @@ function extractDirectiveTypeCheckMeta(node, inputs, reflector) {
1513
1520
  const restrictedInputFields = /* @__PURE__ */ new Set();
1514
1521
  const stringLiteralInputFields = /* @__PURE__ */ new Set();
1515
1522
  const undeclaredInputFields = /* @__PURE__ */ new Set();
1516
- for (const classPropertyName of inputs.classPropertyNames) {
1523
+ for (const { classPropertyName, transform } of inputs) {
1517
1524
  const field = members.find((member) => member.name === classPropertyName);
1518
1525
  if (field === void 0 || field.node === null) {
1519
1526
  undeclaredInputFields.add(classPropertyName);
@@ -1525,6 +1532,9 @@ function extractDirectiveTypeCheckMeta(node, inputs, reflector) {
1525
1532
  if (field.nameNode !== null && ts5.isStringLiteral(field.nameNode)) {
1526
1533
  stringLiteralInputFields.add(classPropertyName);
1527
1534
  }
1535
+ if (transform !== null) {
1536
+ coercedInputFields.add(classPropertyName);
1537
+ }
1528
1538
  }
1529
1539
  const arity = reflector.getGenericArityOfClass(node);
1530
1540
  return {
@@ -1613,7 +1623,7 @@ function hasInjectableFields(clazz, host) {
1613
1623
  return members.some(({ isStatic, name }) => isStatic && (name === "\u0275prov" || name === "\u0275fac"));
1614
1624
  }
1615
1625
 
1616
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/dts.mjs
1626
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/dts.mjs
1617
1627
  var DtsMetadataReader = class {
1618
1628
  constructor(checker, reflector) {
1619
1629
  this.checker = checker;
@@ -1718,21 +1728,24 @@ function readInputsType(type) {
1718
1728
  continue;
1719
1729
  }
1720
1730
  const stringValue = readStringType(member.type);
1731
+ const classPropertyName = member.name.text;
1721
1732
  if (stringValue != null) {
1722
- inputsMap[member.name.text] = {
1733
+ inputsMap[classPropertyName] = {
1723
1734
  bindingPropertyName: stringValue,
1724
- classPropertyName: member.name.text,
1725
- required: false
1735
+ classPropertyName,
1736
+ required: false,
1737
+ transform: null
1726
1738
  };
1727
1739
  } else {
1728
1740
  const config = readMapType(member.type, (innerValue) => {
1729
1741
  var _a;
1730
1742
  return (_a = readStringType(innerValue)) != null ? _a : readBooleanType(innerValue);
1731
1743
  });
1732
- inputsMap[member.name.text] = {
1733
- classPropertyName: member.name.text,
1744
+ inputsMap[classPropertyName] = {
1745
+ classPropertyName,
1734
1746
  bindingPropertyName: config.alias,
1735
- required: config.required
1747
+ required: config.required,
1748
+ transform: null
1736
1749
  };
1737
1750
  }
1738
1751
  }
@@ -1785,7 +1798,7 @@ function readHostDirectivesType(checker, type, bestGuessOwningModule) {
1785
1798
  return result.length > 0 ? result : null;
1786
1799
  }
1787
1800
 
1788
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/inheritance.mjs
1801
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/inheritance.mjs
1789
1802
  function flattenInheritedDirectiveMetadata(reader, dir) {
1790
1803
  const topMeta = reader.getDirectiveMetadata(dir);
1791
1804
  if (topMeta === null) {
@@ -1843,7 +1856,7 @@ function flattenInheritedDirectiveMetadata(reader, dir) {
1843
1856
  };
1844
1857
  }
1845
1858
 
1846
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/registry.mjs
1859
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/registry.mjs
1847
1860
  var LocalMetadataRegistry = class {
1848
1861
  constructor() {
1849
1862
  this.directives = /* @__PURE__ */ new Map();
@@ -1900,7 +1913,7 @@ var CompoundMetadataRegistry = class {
1900
1913
  }
1901
1914
  };
1902
1915
 
1903
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/resource_registry.mjs
1916
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/resource_registry.mjs
1904
1917
  var ResourceRegistry = class {
1905
1918
  constructor() {
1906
1919
  this.externalTemplateToComponentsMap = /* @__PURE__ */ new Map();
@@ -1965,7 +1978,7 @@ var ResourceRegistry = class {
1965
1978
  }
1966
1979
  };
1967
1980
 
1968
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/providers.mjs
1981
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/providers.mjs
1969
1982
  var ExportedProviderStatusResolver = class {
1970
1983
  constructor(metaReader) {
1971
1984
  this.metaReader = metaReader;
@@ -2009,7 +2022,7 @@ var ExportedProviderStatusResolver = class {
2009
2022
  }
2010
2023
  };
2011
2024
 
2012
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/host_directives_resolver.mjs
2025
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/metadata/src/host_directives_resolver.mjs
2013
2026
  var EMPTY_ARRAY = [];
2014
2027
  var HostDirectivesResolver = class {
2015
2028
  constructor(metaReader) {
@@ -2063,14 +2076,15 @@ function resolveInput(bindingName, binding) {
2063
2076
  return {
2064
2077
  bindingPropertyName: bindingName,
2065
2078
  classPropertyName: binding.classPropertyName,
2066
- required: binding.required
2079
+ required: binding.required,
2080
+ transform: binding.transform
2067
2081
  };
2068
2082
  }
2069
2083
  function resolveOutput(bindingName) {
2070
2084
  return bindingName;
2071
2085
  }
2072
2086
 
2073
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/diagnostics.mjs
2087
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/diagnostics.mjs
2074
2088
  function makeDuplicateDeclarationError(node, data, kind) {
2075
2089
  const context = [];
2076
2090
  for (const decl of data) {
@@ -2266,7 +2280,7 @@ function getInheritedUndecoratedCtorDiagnostic(node, baseClass, kind) {
2266
2280
  return makeDiagnostic(ErrorCode.DIRECTIVE_INHERITS_UNDECORATED_CTOR, node.name, `The ${kind.toLowerCase()} ${node.name.text} inherits its constructor from ${baseClassName}, but the latter does not have an Angular decorator of its own. Dependency injection will not be able to resolve the parameters of ${baseClassName}'s constructor. Either add a @${baseNeedsDecorator} decorator to ${baseClassName}, or add an explicit constructor to ${node.name.text}.`);
2267
2281
  }
2268
2282
 
2269
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/evaluation.mjs
2283
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/evaluation.mjs
2270
2284
  import ts8 from "typescript";
2271
2285
  function resolveEnumValue(evaluator, metadata, field, enumSymbolName) {
2272
2286
  let resolved = null;
@@ -2299,7 +2313,7 @@ function resolveLiteral(decorator, literalCache) {
2299
2313
  return meta;
2300
2314
  }
2301
2315
 
2302
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/factory.mjs
2316
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/factory.mjs
2303
2317
  import { compileDeclareFactoryFunction, compileFactoryFunction } from "@angular/compiler";
2304
2318
  function compileNgFactoryDefField(metadata) {
2305
2319
  const res = compileFactoryFunction(metadata);
@@ -2310,7 +2324,7 @@ function compileDeclareFactory(metadata) {
2310
2324
  return { name: "\u0275fac", initializer: res.expression, statements: res.statements, type: res.type };
2311
2325
  }
2312
2326
 
2313
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/injectable_registry.mjs
2327
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/injectable_registry.mjs
2314
2328
  var InjectableClassRegistry = class {
2315
2329
  constructor(host, isCore) {
2316
2330
  this.host = host;
@@ -2336,7 +2350,7 @@ var InjectableClassRegistry = class {
2336
2350
  }
2337
2351
  };
2338
2352
 
2339
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/metadata.mjs
2353
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/metadata.mjs
2340
2354
  import { FunctionExpr, LiteralArrayExpr, LiteralExpr as LiteralExpr2, literalMap, ReturnStatement, WrappedNodeExpr as WrappedNodeExpr3 } from "@angular/compiler";
2341
2355
  import ts9 from "typescript";
2342
2356
  function extractClassMetadata(clazz, reflection, isCore, annotateForClosureCompiler, angularDecoratorTransform = (dec) => dec) {
@@ -2423,13 +2437,13 @@ function removeIdentifierReferences(node, name) {
2423
2437
  return result.transformed[0];
2424
2438
  }
2425
2439
 
2426
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/references_registry.mjs
2440
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/references_registry.mjs
2427
2441
  var NoopReferencesRegistry = class {
2428
2442
  add(source, ...references) {
2429
2443
  }
2430
2444
  };
2431
2445
 
2432
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/schema.mjs
2446
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/schema.mjs
2433
2447
  import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from "@angular/compiler";
2434
2448
  function extractSchemas(rawExpr, evaluator, context) {
2435
2449
  const schemas = [];
@@ -2459,11 +2473,28 @@ function extractSchemas(rawExpr, evaluator, context) {
2459
2473
  return schemas;
2460
2474
  }
2461
2475
 
2462
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/component/src/handler.mjs
2476
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/common/src/input_transforms.mjs
2477
+ import { outputAst } from "@angular/compiler";
2478
+ function compileInputTransformFields(inputs) {
2479
+ const extraFields = [];
2480
+ for (const input of inputs) {
2481
+ if (input.transform) {
2482
+ extraFields.push({
2483
+ name: `ngAcceptInputType_${input.classPropertyName}`,
2484
+ type: outputAst.transplantedType(input.transform.type),
2485
+ statements: [],
2486
+ initializer: null
2487
+ });
2488
+ }
2489
+ }
2490
+ return extraFields;
2491
+ }
2492
+
2493
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/component/src/handler.mjs
2463
2494
  import { compileClassMetadata as compileClassMetadata3, compileComponentFromMetadata, compileDeclareClassMetadata as compileDeclareClassMetadata3, compileDeclareComponentFromMetadata, CssSelector as CssSelector2, DEFAULT_INTERPOLATION_CONFIG as DEFAULT_INTERPOLATION_CONFIG2, DomElementSchemaRegistry, FactoryTarget as FactoryTarget3, makeBindingParser as makeBindingParser2, R3TargetBinder, R3TemplateDependencyKind, SelectorMatcher as SelectorMatcher2, ViewEncapsulation, WrappedNodeExpr as WrappedNodeExpr7 } from "@angular/compiler";
2464
2495
  import ts24 from "typescript";
2465
2496
 
2466
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/api.mjs
2497
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/api.mjs
2467
2498
  import ts10 from "typescript";
2468
2499
  var SemanticSymbol = class {
2469
2500
  constructor(decl) {
@@ -2479,7 +2510,7 @@ function getSymbolIdentifier(decl) {
2479
2510
  return decl.name.text;
2480
2511
  }
2481
2512
 
2482
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/graph.mjs
2513
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/graph.mjs
2483
2514
  import { ExternalExpr as ExternalExpr2 } from "@angular/compiler";
2484
2515
  var OpaqueSymbol = class extends SemanticSymbol {
2485
2516
  isPublicApiAffected() {
@@ -2622,10 +2653,10 @@ function getImportPath(expr) {
2622
2653
  }
2623
2654
  }
2624
2655
 
2625
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs
2656
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs
2626
2657
  import ts11 from "typescript";
2627
2658
 
2628
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/util.mjs
2659
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/util.mjs
2629
2660
  function isSymbolEqual(a, b) {
2630
2661
  if (a.decl === b.decl) {
2631
2662
  return true;
@@ -2675,7 +2706,7 @@ function isSetEqual(a, b, equalityTester = referenceEquality) {
2675
2706
  return true;
2676
2707
  }
2677
2708
 
2678
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs
2709
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs
2679
2710
  function extractSemanticTypeParameters(node) {
2680
2711
  if (!ts11.isClassDeclaration(node) || node.typeParameters === void 0) {
2681
2712
  return null;
@@ -2695,14 +2726,14 @@ function isTypeParameterEqual(a, b) {
2695
2726
  return a.hasGenericTypeBound === b.hasGenericTypeBound;
2696
2727
  }
2697
2728
 
2698
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/api.mjs
2729
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/api.mjs
2699
2730
  var ComponentScopeKind;
2700
2731
  (function(ComponentScopeKind2) {
2701
2732
  ComponentScopeKind2[ComponentScopeKind2["NgModule"] = 0] = "NgModule";
2702
2733
  ComponentScopeKind2[ComponentScopeKind2["Standalone"] = 1] = "Standalone";
2703
2734
  })(ComponentScopeKind || (ComponentScopeKind = {}));
2704
2735
 
2705
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/component_scope.mjs
2736
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/component_scope.mjs
2706
2737
  var CompoundComponentScopeReader = class {
2707
2738
  constructor(readers) {
2708
2739
  this.readers = readers;
@@ -2727,7 +2758,7 @@ var CompoundComponentScopeReader = class {
2727
2758
  }
2728
2759
  };
2729
2760
 
2730
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/dependency.mjs
2761
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/dependency.mjs
2731
2762
  var MetadataDtsModuleScopeResolver = class {
2732
2763
  constructor(dtsMetaReader, aliasingHost) {
2733
2764
  this.dtsMetaReader = dtsMetaReader;
@@ -2803,11 +2834,11 @@ var MetadataDtsModuleScopeResolver = class {
2803
2834
  }
2804
2835
  };
2805
2836
 
2806
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/local.mjs
2837
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/local.mjs
2807
2838
  import { ExternalExpr as ExternalExpr3 } from "@angular/compiler";
2808
2839
  import ts12 from "typescript";
2809
2840
 
2810
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/util.mjs
2841
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/util.mjs
2811
2842
  function getDiagnosticNode(ref, rawExpr) {
2812
2843
  return rawExpr !== null ? ref.getOriginForDiagnostics(rawExpr) : ref.node.name;
2813
2844
  }
@@ -2830,7 +2861,7 @@ function makeUnknownComponentImportDiagnostic(ref, rawExpr) {
2830
2861
  return makeDiagnostic(ErrorCode.COMPONENT_UNKNOWN_IMPORT, getDiagnosticNode(ref, rawExpr), `Component imports must be standalone components, directives, pipes, or must be NgModules.`);
2831
2862
  }
2832
2863
 
2833
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/local.mjs
2864
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/local.mjs
2834
2865
  var LocalModuleScopeRegistry = class {
2835
2866
  constructor(localReader, fullReader, dependencyScopeReader, refEmitter, aliasingHost) {
2836
2867
  this.localReader = localReader;
@@ -3169,7 +3200,7 @@ function reexportCollision(module, refA, refB) {
3169
3200
  ]);
3170
3201
  }
3171
3202
 
3172
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/typecheck.mjs
3203
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/typecheck.mjs
3173
3204
  import { CssSelector, SelectorMatcher } from "@angular/compiler";
3174
3205
  import ts13 from "typescript";
3175
3206
  var TypeCheckScopeRegistry = class {
@@ -3238,7 +3269,7 @@ var TypeCheckScopeRegistry = class {
3238
3269
  }
3239
3270
  };
3240
3271
 
3241
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/api.mjs
3272
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/api.mjs
3242
3273
  var CompilationMode;
3243
3274
  (function(CompilationMode2) {
3244
3275
  CompilationMode2[CompilationMode2["FULL"] = 0] = "FULL";
@@ -3257,7 +3288,7 @@ var HandlerFlags;
3257
3288
  HandlerFlags2[HandlerFlags2["FULL_INHERITANCE"] = 1] = "FULL_INHERITANCE";
3258
3289
  })(HandlerFlags || (HandlerFlags = {}));
3259
3290
 
3260
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/alias.mjs
3291
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/alias.mjs
3261
3292
  import ts14 from "typescript";
3262
3293
  function aliasTransformFactory(exportStatements) {
3263
3294
  return () => {
@@ -3280,10 +3311,10 @@ function aliasTransformFactory(exportStatements) {
3280
3311
  };
3281
3312
  }
3282
3313
 
3283
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/compilation.mjs
3314
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/compilation.mjs
3284
3315
  import ts15 from "typescript";
3285
3316
 
3286
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/trait.mjs
3317
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/trait.mjs
3287
3318
  var TraitState;
3288
3319
  (function(TraitState2) {
3289
3320
  TraitState2[TraitState2["Pending"] = 0] = "Pending";
@@ -3340,7 +3371,7 @@ var TraitImpl = class {
3340
3371
  }
3341
3372
  };
3342
3373
 
3343
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/compilation.mjs
3374
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/compilation.mjs
3344
3375
  var TraitCompiler = class {
3345
3376
  constructor(handlers, reflector, perf, incrementalBuild, compileNonExportedClasses, compilationMode, dtsTransforms, semanticDepGraphUpdater, sourceFileTypeIdentifier) {
3346
3377
  this.handlers = handlers;
@@ -3575,7 +3606,7 @@ var TraitCompiler = class {
3575
3606
  }
3576
3607
  resolve() {
3577
3608
  var _a, _b;
3578
- const classes = Array.from(this.classes.keys());
3609
+ const classes = this.classes.keys();
3579
3610
  for (const clazz of classes) {
3580
3611
  const record = this.classes.get(clazz);
3581
3612
  for (let trait of record.traits) {
@@ -3775,10 +3806,10 @@ function containsErrors(diagnostics) {
3775
3806
  return diagnostics !== null && diagnostics.some((diag) => diag.category === ts15.DiagnosticCategory.Error);
3776
3807
  }
3777
3808
 
3778
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/declaration.mjs
3809
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/declaration.mjs
3779
3810
  import ts17 from "typescript";
3780
3811
 
3781
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/utils.mjs
3812
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/utils.mjs
3782
3813
  import ts16 from "typescript";
3783
3814
  function addImports(importManager, sf, extraStatements = []) {
3784
3815
  const addedImports = importManager.getAllImports(sf.fileName).map((i) => {
@@ -3814,7 +3845,7 @@ function isImportStatement(stmt) {
3814
3845
  return ts16.isImportDeclaration(stmt) || ts16.isImportEqualsDeclaration(stmt) || ts16.isNamespaceImport(stmt);
3815
3846
  }
3816
3847
 
3817
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/declaration.mjs
3848
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/declaration.mjs
3818
3849
  var DtsTransformRegistry = class {
3819
3850
  constructor() {
3820
3851
  this.ivyDeclarationTransforms = /* @__PURE__ */ new Map();
@@ -3961,11 +3992,11 @@ function markForEmitAsSingleLine(node) {
3961
3992
  ts17.forEachChild(node, markForEmitAsSingleLine);
3962
3993
  }
3963
3994
 
3964
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/transform.mjs
3995
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/transform.mjs
3965
3996
  import { ConstantPool } from "@angular/compiler";
3966
3997
  import ts19 from "typescript";
3967
3998
 
3968
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/util/src/visitor.mjs
3999
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/util/src/visitor.mjs
3969
4000
  import ts18 from "typescript";
3970
4001
  function visit(node, visitor, context) {
3971
4002
  return visitor._visit(node, context);
@@ -4026,7 +4057,7 @@ var Visitor = class {
4026
4057
  }
4027
4058
  };
4028
4059
 
4029
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/transform.mjs
4060
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/transform/src/transform.mjs
4030
4061
  var NO_DECORATORS = /* @__PURE__ */ new Set();
4031
4062
  var CLOSURE_FILE_OVERVIEW_REGEXP = /\s+@fileoverview\s+/i;
4032
4063
  function ivyTransformFactory(compilation, reflector, importRewriter, defaultImportTracker, perf, isCore, isClosureCompilerEnabled) {
@@ -4074,6 +4105,9 @@ var IvyTransformationVisitor = class extends Visitor {
4074
4105
  const statements = [];
4075
4106
  const members = [...node.members];
4076
4107
  for (const field of this.classCompilationMap.get(node)) {
4108
+ if (field.initializer === null) {
4109
+ continue;
4110
+ }
4077
4111
  const exprNode = translateExpression(field.initializer, this.importManager, translateOptions);
4078
4112
  const property = ts19.factory.createPropertyDeclaration([ts19.factory.createToken(ts19.SyntaxKind.StaticKeyword)], field.name, void 0, void 0, exprNode);
4079
4113
  if (this.isClosureCompilerEnabled) {
@@ -4234,10 +4268,10 @@ function nodeArrayFromDecoratorsArray(decorators) {
4234
4268
  return array;
4235
4269
  }
4236
4270
 
4237
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/directive/src/handler.mjs
4271
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/directive/src/handler.mjs
4238
4272
  import { compileClassMetadata, compileDeclareClassMetadata, compileDeclareDirectiveFromMetadata, compileDirectiveFromMetadata, FactoryTarget, makeBindingParser, WrappedNodeExpr as WrappedNodeExpr5 } from "@angular/compiler";
4239
4273
 
4240
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/directive/src/shared.mjs
4274
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/directive/src/shared.mjs
4241
4275
  import { createMayBeForwardRefExpression, emitDistinctChangesOnlyDefaultValue, ExternalExpr as ExternalExpr4, getSafePropertyAccessString, parseHostBindings, verifyHostBindings, WrappedNodeExpr as WrappedNodeExpr4 } from "@angular/compiler";
4242
4276
  import ts20 from "typescript";
4243
4277
  var EMPTY_OBJECT = {};
@@ -4266,8 +4300,8 @@ function extractDirectiveMetadata(clazz, decorator, reflector, evaluator, refEmi
4266
4300
  const members = reflector.getMembersOfClass(clazz);
4267
4301
  const decoratedElements = members.filter((member) => !member.isStatic && member.decorators !== null);
4268
4302
  const coreModule = isCore ? void 0 : "@angular/core";
4269
- const inputsFromMeta = parseInputsArray(directive, evaluator);
4270
- const inputsFromFields = parseInputFields(filterToMembersWithDecorator(decoratedElements, "Input", coreModule), evaluator);
4303
+ const inputsFromMeta = parseInputsArray(clazz, directive, evaluator, reflector, refEmitter);
4304
+ const inputsFromFields = parseInputFields(clazz, filterToMembersWithDecorator(decoratedElements, "Input", coreModule), evaluator, reflector, refEmitter);
4271
4305
  const inputs = ClassPropertyMapping.fromMappedObject({ ...inputsFromMeta, ...inputsFromFields });
4272
4306
  const outputsFromMeta = parseOutputsArray(directive, evaluator);
4273
4307
  const outputsFromFields = parseOutputFields(filterToMembersWithDecorator(decoratedElements, "Output", coreModule), evaluator);
@@ -4343,7 +4377,7 @@ function extractDirectiveMetadata(clazz, decorator, reflector, evaluator, refEmi
4343
4377
  lifecycle: {
4344
4378
  usesOnChanges
4345
4379
  },
4346
- inputs: inputs.toJointMappedObject(),
4380
+ inputs: inputs.toJointMappedObject(toR3InputMetadata),
4347
4381
  outputs: outputs.toDirectMappedObject(),
4348
4382
  queries,
4349
4383
  viewQueries,
@@ -4579,7 +4613,7 @@ function parseDecoratedFields(fields, evaluator, callback) {
4579
4613
  }
4580
4614
  }
4581
4615
  }
4582
- function parseInputsArray(decoratorMetadata, evaluator) {
4616
+ function parseInputsArray(clazz, decoratorMetadata, evaluator, reflector, refEmitter) {
4583
4617
  const inputsField = decoratorMetadata.get("inputs");
4584
4618
  if (inputsField === void 0) {
4585
4619
  return {};
@@ -4593,18 +4627,32 @@ function parseInputsArray(decoratorMetadata, evaluator) {
4593
4627
  const value = inputsArray[i];
4594
4628
  if (typeof value === "string") {
4595
4629
  const [bindingPropertyName, classPropertyName] = parseMappingString(value);
4596
- inputs[classPropertyName] = { bindingPropertyName, classPropertyName, required: false };
4630
+ inputs[classPropertyName] = {
4631
+ bindingPropertyName,
4632
+ classPropertyName,
4633
+ required: false,
4634
+ transform: null
4635
+ };
4597
4636
  } else if (value instanceof Map) {
4598
4637
  const name = value.get("name");
4599
4638
  const alias = value.get("alias");
4600
4639
  const required = value.get("required");
4640
+ let transform = null;
4601
4641
  if (typeof name !== "string") {
4602
4642
  throw createValueHasWrongTypeError(inputsField, name, `Value at position ${i} of @Directive.inputs array must have a "name" property`);
4603
4643
  }
4644
+ if (value.has("transform")) {
4645
+ const transformValue = value.get("transform");
4646
+ if (!(transformValue instanceof DynamicValue) && !(transformValue instanceof Reference)) {
4647
+ throw createValueHasWrongTypeError(inputsField, transformValue, `Transform of value at position ${i} of @Directive.inputs array must be a function`);
4648
+ }
4649
+ transform = parseInputTransformFunction(clazz, name, transformValue, reflector, refEmitter);
4650
+ }
4604
4651
  inputs[name] = {
4605
4652
  classPropertyName: name,
4606
4653
  bindingPropertyName: typeof alias === "string" ? alias : name,
4607
- required: required === true
4654
+ required: required === true,
4655
+ transform
4608
4656
  };
4609
4657
  } else {
4610
4658
  throw createValueHasWrongTypeError(inputsField, value, `@Directive.inputs array can only contain strings or object literals`);
@@ -4612,11 +4660,12 @@ function parseInputsArray(decoratorMetadata, evaluator) {
4612
4660
  }
4613
4661
  return inputs;
4614
4662
  }
4615
- function parseInputFields(inputMembers, evaluator) {
4663
+ function parseInputFields(clazz, inputMembers, evaluator, reflector, refEmitter) {
4616
4664
  const inputs = {};
4617
4665
  parseDecoratedFields(inputMembers, evaluator, (classPropertyName, options, decorator) => {
4618
4666
  let bindingPropertyName;
4619
4667
  let required = false;
4668
+ let transform = null;
4620
4669
  if (options === null) {
4621
4670
  bindingPropertyName = classPropertyName;
4622
4671
  } else if (typeof options === "string") {
@@ -4625,13 +4674,72 @@ function parseInputFields(inputMembers, evaluator) {
4625
4674
  const aliasInConfig = options.get("alias");
4626
4675
  bindingPropertyName = typeof aliasInConfig === "string" ? aliasInConfig : classPropertyName;
4627
4676
  required = options.get("required") === true;
4677
+ if (options.has("transform")) {
4678
+ const transformValue = options.get("transform");
4679
+ if (!(transformValue instanceof DynamicValue) && !(transformValue instanceof Reference)) {
4680
+ throw createValueHasWrongTypeError(decorator.node, transformValue, `Input transform must be a function`);
4681
+ }
4682
+ transform = parseInputTransformFunction(clazz, classPropertyName, transformValue, reflector, refEmitter);
4683
+ }
4628
4684
  } else {
4629
4685
  throw createValueHasWrongTypeError(decorator.node, options, `@${decorator.name} decorator argument must resolve to a string or an object literal`);
4630
4686
  }
4631
- inputs[classPropertyName] = { bindingPropertyName, classPropertyName, required };
4687
+ inputs[classPropertyName] = { bindingPropertyName, classPropertyName, required, transform };
4632
4688
  });
4633
4689
  return inputs;
4634
4690
  }
4691
+ function parseInputTransformFunction(clazz, classPropertyName, value, reflector, refEmitter) {
4692
+ var _a;
4693
+ const definition = reflector.getDefinitionOfFunction(value.node);
4694
+ if (definition === null) {
4695
+ throw createValueHasWrongTypeError(value.node, value, "Input transform must be a function");
4696
+ }
4697
+ if (definition.typeParameters !== null && definition.typeParameters.length > 0) {
4698
+ throw createValueHasWrongTypeError(value.node, value, "Input transform function cannot be generic");
4699
+ }
4700
+ if (definition.signatureCount > 1) {
4701
+ throw createValueHasWrongTypeError(value.node, value, "Input transform function cannot have multiple signatures");
4702
+ }
4703
+ const members = reflector.getMembersOfClass(clazz);
4704
+ for (const member of members) {
4705
+ const conflictingName = `ngAcceptInputType_${classPropertyName}`;
4706
+ if (member.name === conflictingName && member.isStatic) {
4707
+ throw new FatalDiagnosticError(ErrorCode.CONFLICTING_INPUT_TRANSFORM, value.node, `Class cannot have both a transform function on Input ${classPropertyName} and a static member called ${conflictingName}`);
4708
+ }
4709
+ }
4710
+ const node = value instanceof Reference ? value.getIdentityIn(clazz.getSourceFile()) : value.node;
4711
+ if (node === null) {
4712
+ throw createValueHasWrongTypeError(value.node, value, "Input transform function could not be referenced");
4713
+ }
4714
+ const firstParam = ((_a = definition.parameters[0]) == null ? void 0 : _a.name) === "this" ? definition.parameters[1] : definition.parameters[0];
4715
+ if (!firstParam) {
4716
+ return { node, type: ts20.factory.createKeywordTypeNode(ts20.SyntaxKind.UnknownKeyword) };
4717
+ }
4718
+ if (!firstParam.type) {
4719
+ throw createValueHasWrongTypeError(value.node, value, "Input transform function first parameter must have a type");
4720
+ }
4721
+ if (firstParam.node.dotDotDotToken) {
4722
+ throw createValueHasWrongTypeError(value.node, value, "Input transform function first parameter cannot be a spread parameter");
4723
+ }
4724
+ assertEmittableInputType(firstParam.type, clazz.getSourceFile(), reflector, refEmitter);
4725
+ return { node, type: firstParam.type };
4726
+ }
4727
+ function assertEmittableInputType(type, contextFile, reflector, refEmitter) {
4728
+ (function walk(node) {
4729
+ if (ts20.isTypeReferenceNode(node) && ts20.isIdentifier(node.typeName)) {
4730
+ const declaration = reflector.getDeclarationOfIdentifier(node.typeName);
4731
+ if (declaration !== null) {
4732
+ if (declaration.node.getSourceFile() !== contextFile) {
4733
+ const emittedType = refEmitter.emit(new Reference(declaration.node), contextFile, ImportFlags.NoAliasing | ImportFlags.AllowTypeImports | ImportFlags.AllowRelativeDtsImports);
4734
+ assertSuccessfulReferenceEmit(emittedType, node, "type");
4735
+ } else if (!reflector.isStaticallyExported(declaration.node)) {
4736
+ throw new FatalDiagnosticError(ErrorCode.SYMBOL_NOT_EXPORTED, type, `Symbol must be exported in order to be used as the type of an Input transform function`, [makeRelatedInformation(declaration.node, `The symbol is declared here.`)]);
4737
+ }
4738
+ }
4739
+ }
4740
+ node.forEachChild(walk);
4741
+ })(type);
4742
+ }
4635
4743
  function parseOutputsArray(directive, evaluator) {
4636
4744
  const metaValues = parseFieldStringArrayValue(directive, "outputs", evaluator);
4637
4745
  return metaValues ? parseMappingStringArray(metaValues) : EMPTY_OBJECT;
@@ -4718,8 +4826,16 @@ function toHostDirectiveMetadata(hostDirective, context, refEmitter) {
4718
4826
  outputs: hostDirective.outputs || null
4719
4827
  };
4720
4828
  }
4829
+ function toR3InputMetadata(mapping) {
4830
+ return {
4831
+ classPropertyName: mapping.classPropertyName,
4832
+ bindingPropertyName: mapping.bindingPropertyName,
4833
+ required: mapping.required,
4834
+ transformFunction: mapping.transform !== null ? new WrappedNodeExpr4(mapping.transform.node) : null
4835
+ };
4836
+ }
4721
4837
 
4722
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/directive/src/symbol.mjs
4838
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/directive/src/symbol.mjs
4723
4839
  var DirectiveSymbol = class extends SemanticSymbol {
4724
4840
  constructor(decl, selector, inputs, outputs, exportAs, typeCheckMeta, typeParameters) {
4725
4841
  super(decl);
@@ -4799,7 +4915,7 @@ function isBaseClassEqual(current, previous) {
4799
4915
  return isSymbolEqual(current, previous);
4800
4916
  }
4801
4917
 
4802
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/directive/src/handler.mjs
4918
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/directive/src/handler.mjs
4803
4919
  var FIELD_DECORATORS = [
4804
4920
  "Input",
4805
4921
  "Output",
@@ -4938,14 +5054,16 @@ var DirectiveDecoratorHandler = class {
4938
5054
  compileFull(node, analysis, resolution, pool) {
4939
5055
  const fac = compileNgFactoryDefField(toFactoryMetadata(analysis.meta, FactoryTarget.Directive));
4940
5056
  const def = compileDirectiveFromMetadata(analysis.meta, pool, makeBindingParser());
5057
+ const inputTransformFields = compileInputTransformFields(analysis.inputs);
4941
5058
  const classMetadata = analysis.classMetadata !== null ? compileClassMetadata(analysis.classMetadata).toStmt() : null;
4942
- return compileResults(fac, def, classMetadata, "\u0275dir");
5059
+ return compileResults(fac, def, classMetadata, "\u0275dir", inputTransformFields);
4943
5060
  }
4944
5061
  compilePartial(node, analysis, resolution) {
4945
5062
  const fac = compileDeclareFactory(toFactoryMetadata(analysis.meta, FactoryTarget.Directive));
4946
5063
  const def = compileDeclareDirectiveFromMetadata(analysis.meta);
5064
+ const inputTransformFields = compileInputTransformFields(analysis.inputs);
4947
5065
  const classMetadata = analysis.classMetadata !== null ? compileDeclareClassMetadata(analysis.classMetadata).toStmt() : null;
4948
- return compileResults(fac, def, classMetadata, "\u0275dir");
5066
+ return compileResults(fac, def, classMetadata, "\u0275dir", inputTransformFields);
4949
5067
  }
4950
5068
  findClassFieldWithAngularFeatures(node) {
4951
5069
  return this.reflector.getMembersOfClass(node).find((member) => {
@@ -4960,11 +5078,11 @@ var DirectiveDecoratorHandler = class {
4960
5078
  }
4961
5079
  };
4962
5080
 
4963
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/ng_module/src/handler.mjs
5081
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/ng_module/src/handler.mjs
4964
5082
  import { compileClassMetadata as compileClassMetadata2, compileDeclareClassMetadata as compileDeclareClassMetadata2, compileDeclareInjectorFromMetadata, compileDeclareNgModuleFromMetadata, compileInjector, compileNgModule, ExternalExpr as ExternalExpr5, FactoryTarget as FactoryTarget2, FunctionExpr as FunctionExpr2, InvokeFunctionExpr, LiteralArrayExpr as LiteralArrayExpr2, R3Identifiers, R3SelectorScopeMode, ReturnStatement as ReturnStatement2, WrappedNodeExpr as WrappedNodeExpr6 } from "@angular/compiler";
4965
5083
  import ts22 from "typescript";
4966
5084
 
4967
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/ng_module/src/module_with_providers.mjs
5085
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/ng_module/src/module_with_providers.mjs
4968
5086
  import ts21 from "typescript";
4969
5087
  function createModuleWithProvidersResolver(reflector, isCore) {
4970
5088
  function _reflectModuleFromTypeParam(type, node) {
@@ -5031,7 +5149,7 @@ function isResolvedModuleWithProviders(sv) {
5031
5149
  return typeof sv.value === "object" && sv.value != null && sv.value.hasOwnProperty("ngModule") && sv.value.hasOwnProperty("mwpCall");
5032
5150
  }
5033
5151
 
5034
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/ng_module/src/handler.mjs
5152
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/ng_module/src/handler.mjs
5035
5153
  var NgModuleSymbol = class extends SemanticSymbol {
5036
5154
  constructor(decl, hasProviders) {
5037
5155
  super(decl);
@@ -5555,7 +5673,7 @@ function isSyntheticReference(ref) {
5555
5673
  return ref.synthetic;
5556
5674
  }
5557
5675
 
5558
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/component/src/diagnostics.mjs
5676
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/component/src/diagnostics.mjs
5559
5677
  function makeCyclicImportInfo(ref, type, cycle) {
5560
5678
  const name = ref.debugName || "(unknown)";
5561
5679
  const path = cycle.getPath().map((sf) => sf.fileName).join(" -> ");
@@ -5578,7 +5696,7 @@ function checkCustomElementSelectorForErrors(selector) {
5578
5696
  return null;
5579
5697
  }
5580
5698
 
5581
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/component/src/resources.mjs
5699
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/component/src/resources.mjs
5582
5700
  import { DEFAULT_INTERPOLATION_CONFIG, InterpolationConfig, ParseSourceFile as ParseSourceFile2, parseTemplate } from "@angular/compiler";
5583
5701
  import ts23 from "typescript";
5584
5702
  function getTemplateDeclarationNodeForError(declaration) {
@@ -5892,7 +6010,7 @@ function _extractTemplateStyleUrls(template) {
5892
6010
  return template.styleUrls.map((url) => ({ url, source: 1, nodeForError }));
5893
6011
  }
5894
6012
 
5895
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/component/src/symbol.mjs
6013
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/component/src/symbol.mjs
5896
6014
  var ComponentSymbol = class extends DirectiveSymbol {
5897
6015
  constructor() {
5898
6016
  super(...arguments);
@@ -5927,7 +6045,7 @@ var ComponentSymbol = class extends DirectiveSymbol {
5927
6045
  }
5928
6046
  };
5929
6047
 
5930
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/component/src/util.mjs
6048
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/component/src/util.mjs
5931
6049
  function collectAnimationNames(value, animationTriggerNames) {
5932
6050
  if (value instanceof Map) {
5933
6051
  const name = value.get("name");
@@ -6003,7 +6121,7 @@ function isLikelyModuleWithProviders(value) {
6003
6121
  return false;
6004
6122
  }
6005
6123
 
6006
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/component/src/handler.mjs
6124
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/component/src/handler.mjs
6007
6125
  var EMPTY_ARRAY2 = [];
6008
6126
  var ComponentDecoratorHandler = class {
6009
6127
  constructor(reflector, evaluator, metaRegistry, metaReader, scopeReader, dtsScopeReader, scopeRegistry, typeCheckScopeRegistry, resourceRegistry, isCore, strictCtorDeps, resourceLoader, rootDirs, defaultPreserveWhitespaces, i18nUseExternalIds, enableI18nLegacyMessageIdFormat, usePoisonedData, i18nNormalizeLineEndingsInICUs, moduleResolver, cycleAnalyzer, cycleHandlingStrategy, refEmitter, referencesRegistry, depTracker, injectableRegistry, semanticDepGraphUpdater, annotateForClosureCompiler, perf, hostDirectivesResolver) {
@@ -6593,8 +6711,9 @@ var ComponentDecoratorHandler = class {
6593
6711
  const meta = { ...analysis.meta, ...resolution };
6594
6712
  const fac = compileNgFactoryDefField(toFactoryMetadata(meta, FactoryTarget3.Component));
6595
6713
  const def = compileComponentFromMetadata(meta, pool, makeBindingParser2());
6714
+ const inputTransformFields = compileInputTransformFields(analysis.inputs);
6596
6715
  const classMetadata = analysis.classMetadata !== null ? compileClassMetadata3(analysis.classMetadata).toStmt() : null;
6597
- return compileResults(fac, def, classMetadata, "\u0275cmp");
6716
+ return compileResults(fac, def, classMetadata, "\u0275cmp", inputTransformFields);
6598
6717
  }
6599
6718
  compilePartial(node, analysis, resolution) {
6600
6719
  if (analysis.template.errors !== null && analysis.template.errors.length > 0) {
@@ -6608,9 +6727,10 @@ var ComponentDecoratorHandler = class {
6608
6727
  };
6609
6728
  const meta = { ...analysis.meta, ...resolution };
6610
6729
  const fac = compileDeclareFactory(toFactoryMetadata(meta, FactoryTarget3.Component));
6730
+ const inputTransformFields = compileInputTransformFields(analysis.inputs);
6611
6731
  const def = compileDeclareComponentFromMetadata(meta, analysis.template, templateInfo);
6612
6732
  const classMetadata = analysis.classMetadata !== null ? compileDeclareClassMetadata3(analysis.classMetadata).toStmt() : null;
6613
- return compileResults(fac, def, classMetadata, "\u0275cmp");
6733
+ return compileResults(fac, def, classMetadata, "\u0275cmp", inputTransformFields);
6614
6734
  }
6615
6735
  _checkForCyclicImport(importedFile, expr, origin) {
6616
6736
  const imported = resolveImportedFile(this.moduleResolver, importedFile, expr, origin);
@@ -6653,7 +6773,7 @@ function validateStandaloneImports(importRefs, importExpr, metaReader, scopeRead
6653
6773
  return diagnostics;
6654
6774
  }
6655
6775
 
6656
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/src/injectable.mjs
6776
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/src/injectable.mjs
6657
6777
  import { compileClassMetadata as compileClassMetadata4, compileDeclareClassMetadata as compileDeclareClassMetadata4, compileDeclareInjectableFromMetadata, compileInjectable, createMayBeForwardRefExpression as createMayBeForwardRefExpression2, FactoryTarget as FactoryTarget4, LiteralExpr as LiteralExpr3, WrappedNodeExpr as WrappedNodeExpr8 } from "@angular/compiler";
6658
6778
  import ts25 from "typescript";
6659
6779
  var InjectableDecoratorHandler = class {
@@ -6868,7 +6988,7 @@ function getDep(dep, reflector) {
6868
6988
  return meta;
6869
6989
  }
6870
6990
 
6871
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/src/pipe.mjs
6991
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/annotations/src/pipe.mjs
6872
6992
  import { compileClassMetadata as compileClassMetadata5, compileDeclareClassMetadata as compileDeclareClassMetadata5, compileDeclarePipeFromMetadata, compilePipeFromMetadata, FactoryTarget as FactoryTarget5 } from "@angular/compiler";
6873
6993
  import ts26 from "typescript";
6874
6994
  var PipeSymbol = class extends SemanticSymbol {
@@ -7002,24 +7122,24 @@ var PipeDecoratorHandler = class {
7002
7122
  const fac = compileNgFactoryDefField(toFactoryMetadata(analysis.meta, FactoryTarget5.Pipe));
7003
7123
  const def = compilePipeFromMetadata(analysis.meta);
7004
7124
  const classMetadata = analysis.classMetadata !== null ? compileClassMetadata5(analysis.classMetadata).toStmt() : null;
7005
- return compileResults(fac, def, classMetadata, "\u0275pipe");
7125
+ return compileResults(fac, def, classMetadata, "\u0275pipe", null);
7006
7126
  }
7007
7127
  compilePartial(node, analysis) {
7008
7128
  const fac = compileDeclareFactory(toFactoryMetadata(analysis.meta, FactoryTarget5.Pipe));
7009
7129
  const def = compileDeclarePipeFromMetadata(analysis.meta);
7010
7130
  const classMetadata = analysis.classMetadata !== null ? compileDeclareClassMetadata5(analysis.classMetadata).toStmt() : null;
7011
- return compileResults(fac, def, classMetadata, "\u0275pipe");
7131
+ return compileResults(fac, def, classMetadata, "\u0275pipe", null);
7012
7132
  }
7013
7133
  };
7014
7134
 
7015
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/typecheck/api/checker.mjs
7135
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/typecheck/api/checker.mjs
7016
7136
  var OptimizeFor;
7017
7137
  (function(OptimizeFor2) {
7018
7138
  OptimizeFor2[OptimizeFor2["SingleFile"] = 0] = "SingleFile";
7019
7139
  OptimizeFor2[OptimizeFor2["WholeProgram"] = 1] = "WholeProgram";
7020
7140
  })(OptimizeFor || (OptimizeFor = {}));
7021
7141
 
7022
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/typecheck/api/scope.mjs
7142
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/typecheck/api/scope.mjs
7023
7143
  var PotentialImportKind;
7024
7144
  (function(PotentialImportKind2) {
7025
7145
  PotentialImportKind2[PotentialImportKind2["NgModule"] = 0] = "NgModule";
@@ -7031,14 +7151,14 @@ var PotentialImportMode;
7031
7151
  PotentialImportMode2[PotentialImportMode2["ForceDirect"] = 1] = "ForceDirect";
7032
7152
  })(PotentialImportMode || (PotentialImportMode = {}));
7033
7153
 
7034
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/typecheck/api/completion.mjs
7154
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/typecheck/api/completion.mjs
7035
7155
  var CompletionKind;
7036
7156
  (function(CompletionKind2) {
7037
7157
  CompletionKind2[CompletionKind2["Reference"] = 0] = "Reference";
7038
7158
  CompletionKind2[CompletionKind2["Variable"] = 1] = "Variable";
7039
7159
  })(CompletionKind || (CompletionKind = {}));
7040
7160
 
7041
- // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/typecheck/api/symbols.mjs
7161
+ // bazel-out/darwin-fastbuild/bin/packages/compiler-cli/src/ngtsc/typecheck/api/symbols.mjs
7042
7162
  var SymbolKind;
7043
7163
  (function(SymbolKind2) {
7044
7164
  SymbolKind2[SymbolKind2["Input"] = 0] = "Input";
@@ -7106,4 +7226,4 @@ export {
7106
7226
  * Use of this source code is governed by an MIT-style license that can be
7107
7227
  * found in the LICENSE file at https://angular.io/license
7108
7228
  */
7109
- //# sourceMappingURL=chunk-QCPJUH3P.js.map
7229
+ //# sourceMappingURL=chunk-7ECYCAFM.js.map