build-strap 3.0.0 → 4.0.0-dev.4

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 (108) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -34
  3. package/ant.d.ts +19 -0
  4. package/ant.js +12 -37
  5. package/cert.d.ts +12 -0
  6. package/cert.js +89 -151
  7. package/clean.d.ts +4 -0
  8. package/clean.js +7 -16
  9. package/copy.d.ts +7 -0
  10. package/copy.js +49 -76
  11. package/cp.d.ts +17 -0
  12. package/cp.js +85 -170
  13. package/docker.container.d.ts +73 -0
  14. package/docker.container.js +219 -362
  15. package/docker.d.ts +68 -0
  16. package/docker.js +167 -347
  17. package/docker.network.d.ts +42 -0
  18. package/docker.network.js +69 -144
  19. package/docker.volume.d.ts +26 -0
  20. package/docker.volume.js +52 -126
  21. package/dockerCleanup.d.ts +38 -0
  22. package/dockerCleanup.js +66 -141
  23. package/dockerCompose.d.ts +154 -0
  24. package/dockerCompose.js +400 -727
  25. package/fs.d.ts +5 -0
  26. package/fs.js +38 -95
  27. package/git.d.ts +9 -0
  28. package/git.js +19 -30
  29. package/index.d.ts +20 -0
  30. package/index.js +20 -27
  31. package/maps.d.ts +33 -0
  32. package/maps.js +16 -87
  33. package/npm.d.ts +48 -0
  34. package/npm.js +133 -135
  35. package/package.json +23 -19
  36. package/pkg.d.ts +39 -0
  37. package/pkg.js +26 -74
  38. package/publish.d.ts +27 -0
  39. package/publish.js +52 -140
  40. package/run.d.ts +13 -0
  41. package/run.js +39 -85
  42. package/tgz.d.ts +13 -0
  43. package/tgz.js +61 -96
  44. package/version.d.ts +34 -0
  45. package/version.js +86 -127
  46. package/yarn.d.ts +44 -0
  47. package/yarn.js +150 -119
  48. package/ant.js.flow +0 -42
  49. package/artifactory.js +0 -617
  50. package/artifactory.js.flow +0 -616
  51. package/cert.conf +0 -20
  52. package/cert.js.flow +0 -152
  53. package/clean.js.flow +0 -19
  54. package/copy.js.flow +0 -79
  55. package/cp.js.flow +0 -172
  56. package/docker.container.js.flow +0 -389
  57. package/docker.js.flow +0 -367
  58. package/docker.network.js.flow +0 -159
  59. package/docker.volume.js.flow +0 -136
  60. package/dockerCleanup.js.flow +0 -151
  61. package/dockerCompose.js.flow +0 -765
  62. package/flow.js +0 -21
  63. package/flow.js.flow +0 -20
  64. package/fs.js.flow +0 -96
  65. package/git.js.flow +0 -34
  66. package/hg.js +0 -35
  67. package/hg.js.flow +0 -34
  68. package/index.js.flow +0 -26
  69. package/inline-resources.js +0 -158
  70. package/inline-resources.js.flow +0 -157
  71. package/maps.js.flow +0 -111
  72. package/npm.js.flow +0 -144
  73. package/pkg.js.flow +0 -80
  74. package/publish.js.flow +0 -144
  75. package/run.js.flow +0 -89
  76. package/src/ant.js +0 -42
  77. package/src/artifactory.js +0 -616
  78. package/src/cert.conf +0 -20
  79. package/src/cert.js +0 -152
  80. package/src/clean.js +0 -19
  81. package/src/copy.js +0 -79
  82. package/src/cp.js +0 -172
  83. package/src/docker.container.js +0 -389
  84. package/src/docker.js +0 -367
  85. package/src/docker.network.js +0 -159
  86. package/src/docker.volume.js +0 -136
  87. package/src/dockerCleanup.js +0 -151
  88. package/src/dockerCompose.js +0 -765
  89. package/src/flow.js +0 -20
  90. package/src/fs.js +0 -96
  91. package/src/git.js +0 -34
  92. package/src/hg.js +0 -34
  93. package/src/index.js +0 -26
  94. package/src/inline-resources.js +0 -157
  95. package/src/maps.js +0 -111
  96. package/src/npm.js +0 -144
  97. package/src/pkg.js +0 -80
  98. package/src/publish.js +0 -144
  99. package/src/run.js +0 -89
  100. package/src/test.js +0 -55
  101. package/src/tgz.js +0 -101
  102. package/src/version.js +0 -141
  103. package/src/yarn.js +0 -123
  104. package/test.js +0 -56
  105. package/test.js.flow +0 -55
  106. package/tgz.js.flow +0 -101
  107. package/version.js.flow +0 -141
  108. package/yarn.js.flow +0 -123
