UNPKG

3.37 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = init;
7
8var _package = require("./package");
9
10var _project = require("./project");
11
12var _prompt = require("./prompt");
13
14var _errors = require("./errors");
15
16var _logger = require("./logger");
17
18var _messages = require("./messages");
19
20var _validate = require("./validate");
21
22async function doInit(pkg) {
23 pkg.entrypoints.forEach(entrypoint => {
24 (0, _validate.validateEntrypointSource)(entrypoint);
25 });
26
27 if (pkg.entrypoints.every(entrypoint => (0, _validate.isMainFieldValid)(entrypoint))) {
28 (0, _logger.info)(_messages.infos.validMainField, pkg.name);
29 } else {
30 let canWriteMainField = await _messages.confirms.writeMainField(pkg);
31
32 if (!canWriteMainField) {
33 throw new _errors.FatalError(_messages.errors.deniedWriteMainField, pkg.name);
34 }
35
36 pkg.setFieldOnEntrypoints("main");
37 }
38
39 let allEntrypointsAreMissingAModuleField = pkg.entrypoints.every(entrypoint => entrypoint.module === null);
40 let someEntrypointsAreNotValid = pkg.entrypoints.some(entrypoint => !(0, _validate.isModuleFieldValid)(entrypoint));
41
42 if (allEntrypointsAreMissingAModuleField || someEntrypointsAreNotValid) {
43 let canWriteModuleField = await _messages.confirms.writeModuleField(pkg);
44
45 if (canWriteModuleField) {
46 pkg.setFieldOnEntrypoints("module");
47 } else if (!allEntrypointsAreMissingAModuleField) {
48 throw new _errors.FixableError(_messages.errors.invalidModuleField, pkg.name);
49 }
50 } else {
51 (0, _logger.info)(_messages.infos.validModuleField, pkg.name);
52 }
53
54 let someEntrypointsHaveAMaybeInvalidUmdBuild = pkg.entrypoints.some(entrypoint => entrypoint.umdMain !== null);
55 let someUmdMainFieldsAreInvalid = pkg.entrypoints.some(entrypoint => !(0, _validate.isUmdMainFieldValid)(entrypoint));
56 let someUmdNamesAreNotSpecified = pkg.entrypoints.some(entrypoint => !(0, _validate.isUmdNameSpecified)(entrypoint));
57
58 if (someEntrypointsHaveAMaybeInvalidUmdBuild && (someUmdMainFieldsAreInvalid || someUmdNamesAreNotSpecified)) {
59 let shouldWriteUMDBuilds = await _messages.confirms.fixUmdBuild(pkg);
60
61 if (shouldWriteUMDBuilds) {
62 pkg.setFieldOnEntrypoints("umdMain");
63
64 for (let entrypoint of pkg.entrypoints) {
65 let umdName = await (0, _prompt.promptInput)(_messages.inputs.getUmdName, entrypoint);
66 entrypoint.umdName = umdName;
67 }
68 } else {
69 throw new _errors.FixableError(_messages.errors.invalidUmdMainField, pkg.name);
70 }
71 }
72
73 let someEntrypointsHaveABrowserField = pkg.entrypoints.some(entrypoint => entrypoint.browser !== null);
74 let someEntrypointsHaveAnInvalidBrowserField = pkg.entrypoints.some(entrypoint => !(0, _validate.isBrowserFieldValid)(entrypoint));
75
76 if (someEntrypointsHaveABrowserField && someEntrypointsHaveAnInvalidBrowserField) {
77 let shouldFixBrowserField = await _messages.confirms.fixBrowserField(pkg);
78
79 if (shouldFixBrowserField) {
80 pkg.setFieldOnEntrypoints("browser");
81 } else {
82 throw new _errors.FixableError(_messages.errors.invalidBrowserField, pkg.name);
83 }
84 }
85
86 await Promise.all(pkg.entrypoints.map(x => x.save()));
87}
88
89async function init(directory) {
90 let project = await _project.Project.create(directory);
91 await Promise.all(project.packages.map(doInit));
92 (0, _logger.success)("initialised project!");
93}
\No newline at end of file