@angular/core 21.2.12 → 21.2.14

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 (63) hide show
  1. package/fesm2022/_attribute-chunk.mjs +1 -1
  2. package/fesm2022/_debug_node-chunk.mjs +31 -34
  3. package/fesm2022/_debug_node-chunk.mjs.map +1 -1
  4. package/fesm2022/_effect-chunk.mjs +1 -1
  5. package/fesm2022/_effect-chunk2.mjs +2 -2
  6. package/fesm2022/_effect-chunk2.mjs.map +1 -1
  7. package/fesm2022/_not_found-chunk.mjs +1 -1
  8. package/fesm2022/_resource-chunk.mjs +1 -1
  9. package/fesm2022/_untracked-chunk.mjs +1 -1
  10. package/fesm2022/_weak_ref-chunk.mjs +1 -1
  11. package/fesm2022/core.mjs +1 -1
  12. package/fesm2022/primitives-di.mjs +1 -1
  13. package/fesm2022/primitives-event-dispatch.mjs +1 -1
  14. package/fesm2022/primitives-signals.mjs +1 -1
  15. package/fesm2022/rxjs-interop.mjs +1 -1
  16. package/fesm2022/testing.mjs +1 -1
  17. package/package.json +2 -2
  18. package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +1 -1
  19. package/schematics/bundles/application-config-core.cjs +1 -1
  20. package/schematics/bundles/apply_import_manager-CxA_YYgB.cjs +1 -1
  21. package/schematics/bundles/bootstrap-options-migration.cjs +1 -1
  22. package/schematics/bundles/cleanup-unused-imports.cjs +1 -1
  23. package/schematics/bundles/common-to-standalone-migration.cjs +1 -1
  24. package/schematics/bundles/compiler_host-CY14HvaP.cjs +1 -1
  25. package/schematics/bundles/control-flow-migration.cjs +1 -1
  26. package/schematics/bundles/imports-CVmcbVA9.cjs +1 -1
  27. package/schematics/bundles/{index-DcezkXLN.cjs → index-BsWjHxg5.cjs} +11 -1
  28. package/schematics/bundles/inject-migration.cjs +1 -1
  29. package/schematics/bundles/leading_space-BTPRV0wu.cjs +1 -1
  30. package/schematics/bundles/{migrate_ts_type_references-46VhtGLQ.cjs → migrate_ts_type_references-DFZdqzhh.cjs} +2 -2
  31. package/schematics/bundles/ng_component_template-BOuKAnQd.cjs +1 -1
  32. package/schematics/bundles/ng_decorators-DYy6II6x.cjs +1 -1
  33. package/schematics/bundles/ngclass-to-class-migration.cjs +1 -1
  34. package/schematics/bundles/ngstyle-to-style-migration.cjs +1 -1
  35. package/schematics/bundles/nodes-ZSQ7WZRB.cjs +1 -1
  36. package/schematics/bundles/output-migration.cjs +3 -3
  37. package/schematics/bundles/parse_html-C8eKA9px.cjs +1 -1
  38. package/schematics/bundles/project_paths-D2V-Uh2L.cjs +1 -1
  39. package/schematics/bundles/project_tsconfig_paths-DkkMibv-.cjs +1 -1
  40. package/schematics/bundles/property_name-BCpALNpZ.cjs +1 -1
  41. package/schematics/bundles/route-lazy-loading.cjs +1 -1
  42. package/schematics/bundles/router-current-navigation.cjs +1 -1
  43. package/schematics/bundles/router-last-successful-navigation.cjs +1 -1
  44. package/schematics/bundles/router-testing-module-migration.cjs +1 -1
  45. package/schematics/bundles/self-closing-tags-migration.cjs +1 -1
  46. package/schematics/bundles/signal-input-migration.cjs +3 -3
  47. package/schematics/bundles/signal-queries-migration.cjs +3 -3
  48. package/schematics/bundles/signals.cjs +3 -3
  49. package/schematics/bundles/standalone-migration.cjs +1 -1
  50. package/schematics/bundles/symbol-DZeHSR-V.cjs +1 -1
  51. package/types/_api-chunk.d.ts +1 -1
  52. package/types/_chrome_dev_tools_performance-chunk.d.ts +1 -1
  53. package/types/_discovery-chunk.d.ts +5 -1
  54. package/types/_effect-chunk.d.ts +1 -1
  55. package/types/_event_dispatcher-chunk.d.ts +1 -1
  56. package/types/_formatter-chunk.d.ts +1 -1
  57. package/types/_weak_ref-chunk.d.ts +1 -1
  58. package/types/core.d.ts +11 -5
  59. package/types/primitives-di.d.ts +1 -1
  60. package/types/primitives-event-dispatch.d.ts +1 -1
  61. package/types/primitives-signals.d.ts +1 -1
  62. package/types/rxjs-interop.d.ts +1 -1
  63. package/types/testing.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.2.12