package/flow.js DELETED
@@ -1,21 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.flow = flow;
2
- var _cp = require("./cp");
3
-
4
-
5
-
6
-
7
-
8
-
9
- // Run the flow linter
10
- async function flow(opts) {
11
- const { allBranches = false, incremental = true } = opts || {};
12
- return (0, _cp.spawn)(
13
- 'flow',
14
- [
15
- incremental ? 'status' : 'check',
16
- ...(allBranches ? ['--show-all-branches'] : [])],
17
-
18
- { stdio: 'inherit', shell: true });
19
-
20
- }
21
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mbG93LmpzIl0sIm5hbWVzIjpbImZsb3ciLCJvcHRzIiwiYWxsQnJhbmNoZXMiLCJpbmNyZW1lbnRhbCIsInN0ZGlvIiwic2hlbGwiXSwibWFwcGluZ3MiOiI7QUFDQTs7Ozs7OztBQU9BO0FBQ08sZUFBZUEsSUFBZixDQUFvQkMsSUFBcEIsRUFBeUQ7QUFDOUQsUUFBTSxFQUFFQyxXQUFXLEdBQUcsS0FBaEIsRUFBdUJDLFdBQVcsR0FBRyxJQUFyQyxLQUE4Q0YsSUFBSSxJQUFJLEVBQTVEO0FBQ0EsU0FBTztBQUNMLFFBREs7QUFFTDtBQUNFRSxFQUFBQSxXQUFXLEdBQUcsUUFBSCxHQUFjLE9BRDNCO0FBRUUsTUFBSUQsV0FBVyxHQUFHLENBQUMscUJBQUQsQ0FBSCxHQUE2QixFQUE1QyxDQUZGLENBRks7O0FBTUwsSUFBRUUsS0FBSyxFQUFFLFNBQVQsRUFBb0JDLEtBQUssRUFBRSxJQUEzQixFQU5LLENBQVA7O0FBUUQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICcuL2NwJztcblxuZXhwb3J0IHR5cGUgRmxvd09wdGlvbnMgPSB7fFxuICBhbGxCcmFuY2hlcz86IGJvb2xlYW4sXG4gIGluY3JlbWVudGFsPzogYm9vbGVhbixcbnx9O1xuXG4vLyBSdW4gdGhlIGZsb3cgbGludGVyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmxvdyhvcHRzPzogRmxvd09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7IGFsbEJyYW5jaGVzID0gZmFsc2UsIGluY3JlbWVudGFsID0gdHJ1ZSB9ID0gb3B0cyB8fCB7fTtcbiAgcmV0dXJuIHNwYXduKFxuICAgICdmbG93JyxcbiAgICBbXG4gICAgICBpbmNyZW1lbnRhbCA/ICdzdGF0dXMnIDogJ2NoZWNrJyxcbiAgICAgIC4uLihhbGxCcmFuY2hlcyA/IFsnLS1zaG93LWFsbC1icmFuY2hlcyddIDogW10pLFxuICAgIF0sXG4gICAgeyBzdGRpbzogJ2luaGVyaXQnLCBzaGVsbDogdHJ1ZSB9LFxuICApO1xufVxuIl19
package/flow.js.flow DELETED
@@ -1,20 +0,0 @@
1
- // @flow
2
- import { spawn } from './cp';
3
-
4
- export type FlowOptions = {|
5
- allBranches?: boolean,
6
- incremental?: boolean,
7
- |};
8
-
9
- // Run the flow linter
10
- export async function flow(opts?: FlowOptions): Promise<string> {
11
- const { allBranches = false, incremental = true } = opts || {};
12
- return spawn(
13
- 'flow',
14
- [
15
- incremental ? 'status' : 'check',
16
- ...(allBranches ? ['--show-all-branches'] : []),
17
- ],
18
- { stdio: 'inherit', shell: true },
19
- );
20
- }
package/fs.js.flow DELETED
@@ -1,96 +0,0 @@
1
- // @flow
2
- import fs from 'fs-extra';
3
- import path from 'path';
4
- import glob, { type Options as GlobOptions } from 'glob';
5
- import rimraf from 'rimraf';
6
-
7
- export const readFile = async (
8
- file: string,
9
- options:
10
- | string
11
- | {
12
- encoding: string,
13
- flag?: string,
14
- ...
15
- } = 'utf8',
16
- ): Promise<string> => fs.readFile(file, options);
17
-
18
- export const writeFile = async (
19
- file: string,
20
- data: string | Buffer,
21
- options?: string | Object,
22
- ): Promise<void> => fs.writeFile(file, data, options);
23
-
24
- export const renameFile = async (
25
- source: string,
26
- target: string,
27
- ): Promise<void> => fs.rename(source, target);
28
-
29
- export const copyFile = async (source: string, target: string): Promise<void> =>
30
- fs.copyFile(source, target);
31
-
32
- export const readDir = async (
33
- pattern: string,
34
- options?: Object,
35
- ): Promise<string[]> =>
36
- new Promise((resolve, reject) =>
37
- glob(pattern, options || {}, (err, result) =>
38
- err ? reject(err) : resolve(result),
39
- ),
40
- );
41
-
42
- export const makeDir = async (name: string): Promise<void> =>
43
- fs.ensureDir(name);
44
-
45
- export const moveDir = async (
46
- source: string,
47
- target: string,
48
- ): Promise<void> => {
49
- const dirs = await readDir('**/*.*', {
50
- cwd: source,
51
- nosort: true,
52
- dot: true,
53
- });
54
- await Promise.all(
55
- dirs.map(async (dir) => {
56
- const from = path.resolve(source, dir);
57
- const to = path.resolve(target, dir);
58
- await makeDir(path.dirname(to));
59
- await renameFile(from, to);
60
- }),
61
- );
62
- };
63
-
64
- export const copyDir = async (
65
- source: string,
66
- target: string,
67
- fileGlob: string = '**/*.*',
68
- globOptions?: ?Object = null,
69
- renameFn: (name: string) => string = (n) => n,
70
- ): Promise<void> => {
71
- const paths = await readDir(fileGlob, {
72
- cwd: source,
73
- nosort: true,
74
- nodir: true,
75
- dot: true,
76
- ...globOptions,
77
- });
78
- await Promise.all(
79
- paths.map(async (p) => {
80
- const from = path.resolve(source, p);
81
- const to = path.resolve(target, renameFn(p));
82
- await makeDir(path.dirname(to));
83
- await copyFile(from, to);
84
- }),
85
- );
86
- };
87
-
88
- export const cleanDir = async (
89
- pattern: string,
90
- globOptions?: GlobOptions | boolean,
91
- ): Promise<void> =>
92
- new Promise((resolve, reject) =>
93
- rimraf(pattern, { glob: globOptions }, (err) =>
94
- err ? reject(err) : resolve(),
95
- ),
96
- );
package/git.js.flow DELETED
@@ -1,34 +0,0 @@
1
- // @flow
2
- import { exec } from './cp';
3
-
4
- export async function git(args: string[]): Promise<string> {
5
- return (await exec(`git ${args.join(' ')}`)).stdout.toString();
6
- }
7
-
8
- export async function gitBranch(): Promise<string> {
9
- return (await git(['symbolic-ref', '--short', 'HEAD']))
10
- .replace(/[_+/]/g, '-')
11
- .trim();
12
- }
13
-
14
- export async function gitRevId(): Promise<string> {
15
- return (await git(['rev-parse', '--short=12', 'HEAD']))
16
- .replace(/[+]/g, '')
17
- .trim();
18
- }
19
-
20
- type GitInfo = {
21
- branch: string,
22
- revision: string,
23
- };
24
-
25
- let info = null;
26
- export async function gitInfo(noCache: boolean = false): Promise<GitInfo> {
27
- if (!info || noCache) {
28
- info = {
29
- branch: await gitBranch(),
30
- revision: await gitRevId(),
31
- };
32
- }
33
- return info;
34
- }
package/hg.js DELETED
@@ -1,35 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.hg = hg;exports.hgBranch = hgBranch;exports.hgRevId = hgRevId;exports.hgInfo = hgInfo;
2
- var _cp = require("./cp");
3
-
4
- async function hg(args, cwd) {
5
- // $FlowFixMe
6
- return (await (0, _cp.exec)(`hg ${args.join(' ')}`, cwd ? { cwd } : {})).stdout;
7
- }
8
-
9
- async function hgBranch(cwd) {
10
- return (await hg(['branch'], cwd)).replace(/[_+/]/g, '-').trim();
11
- }
12
-
13
- async function hgRevId(cwd) {
14
- return (await hg(['id', '-i'], cwd)).replace(/[+]/g, '').trim();
15
- }
16
-
17
-
18
-
19
-
20
-
21
-
22
- let info = null;
23
- async function hgInfo(
24
- noCache = false,
25
- cwd)
26
- {
27
- if (!info || noCache) {
28
- info = {
29
- branch: await hgBranch(cwd),
30
- revision: await hgRevId(cwd) };
31
-
32
- }
33
- return info;
34
- }
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9oZy5qcyJdLCJuYW1lcyI6WyJoZyIsImFyZ3MiLCJjd2QiLCJqb2luIiwic3Rkb3V0IiwiaGdCcmFuY2giLCJyZXBsYWNlIiwidHJpbSIsImhnUmV2SWQiLCJpbmZvIiwiaGdJbmZvIiwibm9DYWNoZSIsImJyYW5jaCIsInJldmlzaW9uIl0sIm1hcHBpbmdzIjoiO0FBQ0E7O0FBRU8sZUFBZUEsRUFBZixDQUFrQkMsSUFBbEIsRUFBa0NDLEdBQWxDLEVBQWlFO0FBQ3RFO0FBQ0EsU0FBTyxDQUFDLE1BQU0sY0FBTSxNQUFLRCxJQUFJLENBQUNFLElBQUwsQ0FBVSxHQUFWLENBQWUsRUFBMUIsRUFBNkJELEdBQUcsR0FBRyxFQUFFQSxHQUFGLEVBQUgsR0FBYSxFQUE3QyxDQUFQLEVBQXlERSxNQUFoRTtBQUNEOztBQUVNLGVBQWVDLFFBQWYsQ0FBd0JILEdBQXhCLEVBQXVEO0FBQzVELFNBQU8sQ0FBQyxNQUFNRixFQUFFLENBQUMsQ0FBQyxRQUFELENBQUQsRUFBYUUsR0FBYixDQUFULEVBQTRCSSxPQUE1QixDQUFvQyxRQUFwQyxFQUE4QyxHQUE5QyxFQUFtREMsSUFBbkQsRUFBUDtBQUNEOztBQUVNLGVBQWVDLE9BQWYsQ0FBdUJOLEdBQXZCLEVBQXNEO0FBQzNELFNBQU8sQ0FBQyxNQUFNRixFQUFFLENBQUMsQ0FBQyxJQUFELEVBQU8sSUFBUCxDQUFELEVBQWVFLEdBQWYsQ0FBVCxFQUE4QkksT0FBOUIsQ0FBc0MsTUFBdEMsRUFBOEMsRUFBOUMsRUFBa0RDLElBQWxELEVBQVA7QUFDRDs7Ozs7OztBQU9ELElBQUlFLElBQUksR0FBRyxJQUFYO0FBQ08sZUFBZUMsTUFBZjtBQUNMQyxPQUFnQixHQUFHLEtBRGQ7QUFFTFQsR0FGSztBQUdZO0FBQ2pCLE1BQUksQ0FBQ08sSUFBRCxJQUFTRSxPQUFiLEVBQXNCO0FBQ3BCRixJQUFBQSxJQUFJLEdBQUc7QUFDTEcsTUFBQUEsTUFBTSxFQUFFLE1BQU1QLFFBQVEsQ0FBQ0gsR0FBRCxDQURqQjtBQUVMVyxNQUFBQSxRQUFRLEVBQUUsTUFBTUwsT0FBTyxDQUFDTixHQUFELENBRmxCLEVBQVA7O0FBSUQ7QUFDRCxTQUFPTyxJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJy4vY3AnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGcoYXJnczogc3RyaW5nW10sIGN3ZD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vICRGbG93Rml4TWVcbiAgcmV0dXJuIChhd2FpdCBleGVjKGBoZyAke2FyZ3Muam9pbignICcpfWAsIGN3ZCA/IHsgY3dkIH0gOiB7fSkpLnN0ZG91dDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhnQnJhbmNoKGN3ZD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiAoYXdhaXQgaGcoWydicmFuY2gnXSwgY3dkKSkucmVwbGFjZSgvW18rL10vZywgJy0nKS50cmltKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoZ1JldklkKGN3ZD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiAoYXdhaXQgaGcoWydpZCcsICctaSddLCBjd2QpKS5yZXBsYWNlKC9bK10vZywgJycpLnRyaW0oKTtcbn1cblxudHlwZSBIZ0luZm8gPSB7XG4gIGJyYW5jaDogc3RyaW5nLFxuICByZXZpc2lvbjogc3RyaW5nLFxufTtcblxubGV0IGluZm8gPSBudWxsO1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhnSW5mbyhcbiAgbm9DYWNoZTogYm9vbGVhbiA9IGZhbHNlLFxuICBjd2Q/OiBzdHJpbmcsXG4pOiBQcm9taXNlPEhnSW5mbz4ge1xuICBpZiAoIWluZm8gfHwgbm9DYWNoZSkge1xuICAgIGluZm8gPSB7XG4gICAgICBicmFuY2g6IGF3YWl0IGhnQnJhbmNoKGN3ZCksXG4gICAgICByZXZpc2lvbjogYXdhaXQgaGdSZXZJZChjd2QpLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIGluZm87XG59XG4iXX0=
package/hg.js.flow DELETED
@@ -1,34 +0,0 @@
1
- // @flow
2
- import { exec } from './cp';
3
-
4
- export async function hg(args: string[], cwd?: string): Promise<string> {
5
- // $FlowFixMe
6
- return (await exec(`hg ${args.join(' ')}`, cwd ? { cwd } : {})).stdout;
7
- }
8
-
9
- export async function hgBranch(cwd?: string): Promise<string> {
10
- return (await hg(['branch'], cwd)).replace(/[_+/]/g, '-').trim();
11
- }
12
-
13
- export async function hgRevId(cwd?: string): Promise<string> {
14
- return (await hg(['id', '-i'], cwd)).replace(/[+]/g, '').trim();
15
- }
16
-
17
- type HgInfo = {
18
- branch: string,
19
- revision: string,
20
- };
21
-
22
- let info = null;
23
- export async function hgInfo(
24
- noCache: boolean = false,
25
- cwd?: string,
26
- ): Promise<HgInfo> {
27
- if (!info || noCache) {
28
- info = {
29
- branch: await hgBranch(cwd),
30
- revision: await hgRevId(cwd),
31
- };
32
- }
33
- return info;
34
- }
package/index.js.flow DELETED
@@ -1,26 +0,0 @@
1
- // @flow
2
- export * from './ant';
3
- export * from './artifactory';
4
- export * from './cert';
5
- export * from './clean';
6
- export * from './copy';
7
- export * from './cp';
8
- export * from './docker';
9
- export * from './docker.container';
10
- export * from './docker.network';
11
- export * from './docker.volume';
12
- export * from './dockerCleanup';
13
- export * from './dockerCompose';
14
- export * from './flow';
15
- export * from './fs';
16
- export * from './git';
17
- export * from './hg';
18
- export * from './inline-resources';
19
- export * from './npm';
20
- export * from './pkg';
21
- export * from './publish';
22
- export * from './run';
23
- export * from './test';
24
- export * from './tgz';
25
- export * from './version';
26
- export * from './yarn';
@@ -1,158 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.inlineResources = inlineResources;exports.requireResourcesLoader = requireResourcesLoader;exports.webpackInlineResourceLoader = webpackInlineResourceLoader;exports.inlineResourcesFromString = inlineResourcesFromString;exports.dependencies = void 0;
2
- var _glob = _interopRequireDefault(require("glob"));
3
- var _path = _interopRequireDefault(require("path"));
4
- var _fs = _interopRequireDefault(require("fs"));
5
- var _fs2 = require("./fs");function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
6
-
7
-
8
-
9
-
10
- // So we know to copy extra files when a dependency is modified
11
- const dependencies = {};exports.dependencies = dependencies;
12
-
13
- function recordDependency(parent, child) {
14
- dependencies[child] = dependencies[child] || [];
15
- if (!dependencies[child].includes(parent)) {
16
- dependencies[child].push(parent);
17
- }
18
- }
19
-
20
- /**
21
- * Inline resources in a tsc/ngc compilation.
22
- * @param projectPath {string} Path to the project.
23
- */
24
- async function inlineResources(projectPath) {
25
- // Match only TypeScript files in projectPath.
26
- const files = _glob.default.sync('**/*.ts', { cwd: projectPath });
27
-
28
- // For each file, inline the templates and styles under it and write the new file.
29
- await Promise.all(
30
- files.map(async (filePath) => {
31
- const fullFilePath = _path.default.join(projectPath, filePath);
32
- const content = await (0, _fs2.readFile)(fullFilePath, 'utf-8');
33
- const inlined = inlineResourcesFromString(content, (url) => {
34
- // Resolve the template url.
35
- const templatePath = _path.default.join(_path.default.dirname(fullFilePath), url);
36
- recordDependency(fullFilePath, templatePath);
37
- return templatePath;
38
- });
39
- await (0, _fs2.writeFile)(fullFilePath, inlined);
40
- }));
41
-
42
- }
43
-
44
- function requireResourcesLoader(content) {
45
- return [requireTemplate, requireStyle, removeModuleId].reduce(
46
- (c, fn) => fn(c, '!raw-loader!'),
47
- content);
48
-
49
- }
50
-
51
- // This is a webpack loader
52
- function webpackInlineResourceLoader(content) {
53
- this.cacheable(true);
54
- const dir = this.context;
55
- const that = this;
56
- return inlineResourcesFromString(content, (url) => {
57
- // Resolve the template url.
58
- const fullPath = _path.default.join(dir, url);
59
- // Make sure this file gets watched
60
- that.addDependency(fullPath);
61
- return fullPath;
62
- });
63
- }
64
-
65
-
66
-
67
- /**
68
- * Inline resources from a string content.
69
- * @param content {string} The source file's content.
70
- * @param urlResolver {Function} A resolver that takes a URL and return a path.
71
- * @returns {string} The content with resources inlined.
72
- */
73
- function inlineResourcesFromString(
74
- content,
75
- urlResolver)
76
- {
77
- // Curry through the inlining functions.
78
- return [inlineTemplate, inlineStyle, removeModuleId].reduce(
79
- (c, fn) => fn(c, urlResolver),
80
- content);
81
-
82
- }
83
-
84
- // The cbFn is given the template url, and should return the string to replace it
85
- function processTemplate(content, cbFn) {
86
- return content.replace(
87
- /templateUrl:\s*'([^']+?\.html)'/g,
88
- (m, templateUrl) => `template: ${cbFn(templateUrl)}`);
89
-
90
- }
91
-
92
- /**
93
- * Inline the templates for a source file. Simply search for instances of `templateUrl: ...` and
94
- * replace with `template: ...` (with the content of the file included).
95
- * @param content {string} The source file's content.
96
- * @param urlResolver {Function} A resolver that takes a URL and return a path.
97
- * @return {string} The content with all templates inlined.
98
- */
99
- function inlineTemplate(content, urlResolver) {
100
- return processTemplate(
101
- content,
102
- (templateUrl) =>
103
- `\`${_fs.default.
104
- readFileSync(urlResolver(templateUrl), 'utf-8').
105
- replace(/([\n\r]\s*)+/gm, ' ')}\``);
106
-
107
- }
108
-
109
- function requireTemplate(content, loader = '') {
110
- return processTemplate(content, (url) => `require('${loader}${url}')`);
111
- }
112
-
113
- // The cbFn is given the url of a single css file, and should return the string to replace it
114
- function processStyle(content, cbFn) {
115
- return content.replace(
116
- /styleUrls:\s*(\[[\s\S]*?\])/gm,
117
- (m, styleUrls) =>
118
- // eslint-disable-next-line no-eval
119
- `styles: [${eval(styleUrls).
120
- map((styleUrl) => cbFn(styleUrl)).
121
- join(',\n')}]`);
122
-
123
- }
124
-
125
- /**
126
- * Inline the styles for a source file. Simply search for instances of `styleUrls: [...]` and
127
- * replace with `styles: [...]` (with the content of the file included).
128
- * @param urlResolver {Function} A resolver that takes a URL and return a path.
129
- * @param content {string} The source file's content.
130
- * @return {string} The content with all styles inlined.
131
- */
132
- function inlineStyle(content, urlResolver) {
133
- return processStyle(
134
- content,
135
- (styleUrl) =>
136
- `\`${_fs.default.
137
- readFileSync(urlResolver(styleUrl), 'utf-8').
138
- replace(/([\n\r]\s*)+/gm, ' ')}\``);
139
-
140
- }
141
-
142
- function requireStyle(content, loader = '') {
143
- return processStyle(content, (url) => `require('${loader}${url}')`);
144
- }
145
-
146
- /**
147
- * Remove every mention of `moduleId: module.id`.
148
- * @param content {string} The source file's content.
149
- * @returns {string} The content with all moduleId: mentions removed.
150
- */
151
- function removeModuleId(
152
- content,
153
- // eslint-disable-next-line no-unused-vars
154
- urlResolver)
155
- {
156
- return content.replace(/\s*moduleId:\s*module\.id\s*,?\s*/gm, '');
157
- }
158
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmxpbmUtcmVzb3VyY2VzLmpzIl0sIm5hbWVzIjpbImRlcGVuZGVuY2llcyIsInJlY29yZERlcGVuZGVuY3kiLCJwYXJlbnQiLCJjaGlsZCIsImluY2x1ZGVzIiwicHVzaCIsImlubGluZVJlc291cmNlcyIsInByb2plY3RQYXRoIiwiZmlsZXMiLCJnbG9iIiwic3luYyIsImN3ZCIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJmaWxlUGF0aCIsImZ1bGxGaWxlUGF0aCIsInBhdGgiLCJqb2luIiwiY29udGVudCIsImlubGluZWQiLCJpbmxpbmVSZXNvdXJjZXNGcm9tU3RyaW5nIiwidXJsIiwidGVtcGxhdGVQYXRoIiwiZGlybmFtZSIsInJlcXVpcmVSZXNvdXJjZXNMb2FkZXIiLCJyZXF1aXJlVGVtcGxhdGUiLCJyZXF1aXJlU3R5bGUiLCJyZW1vdmVNb2R1bGVJZCIsInJlZHVjZSIsImMiLCJmbiIsIndlYnBhY2tJbmxpbmVSZXNvdXJjZUxvYWRlciIsImNhY2hlYWJsZSIsImRpciIsImNvbnRleHQiLCJ0aGF0IiwiZnVsbFBhdGgiLCJhZGREZXBlbmRlbmN5IiwidXJsUmVzb2x2ZXIiLCJpbmxpbmVUZW1wbGF0ZSIsImlubGluZVN0eWxlIiwicHJvY2Vzc1RlbXBsYXRlIiwiY2JGbiIsInJlcGxhY2UiLCJtIiwidGVtcGxhdGVVcmwiLCJmcyIsInJlYWRGaWxlU3luYyIsImxvYWRlciIsInByb2Nlc3NTdHlsZSIsInN0eWxlVXJscyIsImV2YWwiLCJzdHlsZVVybCJdLCJtYXBwaW5ncyI6IjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCOzs7OztBQUtBO0FBQ08sTUFBTUEsWUFBMkIsR0FBRyxFQUFwQyxDOztBQUVQLFNBQVNDLGdCQUFULENBQTBCQyxNQUExQixFQUFrQ0MsS0FBbEMsRUFBK0M7QUFDN0NILEVBQUFBLFlBQVksQ0FBQ0csS0FBRCxDQUFaLEdBQXNCSCxZQUFZLENBQUNHLEtBQUQsQ0FBWixJQUF1QixFQUE3QztBQUNBLE1BQUks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QUFULENBQXNCUixPQUF0QixFQUF1QzhCLE1BQWMsR0FBRyxFQUF4RCxFQUFvRTtBQUNsRSxTQUFPQyxZQUFZLENBQUMvQixPQUFELEVBQVUsQ0FBQ0csR0FBRCxLQUFVLFlBQVcyQixNQUFPLEdBQUUzQixHQUFJLElBQTVDLENBQW5CO0FBQ0Q7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNNLGNBQVQ7QUFDRVQsT0FERjtBQUVFO0FBQ0FvQixXQUhGO0FBSVU7QUFDUixTQUFPcEIsT0FBTyxDQUFDeUIsT0FBUixDQUFnQixxQ0FBaEIsRUFBdUQsRUFBdkQsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmltcG9ydCBnbG9iIGZyb20gJ2dsb2InO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJy4vZnMnO1xuXG50eXBlIERlcGVuZGVuY3lNYXAgPSB7XG4gIFtzdHJpbmddOiBzdHJpbmdbXSxcbn07XG4vLyBTbyB3ZSBrbm93IHRvIGNvcHkgZXh0cmEgZmlsZXMgd2hlbiBhIGRlcGVuZGVuY3kgaXMgbW9kaWZpZWRcbmV4cG9ydCBjb25zdCBkZXBlbmRlbmNpZXM6IERlcGVuZGVuY3lNYXAgPSB7fTtcblxuZnVuY3Rpb24gcmVjb3JkRGVwZW5kZW5jeShwYXJlbnQsIGNoaWxkKTogdm9pZCB7XG4gIGRlcGVuZGVuY2llc1tjaGlsZF0gPSBkZXBlbmRlbmNpZXNbY2hpbGRdIHx8IFtdO1xuICBpZiAoIWRlcGVuZGVuY2llc1tjaGlsZF0uaW5jbHVkZXMocGFyZW50KSkge1xuICAgIGRlcGVuZGVuY2llc1tjaGlsZF0ucHVzaChwYXJlbnQpO1xuICB9XG59XG5cbi8qKlxuICogSW5saW5lIHJlc291cmNlcyBpbiBhIHRzYy9uZ2MgY29tcGlsYXRpb24uXG4gKiBAcGFyYW0gcHJvamVjdFBhdGgge3N0cmluZ30gUGF0aCB0byB0aGUgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlubGluZVJlc291cmNlcyhwcm9qZWN0UGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIE1hdGNoIG9ubHkgVHlwZVNjcmlwdCBmaWxlcyBpbiBwcm9qZWN0UGF0aC5cbiAgY29uc3QgZmlsZXMgPSBnbG9iLnN5bmMoJyoqLyoudHMnLCB7IGN3ZDogcHJvamVjdFBhdGggfSk7XG5cbiAgLy8gRm9yIGVhY2ggZmlsZSwgaW5saW5lIHRoZSB0ZW1wbGF0ZXMgYW5kIHN0eWxlcyB1bmRlciBpdCBhbmQgd3JpdGUgdGhlIG5ldyBmaWxlLlxuICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBmaWxlcy5tYXAoYXN5bmMgKGZpbGVQYXRoKSA9PiB7XG4gICAgICBjb25zdCBmdWxsRmlsZVBhdGggPSBwYXRoLmpvaW4ocHJvamVjdFBhdGgsIGZpbGVQYXRoKTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShmdWxsRmlsZVBhdGgsICd1dGYtOCcpO1xuICAgICAgY29uc3QgaW5saW5lZCA9IGlubGluZVJlc291cmNlc0Zyb21TdHJpbmcoY29udGVudCwgKHVybCkgPT4ge1xuICAgICAgICAvLyBSZXNvbHZlIHRoZSB0ZW1wbGF0ZSB1cmwuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUoZnVsbEZpbGVQYXRoKSwgdXJsKTtcbiAgICAgICAgcmVjb3JkRGVwZW5kZW5jeShmdWxsRmlsZVBhdGgsIHRlbXBsYXRlUGF0aCk7XG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZVBhdGg7XG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShmdWxsRmlsZVBhdGgsIGlubGluZWQpO1xuICAgIH0pLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZVJlc291cmNlc0xvYWRlcihjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gW3JlcXVpcmVUZW1wbGF0ZSwgcmVxdWlyZVN0eWxlLCByZW1vdmVNb2R1bGVJZF0ucmVkdWNlKFxuICAgIChjLCBmbikgPT4gZm4oYywgJyFyYXctbG9hZGVyIScpLFxuICAgIGNvbnRlbnQsXG4gICk7XG59XG5cbi8vIFRoaXMgaXMgYSB3ZWJwYWNrIGxvYWRlclxuZXhwb3J0IGZ1bmN0aW9uIHdlYnBhY2tJbmxpbmVSZXNvdXJjZUxvYWRlcihjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICB0aGlzLmNhY2hlYWJsZSh0cnVlKTtcbiAgY29uc3QgZGlyID0gdGhpcy5jb250ZXh0O1xuICBjb25zdCB0aGF0ID0gdGhpcztcbiAgcmV0dXJuIGlubGluZVJlc291cmNlc0Zyb21TdHJpbmcoY29udGVudCwgKHVybCkgPT4ge1xuICAgIC8vIFJlc29sdmUgdGhlIHRlbXBsYXRlIHVybC5cbiAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihkaXIsIHVybCk7XG4gICAgLy8gTWFrZSBzdXJlIHRoaXMgZmlsZSBnZXRzIHdhdGNoZWRcbiAgICB0aGF0LmFkZERlcGVuZGVuY3koZnVsbFBhdGgpO1xuICAgIHJldHVybiBmdWxsUGF0aDtcbiAgfSk7XG59XG5cbmV4cG9ydCB0eXBlIFVybFJlc29sdmVyID0gKHVybDogc3RyaW5nKSA9PiBzdHJpbmc7XG5cbi8qKlxuICogSW5saW5lIHJlc291cmNlcyBmcm9tIGEgc3RyaW5nIGNvbnRlbnQuXG4gKiBAcGFyYW0gY29udGVudCB7c3RyaW5nfSBUaGUgc291cmNlIGZpbGUncyBjb250ZW50LlxuICogQHBhcmFtIHVybFJlc29sdmVyIHtGdW5jdGlvbn0gQSByZXNvbHZlciB0aGF0IHRha2VzIGEgVVJMIGFuZCByZXR1cm4gYSBwYXRoLlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbnRlbnQgd2l0aCByZXNvdXJjZXMgaW5saW5lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlubGluZVJlc291cmNlc0Zyb21TdHJpbmcoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgdXJsUmVzb2x2ZXI6IFVybFJlc29sdmVyLFxuKTogc3RyaW5nIHtcbiAgLy8gQ3VycnkgdGhyb3VnaCB0aGUgaW5saW5pbmcgZnVuY3Rpb25zLlxuICByZXR1cm4gW2lubGluZVRlbXBsYXRlLCBpbmxpbmVTdHlsZSwgcmVtb3ZlTW9kdWxlSWRdLnJlZHVjZShcbiAgICAoYywgZm4pID0+IGZuKGMsIHVybFJlc29sdmVyKSxcbiAgICBjb250ZW50LFxuICApO1xufVxuXG4vLyBUaGUgY2JGbiBpcyBnaXZlbiB0aGUgdGVtcGxhdGUgdXJsLCBhbmQgc2hvdWxkIHJldHVybiB0aGUgc3RyaW5nIHRvIHJlcGxhY2UgaXRcbmZ1bmN0aW9uIHByb2Nlc3NUZW1wbGF0ZShjb250ZW50OiBzdHJpbmcsIGNiRm46IFVybFJlc29sdmVyKSB7XG4gIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgL3RlbXBsYXRlVXJsOlxccyonKFteJ10rP1xcLmh0bWwpJy9nLFxuICAgIChtLCB0ZW1wbGF0ZVVybCkgPT4gYHRlbXBsYXRlOiAke2NiRm4odGVtcGxhdGVVcmwpfWAsXG4gICk7XG59XG5cbi8qKlxuICogSW5saW5lIHRoZSB0ZW1wbGF0ZXMgZm9yIGEgc291cmNlIGZpbGUuIFNpbXBseSBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiBgdGVtcGxhdGVVcmw6IC4uLmAgYW5kXG4gKiByZXBsYWNlIHdpdGggYHRlbXBsYXRlOiAuLi5gICh3aXRoIHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIGluY2x1ZGVkKS5cbiAqIEBwYXJhbSBjb250ZW50IHtzdHJpbmd9IFRoZSBzb3VyY2UgZmlsZSdzIGNvbnRlbnQuXG4gKiBAcGFyYW0gdXJsUmVzb2x2ZXIge0Z1bmN0aW9ufSBBIHJlc29sdmVyIHRoYXQgdGFrZXMgYSBVUkwgYW5kIHJldHVybiBhIHBhdGguXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjb250ZW50IHdpdGggYWxsIHRlbXBsYXRlcyBpbmxpbmVkLlxuICovXG5mdW5jdGlvbiBpbmxpbmVUZW1wbGF0ZShjb250ZW50OiBzdHJpbmcsIHVybFJlc29sdmVyOiBVcmxSZXNvbHZlcik6IHN0cmluZyB7XG4gIHJldHVybiBwcm9jZXNzVGVtcGxhdGUoXG4gICAgY29udGVudCxcbiAgICAodGVtcGxhdGVVcmwpID0+XG4gICAgICBgXFxgJHtmc1xuICAgICAgICAucmVhZEZpbGVTeW5jKHVybFJlc29sdmVyKHRlbXBsYXRlVXJsKSwgJ3V0Zi04JylcbiAgICAgICAgLnJlcGxhY2UoLyhbXFxuXFxyXVxccyopKy9nbSwgJyAnKX1cXGBgLFxuICApO1xufVxuXG5mdW5jdGlvbiByZXF1aXJlVGVtcGxhdGUoY29udGVudDogc3RyaW5nLCBsb2FkZXI6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcbiAgcmV0dXJuIHByb2Nlc3NUZW1wbGF0ZShjb250ZW50LCAodXJsKSA9PiBgcmVxdWlyZSgnJHtsb2FkZXJ9JHt1cmx9JylgKTtcbn1cblxuLy8gVGhlIGNiRm4gaXMgZ2l2ZW4gdGhlIHVybCBvZiBhIHNpbmdsZSBjc3MgZmlsZSwgYW5kIHNob3VsZCByZXR1cm4gdGhlIHN0cmluZyB0byByZXBsYWNlIGl0XG5mdW5jdGlvbiBwcm9jZXNzU3R5bGUoY29udGVudDogc3RyaW5nLCBjYkZuOiBVcmxSZXNvbHZlcik6IHN0cmluZyB7XG4gIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgL3N0eWxlVXJsczpcXHMqKFxcW1tcXHNcXFNdKj9cXF0pL2dtLFxuICAgIChtLCBzdHlsZVVybHMpID0+XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXZhbFxuICAgICAgYHN0eWxlczogWyR7ZXZhbChzdHlsZVVybHMpXG4gICAgICAgIC5tYXAoKHN0eWxlVXJsKSA9PiBjYkZuKHN0eWxlVXJsKSlcbiAgICAgICAgLmpvaW4oJyxcXG4nKX1dYCxcbiAgKTtcbn1cblxuLyoqXG4gKiBJbmxpbmUgdGhlIHN0eWxlcyBmb3IgYSBzb3VyY2UgZmlsZS4gU2ltcGx5IHNlYXJjaCBmb3IgaW5zdGFuY2VzIG9mIGBzdHlsZVVybHM6IFsuLi5dYCBhbmRcbiAqIHJlcGxhY2Ugd2l0aCBgc3R5bGVzOiBbLi4uXWAgKHdpdGggdGhlIGNvbnRlbnQgb2YgdGhlIGZpbGUgaW5jbHVkZWQpLlxuICogQHBhcmFtIHVybFJlc29sdmVyIHtGdW5jdGlvbn0gQSByZXNvbHZlciB0aGF0IHRha2VzIGEgVVJMIGFuZCByZXR1cm4gYSBwYXRoLlxuICogQHBhcmFtIGNvbnRlbnQge3N0cmluZ30gVGhlIHNvdXJjZSBmaWxlJ3MgY29udGVudC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvbnRlbnQgd2l0aCBhbGwgc3R5bGVzIGlubGluZWQuXG4gKi9cbmZ1bmN0aW9uIGlubGluZVN0eWxlKGNvbnRlbnQ6IHN0cmluZywgdXJsUmVzb2x2ZXI6IFVybFJlc29sdmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIHByb2Nlc3NTdHlsZShcbiAgICBjb250ZW50LFxuICAgIChzdHlsZVVybCkgPT5cbiAgICAgIGBcXGAke2ZzXG4gICAgICAgIC5yZWFkRmlsZVN5bmModXJsUmVzb2x2ZXIoc3R5bGVVcmwpLCAndXRmLTgnKVxuICAgICAgICAucmVwbGFjZSgvKFtcXG5cXHJdXFxzKikrL2dtLCAnICcpfVxcYGAsXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlcXVpcmVTdHlsZShjb250ZW50OiBzdHJpbmcsIGxvYWRlcjogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuICByZXR1cm4gcHJvY2Vzc1N0eWxlKGNvbnRlbnQsICh1cmwpID0+IGByZXF1aXJlKCcke2xvYWRlcn0ke3VybH0nKWApO1xufVxuXG4vKipcbiAqIFJlbW92ZSBldmVyeSBtZW50aW9uIG9mIGBtb2R1bGVJZDogbW9kdWxlLmlkYC5cbiAqIEBwYXJhbSBjb250ZW50IHtzdHJpbmd9IFRoZSBzb3VyY2UgZmlsZSdzIGNvbnRlbnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29udGVudCB3aXRoIGFsbCBtb2R1bGVJZDogbWVudGlvbnMgcmVtb3ZlZC5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlTW9kdWxlSWQoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIHVybFJlc29sdmVyPzogVXJsUmVzb2x2ZXIgfCBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gY29udGVudC5yZXBsYWNlKC9cXHMqbW9kdWxlSWQ6XFxzKm1vZHVsZVxcLmlkXFxzKiw/XFxzKi9nbSwgJycpO1xufVxuIl19
@@ -1,157 +0,0 @@
1
- // @flow
2
- import glob from 'glob';
3
- import path from 'path';
4
- import fs from 'fs';
5
- import { readFile, writeFile } from './fs';
6
-
7
- type DependencyMap = {
8
- [string]: string[],
9
- };
10
- // So we know to copy extra files when a dependency is modified
11
- export const dependencies: DependencyMap = {};
12
-
13
- function recordDependency(parent, child): void {
14
- dependencies[child] = dependencies[child] || [];
15
- if (!dependencies[child].includes(parent)) {
16
- dependencies[child].push(parent);
17
- }
18
- }
19
-
20
- /**
21
- * Inline resources in a tsc/ngc compilation.
22
- * @param projectPath {string} Path to the project.
23
- */
24
- export async function inlineResources(projectPath: string): Promise<void> {
25
- // Match only TypeScript files in projectPath.
26
- const files = glob.sync('**/*.ts', { cwd: projectPath });
27
-
28
- // For each file, inline the templates and styles under it and write the new file.
29
- await Promise.all(
30
- files.map(async (filePath) => {
31
- const fullFilePath = path.join(projectPath, filePath);
32
- const content = await readFile(fullFilePath, 'utf-8');
33
- const inlined = inlineResourcesFromString(content, (url) => {
34
- // Resolve the template url.
35
- const templatePath = path.join(path.dirname(fullFilePath), url);
36
- recordDependency(fullFilePath, templatePath);
37
- return templatePath;
38
- });
39
- await writeFile(fullFilePath, inlined);
40
- }),
41
- );
42
- }
43
-
44
- export function requireResourcesLoader(content: string): string {
45
- return [requireTemplate, requireStyle, removeModuleId].reduce(
46
- (c, fn) => fn(c, '!raw-loader!'),
47
- content,
48
- );
49
- }
50
-
51
- // This is a webpack loader
52
- export function webpackInlineResourceLoader(content: string): string {
53
- this.cacheable(true);
54
- const dir = this.context;
55
- const that = this;
56
- return inlineResourcesFromString(content, (url) => {
57
- // Resolve the template url.
58
- const fullPath = path.join(dir, url);
59
- // Make sure this file gets watched
60
- that.addDependency(fullPath);
61
- return fullPath;
62
- });
63
- }
64
-
65
- export type UrlResolver = (url: string) => string;
66
-
67
- /**
68
- * Inline resources from a string content.
69
- * @param content {string} The source file's content.
70
- * @param urlResolver {Function} A resolver that takes a URL and return a path.
71
- * @returns {string} The content with resources inlined.
72
- */
73
- export function inlineResourcesFromString(
74
- content: string,
75
- urlResolver: UrlResolver,
76
- ): string {
77
- // Curry through the inlining functions.
78
- return [inlineTemplate, inlineStyle, removeModuleId].reduce(
79
- (c, fn) => fn(c, urlResolver),
80
- content,
81
- );
82
- }
83
-
84
- // The cbFn is given the template url, and should return the string to replace it
85
- function processTemplate(content: string, cbFn: UrlResolver) {
86
- return content.replace(
87
- /templateUrl:\s*'([^']+?\.html)'/g,
88
- (m, templateUrl) => `template: ${cbFn(templateUrl)}`,
89
- );
90
- }
91
-
92
- /**
93
- * Inline the templates for a source file. Simply search for instances of `templateUrl: ...` and
94
- * replace with `template: ...` (with the content of the file included).
95
- * @param content {string} The source file's content.
96
- * @param urlResolver {Function} A resolver that takes a URL and return a path.
97
- * @return {string} The content with all templates inlined.
98
- */
99
- function inlineTemplate(content: string, urlResolver: UrlResolver): string {
100
- return processTemplate(
101
- content,
102
- (templateUrl) =>
103
- `\`${fs
104
- .readFileSync(urlResolver(templateUrl), 'utf-8')
105
- .replace(/([\n\r]\s*)+/gm, ' ')}\``,
106
- );
107
- }
108
-
109
- function requireTemplate(content: string, loader: string = ''): string {
110
- return processTemplate(content, (url) => `require('${loader}${url}')`);
111
- }
112
-
113
- // The cbFn is given the url of a single css file, and should return the string to replace it
114
- function processStyle(content: string, cbFn: UrlResolver): string {
115
- return content.replace(
116
- /styleUrls:\s*(\[[\s\S]*?\])/gm,
117
- (m, styleUrls) =>
118
- // eslint-disable-next-line no-eval
119
- `styles: [${eval(styleUrls)
120
- .map((styleUrl) => cbFn(styleUrl))
121
- .join(',\n')}]`,
122
- );
123
- }
124
-
125
- /**
126
- * Inline the styles for a source file. Simply search for instances of `styleUrls: [...]` and
127
- * replace with `styles: [...]` (with the content of the file included).
128
- * @param urlResolver {Function} A resolver that takes a URL and return a path.
129
- * @param content {string} The source file's content.
130
- * @return {string} The content with all styles inlined.
131
- */
132
- function inlineStyle(content: string, urlResolver: UrlResolver): string {
133
- return processStyle(
134
- content,
135
- (styleUrl) =>
136
- `\`${fs
137
- .readFileSync(urlResolver(styleUrl), 'utf-8')
138
- .replace(/([\n\r]\s*)+/gm, ' ')}\``,
139
- );
140
- }
141
-
142
- function requireStyle(content: string, loader: string = ''): string {
143
- return processStyle(content, (url) => `require('${loader}${url}')`);
144
- }
145
-
146
- /**
147
- * Remove every mention of `moduleId: module.id`.
148
- * @param content {string} The source file's content.
149
- * @returns {string} The content with all moduleId: mentions removed.
150
- */
151
- function removeModuleId(
152
- content: string,
153
- // eslint-disable-next-line no-unused-vars
154
- urlResolver?: UrlResolver | string,
155
- ): string {
156
- return content.replace(/\s*moduleId:\s*module\.id\s*,?\s*/gm, '');
157
- }