jspm 2.0.0-beta.7 → 3.0.0

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 (100) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +26 -32
  3. package/dist/cli.js +1391 -0
  4. package/jspm.js +10 -0
  5. package/package.json +32 -60
  6. package/CHANGELOG.md +0 -25
  7. package/bin/jspm +0 -46
  8. package/lib/api.d.ts +0 -10
  9. package/lib/api.js +0 -71
  10. package/lib/api.js.map +0 -1
  11. package/lib/build/index.d.ts +0 -24
  12. package/lib/build/index.js +0 -163
  13. package/lib/build/index.js.map +0 -1
  14. package/lib/cli.d.ts +0 -1
  15. package/lib/cli.js +0 -701
  16. package/lib/cli.js.map +0 -1
  17. package/lib/compile/cjs-convert.d.ts +0 -7
  18. package/lib/compile/cjs-convert.js +0 -375
  19. package/lib/compile/cjs-convert.js.map +0 -1
  20. package/lib/compile/dew-resolve.d.ts +0 -9
  21. package/lib/compile/dew-resolve.js +0 -117
  22. package/lib/compile/dew-resolve.js.map +0 -1
  23. package/lib/compile/dew-worker.d.ts +0 -1
  24. package/lib/compile/dew-worker.js +0 -302
  25. package/lib/compile/dew-worker.js.map +0 -1
  26. package/lib/config/config-file.d.ts +0 -67
  27. package/lib/config/config-file.js +0 -591
  28. package/lib/config/config-file.js.map +0 -1
  29. package/lib/config/global-config-file.d.ts +0 -8
  30. package/lib/config/global-config-file.js +0 -89
  31. package/lib/config/global-config-file.js.map +0 -1
  32. package/lib/config/index.d.ts +0 -15
  33. package/lib/config/index.js +0 -59
  34. package/lib/config/index.js.map +0 -1
  35. package/lib/config/jspm-file.d.ts +0 -8
  36. package/lib/config/jspm-file.js +0 -84
  37. package/lib/config/jspm-file.js.map +0 -1
  38. package/lib/config/package-json-file.d.ts +0 -49
  39. package/lib/config/package-json-file.js +0 -332
  40. package/lib/config/package-json-file.js.map +0 -1
  41. package/lib/exec/index.d.ts +0 -12
  42. package/lib/exec/index.js +0 -117
  43. package/lib/exec/index.js.map +0 -1
  44. package/lib/install/bin.d.ts +0 -2
  45. package/lib/install/bin.js +0 -85
  46. package/lib/install/bin.js.map +0 -1
  47. package/lib/install/binary-build.d.ts +0 -2
  48. package/lib/install/binary-build.js +0 -89
  49. package/lib/install/binary-build.js.map +0 -1
  50. package/lib/install/fetch.d.ts +0 -53
  51. package/lib/install/fetch.js +0 -270
  52. package/lib/install/fetch.js.map +0 -1
  53. package/lib/install/index.d.ts +0 -66
  54. package/lib/install/index.js +0 -1164
  55. package/lib/install/index.js.map +0 -1
  56. package/lib/install/package.d.ts +0 -142
  57. package/lib/install/package.js +0 -625
  58. package/lib/install/package.js.map +0 -1
  59. package/lib/install/publish.d.ts +0 -14
  60. package/lib/install/publish.js +0 -186
  61. package/lib/install/publish.js.map +0 -1
  62. package/lib/install/registry-manager.d.ts +0 -134
  63. package/lib/install/registry-manager.js +0 -521
  64. package/lib/install/registry-manager.js.map +0 -1
  65. package/lib/install/source.d.ts +0 -10
  66. package/lib/install/source.js +0 -378
  67. package/lib/install/source.js.map +0 -1
  68. package/lib/map/common.d.ts +0 -12
  69. package/lib/map/common.js +0 -182
  70. package/lib/map/common.js.map +0 -1
  71. package/lib/map/esm-lexer.d.ts +0 -17
  72. package/lib/map/esm-lexer.js +0 -506
  73. package/lib/map/esm-lexer.js.map +0 -1
  74. package/lib/map/index.d.ts +0 -15
  75. package/lib/map/index.js +0 -336
  76. package/lib/map/index.js.map +0 -1
  77. package/lib/map/utils.d.ts +0 -10
  78. package/lib/map/utils.js +0 -169
  79. package/lib/map/utils.js.map +0 -1
  80. package/lib/overrides.d.ts +0 -3
  81. package/lib/overrides.js +0 -29
  82. package/lib/overrides.js.map +0 -1
  83. package/lib/project.d.ts +0 -71
  84. package/lib/project.js +0 -434
  85. package/lib/project.js.map +0 -1
  86. package/lib/utils/cache.d.ts +0 -11
  87. package/lib/utils/cache.js +0 -121
  88. package/lib/utils/cache.js.map +0 -1
  89. package/lib/utils/common.d.ts +0 -55
  90. package/lib/utils/common.js +0 -267
  91. package/lib/utils/common.js.map +0 -1
  92. package/lib/utils/opts.d.ts +0 -6
  93. package/lib/utils/opts.js +0 -200
  94. package/lib/utils/opts.js.map +0 -1
  95. package/lib/utils/run-cmd.d.ts +0 -4
  96. package/lib/utils/run-cmd.js +0 -39
  97. package/lib/utils/run-cmd.js.map +0 -1
  98. package/lib/utils/ui.d.ts +0 -38
  99. package/lib/utils/ui.js +0 -496
  100. package/lib/utils/ui.js.map +0 -1