2
+ * @license Angular v21.2.14
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @license Angular v21.2.12
2
+ * @license Angular v21.2.14
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
6
6
 
7
- import { attachInjectFlag, _global, resolveForwardRef, ɵɵinvalidFactoryDep as __invalidFactoryDep, ɵɵinject as __inject, ɵɵdefineInjector as __defineInjector, ɵɵdefineInjectable as __defineInjectable, newArray, assertString, EMPTY_OBJ, assertFirstCreatePass, assertDefined, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, getFactoryDef, convertToBitFlags, isRootView, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector, setInjectImplementation, injectRootLimpMode, stringifyForError, cyclicDependencyErrorWithDetails, cyclicDependencyError, setInjectorProfilerContext, assertDirectiveDef, EMBEDDED_VIEW_INJECTOR, T_HOST, NG_ELEMENT_ID, assertIndexInRange, INJECTOR$1 as INJECTOR, TVIEW, isComponentDef, isComponentHost, DECLARATION_COMPONENT_VIEW, RuntimeError, NG_PROV_DEF, getClosureSafeProperty, getNativeByTNode, flatten, arrayEquals, ID, isLView, assertDomNode, EMPTY_ARRAY, getComponentLViewByIndex, CONTEXT, unwrapRNode, assertLView, HOST, getLViewParent, CHILD_HEAD, NEXT, isLContainer, Injector, CLEANUP, getComponentDef, getDirectiveDef, InjectionToken, inject, ENVIRONMENT_INITIALIZER, DOCUMENT as DOCUMENT$1, formatRuntimeError, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, isDirectiveHost, XSS_SECURITY_URL, RENDERER, renderStringify, getSelectedTNode, ENVIRONMENT, makeEnvironmentProviders, resetPreOrderHookFlags, PARENT, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, stringify, ANIMATIONS, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, NgZone, ChangeDetectionScheduler, ErrorHandler, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, EnvironmentInjector, isDestroyed, assertLContainer, MOVED_VIEWS, assertProjectionSlots, NATIVE, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, CONTAINER_HEADER_OFFSET, assertParentView, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, INTERNAL_APPLICATION_ERROR_HANDLER, assertNotSame, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, setCurrentDirectiveIndex, getCurrentDirectiveIndex, unwrapLView, enterView, leaveView, isCreationMode, markViewForRefresh, setIsInCheckNoChangesMode, setIsRefreshingViews, isExhaustiveCheckNoChanges, requiresRefreshOrTraversal, setBindingIndex, EFFECTS_TO_SCHEDULE, setBindingRootForHostBindings, viewAttachedToChangeDetector, CheckNoChangesMode, isRefreshingViews, removeFromArray, addToArray, updateAncestorTraversalFlagsOnAttach, storeLViewOnDestroy, VIEW_REFS, DOC_PAGE_BASE_URL, assertGreaterThanOrEqual, isInI18nBlock, assertTNodeForTView, getCurrentParentTNode, getCurrentTNodePlaceholderOk, assertTIcu, assertTNode, assertNumberInRange, DEHYDRATED_VIEWS, getNgModuleDef, getPipeDef as getPipeDef$1, getNgModuleDefOrThrow, isStandalone, concatStringsWithSpace, assertInjectImplementationNotEqual, emitInjectEvent, getConstant, assertLessThan, getOrCreateTViewCleanup, getOrCreateLViewCleanup, debugStringifyTypeForError, assertNotDefined, nextBindingIndex, getTNode, getDirectiveDefOrThrow, assertComponentType, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, fillProperties, getBindingsEnabled, lastNodeWasCreated, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, EffectRefImpl, NullInjector, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isInInjectionContext, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasksInternal, PendingTasks, decreaseElementDepthCount, assertTNodeCreationIndex, getNamespace, enterSkipHydrationBlock, isSkipHydrationRootTNode, leaveSkipHydrationBlock, getCurrentDirectiveDef, getBindingIndex, assertIndexInExpandoRange, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, incrementBindingIndex, keyValueArrayGet, keyValueArraySet, store, getBindingRoot, providerToFactory, emitProviderConfiguredEvent, isClassProvider, NG_COMP_DEF, forwardRef, ɵɵrestoreView as __restoreView, ɵɵdisableBindings as __disableBindings, ɵɵenableBindings as __enableBindings, ɵɵnamespaceSVG as __namespaceSVG, ɵɵnamespaceMathML as __namespaceMathML, ɵɵnamespaceHTML as __namespaceHTML, ɵɵresetView as __resetView, NG_MOD_DEF, NG_INJ_DEF, NG_DIR_DEF, NG_PIPE_DEF, PROVIDED_ZONELESS, NoopNgZone, angularZoneInstanceIdProperty, scheduleCallbackWithMicrotask, scheduleCallbackWithRafRace, SCHEDULE_IN_ROOT_ZONE, getNativeByTNodeOrNull } from './_effect-chunk2.mjs';
7
+ import { attachInjectFlag, _global, resolveForwardRef, ɵɵinvalidFactoryDep as __invalidFactoryDep, ɵɵinject as __inject, ɵɵdefineInjector as __defineInjector, ɵɵdefineInjectable as __defineInjectable, newArray, assertString, EMPTY_OBJ, assertFirstCreatePass, assertDefined, assertNotEqual, FLAGS, assertEqual, isInCheckNoChangesMode, PREORDER_HOOK_FLAGS, throwError, assertNumber, assertGreaterThan, HEADER_OFFSET, DECLARATION_VIEW, NG_FACTORY_DEF, isForwardRef, getFactoryDef, convertToBitFlags, isRootView, assertTNodeForLView, enterDI, runInInjectorProfilerContext, getCurrentTNode, getLView, emitInjectorToCreateInstanceEvent, emitInstanceCreatedByInjectorEvent, throwProviderNotFoundError, leaveDI, assertNodeInjector, setInjectImplementation, injectRootLimpMode, stringifyForError, cyclicDependencyErrorWithDetails, cyclicDependencyError, setInjectorProfilerContext, assertDirectiveDef, EMBEDDED_VIEW_INJECTOR, T_HOST, NG_ELEMENT_ID, assertIndexInRange, INJECTOR$1 as INJECTOR, TVIEW, isComponentDef, isComponentHost, DECLARATION_COMPONENT_VIEW, RuntimeError, NG_PROV_DEF, getClosureSafeProperty, getNativeByTNode, flatten, arrayEquals, ID, isLView, assertDomNode, EMPTY_ARRAY, getComponentLViewByIndex, CONTEXT, unwrapRNode, assertLView, HOST, getLViewParent, CHILD_HEAD, NEXT, isLContainer, Injector, CLEANUP, getComponentDef, getDirectiveDef, InjectionToken, inject, ENVIRONMENT_INITIALIZER, DOCUMENT as DOCUMENT$1, formatRuntimeError, isInSkipHydrationBlock as isInSkipHydrationBlock$1, HYDRATION, isContentQueryHost, setCurrentQueryIndex, isDirectiveHost, XSS_SECURITY_URL, RENDERER, renderStringify, getSelectedTNode, ENVIRONMENT, makeEnvironmentProviders, resetPreOrderHookFlags, PARENT, CHILD_TAIL, assertSame, assertFirstUpdatePass, getSelectedIndex, getTView, assertIndexInDeclRange, setSelectedIndex, stringify, ANIMATIONS, AFTER_RENDER_SEQUENCES_TO_ADD, markAncestorsForTraversal, NgZone, ChangeDetectionScheduler, ErrorHandler, assertNotInReactiveContext, assertInInjectionContext, DestroyRef, ViewContext, EnvironmentInjector, isDestroyed, assertLContainer, MOVED_VIEWS, assertProjectionSlots, NATIVE, REACTIVE_TEMPLATE_CONSUMER, DECLARATION_LCONTAINER, QUERIES, CONTAINER_HEADER_OFFSET, assertParentView, assertNotReactive, ON_DESTROY_HOOKS, assertFunction, EFFECTS, INTERNAL_APPLICATION_ERROR_HANDLER, assertNotSame, isCurrentTNodeParent, setCurrentTNodeAsNotParent, assertHasParent, setCurrentTNode, getElementDepthCount, increaseElementDepthCount, wasLastNodeCreated, setCurrentDirectiveIndex, getCurrentDirectiveIndex, unwrapLView, enterView, leaveView, isCreationMode, markViewForRefresh, setIsInCheckNoChangesMode, setIsRefreshingViews, isExhaustiveCheckNoChanges, requiresRefreshOrTraversal, setBindingIndex, EFFECTS_TO_SCHEDULE, setBindingRootForHostBindings, viewAttachedToChangeDetector, CheckNoChangesMode, isRefreshingViews, removeFromArray, addToArray, updateAncestorTraversalFlagsOnAttach, storeLViewOnDestroy, VIEW_REFS, DOC_PAGE_BASE_URL, assertGreaterThanOrEqual, isInI18nBlock, assertTNodeForTView, getCurrentParentTNode, getNamespace, getCurrentTNodePlaceholderOk, assertTIcu, assertTNode, assertNumberInRange, DEHYDRATED_VIEWS, getNgModuleDef, getPipeDef as getPipeDef$1, getNgModuleDefOrThrow, isStandalone, concatStringsWithSpace, assertInjectImplementationNotEqual, emitInjectEvent, getConstant, assertLessThan, getOrCreateTViewCleanup, getOrCreateLViewCleanup, debugStringifyTypeForError, assertNotDefined, nextBindingIndex, getTNode, getDirectiveDefOrThrow, assertComponentType, SVG_NAMESPACE, MATH_ML_NAMESPACE, viewAttachedToContainer, storeCleanupWithContext, signal, createInjectorWithoutInjectorInstances, R3Injector, getNullInjector, internalImportProvidersFrom, initNgDevMode, fillProperties, getBindingsEnabled, lastNodeWasCreated, removeLViewOnDestroy, walkUpViews, getNativeByIndex, assertElement, arrayInsert2, arraySplice, setInjectorProfiler, EffectRefImpl, NullInjector, INJECTOR_DEF_TYPES, walkProviderTree, getInjectorDef, deepForEach, isTypeProvider, isInInjectionContext, runInInjectionContext, ZONELESS_ENABLED, EffectScheduler, PendingTasksInternal, PendingTasks, decreaseElementDepthCount, assertTNodeCreationIndex, enterSkipHydrationBlock, isSkipHydrationRootTNode, leaveSkipHydrationBlock, getCurrentDirectiveDef, getBindingIndex, assertIndexInExpandoRange, assertOneOf, setInI18nBlock, nextContextImpl, getCurrentQueryIndex, getContextLView, load, keyValueArrayIndexOf, incrementBindingIndex, keyValueArrayGet, keyValueArraySet, store, getBindingRoot, providerToFactory, emitProviderConfiguredEvent, isClassProvider, NG_COMP_DEF, forwardRef, ɵɵrestoreView as __restoreView, ɵɵdisableBindings as __disableBindings, ɵɵenableBindings as __enableBindings, ɵɵnamespaceSVG as __namespaceSVG, ɵɵnamespaceMathML as __namespaceMathML, ɵɵnamespaceHTML as __namespaceHTML, ɵɵresetView as __resetView, NG_MOD_DEF, NG_INJ_DEF, NG_DIR_DEF, NG_PIPE_DEF, PROVIDED_ZONELESS, NoopNgZone, angularZoneInstanceIdProperty, scheduleCallbackWithMicrotask, scheduleCallbackWithRafRace, SCHEDULE_IN_ROOT_ZONE, getNativeByTNodeOrNull } from './_effect-chunk2.mjs';
8
8
  import { setActiveConsumer as setActiveConsumer$1 } from '@angular/core/primitives/signals';
