From 64efcf103cc62affa69ccd16bd47473197b18f67 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 20 Mar 2018 09:58:05 -0700 Subject: [PATCH] build: add the FESM files back to ng_package (#22889) PR Close #22889 --- packages/bazel/src/ng_module.bzl | 17 +- packages/bazel/src/ng_package/ng_package.bzl | 67 +++--- packages/bazel/src/ng_package/packager.ts | 73 +++++-- .../test/ng_package/common_package.spec.ts | 16 +- .../test/ng_package/core_package.spec.ts | 59 +++--- .../test/ng_package/example_package.golden | 198 +++++++++++++++++- 6 files changed, 333 insertions(+), 97 deletions(-) diff --git a/packages/bazel/src/ng_module.bzl b/packages/bazel/src/ng_module.bzl index 19553d764b..bb8894e2ba 100644 --- a/packages/bazel/src/ng_module.bzl +++ b/packages/bazel/src/ng_module.bzl @@ -253,6 +253,20 @@ def _ts_expected_outs(ctx, label): return _expected_outs(ctx) def _write_bundle_index(ctx): + """ Provide an action that runs the bundle_index_main in ngc. + + The action will only be executed when bundling with ng_package with a dep[] on this ng_module. + + This creates: + - "flat module" metadata files + - "bundle index" js files with private symbol re-export, and their accompanying .d.ts files + + Args: + ctx: the skylark rule execution context + + Returns: + A struct indicating where the files were produced, which is passed through an ng_package rule to packager.ts + """ # Provide a default for the flat_module_out_file attribute. # We cannot use the default="" parameter of ctx.attr because the value is calculated # from other attributes (name) @@ -269,7 +283,8 @@ def _write_bundle_index(ctx): }, }) if not ctx.attr.module_name: - fail("Only ng_module with a module_name attribute should be exposed as flat module") + fail("""Internal error: bundle index files are only produced for ng_module targets with a module_name. + Please file a bug at https://github.com/angular/angular/issues""") tsconfig["angularCompilerOptions"]["flatModuleId"] = ctx.attr.module_name entry_point = ctx.attr.entry_point if ctx.attr.entry_point else "index.ts" diff --git a/packages/bazel/src/ng_package/ng_package.bzl b/packages/bazel/src/ng_package/ng_package.bzl index 959cf92a4e..e01ad06c00 100644 --- a/packages/bazel/src/ng_package/ng_package.bzl +++ b/packages/bazel/src/ng_package/ng_package.bzl @@ -103,6 +103,8 @@ def _ng_package_impl(ctx): # These accumulators match the directory names where the files live in the # Angular package format. + fesm2015 = [] + fesm5 = [] esm2015 = [] esm5 = [] bundles = [] @@ -116,10 +118,17 @@ def _ng_package_impl(ctx): if f.path.endswith(".js"): esm2015.append(struct(js = f, map = None)) + # We infer the entry points to be: + # - ng_module rules in the deps (they have an "angular" provider) + # - in this package or a subpackage + # - those that have a module_name attribute (they produce flat module metadata) entry_points = [] + flat_module_metadata = [] for dep in ctx.attr.deps: if dep.label.package.startswith(ctx.label.package): entry_points.append(dep.label.package[len(ctx.label.package) + 1:]) + if hasattr(dep, "angular") and dep.angular.flat_module_metadata: + flat_module_metadata.append(dep.angular.flat_module_metadata) for entry_point in entry_points: es2015_entry_point = "/".join([p for p in [ @@ -153,75 +162,71 @@ def _ng_package_impl(ctx): config = write_rollup_config(ctx, [], root_dirs) - # Currently we don't include these rollup "FESM" files in the package. - # They are only accessible as named outputs from the rule. - _rollup(ctx, config, es2015_entry_point, esm_2015_files, fesm2015_output) - _rollup(ctx, config, es5_entry_point, esm5_sources, fesm5_output) + fesm2015.append(_rollup(ctx, config, es2015_entry_point, esm_2015_files, fesm2015_output)) + fesm5.append(_rollup(ctx, config, es5_entry_point, esm5_sources, fesm5_output)) bundles.append(_rollup(ctx, config, es5_entry_point, esm5_sources, umd_output, format = "umd")) uglify_sourcemap = run_uglify(ctx, umd_output, min_output, config_name = entry_point.replace("/", "_")) bundles.append(struct(js = min_output, map = uglify_sourcemap)) - inputs = ( + packager_inputs = ( ctx.files.srcs + esm5_sources.to_list() + depset(transitive = [d.typescript.transitive_declarations for d in ctx.attr.deps if hasattr(d, "typescript")]).to_list() + - [f.js for f in esm2015 + esm5 + bundles] + - [f.map for f in esm2015 + esm5 + bundles if f.map]) + [f.js for f in fesm2015 + fesm5 + esm2015 + esm5 + bundles] + + [f.map for f in fesm2015 + fesm5 + esm2015 + esm5 + bundles if f.map]) - args = ctx.actions.args() - args.use_param_file("%s", use_always = True) + packager_args = ctx.actions.args() + packager_args.use_param_file("%s", use_always = True) # The order of arguments matters here, as they are read in order in packager.ts. - args.add(npm_package_directory.path) - args.add(ctx.label.package) - args.add([ctx.bin_dir.path, ctx.label.package], join_with="/") + packager_args.add(npm_package_directory.path) + packager_args.add(ctx.label.package) + packager_args.add([ctx.bin_dir.path, ctx.label.package], join_with="/") - flat_module_metadata = depset(transitive = [ - getattr(dep, "angular").flat_module_metadata - for dep in ctx.attr.deps - if hasattr(dep, "angular")]) # Marshal the metadata into a JSON string so we can parse the data structure # in the TypeScript program easily. metadata_arg = {} - for m in flat_module_metadata.to_list(): - inputs.extend([m.index_file, m.typings_file, m.metadata_file]) + for m in depset(transitive = flat_module_metadata).to_list(): + packager_inputs.extend([m.index_file, m.typings_file, m.metadata_file]) metadata_arg[m.module_name] = { "index": m.index_file.path, "typings": m.typings_file.path, "metadata": m.metadata_file.path, } - args.add(str(metadata_arg)) + packager_args.add(str(metadata_arg)) if ctx.file.readme_md: - inputs.append(ctx.file.readme_md) - args.add(ctx.file.readme_md.path) + packager_inputs.append(ctx.file.readme_md) + packager_args.add(ctx.file.readme_md.path) else: # placeholder - args.add("") + packager_args.add("") - args.add(_flatten_paths(esm2015), join_with=",") - args.add(_flatten_paths(esm5), join_with=",") - args.add(_flatten_paths(bundles), join_with=",") - args.add([s.path for s in ctx.files.srcs], join_with=",") + packager_args.add(_flatten_paths(fesm2015), join_with=",") + packager_args.add(_flatten_paths(fesm5), join_with=",") + packager_args.add(_flatten_paths(esm2015), join_with=",") + packager_args.add(_flatten_paths(esm5), join_with=",") + packager_args.add(_flatten_paths(bundles), join_with=",") + packager_args.add([s.path for s in ctx.files.srcs], join_with=",") if ctx.file.license_banner: - inputs.append(ctx.file.license_banner) - args.add(ctx.file.license_banner.path) + packager_inputs.append(ctx.file.license_banner) + packager_args.add(ctx.file.license_banner.path) else: # placeholder - args.add("") + packager_args.add("") ctx.actions.run( progress_message = "Angular Packaging: building npm package for %s" % ctx.label.name, mnemonic = "AngularPackage", - inputs = inputs, + inputs = packager_inputs, outputs = [npm_package_directory], executable = ctx.executable._ng_packager, - arguments = [args], + arguments = [packager_args], ) devfiles = depset() diff --git a/packages/bazel/src/ng_package/packager.ts b/packages/bazel/src/ng_package/packager.ts index d618f83961..7ef896d669 100644 --- a/packages/bazel/src/ng_package/packager.ts +++ b/packages/bazel/src/ng_package/packager.ts @@ -38,9 +38,9 @@ function main(args: string[]): number { // JSON data mapping each entry point to the generated bundle index and // flat module metadata, for example // {"@angular/core": { - // "index": "packages/core/core.js", - // "typing": "packages/core/core.d.ts", - // "metadata": "packages/core/core.metadata.json" + // "index": "bazel-bin/packages/core/core.js", + // "typing": "bazel-bin/packages/core/core.d.ts", + // "metadata": "bazel-bin/packages/core/core.metadata.json" // }, // ... // } @@ -49,10 +49,16 @@ function main(args: string[]): number { // Path to the package's README.md. readmeMd, - // List of ES2015 files generated by rollup. + // List of rolled-up flat ES2015 modules + fesm2015Arg, + + // List of rolled-up flat ES5 modules + fesm5Arg, + + // List of individual ES2015 modules esm2015Arg, - // List of flattened, ES5 files generated by rollup. + // List of individual ES5 modules esm5Arg, // List of all UMD bundles generated by rollup. @@ -65,6 +71,8 @@ function main(args: string[]): number { licenseFile, ] = params; + const fesm2015 = fesm2015Arg.split(',').filter(s => !!s); + const fesm5 = fesm5Arg.split(',').filter(s => !!s); const esm2015 = esm2015Arg.split(',').filter(s => !!s); const esm5 = esm5Arg.split(',').filter(s => !!s); const bundles = bundlesArg.split(',').filter(s => !!s); @@ -119,6 +127,8 @@ function main(args: string[]): number { esm5.forEach(file => writeEsmFile(file, '.esm5', 'esm5')); bundles.forEach(bundle => { copyFile(bundle, out, 'bundles'); }); + fesm2015.forEach(file => { copyFile(file, out, 'fesm2015'); }); + fesm5.forEach(file => { copyFile(file, out, 'fesm5'); }); const allsrcs = shx.find('-R', binDir); allsrcs.filter(hasFileExtension('.d.ts')).forEach((f: string) => { @@ -215,16 +225,15 @@ function main(args: string[]): number { const dir = path.join(baseDir, relative); shx.mkdir('-p', dir); shx.cp(file, dir); - } - - function copyFesm(file: string, baseDir: string) { - const parts = path.basename(file).split('__'); - const entryPointName = parts.join('/').replace(/\..*/, ''); - const filename = parts.splice(-1)[0]; - const dir = path.join(baseDir, ...parts); - shx.mkdir('-p', dir); - shx.cp(file, dir); - shx.mv(path.join(dir, path.basename(file)), path.join(dir, filename)); + // Double-underscore is used to escape forward slash in FESM filenames. + // See ng_package.bzl: + // fesm_output_filename = entry_point.replace("/", "__") + // We need to unescape these. + if (file.indexOf('__') >= 0) { + const outputPath = path.join(dir, ...path.basename(file).split('__')); + shx.mkdir('-p', path.dirname(outputPath)); + shx.mv(path.join(dir, path.basename(file)), outputPath); + } } /** @@ -248,22 +257,42 @@ function main(args: string[]): number { return JSON.stringify(parsedPackage, null, 2); } - parsedPackage['main'] = getUmdBundleName(packageName); - parsedPackage['module'] = parsedPackage['esm5'] = - srcDirRelative(packageJson, moduleFiles['esm5_index']); - parsedPackage['es2015'] = parsedPackage['esm2015'] = - srcDirRelative(packageJson, moduleFiles['esm2015_index']); + // Derive the paths to the files from the hard-coded names we gave them. + // TODO(alexeagle): it would be better to transfer this information from the place + // where we created the filenames, via the modulesManifestArg + parsedPackage['main'] = getBundleName(packageName, 'bundles'); + parsedPackage['fesm5'] = getBundleName(packageName, 'fesm5'); + parsedPackage['fesm2015'] = getBundleName(packageName, 'fesm2015'); + + parsedPackage['esm5'] = srcDirRelative(packageJson, moduleFiles['esm5_index']); + parsedPackage['esm2015'] = srcDirRelative(packageJson, moduleFiles['esm2015_index']); parsedPackage['typings'] = srcDirRelative(packageJson, moduleFiles['typings']); + + // For now, we point the primary entry points at the fesm files, because of Webpack + // performance issues with a large number of individual files. + // TODO(iminar): resolve performance issues with the toolchain and point these to esm + parsedPackage['module'] = parsedPackage['fesm5']; + parsedPackage['es2015'] = parsedPackage['fesm2015']; + return JSON.stringify(parsedPackage, null, 2); } // e.g. @angular/common/http/testing -> ../../bundles/common-http-testing.umd.js - function getUmdBundleName(packageName: string) { + // or @angular/common/http/testing -> ../../fesm5/http/testing.js + function getBundleName(packageName: string, dir: string) { const parts = packageName.split('/'); // Remove the scoped package part, like @angular if present const nameParts = packageName.startsWith('@') ? parts.splice(1) : parts; const relativePath = Array(nameParts.length - 1).fill('..').join('/') || '.'; - return `${relativePath}/bundles/${nameParts.join('-')}.umd.js`; + let basename: string; + if (dir === 'bundles') { + basename = nameParts.join('-') + '.umd'; + } else if (nameParts.length === 1) { + basename = nameParts[0]; + } else { + basename = nameParts.slice(1).join('/'); + } + return [relativePath, dir, basename + '.js'].join('/'); } /** Creates metadata re-export file for a secondary entry-point. */ diff --git a/packages/bazel/test/ng_package/common_package.spec.ts b/packages/bazel/test/ng_package/common_package.spec.ts index ba583f042f..b81dff246c 100644 --- a/packages/bazel/test/ng_package/common_package.spec.ts +++ b/packages/bazel/test/ng_package/common_package.spec.ts @@ -33,8 +33,8 @@ describe('@angular/common ng_package', () => { 'common.umd.min.js.map', ]); }); - // FESMS currently not part of APF v6 - xit('should have right fesm files', () => { + + it('should have right fesm files', () => { const expected = [ 'common.js', 'common.js.map', @@ -46,8 +46,8 @@ describe('@angular/common ng_package', () => { 'testing.js', 'testing.js.map', ]; - expect(shx.ls('-R', 'esm5').stdout.split('\n').filter(n => !!n).sort()).toEqual(expected); - expect(shx.ls('-R', 'esm2015').stdout.split('\n').filter(n => !!n).sort()).toEqual(expected); + expect(shx.ls('-R', 'fesm5').stdout.split('\n').filter(n => !!n).sort()).toEqual(expected); + expect(shx.ls('-R', 'fesm2015').stdout.split('\n').filter(n => !!n).sort()).toEqual(expected); }); describe('should have module resolution properties in the package.json file for', () => { // https://github.com/angular/common-builds/blob/master/package.json @@ -59,8 +59,8 @@ describe('@angular/common ng_package', () => { it('/http', () => { const actual = JSON.parse(fs.readFileSync('http/package.json', {encoding: 'utf-8'})); expect(actual['main']).toEqual('../bundles/common-http.umd.js'); - expect(actual['es2015']).toEqual('../esm2015/http/http.js'); - expect(actual['module']).toEqual('../esm5/http/http.js'); + expect(actual['es2015']).toEqual('../fesm2015/http.js'); + expect(actual['module']).toEqual('../fesm5/http.js'); expect(actual['typings']).toEqual('./http.d.ts'); }); // https://github.com/angular/common-builds/blob/master/testing/package.json @@ -72,8 +72,8 @@ describe('@angular/common ng_package', () => { it('/http/testing', () => { const actual = JSON.parse(fs.readFileSync('http/testing/package.json', {encoding: 'utf-8'})); expect(actual['main']).toEqual('../../bundles/common-http-testing.umd.js'); - expect(actual['es2015']).toEqual('../../esm2015/http/testing/testing.js'); - expect(actual['module']).toEqual('../../esm5/http/testing/testing.js'); + expect(actual['es2015']).toEqual('../../fesm2015/http/testing.js'); + expect(actual['module']).toEqual('../../fesm5/http/testing.js'); expect(actual['typings']).toEqual('./testing.d.ts'); }); }); diff --git a/packages/bazel/test/ng_package/core_package.spec.ts b/packages/bazel/test/ng_package/core_package.spec.ts index 6442b2d038..9cb16477a6 100644 --- a/packages/bazel/test/ng_package/core_package.spec.ts +++ b/packages/bazel/test/ng_package/core_package.spec.ts @@ -56,8 +56,10 @@ describe('@angular/core ng_package', () => { it('should contain module resolution mappings', () => { expect(shx.grep('"main":', packageJson)).toContain(`./bundles/core.umd.js`); - expect(shx.grep('"module":', packageJson)).toContain(`./esm5/core.js`); - expect(shx.grep('"es2015":', packageJson)).toContain(`./esm2015/core.js`); + expect(shx.grep('"module":', packageJson)).toContain(`./fesm5/core.js`); + expect(shx.grep('"es2015":', packageJson)).toContain(`./fesm2015/core.js`); + expect(shx.grep('"esm5":', packageJson)).toContain(`./esm5/core.js`); + expect(shx.grep('"esm2015":', packageJson)).toContain(`./esm2015/core.js`); expect(shx.grep('"typings":', packageJson)).toContain(`./core.d.ts`); }); @@ -92,35 +94,33 @@ describe('@angular/core ng_package', () => { }); - // FESMS currently not part of APF v6 - xdescribe('esm2015', () => { - it('should have a fesm15 file in the /esm2015 directory', - () => { expect(shx.cat('esm2015/core.js')).toContain(`export {`); }); + describe('fesm2015', () => { + it('should have a fesm15 file in the /fesm2015 directory', + () => { expect(shx.cat('fesm2015/core.js')).toContain(`export {`); }); it('should have a source map', () => { - expect(shx.cat('esm2015/core.js.map')) + expect(shx.cat('fesm2015/core.js.map')) .toContain(`{"version":3,"file":"core.js","sources":`); }); it('should have the version info in the header', () => { - expect(shx.cat('esm2015/index.js')) + expect(shx.cat('fesm2015/core.js')) .toMatch(/@license Angular v\d+\.\d+\.\d+(?!-PLACEHOLDER)/); }); }); - describe('esm5', () => { + describe('fesm5', () => { - // FESMS currently not part of APF v6 - xit('should have a fesm5 file in the /esm5 directory', - () => { expect(shx.cat('esm5/core.js')).toContain(`export {`); }); - // FESMS currently not part of APF v6 - xit('should have a source map', () => { - expect(shx.cat('esm5/core.js.map')).toContain(`{"version":3,"file":"core.js","sources":`); + it('should have a fesm5 file in the /esm5 directory', + () => { expect(shx.cat('fesm5/core.js')).toContain(`export {`); }); + + it('should have a source map', () => { + expect(shx.cat('fesm5/core.js.map')).toContain(`{"version":3,"file":"core.js","sources":`); }); it('should not be processed by tsickle', () => { - expect(shx.cat('esm5/index.js')).not.toContain('@fileoverview added by tsickle'); + expect(shx.cat('fesm5/core.js')).not.toContain('@fileoverview added by tsickle'); }); }); @@ -160,8 +160,10 @@ describe('@angular/core ng_package', () => { it('should have its module resolution mappings defined in the nested package.json', () => { const packageJson = p `testing/package.json`; expect(shx.grep('"main":', packageJson)).toContain(`../bundles/core-testing.umd.js`); - expect(shx.grep('"module":', packageJson)).toContain(`../esm5/testing/testing.js`); - expect(shx.grep('"es2015":', packageJson)).toContain(`../esm2015/testing/testing.js`); + expect(shx.grep('"module":', packageJson)).toContain(`../fesm5/testing.js`); + expect(shx.grep('"es2015":', packageJson)).toContain(`../fesm2015/testing.js`); + expect(shx.grep('"esm5":', packageJson)).toContain(`../esm5/testing/testing.js`); + expect(shx.grep('"esm2015":', packageJson)).toContain(`../esm2015/testing/testing.js`); expect(shx.grep('"typings":', packageJson)).toContain(`./testing.d.ts`); }); }); @@ -194,29 +196,28 @@ describe('@angular/core ng_package', () => { }); }); - // FESMS currently not part of APF v6 - xdescribe('esm2015', () => { - it('should have a fesm15 file in the /esm2015 directory', - () => { expect(shx.cat('esm2015/testing.js')).toContain(`export {`); }); + + describe('fesm2015', () => { + it('should have a fesm15 file in the /fesm2015 directory', + () => { expect(shx.cat('fesm2015/testing.js')).toContain(`export {`); }); it('should have a source map', () => { - expect(shx.cat('esm2015/testing.js.map')) + expect(shx.cat('fesm2015/testing.js.map')) .toContain(`{"version":3,"file":"testing.js","sources":`); }); it('should have the version info in the header', () => { - expect(shx.cat('esm2015/index.js')) + expect(shx.cat('fesm2015/testing.js')) .toMatch(/@license Angular v\d+\.\d+\.\d+(?!-PLACEHOLDER)/); }); }); - // FESMS currently not part of APF v6 - xdescribe('esm5', () => { - it('should have a fesm5 file in the /esm5 directory', - () => { expect(shx.cat('esm5/testing.js')).toContain(`export {`); }); + describe('fesm5', () => { + it('should have a fesm5 file in the /fesm5 directory', + () => { expect(shx.cat('fesm5/testing.js')).toContain(`export {`); }); it('should have a source map', () => { - expect(shx.cat('esm5/testing.js.map')) + expect(shx.cat('fesm5/testing.js.map')) .toContain(`{"version":3,"file":"testing.js","sources":`); }); }); diff --git a/packages/bazel/test/ng_package/example_package.golden b/packages/bazel/test/ng_package/example_package.golden index 95dc9b3ecc..8a9becff8d 100644 --- a/packages/bazel/test/ng_package/example_package.golden +++ b/packages/bazel/test/ng_package/example_package.golden @@ -43,6 +43,16 @@ esm5 esm5/secondary/secondarymodule.ngsummary.js example_public_index.d.ts example_public_index.metadata.json +fesm2015 + fesm2015/example.js + fesm2015/example.js.map + fesm2015/secondary.js + fesm2015/secondary.js.map +fesm5 + fesm5/example.js + fesm5/example.js.map + fesm5/secondary.js + fesm5/secondary.js.map index.d.ts mymodule.d.ts package.json @@ -651,6 +661,178 @@ export * from './index'; {"__symbolic":"module","version":4,"metadata":{"MyModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{}]}],"members":{}}},"origins":{"MyModule":"./mymodule"},"importAs":"example"} +--- fesm2015/example.js --- + +import { NgModule } from '@angular/core'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +/** + * @license + * Copyright Google Inc. 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 + */ +class MyModule { +} +MyModule.decorators = [ + { type: NgModule, args: [{},] } +]; +/** @nocollapse */ +MyModule.ctorParameters = () => []; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +/** + * @license + * Copyright Google Inc. 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 + */ + +export { MyModule }; +//# sourceMappingURL=example.js.map + + +--- fesm2015/example.js.map --- + +{"version":3,"file":"example.js","sources":["../../../../../../../../../../../../../execroot/angular/bazel-bin/packages/bazel/test/ng_package/example/npm_package.es6/packages/bazel/test/ng_package/example/index.js"],"sourcesContent":["/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgModule } from '@angular/core';\nexport class MyModule {\n}\nMyModule.decorators = [\n { type: NgModule, args: [{},] }\n];\n/** @nocollapse */\nMyModule.ctorParameters = () => [];\nfunction MyModule_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array)}>} */\n MyModule.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array)}>)})>}\n */\n MyModule.ctorParameters;\n}\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXltb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iYXplbC90ZXN0L25nX3BhY2thZ2UvZXhhbXBsZS9teW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJdkMsTUFBTTs7O1lBREwsUUFBUSxTQUFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHthfSBmcm9tICcuL3NlY29uZGFyeS9zZWNvbmRhcnltb2R1bGUnO1xuXG5ATmdNb2R1bGUoe30pXG5leHBvcnQgY2xhc3MgTXlNb2R1bGUge1xufSJdfQ==","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport { MyModule } from './mymodule';\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iYXplbC90ZXN0L25nX3BhY2thZ2UvZXhhbXBsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFBLHlCQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9teW1vZHVsZSc7Il19"],"names":[],"mappings":";;AAAA;;;;;;;;;;;AAWA,AACO,MAAM,QAAQ,CAAC;CACrB;AACD,QAAQ,CAAC,UAAU,GAAG;IAClB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;CAClC,CAAC;;AAEF,QAAQ,CAAC,cAAc,GAAG,MAAM,EAAE,CAAC;;AClBnC;;;;;;;;;;GAUG;;;;"} + +--- fesm2015/secondary.js --- + +import { NgModule } from '@angular/core'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +/** + * @license + * Copyright Google Inc. 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 + */ +class SecondaryModule { +} +SecondaryModule.decorators = [ + { type: NgModule, args: [{},] } +]; +/** @nocollapse */ +SecondaryModule.ctorParameters = () => []; +const a = 1; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +/** + * @license + * Copyright Google Inc. 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 + */ + +export { SecondaryModule, a }; +//# sourceMappingURL=secondary.js.map + + +--- fesm2015/secondary.js.map --- + +{"version":3,"file":"secondary.js","sources":["../../../../../../../../../../../../../execroot/angular/bazel-bin/packages/bazel/test/ng_package/example/npm_package.es6/packages/bazel/test/ng_package/example/secondary/index.js"],"sourcesContent":["/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgModule } from '@angular/core';\nexport class SecondaryModule {\n}\nSecondaryModule.decorators = [\n { type: NgModule, args: [{},] }\n];\n/** @nocollapse */\nSecondaryModule.ctorParameters = () => [];\nfunction SecondaryModule_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array)}>} */\n SecondaryModule.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array)}>)})>}\n */\n SecondaryModule.ctorParameters;\n}\nexport const /** @type {?} */ a = 1;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vjb25kYXJ5bW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmF6ZWwvdGVzdC9uZ19wYWNrYWdlL2V4YW1wbGUvc2Vjb25kYXJ5L3NlY29uZGFyeW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHdkMsTUFBTTs7O1lBREwsUUFBUSxTQUFDLEVBQUU7Ozs7Ozs7Ozs7Ozs7QUFJWixNQUFNLENBQUMsdUJBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBOZ01vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBTZWNvbmRhcnlNb2R1bGUge1xufVxuXG5leHBvcnQgY29uc3QgYSA9IDE7XG4iXX0=","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport { SecondaryModule, a } from './secondarymodule';\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iYXplbC90ZXN0L25nX3BhY2thZ2UvZXhhbXBsZS9zZWNvbmRhcnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFRQSxtQ0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9zZWNvbmRhcnltb2R1bGUnO1xuIl19"],"names":[],"mappings":";;AAAA;;;;;;;;;;;AAWA,AACO,MAAM,eAAe,CAAC;CAC5B;AACD,eAAe,CAAC,UAAU,GAAG;IACzB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;CAClC,CAAC;;AAEF,eAAe,CAAC,cAAc,GAAG,MAAM,EAAE,CAAC;AAC1C,AASO,MAAuB,CAAC,GAAG,CAAC;;AC5BnC;;;;;;;;;;GAUG;;;;"} + +--- fesm5/example.js --- + +import { NgModule } from '@angular/core'; + +/** + * @license + * Copyright Google Inc. 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 + */ +var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var MyModule = /** @class */ (function () { + function MyModule() { + } + MyModule = __decorate([ + NgModule({}) + ], MyModule); + return MyModule; +}()); + +/** + * @license + * Copyright Google Inc. 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 + */ + +export { MyModule }; +//# sourceMappingURL=example.js.map + + +--- fesm5/example.js.map --- + +{"version":3,"file":"example.js","sources":["../../../../../../../../../../../../../execroot/angular/bazel-bin/packages/bazel/test/ng_package/example/example.esm5/packages/bazel/test/ng_package/example/index.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { NgModule } from '@angular/core';\nvar MyModule = /** @class */ (function () {\n function MyModule() {\n }\n MyModule = __decorate([\n NgModule({})\n ], MyModule);\n return MyModule;\n}());\nexport { MyModule };\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXltb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iYXplbC90ZXN0L25nX3BhY2thZ2UvZXhhbXBsZS9teW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBSXZDO0lBQUE7SUFDQSxDQUFDO0lBRFksUUFBUTtRQURwQixRQUFRLENBQUMsRUFBRSxDQUFDO09BQ0EsUUFBUSxDQUNwQjtJQUFELGVBQUM7Q0FBQSxBQURELElBQ0M7U0FEWSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7YX0gZnJvbSAnLi9zZWNvbmRhcnkvc2Vjb25kYXJ5bW9kdWxlJztcblxuQE5nTW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIE15TW9kdWxlIHtcbn0iXX0=","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport * from './mymodule';\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iYXplbC90ZXN0L25nX3BhY2thZ2UvZXhhbXBsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9teW1vZHVsZSc7Il19"],"names":["this"],"mappings":";;AAAA;;;;;;;AAOA,IAAI,UAAU,GAAG,CAACA,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AACA,IAAI,QAAQ,kBAAkB,YAAY;IACtC,SAAS,QAAQ,GAAG;KACnB;IACD,QAAQ,GAAG,UAAU,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,QAAQ,CAAC,CAAC;IACb,OAAO,QAAQ,CAAC;CACnB,EAAE,CAAC;;ACrBJ;;;;;;GAMG;;;;"} + +--- fesm5/secondary.js --- + +import { NgModule } from '@angular/core'; + +/** + * @license + * Copyright Google Inc. 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 + */ +var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var SecondaryModule = /** @class */ (function () { + function SecondaryModule() { + } + SecondaryModule = __decorate([ + NgModule({}) + ], SecondaryModule); + return SecondaryModule; +}()); +var a = 1; + +/** + * @license + * Copyright Google Inc. 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 + */ + +export { SecondaryModule, a }; +//# sourceMappingURL=secondary.js.map + + +--- fesm5/secondary.js.map --- + +{"version":3,"file":"secondary.js","sources":["../../../../../../../../../../../../execroot/angular/bazel-bin/packages/bazel/test/ng_package/example/secondary/secondary.esm5/packages/bazel/test/ng_package/example/secondary/index.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { NgModule } from '@angular/core';\nvar SecondaryModule = /** @class */ (function () {\n function SecondaryModule() {\n }\n SecondaryModule = __decorate([\n NgModule({})\n ], SecondaryModule);\n return SecondaryModule;\n}());\nexport { SecondaryModule };\nexport var a = 1;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vjb25kYXJ5bW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmF6ZWwvdGVzdC9uZ19wYWNrYWdlL2V4YW1wbGUvc2Vjb25kYXJ5L3NlY29uZGFyeW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3ZDO0lBQUE7SUFDQSxDQUFDO0lBRFksZUFBZTtRQUQzQixRQUFRLENBQUMsRUFBRSxDQUFDO09BQ0EsZUFBZSxDQUMzQjtJQUFELHNCQUFDO0NBQUEsQUFERCxJQUNDO1NBRFksZUFBZTtBQUc1QixNQUFNLENBQUMsSUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQE5nTW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIFNlY29uZGFyeU1vZHVsZSB7XG59XG5cbmV4cG9ydCBjb25zdCBhID0gMTtcbiJdfQ==","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport * from './secondarymodule';\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iYXplbC90ZXN0L25nX3BhY2thZ2UvZXhhbXBsZS9zZWNvbmRhcnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9zZWNvbmRhcnltb2R1bGUnO1xuIl19"],"names":["this"],"mappings":";;AAAA;;;;;;;AAOA,IAAI,UAAU,GAAG,CAACA,SAAI,IAAIA,SAAI,CAAC,UAAU,KAAK,UAAU,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IACnF,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC;AACF,AACA,IAAI,eAAe,kBAAkB,YAAY;IAC7C,SAAS,eAAe,GAAG;KAC1B;IACD,eAAe,GAAG,UAAU,CAAC;QACzB,QAAQ,CAAC,EAAE,CAAC;KACf,EAAE,eAAe,CAAC,CAAC;IACpB,OAAO,eAAe,CAAC;CAC1B,EAAE,CAAC,CAAC;AACL,AACO,IAAI,CAAC,GAAG,CAAC;;ACvBhB;;;;;;GAMG;;;;"} + --- index.d.ts --- /** @@ -674,11 +856,13 @@ export declare class MyModule { { "name": "example", "main": "./bundles/example.umd.js", + "fesm5": "./fesm5/example.js", + "fesm2015": "./fesm2015/example.js", "esm5": "./esm5/example_public_index.js", - "module": "./esm5/example_public_index.js", "esm2015": "./esm2015/example_public_index.js", - "es2015": "./esm2015/example_public_index.js", - "typings": "./example_public_index.d.ts" + "typings": "./example_public_index.d.ts", + "module": "./fesm5/example.js", + "es2015": "./fesm2015/example.js" } --- secondary/index.d.ts --- @@ -698,11 +882,13 @@ export * from './secondarymodule'; { "name": "example/secondary", "main": "../bundles/example-secondary.umd.js", + "fesm5": "../fesm5/secondary.js", + "fesm2015": "../fesm2015/secondary.js", "esm5": "../esm5/secondary/secondary_public_index.js", - "module": "../esm5/secondary/secondary_public_index.js", "esm2015": "../esm2015/secondary/secondary_public_index.js", - "es2015": "../esm2015/secondary/secondary_public_index.js", - "typings": "./secondary_public_index.d.ts" + "typings": "./secondary_public_index.d.ts", + "module": "../fesm5/secondary.js", + "es2015": "../fesm2015/secondary.js" } --- secondary/secondary_public_index.d.ts ---