package/lib/project.d.ts DELETED
@@ -1,71 +0,0 @@
1
- import { JspmUserError } from './utils/common';
2
- import { confirm, input } from './utils/ui';
3
- import Config from './config';
4
- import RegistryManager, { Registry } from './install/registry-manager';
5
- import globalConfig from './config/global-config-file';
6
- import FetchClass from './install/fetch';
7
- import { Install, InstallOptions, Installer } from './install';
8
- export declare type Hook = 'preinstall' | 'postinstall';
9
- export interface Logger {
10
- newline: () => void;
11
- msg: (msg: string) => void;
12
- errMsg: (err: string | Error | JspmUserError) => void;
13
- err: (err: string | Error | JspmUserError) => void;
14
- debug: (msg: string) => void;
15
- info: (msg: string) => void;
16
- warn: (msg: string) => void;
17
- ok: (msg: string) => void;
18
- taskStart: (name: string) => () => void;
19
- taskEnd: (name: string) => void;
20
- }
21
- export declare type input = typeof input;
22
- export declare type confirm = typeof confirm;
23
- export interface ProjectConfiguration {
24
- userInput?: boolean;
25
- cacheDir?: string;
26
- timeouts?: {
27
- resolve?: number;
28
- download?: number;
29
- };
30
- defaultRegistry?: string;
31
- offline?: boolean;
32
- preferOffline?: boolean;
33
- strictSSL?: boolean;
34
- registries?: {
35
- [name: string]: Registry;
36
- };
37
- cli?: boolean;
38
- }
39
- export declare class Project {
40
- projectPath: string;
41
- config: Config;
42
- globalConfig: typeof globalConfig;
43
- cli: boolean;
44
- defaultRegistry: string;
45
- log: Logger;
46
- confirm: typeof confirm;
47
- input: typeof input;
48
- userInput: boolean;
49
- offline: boolean;
50
- preferOffline: boolean;
51
- registryManager: RegistryManager;
52
- installer: Installer;
53
- fetch: FetchClass;
54
- cacheDir: string;
55
- checkedGlobalBin: boolean;
56
- constructor(projectPath: string, options: ProjectConfiguration);
57
- checkGlobalBin(): void;
58
- dispose(): Promise<[void, void[], void]>;
59
- save(): Promise<boolean>;
60
- update(selectors: string[], opts: InstallOptions): Promise<void>;
61
- install(installs: Install[], opts?: InstallOptions): Promise<void>;
62
- uninstall(names: string[]): Promise<void>;
63
- checkout(names: string[]): Promise<void>;
64
- link(pkg: string, source: string, opts: InstallOptions): Promise<void>;
65
- clean(): Promise<void>;
66
- init(basePath: string): Promise<void>;
67
- registryConfig(name: string): Promise<void>;
68
- clearCache(): Promise<void>;
69
- run(name: string, args: string[]): Promise<number>;
70
- }
71
- export declare function runHook(project: Project, name: Hook): Promise<void>;
package/lib/project.js DELETED
@@ -1,434 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /*
4
- * Copyright 2014-2018 Guy Bedford (http://guybedford.com)
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
- const path = require("path");
19
- const rimraf = require("rimraf");
20
- const events = require("events");
21
- const mkdirp = require("mkdirp");
22
- const common_1 = require("./utils/common");
23
- const ui_1 = require("./utils/ui");
24
- const config_1 = require("./config");
25
- const registry_manager_1 = require("./install/registry-manager");
26
- const cache_1 = require("./utils/cache");
27
- const global_config_file_1 = require("./config/global-config-file");
28
- const fetch_1 = require("./install/fetch");
29
- const cjs_convert_1 = require("./compile/cjs-convert");
30
- // import { ExactPackage, PackageName, clearPackageCache } from './utils/package';
31
- const install_1 = require("./install");
32
- const run_cmd_1 = require("./utils/run-cmd");
33
- const api_1 = require("./api");
34
- // git is required for jspm to work
35
- let hasGit = true;
36
- try {
37
- require('which').sync('git');
38
- }
39
- catch (e) {
40
- hasGit = false;
41
- }
42
- function applyDefaultConfiguration(userConfig) {
43
- const config = Object.assign({}, userConfig);
44
- if (!config.registries) {
45
- const registriesGlobalConfig = global_config_file_1.default.get('registries') || {};
46
- const registries = {};
47
- Object.keys(registriesGlobalConfig).forEach((registryName) => {
48
- const registry = registriesGlobalConfig[registryName];
49
- if (registry.handler === 'jspm-npm' || registry.handler === 'jspm-github')
50
- registry.handler = undefined;
51
- registries[registryName] = {
52
- handler: registry.handler || `@jspm/${registryName}`,
53
- config: registry
54
- };
55
- });
56
- config.registries = registries;
57
- }
58
- if (!config.defaultRegistry) {
59
- let defaultRegistry = global_config_file_1.default.get('defaultRegistry');
60
- if (!defaultRegistry || defaultRegistry === 'jspm')
61
- defaultRegistry = 'npm';
62
- config.defaultRegistry = defaultRegistry;
63
- }
64
- if ('offline' in config === false)
65
- config.offline = false;
66
- if ('preferOffline' in config === false)
67
- config.preferOffline = global_config_file_1.default.get('preferOffline') || false;
68
- if ('cli' in config === false)
69
- config.cli = true;
70
- if ('timeouts' in config === false)
71
- config.timeouts = {
72
- resolve: global_config_file_1.default.get('timeouts.resolve') || 30000,
73
- download: global_config_file_1.default.get('timeouts.download') || 300000
74
- };
75
- if ('userInput' in config === false)
76
- config.userInput = true;
77
- if ('cacheDir' in config === false)
78
- config.cacheDir = common_1.JSPM_CACHE_DIR;
79
- if ('strictSSL' in config === false)
80
- config.strictSSL = global_config_file_1.default.get('strictSSL');
81
- return config;
82
- }
83
- class Project {
84
- constructor(projectPath, options) {
85
- this.projectPath = projectPath;
86
- if (!hasGit)
87
- throw new common_1.JspmUserError(`${common_1.bold('git')} is not installed in path. You can install git from http://git-scm.com/downloads.`);
88
- const config = applyDefaultConfiguration(options);
89
- // is this running as a CLI or API?
90
- this.cli = config.cli;
91
- this.log = this.cli ? new CLILogger() : new APILogger();
92
- if (projectPath === api_1.JSPM_GLOBAL_PATH)
93
- this.checkGlobalBin();
94
- // if (process.env.globalJspm === 'true')
95
- // this.log.warn(`Running jspm globally, it is advisable to locally install jspm via ${bold(`npm install jspm --save-dev`)}.`);
96
- this.defaultRegistry = config.defaultRegistry;
97
- // hardcoded for now (pending jspm 3...)
98
- this.defaultRegistry = 'npm';
99
- mkdirp.sync(projectPath);
100
- this.config = new config_1.default(projectPath, this);
101
- this.globalConfig = global_config_file_1.default;
102
- this.confirm = this.cli ? ui_1.confirm : (_msg, def) => Promise.resolve(typeof def === 'boolean' ? def : undefined);
103
- this.input = this.cli ? ui_1.input : (_msg, def) => Promise.resolve(typeof def === 'string' ? def : undefined);
104
- this.userInput = config.userInput;
105
- this.offline = config.offline;
106
- this.preferOffline = config.preferOffline;
107
- this.cacheDir = config.cacheDir;
108
- this.fetch = new fetch_1.default(this);
109
- this.registryManager = new registry_manager_1.default({
110
- cacheDir: this.cacheDir,
111
- defaultRegistry: this.defaultRegistry,
112
- Cache: cache_1.default,
113
- timeouts: {
114
- resolve: config.timeouts.resolve,
115
- download: config.timeouts.download
116
- },
117
- offline: this.offline,
118
- preferOffline: this.preferOffline,
119
- userInput: this.userInput,
120
- strictSSL: config.strictSSL,
121
- log: this.log,
122
- confirm: this.confirm,
123
- input: this.input,
124
- fetch: this.fetch,
125
- registries: config.registries
126
- });
127
- // load registries upfront
128
- // (strictly we should save registry configuration when a new registry appears)
129
- this.registryManager.loadEndpoints();
130
- cjs_convert_1.init();
131
- this.installer = new install_1.Installer(this);
132
- }
133
- checkGlobalBin() {
134
- if (this.checkedGlobalBin)
135
- return;
136
- const globalBin = path.join(api_1.JSPM_GLOBAL_PATH, 'jspm_packages', '.bin');
137
- if (process.env[common_1.PATH].indexOf(globalBin) === -1)
138
- this.log.warn(`The global jspm bin folder ${common_1.highlight(globalBin)} is not currently in your PATH, add this for native jspm bin support.`);
139
- this.checkedGlobalBin = true;
140
- }
141
- dispose() {
142
- return Promise.all([
143
- this.config.dispose(),
144
- this.registryManager.dispose(),
145
- cjs_convert_1.dispose()
146
- ]);
147
- }
148
- async save() {
149
- return await this.config.save();
150
- }
151
- /*
152
- * Main API methods
153
- */
154
- async update(selectors, opts) {
155
- const taskEnd = this.log.taskStart('Updating...');
156
- try {
157
- var changed = await this.installer.update(selectors, opts);
158
- }
159
- finally {
160
- taskEnd();
161
- }
162
- // NB install state change logging!
163
- if (changed)
164
- this.log.ok('Update complete.');
165
- else
166
- this.log.ok('Already up to date.');
167
- }
168
- async install(installs, opts = {}) {
169
- const taskEnd = this.log.taskStart('Installing...');
170
- try {
171
- await runHook(this, 'preinstall');
172
- if (installs.length === 0) {
173
- opts.lock = true;
174
- if (opts.latest) {
175
- opts.latest = false;
176
- this.log.warn(`${common_1.bold('--latest')} flag does not apply to package lock install.`);
177
- }
178
- }
179
- var changed = await this.installer.install(installs, opts);
180
- await runHook(this, 'postinstall');
181
- }
182
- finally {
183
- taskEnd();
184
- }
185
- // NB install state change logging!
186
- if (changed)
187
- this.log.ok('Install complete.');
188
- else
189
- this.log.ok('Already installed.');
190
- }
191
- async uninstall(names) {
192
- const taskEnd = this.log.taskStart('Uninstalling...');
193
- try {
194
- await this.installer.uninstall(names);
195
- }
196
- finally {
197
- taskEnd();
198
- }
199
- this.log.ok('Uninstalled successfully.');
200
- }
201
- async checkout(names) {
202
- const taskEnd = this.log.taskStart('Checking out...');
203
- try {
204
- await this.installer.checkout(names);
205
- }
206
- finally {
207
- taskEnd();
208
- }
209
- }
210
- async link(pkg, source, opts) {
211
- const taskEnd = this.log.taskStart('Linking...');
212
- try {
213
- await runHook(this, 'preinstall');
214
- var changed = await this.installer.link(pkg, source, opts);
215
- await runHook(this, 'postinstall');
216
- }
217
- finally {
218
- taskEnd();
219
- }
220
- if (changed)
221
- this.log.ok('Linked Successfully.');
222
- else
223
- this.log.ok('Already linked.');
224
- }
225
- async clean() {
226
- const taskEnd = this.log.taskStart('Cleaning...');
227
- try {
228
- await this.installer.clean(true);
229
- }
230
- finally {
231
- taskEnd();
232
- }
233
- this.log.ok('Project cleaned successfully.');
234
- }
235
- /*
236
- async resolve (name: string, parentName: string) {
237
- let loader = getLoader(this);
238
- if (parentName)
239
- parentName = await loader.resolve(parentName);
240
-
241
- let resolved = await loader.resolve(name, parentName);
242
- return toCleanPath(resolved);
243
- }
244
-
245
- resolveSync (name: string, parentName: string) {
246
- let loader = getLoader(this);
247
- if (parentName)
248
- parentName = loader.resolveSync(parentName);
249
-
250
- let resolved = loader.resolveSync(name, parentName);
251
- return toCleanPath(resolved);
252
- }
253
- */
254
- async init(basePath) {
255
- if (basePath)
256
- process.env.jspmConfigPath = path.resolve(basePath, 'package.json');
257
- let relBase = path.relative(process.cwd(), path.dirname(process.env.jspmConfigPath || ''));
258
- if (relBase !== '')
259
- this.log.msg(`Initializing package at ${common_1.highlight(relBase)}\nUse ${common_1.bold(`jspm init .`)} to intialize into the current folder.`);
260
- /* await this.config.load(true);
261
- await this.config.save();
262
-
263
- this.log('');
264
- this.ok(`package.json at %${path.relative(process.cwd(), config.pjsonPath)}\n` +
265
- `Config at %${path.relative(process.cwd(), config.pjson.configFile)}%` +
266
- (config.loader.devFile ? ', %' + path.relative(process.cwd(), config.pjson.configFileDev) + '%' : '') +
267
- (config.loader.browserFile ? ', %' + path.relative(process.cwd(), config.pjson.configFileBrowser) + '%' : '') +
268
- (config.loader.nodeFile ? ', %' + path.relative(process.cwd(), config.pjson.configFileNode) + '%' : ''));*/
269
- }
270
- async registryConfig(name) {
271
- return this.registryManager.configure(name);
272
- }
273
- async clearCache() {
274
- await new Promise((resolve, reject) => rimraf(this.cacheDir, err => err ? reject(err) : resolve()));
275
- this.log.warn(`Global cache cleared. ${common_1.underline(`All jspm projects for this system user will now have broken symlinks due to the shared global package cache.`)}`);
276
- this.log.info(`${common_1.bold(`jspm install <packageName> -f`)} is equivalent to running a cache clear for that specific install tree.`);
277
- this.log.info(`Please post an issue if you suspect the cache isn't invalidating properly.`);
278
- }
279
- async run(name, args) {
280
- const scripts = this.config.pjson.scripts;
281
- const script = scripts[name];
282
- if (!script)
283
- throw new common_1.JspmUserError(`No package.json ${common_1.highlight('"scripts"')} entry for command ${common_1.bold(name)}`);
284
- const doPrePost = !name.startsWith('pre') && !name.startsWith('post');
285
- const cmds = [];
286
- if (doPrePost) {
287
- const pre = scripts[`pre${name}`];
288
- if (pre)
289
- cmds.push(pre);
290
- cmds.push(script);
291
- const post = scripts[`post${name}`];
292
- if (post)
293
- cmds.push(post);
294
- }
295
- else {
296
- cmds.push(script);
297
- }
298
- // before running commands dispose the configuration
299
- this.config.dispose();
300
- this.config = undefined;
301
- let exitCode = 0;
302
- await Promise.all(cmds.map(async (cmd) => {
303
- if (args.length)
304
- cmd += joinArgs(args);
305
- cmd = cmd.replace('npm ', 'jspm ');
306
- const cmdCode = await run_cmd_1.runCmd(cmd, this.projectPath);
307
- if (cmdCode !== 0)
308
- exitCode = cmdCode;
309
- }));
310
- return exitCode;
311
- }
312
- }
313
- exports.Project = Project;
314
- const dblQuoteRegEx = /"/g;
315
- function joinArgs(args) {
316
- return args.reduce((str, arg) => `${str} "${arg.replace(dblQuoteRegEx, '\\"')}"`, '');
317
- }
318
- async function runHook(project, name) {
319
- var hooks = project.config.pjson.hooks;
320
- if (!hooks || !hooks[name])
321
- return;
322
- try {
323
- let m = require(hooks[name]);
324
- if (!m.default || typeof m.default !== 'function')
325
- throw new Error(`Hook ${common_1.bold(name)} doesn't contain a default export hook function.`);
326
- await m.default();
327
- }
328
- catch (e) {
329
- project.log.err(`Error running ${common_1.bold(name)} hook.`);
330
- project.log.err(e.stack || e);
331
- }
332
- }
333
- exports.runHook = runHook;
334
- class APILogger extends events.EventEmitter {
335
- newline() { }
336
- msg(msg) {
337
- this.emit('msg', msg);
338
- }
339
- errMsg(msg) {
340
- this.emit('errMsg', msg);
341
- }
342
- err(msg) {
343
- this.emit('err', msg);
344
- }
345
- debug(msg) {
346
- this.emit('debug', msg);
347
- }
348
- info(msg) {
349
- this.emit('info', msg);
350
- }
351
- warn(msg) {
352
- this.emit('warn', msg);
353
- }
354
- ok(msg) {
355
- this.emit('ok', msg);
356
- }
357
- taskStart(name) {
358
- this.emit('taskStart', name);
359
- return () => this.taskEnd(name);
360
- }
361
- taskEnd(name) {
362
- this.emit('taskEnd', name);
363
- }
364
- }
365
- ;
366
- class CLILogger {
367
- constructor() {
368
- this.tasks = [];
369
- this.lastTask = undefined;
370
- }
371
- newline() {
372
- ui_1.log('');
373
- }
374
- msg(msg) {
375
- ui_1.log(msg);
376
- }
377
- errMsg(msg) {
378
- if (msg instanceof Error) {
379
- if (msg.hideStack)
380
- msg = msg.message;
381
- else
382
- msg = msg.stack || msg && msg.toString();
383
- }
384
- ui_1.logErr(msg);
385
- }
386
- err(msg) {
387
- if (msg instanceof Error) {
388
- if (msg.hideStack)
389
- msg = msg.message;
390
- else
391
- msg = msg.stack || msg && msg.toString();
392
- }
393
- ui_1.log(msg, ui_1.LogType.err);
394
- }
395
- debug(msg) {
396
- ui_1.log(msg, ui_1.LogType.debug);
397
- }
398
- info(msg) {
399
- ui_1.log(msg, ui_1.LogType.info);
400
- }
401
- warn(msg) {
402
- ui_1.log(msg, ui_1.LogType.warn);
403
- }
404
- ok(msg) {
405
- ui_1.log(msg, ui_1.LogType.ok);
406
- }
407
- taskStart(name) {
408
- this.tasks.push(name);
409
- ui_1.log(this.tasks[this.tasks.length - 1], ui_1.LogType.status);
410
- if (this.tasks.length === 1)
411
- ui_1.startSpinner();
412
- // allow debug log state to expand status
413
- if (ui_1.logLevel === ui_1.LogType.debug && this.lastTask)
414
- ui_1.log(this.lastTask, ui_1.LogType.debug);
415
- this.lastTask = name;
416
- return this.taskEnd.bind(this, name);
417
- }
418
- taskEnd(name) {
419
- const taskIndex = this.tasks.indexOf(name);
420
- if (taskIndex === -1)
421
- return;
422
- this.tasks.splice(taskIndex, 1);
423
- if (this.tasks.length)
424
- ui_1.log(this.tasks[this.tasks.length - 1], ui_1.LogType.status);
425
- else
426
- ui_1.stopSpinner();
427
- if (ui_1.logLevel === ui_1.LogType.debug && this.lastTask && this.lastTask !== this.tasks[this.tasks.length - 1]) {
428
- ui_1.log(this.lastTask, ui_1.LogType.debug);
429
- this.lastTask = undefined;
430
- }
431
- }
432
- }
433
- ;
434
- //# sourceMappingURL=project.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export default class Cache {
2
- private basePath;
3
- constructor(basePath: any);
4
- get(cachePath: string): Promise<any>;
5
- set(cachePath: string, value: any): Promise<void>;
6
- setUnlock(cachePath: string, value: any): Promise<void>;
7
- del(cachePath: string): Promise<void>;
8
- lock(cachePath: string, timeout?: number): Promise<() => Promise<void>>;
9
- getUnlocked(cachePath: any, timeout?: number): Promise<any>;
10
- getOrCreate<T>(path: string, timeout: number, createTask: () => Promise<T>): Promise<T>;
11
- }
@@ -1,121 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright 2014-2019 Guy Bedford (http://guybedford.com)
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- const path = require("path");
19
- const fs = require("graceful-fs");
20
- const lockfile = require("proper-lockfile");
21
- const common_1 = require("./common");
22
- const promiseRetry = require("promise-retry");
23
- const mkdirp = require("mkdirp");
24
- /*
25
- * multi-process fs caching with lock file
26
- * with in-memory single-process cache and lock queue
27
- */
28
- class Cache {
29
- constructor(basePath) {
30
- this.basePath = path.resolve(basePath);
31
- mkdirp.sync(this.basePath);
32
- }
33
- get(cachePath) {
34
- const resolved = path.resolve(this.basePath, cachePath);
35
- return common_1.readJSON(resolved).catch(_err => {
36
- // gracefully handle corruptions
37
- });
38
- }
39
- async set(cachePath, value) {
40
- const resolved = path.resolve(this.basePath, cachePath);
41
- if (path.relative(this.basePath, resolved).indexOf(path.sep) !== -1)
42
- await new Promise((resolve, reject) => mkdirp(path.dirname(resolved), err => err ? reject(err) : resolve()));
43
- await new Promise((resolve, reject) => fs.writeFile(resolved, JSON.stringify(value), err => err ? reject(err) : resolve()));
44
- }
45
- async setUnlock(cachePath, value) {
46
- const resolved = path.resolve(this.basePath, cachePath);
47
- if (path.relative(this.basePath, resolved).indexOf(path.sep) !== -1)
48
- await new Promise((resolve, reject) => mkdirp(path.dirname(resolved), err => err ? reject(err) : resolve()));
49
- await new Promise((resolve, reject) => fs.writeFile(resolved, JSON.stringify(value), err => err ? reject(err) : resolve()));
50
- await new Promise((resolve, reject) => lockfile.unlock(resolved, {
51
- realpath: false
52
- }, err => err ? reject(err) : resolve()));
53
- }
54
- async del(cachePath) {
55
- const resolved = path.resolve(this.basePath, cachePath);
56
- await new Promise((resolve, reject) => fs.unlink(resolved, err => err ? reject(err) : resolve()));
57
- }
58
- async lock(cachePath, timeout = 3000) {
59
- const resolved = path.resolve(this.basePath, cachePath);
60
- await new Promise((resolve, reject) => mkdirp(path.dirname(resolved), err => err ? reject(err) : resolve()));
61
- const unlock = await new Promise((resolve, reject) => lockfile.lock(resolved, {
62
- // exponential backoff of 5 checks from 200ms up to 3s
63
- // followed by a constant timeout check of 3 seconds
64
- // to an absolute maximum of the given timeout
65
- realpath: false,
66
- retries: {
67
- retries: 2 + Math.floor(timeout / 3000),
68
- factor: 1.5707,
69
- minTimeout: 200,
70
- maxTimeout: 3000
71
- }
72
- }, (err, unlock) => err ? reject(err) : resolve(unlock)));
73
- return () => {
74
- return new Promise((resolve, reject) => unlock(err => err ? reject(err) : resolve()));
75
- };
76
- }
77
- // get, but only if unlocked, waiting on unlock
78
- // in fs terms between instances for specific unused scenarios this can be racy on a small margin,
79
- // if a get applies after a promise, ensure any corresponding locked sets itself to be idempotently accessible
80
- async getUnlocked(cachePath, timeout = 3000) {
81
- const resolved = path.resolve(this.basePath, cachePath);
82
- await promiseRetry(async (retry) => {
83
- const locked = await new Promise((resolve, reject) => lockfile.check(resolved, { realpath: false }, (err, locked) => err ? reject(err) : resolve(locked)));
84
- if (locked)
85
- retry(new Error(`Operation timeout.`));
86
- }, {
87
- retries: 2 + Math.floor(timeout / 3000),
88
- factor: 1.5707,
89
- minTimeout: 200,
90
- maxTimeout: 3000
91
- });
92
- return this.get(resolved);
93
- }
94
- // get, waiting on any lock, locking,
95
- // creating and then unlocking if not existing
96
- async getOrCreate(path, timeout = 3, createTask) {
97
- let result = await this.getUnlocked(path, timeout);
98
- if (result)
99
- return result;
100
- let unlock = await this.lock(path, timeout);
101
- // could have been beaten to the lock
102
- result = await this.getUnlocked(path, timeout);
103
- if (result)
104
- return result;
105
- let timer;
106
- let timeoutPromise = new Promise((_resolve, reject) => {
107
- timer = setTimeout(() => reject(new common_1.JspmError('Operation timeout.')));
108
- });
109
- try {
110
- let value = await Promise.race([timeoutPromise, createTask()]);
111
- clearTimeout(timer);
112
- this.set(path, value);
113
- return value;
114
- }
115
- finally {
116
- unlock();
117
- }
118
- }
119
- }
120
- exports.default = Cache;
121
- //# sourceMappingURL=cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAEH,6BAA6B;AAC7B,kCAAmC;AACnC,4CAA6C;AAC7C,qCAA+C;AAC/C,8CAA+C;AAC/C,iCAAkC;AAElC;;;GAGG;AACH,MAAqB,KAAK;IAGxB,YAAa,QAAQ;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,GAAG,CAAE,SAAiB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxD,OAAO,iBAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrC,gCAAgC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,GAAG,CAAE,SAAiB,EAAE,KAAU;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/G,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9H,CAAC;IACD,KAAK,CAAC,SAAS,CAAE,SAAiB,EAAE,KAAU;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/G,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5H,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC/D,QAAQ,EAAE,KAAK;SAChB,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK,CAAC,GAAG,CAAE,SAAiB;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,KAAK,CAAC,IAAI,CAAE,SAAiB,EAAE,OAAO,GAAG,IAAI;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7G,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;YACzG,sDAAsD;YACtD,oDAAoD;YACpD,8CAA8C;YAC9C,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE;gBACP,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACvC,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,GAAG;gBACf,UAAU,EAAE,IAAI;aACjB;SACF,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE;YACV,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC;IACJ,CAAC;IACD,+CAA+C;IAC/C,kGAAkG;IAClG,8GAA8G;IAC9G,KAAK,CAAC,WAAW,CAAE,SAAS,EAAE,OAAO,GAAG,IAAI;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxD,MAAM,YAAY,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3J,IAAI,MAAM;gBACR,KAAK,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC3C,CAAC,EAAE;YACD,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACvC,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,qCAAqC;IACrC,8CAA8C;IAC9C,KAAK,CAAC,WAAW,CAAK,IAAY,EAAE,OAAO,GAAG,CAAC,EAAE,UAA4B;QAC3E,IAAI,MAAM,GAAM,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,MAAM;YACR,OAAO,MAAM,CAAC;QAChB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,qCAAqC;QACrC,MAAM,GAAM,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,MAAM;YACR,OAAO,MAAM,CAAC;QAChB,IAAI,KAAK,CAAC;QACV,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;YACpD,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,kBAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,IAAI;YACF,IAAI,KAAK,GAAM,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAClE,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;SACd;gBACO;YACN,MAAM,EAAE,CAAC;SACV;IACH,CAAC;CACF;AA7FD,wBA6FC"}