From c9fcc4f6178645d35aae44297d2bb54845c000c9 Mon Sep 17 00:00:00 2001 From: Jessica Janiuk Date: Mon, 24 Jan 2022 14:11:51 -0600 Subject: [PATCH] test(animations): Add bundling symbol test for animations package (#44809) This adds a full bundling animation symbols test to the test suite. PR Close #44809 --- packages/core/test/bundling/README.md | 1 + .../core/test/bundling/animations/BUILD.bazel | 64 + .../animations/bundle.golden_symbols.json | 1532 +++++++++++++++++ .../core/test/bundling/animations/index.html | 35 + .../core/test/bundling/animations/index.ts | 45 + .../bundling/animations/treeshaking_spec.ts | 36 + 6 files changed, 1713 insertions(+) create mode 100644 packages/core/test/bundling/animations/BUILD.bazel create mode 100644 packages/core/test/bundling/animations/bundle.golden_symbols.json create mode 100644 packages/core/test/bundling/animations/index.html create mode 100644 packages/core/test/bundling/animations/index.ts create mode 100644 packages/core/test/bundling/animations/treeshaking_spec.ts diff --git a/packages/core/test/bundling/README.md b/packages/core/test/bundling/README.md index 2b5d31f020d..6d3eb5d46c5 100644 --- a/packages/core/test/bundling/README.md +++ b/packages/core/test/bundling/README.md @@ -12,6 +12,7 @@ yarn bazel run //packages/core/test/bundling/forms:symbol_test.accept yarn bazel run //packages/core/test/bundling/hello_world:symbol_test.accept yarn bazel run //packages/core/test/bundling/router:symbol_test.accept yarn bazel run //packages/core/test/bundling/todo:symbol_test.accept +yarn bazel run //packages/core/test/bundling/animations:symbol_test.accept ``` ## Running all symbol tests diff --git a/packages/core/test/bundling/animations/BUILD.bazel b/packages/core/test/bundling/animations/BUILD.bazel new file mode 100644 index 00000000000..cbf2dd74800 --- /dev/null +++ b/packages/core/test/bundling/animations/BUILD.bazel @@ -0,0 +1,64 @@ +load("//tools:defaults.bzl", "app_bundle", "jasmine_node_test", "ng_module", "ts_library") +load("//tools/symbol-extractor:index.bzl", "js_expected_symbol_test") +load("@npm//http-server:index.bzl", "http_server") + +package(default_visibility = ["//visibility:public"]) + +ng_module( + name = "animations", + srcs = ["index.ts"], + deps = [ + "//packages/animations", + "//packages/core", + "//packages/platform-browser", + "//packages/platform-browser/animations", + ], +) + +app_bundle( + name = "bundle", + entry_point = ":index.ts", + deps = [ + ":animations", + "@npm//rxjs", + ], +) + +ts_library( + name = "test_lib", + testonly = True, + srcs = glob(["*_spec.ts"]), + deps = [ + "//packages:types", + "//packages/compiler", + "//packages/core", + "//packages/core/testing", + "//packages/private/testing", + ], +) + +jasmine_node_test( + name = "test", + data = [ + ":bundle.debug.min.js", + ":bundle.js", + ":bundle.min.js", + ":bundle.min.js.br", + ], + deps = [":test_lib"], +) + +js_expected_symbol_test( + name = "symbol_test", + src = ":bundle.debug.min.js", + golden = ":bundle.golden_symbols.json", +) + +http_server( + name = "prodserver", + data = [ + "index.html", + ":bundle.debug.min.js", + ":bundle.min.js", + ], +) diff --git a/packages/core/test/bundling/animations/bundle.golden_symbols.json b/packages/core/test/bundling/animations/bundle.golden_symbols.json new file mode 100644 index 00000000000..81b76a258e2 --- /dev/null +++ b/packages/core/test/bundling/animations/bundle.golden_symbols.json @@ -0,0 +1,1532 @@ +[ + { + "name": "ALLOW_MULTIPLE_PLATFORMS" + }, + { + "name": "ANIMATION_MODULE_TYPE" + }, + { + "name": "APPLICATION_MODULE_PROVIDERS" + }, + { + "name": "APP_BOOTSTRAP_LISTENER" + }, + { + "name": "APP_ID" + }, + { + "name": "APP_ID_RANDOM_PROVIDER" + }, + { + "name": "APP_INITIALIZER" + }, + { + "name": "AnimationAstBuilderContext" + }, + { + "name": "AnimationAstBuilderVisitor" + }, + { + "name": "AnimationBuilder" + }, + { + "name": "AnimationDriver" + }, + { + "name": "AnimationEngine" + }, + { + "name": "AnimationGroupPlayer" + }, + { + "name": "AnimationRenderer" + }, + { + "name": "AnimationRendererFactory" + }, + { + "name": "AnimationStyleNormalizer" + }, + { + "name": "AnimationTimelineBuilderVisitor" + }, + { + "name": "AnimationTimelineContext" + }, + { + "name": "AnimationTransitionFactory" + }, + { + "name": "AnimationsComponent" + }, + { + "name": "AnimationsExampleModule" + }, + { + "name": "AnonymousSubject" + }, + { + "name": "ApplicationInitStatus" + }, + { + "name": "ApplicationModule" + }, + { + "name": "ApplicationRef" + }, + { + "name": "BROWSER_ANIMATIONS_PROVIDERS" + }, + { + "name": "BROWSER_MODULE_PROVIDERS" + }, + { + "name": "BROWSER_NOOP_ANIMATIONS_PROVIDERS" + }, + { + "name": "BaseAnimationRenderer" + }, + { + "name": "BrowserAnimationBuilder" + }, + { + "name": "BrowserAnimationFactory" + }, + { + "name": "BrowserAnimationsModule" + }, + { + "name": "BrowserDomAdapter" + }, + { + "name": "BrowserGetTestability" + }, + { + "name": "BrowserModule" + }, + { + "name": "BrowserXhr" + }, + { + "name": "CIRCULAR" + }, + { + "name": "CLEAN_PROMISE" + }, + { + "name": "COMPONENT_REGEX" + }, + { + "name": "ChangeDetectionStrategy" + }, + { + "name": "CommonModule" + }, + { + "name": "Compiler" + }, + { + "name": "ComponentFactory" + }, + { + "name": "ComponentFactory2" + }, + { + "name": "ComponentFactoryResolver" + }, + { + "name": "ComponentFactoryResolver2" + }, + { + "name": "ComponentRef2" + }, + { + "name": "ConnectableObservable" + }, + { + "name": "ConnectableSubscriber" + }, + { + "name": "Console" + }, + { + "name": "CssKeyframesDriver" + }, + { + "name": "CssKeyframesPlayer" + }, + { + "name": "DASH_CASE_REGEXP" + }, + { + "name": "DEFAULT_CURRENCY_CODE" + }, + { + "name": "DEFAULT_NOOP_PREVIOUS_NODE" + }, + { + "name": "DEFAULT_STATE_VALUE" + }, + { + "name": "DIMENSIONAL_PROP_MAP" + }, + { + "name": "DOCUMENT" + }, + { + "name": "DOCUMENT2" + }, + { + "name": "DefaultDomRenderer2" + }, + { + "name": "DefaultIterableDiffer" + }, + { + "name": "DefaultIterableDifferFactory" + }, + { + "name": "DefaultKeyValueDiffer" + }, + { + "name": "DefaultKeyValueDifferFactory" + }, + { + "name": "DirectStylePlayer" + }, + { + "name": "DomEventsPlugin" + }, + { + "name": "DomRendererFactory2" + }, + { + "name": "DomSharedStylesHost" + }, + { + "name": "EMPTY_ARRAY" + }, + { + "name": "EMPTY_INSTRUCTION_MAP" + }, + { + "name": "EMPTY_OBJ" + }, + { + "name": "EMPTY_OBJECT" + }, + { + "name": "EMPTY_PAYLOAD" + }, + { + "name": "EMPTY_PLAYER_ARRAY" + }, + { + "name": "ENTER_TOKEN_REGEX" + }, + { + "name": "EVENT_MANAGER_PLUGINS" + }, + { + "name": "ElementInstructionMap" + }, + { + "name": "ElementRef" + }, + { + "name": "EmulatedEncapsulationDomRenderer2" + }, + { + "name": "ErrorHandler" + }, + { + "name": "EventEmitter" + }, + { + "name": "EventManager" + }, + { + "name": "EventManagerPlugin" + }, + { + "name": "FALSE_BOOLEAN_VALUES" + }, + { + "name": "INJECTOR2" + }, + { + "name": "INJECTOR_SCOPE" + }, + { + "name": "Inject" + }, + { + "name": "InjectFlags" + }, + { + "name": "InjectableAnimationEngine" + }, + { + "name": "InjectionToken" + }, + { + "name": "Injector" + }, + { + "name": "IterableChangeRecord_" + }, + { + "name": "IterableDiffers" + }, + { + "name": "KeyEventsPlugin" + }, + { + "name": "KeyValueChangeRecord_" + }, + { + "name": "KeyValueDiffers" + }, + { + "name": "LEAVE_TOKEN_REGEX" + }, + { + "name": "LOCALE_DATA" + }, + { + "name": "LOCALE_ID2" + }, + { + "name": "LifecycleHooksFeature" + }, + { + "name": "LocaleDataIndex" + }, + { + "name": "MODIFIER_KEYS" + }, + { + "name": "MODIFIER_KEY_GETTERS" + }, + { + "name": "MapSubscriber" + }, + { + "name": "MergeMapOperator" + }, + { + "name": "MergeMapSubscriber" + }, + { + "name": "NAMESPACE_URIS" + }, + { + "name": "NEW_LINE" + }, + { + "name": "NG_COMP_DEF" + }, + { + "name": "NG_DIR_DEF" + }, + { + "name": "NG_ELEMENT_ID" + }, + { + "name": "NG_FACTORY_DEF" + }, + { + "name": "NG_INJECTABLE_DEF" + }, + { + "name": "NG_INJECTOR_DEF" + }, + { + "name": "NG_INJ_DEF" + }, + { + "name": "NG_MOD_DEF" + }, + { + "name": "NG_PIPE_DEF" + }, + { + "name": "NG_PROV_DEF" + }, + { + "name": "NOT_FOUND" + }, + { + "name": "NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR" + }, + { + "name": "NOT_YET" + }, + { + "name": "NO_CHANGE" + }, + { + "name": "NULL_INJECTOR" + }, + { + "name": "NULL_REMOVAL_STATE" + }, + { + "name": "NULL_REMOVED_QUERIED_STATE" + }, + { + "name": "NgLocaleLocalization" + }, + { + "name": "NgLocalization" + }, + { + "name": "NgModuleFactory2" + }, + { + "name": "NgModuleRef" + }, + { + "name": "NgModuleRef2" + }, + { + "name": "NgZone" + }, + { + "name": "NodeInjector" + }, + { + "name": "NodeInjectorFactory" + }, + { + "name": "NoopAnimationDriver" + }, + { + "name": "NoopAnimationPlayer" + }, + { + "name": "NullInjector" + }, + { + "name": "ObjectUnsubscribedError" + }, + { + "name": "Observable" + }, + { + "name": "Optional" + }, + { + "name": "PARAM_REGEX" + }, + { + "name": "PLATFORM_ID" + }, + { + "name": "PLATFORM_INITIALIZER" + }, + { + "name": "PlatformRef" + }, + { + "name": "Plural" + }, + { + "name": "R3Injector" + }, + { + "name": "RefCountOperator" + }, + { + "name": "RefCountSubscriber" + }, + { + "name": "RendererAnimationPlayer" + }, + { + "name": "RendererFactory2" + }, + { + "name": "RendererStyleFlags2" + }, + { + "name": "RootComponent" + }, + { + "name": "RuntimeError" + }, + { + "name": "SCHEDULER" + }, + { + "name": "SELF_TOKEN_REGEX" + }, + { + "name": "SERVER_TRANSITION_PROVIDERS" + }, + { + "name": "SHARED_ANIMATION_PROVIDERS" + }, + { + "name": "SafeSubscriber" + }, + { + "name": "Sanitizer" + }, + { + "name": "ShadowDomRenderer" + }, + { + "name": "SharedStylesHost" + }, + { + "name": "SimpleInnerSubscriber" + }, + { + "name": "SimpleOuterSubscriber" + }, + { + "name": "SkipSelf" + }, + { + "name": "SpecialCasedStyles" + }, + { + "name": "StateValue" + }, + { + "name": "SubTimelineBuilder" + }, + { + "name": "Subject" + }, + { + "name": "SubjectSubscriber" + }, + { + "name": "SubjectSubscription" + }, + { + "name": "Subscriber" + }, + { + "name": "Subscription" + }, + { + "name": "THROW_IF_NOT_FOUND" + }, + { + "name": "TRANSITION_ID" + }, + { + "name": "TRUE_BOOLEAN_VALUES" + }, + { + "name": "Testability" + }, + { + "name": "TestabilityRegistry" + }, + { + "name": "TimelineBuilder" + }, + { + "name": "TransitionAnimationPlayer" + }, + { + "name": "USE_VALUE" + }, + { + "name": "UnsubscriptionError" + }, + { + "name": "VERSION" + }, + { + "name": "ViewEncapsulation" + }, + { + "name": "WebAnimationsPlayer" + }, + { + "name": "WebAnimationsStyleNormalizer" + }, + { + "name": "_CACHED_BODY" + }, + { + "name": "_DOM" + }, + { + "name": "_DuplicateMap" + }, + { + "name": "_IS_WEBKIT" + }, + { + "name": "_NullComponentFactoryResolver" + }, + { + "name": "__forward_ref__" + }, + { + "name": "__global" + }, + { + "name": "__globalThis" + }, + { + "name": "__self" + }, + { + "name": "__window" + }, + { + "name": "_chromeNumKeyPadMap" + }, + { + "name": "_contains" + }, + { + "name": "_convertTimeValueToMS" + }, + { + "name": "_currentInjector" + }, + { + "name": "_enable_super_gross_mode_that_will_cause_bad_things" + }, + { + "name": "_flattenGroupPlayersRecur" + }, + { + "name": "_global" + }, + { + "name": "_injectImplementation" + }, + { + "name": "_keyMap" + }, + { + "name": "_platform" + }, + { + "name": "_query" + }, + { + "name": "_randomChar" + }, + { + "name": "_renderCompCount" + }, + { + "name": "_symbolIterator" + }, + { + "name": "_testabilityGetter" + }, + { + "name": "_wrapInTimeout" + }, + { + "name": "addClass" + }, + { + "name": "addComponentLogic" + }, + { + "name": "addRemoveAnimationEvent" + }, + { + "name": "addToViewTree" + }, + { + "name": "allocExpando" + }, + { + "name": "allocLFrame" + }, + { + "name": "allowPreviousPlayerStylesMerge" + }, + { + "name": "animate" + }, + { + "name": "appendChild" + }, + { + "name": "applyNodes" + }, + { + "name": "applyProjectionRecursive" + }, + { + "name": "applyToElementOrContainer" + }, + { + "name": "applyView" + }, + { + "name": "attachInjectFlag" + }, + { + "name": "attachPatchData" + }, + { + "name": "autoRegisterModuleById" + }, + { + "name": "balancePreviousStylesIntoKeyframes" + }, + { + "name": "balanceProperties" + }, + { + "name": "baseElement" + }, + { + "name": "bloomHasToken" + }, + { + "name": "buildAnimationAst" + }, + { + "name": "buildAnimationTimelines" + }, + { + "name": "buildRootMap" + }, + { + "name": "callHook" + }, + { + "name": "callHooks" + }, + { + "name": "checkStable" + }, + { + "name": "classIndexOf" + }, + { + "name": "cleanUpView" + }, + { + "name": "cloakAndComputeStyles" + }, + { + "name": "cloakElement" + }, + { + "name": "collectNativeNodes" + }, + { + "name": "computeStaticStyling" + }, + { + "name": "computeStyle" + }, + { + "name": "concatStringsWithSpace" + }, + { + "name": "config" + }, + { + "name": "configureViewWithDirective" + }, + { + "name": "connectableObservableDescriptor" + }, + { + "name": "containsElement" + }, + { + "name": "copyAnimationEvent" + }, + { + "name": "copyObj" + }, + { + "name": "copyStyles" + }, + { + "name": "createElementNode" + }, + { + "name": "createElementRef" + }, + { + "name": "createInjector" + }, + { + "name": "createInjectorWithoutInjectorInstances" + }, + { + "name": "createLFrame" + }, + { + "name": "createLView" + }, + { + "name": "createNodeInjector" + }, + { + "name": "createPlatformFactory" + }, + { + "name": "createTView" + }, + { + "name": "createTimelineInstruction" + }, + { + "name": "createTransitionInstruction" + }, + { + "name": "dashCaseToCamelCase" + }, + { + "name": "decoratePreventDefault" + }, + { + "name": "deepForEach" + }, + { + "name": "defaultErrorLogger" + }, + { + "name": "defaultIterableDiffers" + }, + { + "name": "defaultIterableDiffersFactory" + }, + { + "name": "defaultKeyValueDiffers" + }, + { + "name": "defaultKeyValueDiffersFactory" + }, + { + "name": "defaultScheduler" + }, + { + "name": "detachMovedView" + }, + { + "name": "detectChangesInRootView" + }, + { + "name": "detectChangesInternal" + }, + { + "name": "diPublicInInjector" + }, + { + "name": "domRendererFactory3" + }, + { + "name": "empty" + }, + { + "name": "empty2" + }, + { + "name": "enterDI" + }, + { + "name": "enterView" + }, + { + "name": "eraseStyles" + }, + { + "name": "executeCheckHooks" + }, + { + "name": "executeInitAndCheckHooks" + }, + { + "name": "executeTemplate" + }, + { + "name": "executeViewQueryFn" + }, + { + "name": "extractDirectiveDef" + }, + { + "name": "extractPipeDef" + }, + { + "name": "extractStyleParams" + }, + { + "name": "filterNonAnimatableStyles" + }, + { + "name": "findAttrIndexInNode" + }, + { + "name": "findIndexForAnimation" + }, + { + "name": "findMatchingTokenIndex" + }, + { + "name": "flattenStyles" + }, + { + "name": "flattenUnsubscriptionErrors" + }, + { + "name": "forwardRef" + }, + { + "name": "generateInitialInputs" + }, + { + "name": "generatePropertyAliases" + }, + { + "name": "getAnimationStyle" + }, + { + "name": "getBindingsEnabled" + }, + { + "name": "getClosureSafeProperty" + }, + { + "name": "getComponentDef" + }, + { + "name": "getComponentLViewByIndex" + }, + { + "name": "getConstant" + }, + { + "name": "getCurrentTNode" + }, + { + "name": "getCurrentTNodePlaceholderOk" + }, + { + "name": "getDOM" + }, + { + "name": "getDeclarationTNode" + }, + { + "name": "getElementAnimateFn" + }, + { + "name": "getFactoryDef" + }, + { + "name": "getFirstLContainer" + }, + { + "name": "getInjectableDef" + }, + { + "name": "getInjectorDef" + }, + { + "name": "getInjectorIndex" + }, + { + "name": "getLView" + }, + { + "name": "getLViewParent" + }, + { + "name": "getLocaleData" + }, + { + "name": "getNativeByTNode" + }, + { + "name": "getNearestLContainer" + }, + { + "name": "getNextLContainer" + }, + { + "name": "getNgModuleDef" + }, + { + "name": "getNodeInjectable" + }, + { + "name": "getNullInjector" + }, + { + "name": "getOrCreateNodeInjectorForNode" + }, + { + "name": "getOrCreateTComponentView" + }, + { + "name": "getOrCreateTNode" + }, + { + "name": "getOrSetAsInMap" + }, + { + "name": "getOriginalError" + }, + { + "name": "getOwnDefinition" + }, + { + "name": "getParentInjectorIndex" + }, + { + "name": "getParentInjectorLocation" + }, + { + "name": "getParentInjectorView" + }, + { + "name": "getPlatform" + }, + { + "name": "getPreviousIndex" + }, + { + "name": "getProjectionNodes" + }, + { + "name": "getPromiseCtor" + }, + { + "name": "getSimpleChangesStore" + }, + { + "name": "getStyleAttributeString" + }, + { + "name": "getSymbolIterator" + }, + { + "name": "getSymbolIterator2" + }, + { + "name": "getTNode" + }, + { + "name": "getTView" + }, + { + "name": "hasTagAndTypeMatch" + }, + { + "name": "hostReportError" + }, + { + "name": "hypenatePropsObject" + }, + { + "name": "icuContainerIterate" + }, + { + "name": "identity" + }, + { + "name": "includeViewProviders" + }, + { + "name": "incrementInitPhaseFlags" + }, + { + "name": "initTNodeFlags" + }, + { + "name": "injectArgs" + }, + { + "name": "injectElementRef" + }, + { + "name": "injectInjectorOnly" + }, + { + "name": "injectRootLimpMode" + }, + { + "name": "injectableDefOrInjectorDefFactory" + }, + { + "name": "insertBloom" + }, + { + "name": "instructionState" + }, + { + "name": "interpolateParams" + }, + { + "name": "invertObject" + }, + { + "name": "invokeHostBindingsInCreationMode" + }, + { + "name": "invokeQuery" + }, + { + "name": "isAnimationProp" + }, + { + "name": "isArray" + }, + { + "name": "isArrayLike" + }, + { + "name": "isBrowser" + }, + { + "name": "isComponentDef" + }, + { + "name": "isComponentHost" + }, + { + "name": "isContentQueryHost" + }, + { + "name": "isCssClassMatching" + }, + { + "name": "isCurrentTNodeParent" + }, + { + "name": "isElementNode" + }, + { + "name": "isFunction" + }, + { + "name": "isInCheckNoChangesMode" + }, + { + "name": "isInlineTemplate" + }, + { + "name": "isJsObject" + }, + { + "name": "isLContainer" + }, + { + "name": "isLView" + }, + { + "name": "isListLikeIterable" + }, + { + "name": "isNode" + }, + { + "name": "isNodeMatchingSelector" + }, + { + "name": "isNodeMatchingSelectorList" + }, + { + "name": "isNonAnimatableStyle" + }, + { + "name": "isObject" + }, + { + "name": "isObject2" + }, + { + "name": "isPositive" + }, + { + "name": "isProceduralRenderer" + }, + { + "name": "isPromise" + }, + { + "name": "isPromise2" + }, + { + "name": "isTypeProvider" + }, + { + "name": "isValueProvider" + }, + { + "name": "issueAnimationCommand" + }, + { + "name": "iterator" + }, + { + "name": "iteratorToArray" + }, + { + "name": "keyValDiff" + }, + { + "name": "leaveDI" + }, + { + "name": "leaveView" + }, + { + "name": "leaveViewLight" + }, + { + "name": "listenOnPlayer" + }, + { + "name": "locale_en_default" + }, + { + "name": "lookupTokenUsingModuleInjector" + }, + { + "name": "makeAnimationEvent" + }, + { + "name": "makeLambdaFromStates" + }, + { + "name": "makeParamDecorator" + }, + { + "name": "makeRecord" + }, + { + "name": "makeTimingAst" + }, + { + "name": "markAsComponentHost" + }, + { + "name": "maybeUnwrapFn" + }, + { + "name": "maybeWrapInNotSelector" + }, + { + "name": "mergeHostAttribute" + }, + { + "name": "mergeHostAttrs" + }, + { + "name": "mergeMap" + }, + { + "name": "modules" + }, + { + "name": "nativeAppendChild" + }, + { + "name": "nativeAppendOrInsertBefore" + }, + { + "name": "nativeInsertBefore" + }, + { + "name": "nextNgElementId" + }, + { + "name": "ngOnChangesSetInput" + }, + { + "name": "noSideEffects" + }, + { + "name": "noop" + }, + { + "name": "normalizeAnimationEntry" + }, + { + "name": "normalizeAnimationOptions" + }, + { + "name": "normalizeKeyframes" + }, + { + "name": "notFoundValueOrThrow" + }, + { + "name": "observable" + }, + { + "name": "onEnter" + }, + { + "name": "onLeave" + }, + { + "name": "optimizeGroupPlayer" + }, + { + "name": "optionsReducer" + }, + { + "name": "packageNonAnimatableStyles" + }, + { + "name": "parseTimelineCommand" + }, + { + "name": "parseTransitionExpr" + }, + { + "name": "platformBrowser" + }, + { + "name": "platformCore" + }, + { + "name": "playPauseAnimation" + }, + { + "name": "promise" + }, + { + "name": "readPatchedLView" + }, + { + "name": "refCount" + }, + { + "name": "refreshComponent" + }, + { + "name": "refreshContainsDirtyView" + }, + { + "name": "refreshContentQueries" + }, + { + "name": "refreshView" + }, + { + "name": "registerHostBindingOpCodes" + }, + { + "name": "registerPostOrderHooks" + }, + { + "name": "rememberChangeHistoryAndInvokeOnChangesHook" + }, + { + "name": "remove" + }, + { + "name": "removeClass" + }, + { + "name": "removeFromArray" + }, + { + "name": "removeNodesAfterAnimationDone" + }, + { + "name": "removeStyle" + }, + { + "name": "renderComponent" + }, + { + "name": "renderComponentOrTemplate" + }, + { + "name": "renderView" + }, + { + "name": "replacePostStylesAsPre" + }, + { + "name": "resetPreOrderHookFlags" + }, + { + "name": "resolveForwardRef" + }, + { + "name": "resolveTiming" + }, + { + "name": "resolveTimingValue" + }, + { + "name": "roundOffset" + }, + { + "name": "rxSubscriber" + }, + { + "name": "saveNameToExportMap" + }, + { + "name": "scheduleArray" + }, + { + "name": "scheduleMicroTask" + }, + { + "name": "scheduleMicroTask2" + }, + { + "name": "searchTokensOnInjector" + }, + { + "name": "sequence" + }, + { + "name": "setAnimationStyle" + }, + { + "name": "setBindingRootForHostBindings" + }, + { + "name": "setCurrentDirectiveIndex" + }, + { + "name": "setCurrentInjector" + }, + { + "name": "setCurrentQueryIndex" + }, + { + "name": "setCurrentTNode" + }, + { + "name": "setDirectiveInputsWhichShadowsStyling" + }, + { + "name": "setIncludeViewProviders" + }, + { + "name": "setInjectImplementation" + }, + { + "name": "setInputsForProperty" + }, + { + "name": "setInputsFromAttrs" + }, + { + "name": "setIsInCheckNoChangesMode" + }, + { + "name": "setSelectedIndex" + }, + { + "name": "setStyles" + }, + { + "name": "setUpAttributes" + }, + { + "name": "shareSubjectFactory" + }, + { + "name": "shouldSearchParent" + }, + { + "name": "stringify" + }, + { + "name": "stringifyCSSSelector" + }, + { + "name": "stringifyForError" + }, + { + "name": "style" + }, + { + "name": "subscribeTo" + }, + { + "name": "subscribeToArray" + }, + { + "name": "throwProviderNotFoundError" + }, + { + "name": "toRefArray" + }, + { + "name": "trackByIdentity" + }, + { + "name": "transition" + }, + { + "name": "u" + }, + { + "name": "unwrapRNode" + }, + { + "name": "updateMicroTaskStatus" + }, + { + "name": "updateTransplantedViewCount" + }, + { + "name": "urlParsingNode" + }, + { + "name": "validateStyleProperty" + }, + { + "name": "viewAttachedToChangeDetector" + }, + { + "name": "visitDslNode" + }, + { + "name": "writeDirectClass" + }, + { + "name": "writeDirectStyle" + }, + { + "name": "writeStyleAttribute" + }, + { + "name": "ɵɵdefineComponent" + }, + { + "name": "ɵɵdefineInjectable" + }, + { + "name": "ɵɵdefineInjector" + }, + { + "name": "ɵɵdefineNgModule" + }, + { + "name": "ɵɵelement" + }, + { + "name": "ɵɵelementStart" + }, + { + "name": "ɵɵinject" + }, + { + "name": "ɵɵproperty" + } +] \ No newline at end of file diff --git a/packages/core/test/bundling/animations/index.html b/packages/core/test/bundling/animations/index.html new file mode 100644 index 00000000000..d437f8b7050 --- /dev/null +++ b/packages/core/test/bundling/animations/index.html @@ -0,0 +1,35 @@ + + + + + + Angular Animations Example + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/core/test/bundling/animations/index.ts b/packages/core/test/bundling/animations/index.ts new file mode 100644 index 00000000000..0299763c888 --- /dev/null +++ b/packages/core/test/bundling/animations/index.ts @@ -0,0 +1,45 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +import {animate, style, transition, trigger} from '@angular/animations'; +import {Component, NgModule, ɵNgModuleFactory as NgModuleFactory} from '@angular/core'; +import {BrowserModule, platformBrowser} from '@angular/platform-browser'; +import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; + +@Component({ + selector: 'app-animations', + template: ` +
+ `, + animations: + [trigger('myAnimation', [transition('* => on', [animate(1000, style({opacity: 1}))])])] +}) +class AnimationsComponent { + exp: any = false; +} + +@Component({ + selector: 'app-root', + template: ` + + ` +}) +class RootComponent { +} + +@NgModule({ + declarations: [RootComponent, AnimationsComponent], + imports: [BrowserModule, BrowserAnimationsModule], +}) +class AnimationsExampleModule { + ngDoBootstrap(app: any) { + app.bootstrap(RootComponent); + } +} + +(window as any).waitForApp = + platformBrowser().bootstrapModule(AnimationsExampleModule, {ngZone: 'noop'}); diff --git a/packages/core/test/bundling/animations/treeshaking_spec.ts b/packages/core/test/bundling/animations/treeshaking_spec.ts new file mode 100644 index 00000000000..b3ec19f5258 --- /dev/null +++ b/packages/core/test/bundling/animations/treeshaking_spec.ts @@ -0,0 +1,36 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import '@angular/compiler'; + +import * as fs from 'fs'; +import * as path from 'path'; + +const UTF8 = { + encoding: 'utf-8' +}; +const PACKAGE = 'angular/packages/core/test/bundling/animations'; + +describe('treeshaking with uglify', () => { + let content: string; + // We use the debug version as otherwise symbols/identifiers would be mangled (and the test would + // always pass) + const contentPath = require.resolve(path.join(PACKAGE, 'bundle.debug.min.js')); + beforeAll(() => { + content = fs.readFileSync(contentPath, UTF8); + }); + + it('should drop unused TypeScript helpers', () => { + expect(content).not.toContain('__asyncGenerator'); + }); + + it('should not contain rxjs from commonjs distro', () => { + expect(content).not.toContain('commonjsGlobal'); + expect(content).not.toContain('createCommonjsModule'); + }); +});