9
9
  import { setActiveConsumer, SIGNAL, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, getActiveConsumer, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError } from './_effect-chunk.mjs';
10
10
  import { Subject, Subscription } from 'rxjs';
@@ -3380,11 +3380,6 @@ const RESOURCE_MAP = {
3380
3380
  'media': {
3381
3381
  'src': true
3382
3382
  },
3383
- 'script': {
3384
- 'src': true,
3385
- 'href': true,
3386
- 'xlink:href': true
3387
- },
3388
3383
  'base': {
3389
3384
  'href': true
3390
3385
  },
@@ -3397,7 +3392,7 @@ const RESOURCE_MAP = {
3397
3392
  }
3398
3393
  };
3399
3394
  function getUrlSanitizer(tag, prop) {
3400
- const isResource = RESOURCE_MAP[tag]?.[prop] === true;
3395
+ const isResource = RESOURCE_MAP[tag.toLowerCase()]?.[prop.toLowerCase()] === true;
3401
3396
  return isResource ? ɵɵsanitizeResourceUrl : ɵɵsanitizeUrl;
3402
3397
  }
3403
3398
  function ɵɵsanitizeUrlOrResourceUrl(unsafeUrl, tag, prop) {
@@ -3409,12 +3404,6 @@ function validateAgainstEventProperties(name) {
3409
3404
  throw new RuntimeError(306, errorMessage);
3410
3405
  }
3411
3406
  }
