1 | "use strict";
|
2 |
|
3 | let pkg = require('./package.json');
|
4 | let fs = require('fs-extra');
|
5 | let mkdirp = require('mkdirp');
|
6 | let path = require('path');
|
7 | let klawSync = require('klaw-sync');
|
8 | let licenseTool = require('./tools/add-license-to-file');
|
9 | let addLicenseToFile = licenseTool.addLicenseToFile;
|
10 | let addLicenseTextToFile = licenseTool.addLicenseTextToFile;
|
11 | let makePackages = require('./.make-helpers');
|
12 | let copySources = makePackages.copySources;
|
13 | let createImportTargets = makePackages.createImportTargets;
|
14 | let cleanSourceMapRoot = makePackages.cleanSourceMapRoot;
|
15 | let bo = null;
|
16 |
|
17 |
|
18 |
|
19 | try {
|
20 | bo = require('@angular-devkit/build-optimizer');
|
21 | } catch (e) {}
|
22 |
|
23 |
|
24 | const ROOT = 'dist/';
|
25 | const CJS_ROOT = ROOT + 'cjs/';
|
26 | const ESM5_ROOT = ROOT + 'esm5/';
|
27 | const ESM2015_ROOT = ROOT + 'esm2015/';
|
28 | const UMD_ROOT = ROOT + 'global/';
|
29 | const ESM5_FOR_ROLLUP_ROOT = ROOT + 'esm5_for_rollup/';
|
30 | const LEGACY_REEXPORT_ROOT = ROOT + 'legacy-reexport/';
|
31 | const TYPE_ROOT = ROOT + 'typings/';
|
32 | const MIGRATION_PKG = ROOT + 'migrations/';
|
33 | const PKG_ROOT = ROOT + 'package/';
|
34 | const CJS_PKG = PKG_ROOT + '';
|
35 | const ESM5_PKG = PKG_ROOT + '_esm5/';
|
36 | const ESM2015_PKG = PKG_ROOT + '_esm2015/';
|
37 | const UMD_PKG = PKG_ROOT + 'bundles/';
|
38 | const SRC_ROOT_PKG = PKG_ROOT + 'src/';
|
39 | const TYPE_PKG = PKG_ROOT;
|
40 |
|
41 |
|
42 | let licenseUrl = 'https://github.com/ReactiveX/RxJS/blob/master/LICENSE.txt';
|
43 | let license = 'Apache License 2.0 ' + licenseUrl;
|
44 |
|
45 | delete pkg.scripts;
|
46 | fs.removeSync(PKG_ROOT);
|
47 |
|
48 | let rootPackageJson = Object.assign({}, pkg, {
|
49 | name: 'rxjs',
|
50 | main: './index.js',
|
51 | typings: './index.d.ts',
|
52 | module: './_esm5/index.js',
|
53 | es2015: './_esm2015/index.js'
|
54 | });
|
55 |
|
56 |
|
57 | klawSync(ESM5_ROOT, {
|
58 | nodir: true,
|
59 | filter: function(item) {
|
60 | return item.path.endsWith('.js');
|
61 | }
|
62 | })
|
63 | .map(item => item.path.slice((`${__dirname}/${ESM5_ROOT}`).length))
|
64 | .map(fileName => {
|
65 | if (!bo) return fileName;
|
66 | let fullPath = path.resolve(__dirname, ESM5_ROOT, fileName);
|
67 |
|
68 | if (!fs.existsSync(fullPath)) return fileName;
|
69 | let content = fs.readFileSync(fullPath).toString();
|
70 | let transformed = bo.transformJavascript({
|
71 | content: content,
|
72 | getTransforms: [bo.getPrefixClassesTransformer, bo.getPrefixFunctionsTransformer, bo.getFoldFileTransformer]
|
73 | });
|
74 | fs.writeFileSync(fullPath, transformed.content);
|
75 | return fileName;
|
76 | });
|
77 |
|
78 |
|
79 |
|
80 |
|
81 |
|
82 |
|
83 |
|
84 |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 |
|
90 | const fileNames = klawSync(LEGACY_REEXPORT_ROOT, {
|
91 | nodir: true,
|
92 | filter: function(item) {
|
93 | return item.path.endsWith('.js');
|
94 | }
|
95 | })
|
96 | .map(item => item.path)
|
97 | .map(path => path.slice((`${__dirname}/${LEGACY_REEXPORT_ROOT}`).length))
|
98 | .sort().reverse();
|
99 |
|
100 |
|
101 | const importTargets = fileNames.reduce((acc, fileName) => {
|
102 |
|
103 | const directory = fileName.slice(0, fileName.length - 3);
|
104 |
|
105 | acc[directory] = fileName;
|
106 | return acc;
|
107 | }, {});
|
108 |
|
109 | createImportTargets(importTargets, "_esm5/", ESM5_PKG);
|
110 | createImportTargets(importTargets, "_esm2015/", ESM2015_PKG);
|
111 |
|
112 |
|
113 | mkdirp.sync(PKG_ROOT);
|
114 |
|
115 |
|
116 | copySources('src/', SRC_ROOT_PKG);
|
117 |
|
118 | copySources('legacy-reexport/', SRC_ROOT_PKG);
|
119 |
|
120 | copySources(CJS_ROOT, CJS_PKG);
|
121 | fs.copySync(LEGACY_REEXPORT_ROOT, CJS_PKG, {overwrite: false, errorOnExist: true});
|
122 |
|
123 |
|
124 | cleanSourceMapRoot(PKG_ROOT, SRC_ROOT_PKG);
|
125 | fs.copySync(TYPE_ROOT, TYPE_PKG);
|
126 |
|
127 | copySources(ESM5_ROOT, ESM5_PKG, true);
|
128 | cleanSourceMapRoot(ESM5_PKG, SRC_ROOT_PKG);
|
129 | copySources(ESM2015_ROOT, ESM2015_PKG, true);
|
130 | cleanSourceMapRoot(ESM2015_PKG, SRC_ROOT_PKG);
|
131 |
|
132 |
|
133 | fs.copySync('./tsconfig.base.json', PKG_ROOT + 'src/tsconfig.json');
|
134 |
|
135 | fs.writeJsonSync(PKG_ROOT + 'package.json', rootPackageJson, {spaces: 2});
|
136 | fs.copySync('src/operators/package.json', PKG_ROOT + '/operators/package.json');
|
137 | fs.copySync('src/ajax/package.json', PKG_ROOT + '/ajax/package.json');
|
138 | fs.copySync('src/fetch/package.json', PKG_ROOT + '/fetch/package.json');
|
139 | fs.copySync('src/webSocket/package.json', PKG_ROOT + '/webSocket/package.json');
|
140 | fs.copySync('src/testing/package.json', PKG_ROOT + '/testing/package.json');
|
141 | fs.copySync('src/internal-compatibility/package.json', PKG_ROOT + '/internal-compatibility/package.json');
|
142 |
|
143 |
|
144 | fs.copySync(MIGRATION_PKG, PKG_ROOT + 'migrations/');
|
145 | fs.copySync('./migrations/collection.json', PKG_ROOT + 'migrations/collection.json');
|
146 |
|
147 | if (fs.existsSync(UMD_ROOT)) {
|
148 | fs.copySync(UMD_ROOT, UMD_PKG);
|
149 |
|
150 | klawSync(UMD_PKG, {filter: (item) => item.path.endsWith('.js.map')})
|
151 | .map(f => f.path)
|
152 | .forEach(fName => {
|
153 | const sourceMap = fs.readJsonSync(fName);
|
154 | sourceMap.sources = sourceMap.sources.map(s => {
|
155 | const nm = 'node_modules/';
|
156 | const rr = path.resolve(ESM5_FOR_ROLLUP_ROOT);
|
157 | if (s.includes(nm)) {
|
158 | return s.substring(s.indexOf(nm) + nm.length);
|
159 | } else if (s.includes(rr)) {
|
160 | return s.substring(s.indexOf(rr) + rr.length);
|
161 | }
|
162 | return s;
|
163 | });
|
164 | fs.writeJsonSync(fName, sourceMap);
|
165 | });
|
166 |
|
167 |
|
168 | addLicenseToFile('LICENSE.txt', UMD_PKG + 'rxjs.umd.js');
|
169 | addLicenseTextToFile(license, UMD_PKG + 'rxjs.umd.min.js');
|
170 | addLicenseToFile('LICENSE.txt', UMD_PKG + 'rxjs.umd.js');
|
171 | addLicenseTextToFile(license, UMD_PKG + 'rxjs.umd.min.js');
|
172 | cleanSourceMapRoot(UMD_PKG, PKG_ROOT);
|
173 | }
|
174 |
|
175 |
|
176 | fs.removeSync(CJS_PKG + '/internal/umd.js');
|
177 | fs.removeSync(CJS_PKG + '/internal/umd.js.map');
|
178 | fs.removeSync(ESM5_PKG + '/internal/umd.js');
|
179 | fs.removeSync(ESM5_PKG + '/internal/umd.js.map');
|
180 | fs.removeSync(ESM2015_PKG + '/internal/umd.js');
|
181 | fs.removeSync(ESM2015_PKG + '/internal/umd.js.map');
|
182 | fs.removeSync(TYPE_PKG + '/internal/umd.d.ts');
|