const entrypoints = [ 'dist/packages-dist/core/typings/core.d.ts', 'dist/packages-dist/core/typings/testing/index.d.ts', 'dist/packages-dist/common/typings/common.d.ts', 'dist/packages-dist/common/typings/testing/index.d.ts', // The API surface of the compiler is currently unstable - all of the important APIs are exposed // via @angular/core, @angular/platform-browser or @angular/platform-browser-dynamic instead. //'dist/packages-dist/compiler/index.d.ts', //'dist/packages-dist/compiler/testing.d.ts', 'dist/packages-dist/upgrade/typings/upgrade.d.ts', 'dist/packages-dist/upgrade/typings/static/index.d.ts', 'dist/packages-dist/platform-browser/typings/platform-browser.d.ts', 'dist/packages-dist/platform-browser/typings/testing/index.d.ts', 'dist/packages-dist/platform-browser-dynamic/typings/platform-browser-dynamic.d.ts', 'dist/packages-dist/platform-browser-dynamic/typings/testing/index.d.ts', 'dist/packages-dist/platform-webworker/typings/platform-webworker.d.ts', 'dist/packages-dist/platform-webworker-dynamic/typings/platform-webworker-dynamic.d.ts', 'dist/packages-dist/platform-server/typings/platform-server.d.ts', 'dist/packages-dist/platform-server/typings/testing/index.d.ts', 'dist/packages-dist/http/typings/http.d.ts', 'dist/packages-dist/http/typings/testing/index.d.ts', 'dist/packages-dist/forms/typings/forms.d.ts', 'dist/packages-dist/router/typings/router.d.ts', 'dist/packages-dist/animations/typings/animations.d.ts', 'dist/packages-dist/animations/typings/browser/index.d.ts', 'dist/packages-dist/animations/typings/browser/testing/index.d.ts', 'dist/packages-dist/platform-browser/typings/animations/index.d.ts' ]; const publicApiDir = 'tools/public_api_guard'; const publicApiArgs = [ '--rootDir', 'dist/packages-dist', '--stripExportPattern', '^(__|ɵ)', '--allowModuleIdentifiers', 'jasmine', '--allowModuleIdentifiers', 'protractor', '--allowModuleIdentifiers', 'angular', '--onStabilityMissing', 'error', ].concat(entrypoints); module.exports = { // Enforce that the public API matches the golden files // Note that these two commands work on built d.ts files instead of the source enforce: (gulp) => (done) => { const platformScriptPath = require('./platform-script-path'); const childProcess = require('child_process'); const path = require('path'); childProcess .spawn( path.join(__dirname, platformScriptPath(`../../node_modules/.bin/ts-api-guardian`)), ['--verifyDir', path.normalize(publicApiDir)].concat(publicApiArgs), {stdio: 'inherit'}) .on('close', (errorCode) => { if (errorCode !== 0) { done(new Error( 'Public API differs from golden file. Please run `gulp public-api:update`.')); } else { done(); } }); }, // Generate the public API golden files update: (gulp) => (done) => { const platformScriptPath = require('./platform-script-path'); const childProcess = require('child_process'); const path = require('path'); childProcess .spawn( path.join(__dirname, platformScriptPath(`../../node_modules/.bin/ts-api-guardian`)), ['--outDir', path.normalize(publicApiDir)].concat(publicApiArgs), {stdio: 'inherit'}) .on('close', done); } };