3412
- function validateAgainstEventAttributes(name) {
3413
- if (name.toLowerCase().startsWith('on')) {
3414
- const errorMessage = `Binding to event attribute '${name}' is disallowed for security reasons, ` + `please use (${name.slice(2)})=...`;
3415
- throw new RuntimeError(306, errorMessage);
3416
- }
3417
- }
3418
3407
  function getSanitizer() {
3419
3408
  const lView = getLView();
3420
3409
  return lView && lView[ENVIRONMENT].sanitizer;
@@ -3429,49 +3418,52 @@ const SECURITY_SENSITIVE_ELEMENTS = {
3429
3418
  'csp': true,
3430
3419
  'fetchpriority': true
3431
3420
  },
3432
- 'animate': {
3421
+ ':svg:animate': {
3433
3422
  'attributename': true,
3434
3423
  'to': SECURITY_SENSITIVE_ATTRIBUTE_NAMES,
3435
3424
  'values': SECURITY_SENSITIVE_ATTRIBUTE_NAMES,
3436
3425
  'from': SECURITY_SENSITIVE_ATTRIBUTE_NAMES
3437
3426
  },
3438
- 'set': {
3427
+ ':svg:set': {
3439
3428
  'attributename': true,
3440
3429
  'to': SECURITY_SENSITIVE_ATTRIBUTE_NAMES
3441
3430
  },
3442
- 'animatemotion': {
3431
+ ':svg:animatemotion': {
3443
3432
  'attributename': true
3444
3433
  },
3445
- 'animatetransform': {
3434
+ ':svg:animatetransform': {
3446
3435
  'attributename': true
3447
3436
  }
3448
3437
  };
3449
3438
  function ɵɵvalidateAttribute(value, tagName, attributeName) {
3450
3439
  const lowerCaseTagName = tagName.toLowerCase();
3451
3440
  const lowerCaseAttrName = attributeName.toLowerCase();
3452
- const validationConfig = SECURITY_SENSITIVE_ELEMENTS[lowerCaseTagName]?.[lowerCaseAttrName];
3453
- if (!validationConfig) {
3454
- return value;
3455
- }
3456
3441
  const tNode = getSelectedTNode();
3457
- if (tNode.type !== 2) {
3442
+ const fullTagName = lowerCaseTagName[0] !== ':' && tNode?.namespace ? `:${tNode.namespace}:${lowerCaseTagName}` : lowerCaseTagName;
3443
+ const validationConfig = SECURITY_SENSITIVE_ELEMENTS[fullTagName]?.[lowerCaseAttrName];
3444
+ if (!validationConfig) {
3458
3445
  return value;
3459
3446
  }
3460
3447
  const lView = getLView();
3461
3448
  if (lowerCaseTagName === 'iframe') {
3462
- const element = getNativeByTNode(tNode, lView);
3463
- enforceIframeSecurity(element);
3449
+ if (tNode?.type === 2) {
3450
+ const element = getNativeByTNode(tNode, lView);
3451
+ enforceIframeSecurity(element);
3452
+ }
3464
3453
  }
3454
+ const displayTagName = tagName[0] === ':' ? tagName.split(':').pop() : tagName;
3465
3455
  if (typeof validationConfig !== 'boolean') {
3466
- const element = getNativeByTNode(tNode, lView);
3467
- const attributeNameValue = element.getAttribute('attributeName');
3468
- if (attributeNameValue && validationConfig.has(attributeNameValue.toLowerCase())) {
3469
- const errorMessage = ngDevMode && `Angular has detected that the \`${attributeName}\` was applied ` + `as a binding to the <${tagName}> element${getTemplateLocationDetails(lView)}. ` + `For security reasons, the \`${attributeName}\` can be set on the <${tagName}> element ` + `as a static attribute only when the "attributeName" is set to \'${attributeNameValue}\'. \n` + `To fix this, switch the \`${attributeNameValue}\` binding to a static attribute ` + `in a template or in host bindings section.`;
3470
- throw new RuntimeError(-910, errorMessage);
3456
+ if (tNode?.type === 2) {
3457
+ const element = getNativeByTNode(tNode, lView);
3458
+ const attributeNameValue = element.getAttribute('attributeName');
3459
+ if (attributeNameValue && validationConfig.has(attributeNameValue.toLowerCase())) {
3460
+ const errorMessage = ngDevMode && `Angular has detected that the \`${attributeName}\` was applied ` + `as a binding to the <${displayTagName}> element${getTemplateLocationDetails(lView)}. ` + `For security reasons, the \`${attributeName}\` can be set on the <${displayTagName}> element ` + `as a static attribute only when the "attributeName" is set to \'${attributeNameValue}\'. \n` + `To fix this, switch the \`${attributeNameValue}\` binding to a static attribute ` + `in a template or in host bindings section.`;
3461
+ throw new RuntimeError(-910, errorMessage);
3462
+ }
3471
3463
  }
3472
3464
  return value;
3473
3465
  }
3474
- const errorMessage = ngDevMode && `Angular has detected that the \`${attributeName}\` was applied ` + `as a binding to the <${tagName}> element${getTemplateLocationDetails(lView)}. ` + `For security reasons, the \`${attributeName}\` can be set on the <${tagName}> element ` + `as a static attribute only. \n` + `To fix this, switch the \`${attributeName}\` binding to a static attribute ` + `in a template or in host bindings section.`;
3466
+ const errorMessage = ngDevMode && `Angular has detected that the \`${attributeName}\` was applied ` + `as a binding to the <${displayTagName}> element${getTemplateLocationDetails(lView)}. ` + `For security reasons, the \`${attributeName}\` can be set on the <${displayTagName}> element ` + `as a static attribute only. \n` + `To fix this, switch the \`${attributeName}\` binding to a static attribute ` + `in a template or in host bindings section.`;
3475
3467
  throw new RuntimeError(-910, errorMessage);
3476
3468
  }
3477
3469
 
@@ -5119,6 +5111,9 @@ function locateHostElement(renderer, elementOrSelector, encapsulation, injector)
5119
5111
  const preserveHostContent = injector.get(PRESERVE_HOST_CONTENT, PRESERVE_HOST_CONTENT_DEFAULT);
5120
5112
  const preserveContent = preserveHostContent || encapsulation === ViewEncapsulation.ShadowDom || encapsulation === ViewEncapsulation.ExperimentalIsolatedShadowDom;
5121
5113
  const rootElement = renderer.selectRootElement(elementOrSelector, preserveContent);
5114
+ if (rootElement.tagName.toLowerCase() === 'script') {
5115
+ throw new RuntimeError(905, ngDevMode && `"<script>" tag is not allowed as a component host element.`);
5116
+ }
5122
5117
  applyRootElementTransform(rootElement);
5123
5118
  return rootElement;
5124
5119
  }
@@ -5163,7 +5158,9 @@ function setDomProperty(tNode, lView, propName, value, renderer, sanitizer) {
5163
5158
  if (tNode.type & 3) {
5164
5159
  const element = getNativeByTNode(tNode, lView);
5165
5160
  if (ngDevMode) {
5166
- validateAgainstEventProperties(propName);
5161
+ if (lView[TVIEW].firstUpdatePass) {
5162
+ validateAgainstEventProperties(propName);
5163
+ }
5167
5164
  if (!isPropertyValid(element, propName, tNode.value, lView[TVIEW].schemas)) {
5168
5165
  handleUnknownPropertyError(propName, tNode.value, tNode.type, lView);
5169
5166
  }
@@ -5305,7 +5302,6 @@ function findDirectiveDefMatches(tView, tNode) {
5305
5302
  function elementAttributeInternal(tNode, lView, name, value, sanitizer, namespace) {
5306
5303
  if (ngDevMode) {
5307
5304
  assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');
5308
- validateAgainstEventAttributes(name);
5309
5305
  assertTNodeType(tNode, 2, `Attempted to set attribute \`${name}\` on a container node. ` + `Host bindings are not valid on ng-container or ng-template.`);
5310
5306
  }
5311
5307
  const element = getNativeByTNode(tNode, lView);
@@ -6560,6 +6556,7 @@ function createTNode(tView, tParent, type, index, value, attrs) {
6560
6556
  flags,
6561
6557
  providerIndexes: 0,
6562
6558
  value: value,
6559
+ namespace: getNamespace(),
6563
6560
  attrs: attrs,
6564
6561
  mergedAttrs: null,
6565
6562
  localNames: null,
@@ -8781,7 +8778,7 @@ class ComponentFactory extends ComponentFactory$1 {
8781
8778
  }
8782
8779
  }
8783
8780
  function createRootTView(rootSelectorOrNode, componentDef, componentBindings, directives) {
8784
- const tAttributes = rootSelectorOrNode ? ['ng-version', '21.2.12'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8781
+ const tAttributes = rootSelectorOrNode ? ['ng-version', '21.2.14'] : extractAttrsAndClassesFromSelector(componentDef.selectors[0]);
8785
8782
  let creationBindings = null;
8786
8783
  let updateBindings = null;
8787
8784
  let varsToAllocate = 0;