1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.validateEntrypointSource = validateEntrypointSource;
|
7 | exports.isMainFieldValid = isMainFieldValid;
|
8 | exports.isModuleFieldValid = isModuleFieldValid;
|
9 | exports.isUmdMainFieldValid = isUmdMainFieldValid;
|
10 | exports.isBrowserFieldValid = isBrowserFieldValid;
|
11 | exports.isReactNativeFieldValid = isReactNativeFieldValid;
|
12 | exports.isUmdNameSpecified = isUmdNameSpecified;
|
13 | exports.validateEntrypoint = validateEntrypoint;
|
14 | exports.default = validate;
|
15 |
|
16 | var _project = require("./project");
|
17 |
|
18 | var _entrypoint = require("./entrypoint");
|
19 |
|
20 | var _messages = require("./messages");
|
21 |
|
22 | var _errors = require("./errors");
|
23 |
|
24 | var _utils = require("./utils");
|
25 |
|
26 | var logger = _interopRequireWildcard(require("./logger"));
|
27 |
|
28 | var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
|
29 |
|
30 | var _validatePackage = require("./validate-package");
|
31 |
|
32 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
33 |
|
34 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | function validateEntrypointSource(entrypoint) {
|
40 | try {
|
41 | if (!entrypoint.source.startsWith(entrypoint.package.directory)) {
|
42 | throw new _errors.FatalError(`entrypoint source files must be inside their respective package directory but this entrypoint has specified its source file as ${entrypoint.configSource}`, entrypoint);
|
43 | }
|
44 | } catch (e) {
|
45 | if (e.code === "MODULE_NOT_FOUND") {
|
46 | throw new _errors.FatalError(_messages.errors.noSource(entrypoint.configSource), entrypoint);
|
47 | }
|
48 |
|
49 | throw e;
|
50 | }
|
51 | }
|
52 |
|
53 | function isMainFieldValid(entrypoint) {
|
54 | return entrypoint.main === (0, _utils.getValidStringFieldContentForBuildType)("main", entrypoint.package.name);
|
55 | }
|
56 |
|
57 | function isModuleFieldValid(entrypoint) {
|
58 | return entrypoint.module === (0, _utils.getValidStringFieldContentForBuildType)("module", entrypoint.package.name);
|
59 | }
|
60 |
|
61 | function isUmdMainFieldValid(entrypoint) {
|
62 | return entrypoint.umdMain === (0, _utils.getValidStringFieldContentForBuildType)("umd:main", entrypoint.package.name);
|
63 | }
|
64 |
|
65 | function isBrowserFieldValid(entrypoint) {
|
66 | return (0, _fastDeepEqual.default)(entrypoint.browser, (0, _utils.getValidObjectFieldContentForBuildType)("browser", entrypoint.package.name, entrypoint.module !== null));
|
67 | }
|
68 |
|
69 | function isReactNativeFieldValid(entrypoint) {
|
70 | return (0, _fastDeepEqual.default)(entrypoint.reactNative, (0, _utils.getValidObjectFieldContentForBuildType)("react-native", entrypoint.package.name, entrypoint.module !== null));
|
71 | }
|
72 |
|
73 | function isUmdNameSpecified(entrypoint) {
|
74 | return typeof entrypoint._config.umdName === "string";
|
75 | }
|
76 |
|
77 | function validateEntrypoint(entrypoint, log) {
|
78 | validateEntrypointSource(entrypoint);
|
79 |
|
80 | if (log) {
|
81 | logger.info(_messages.infos.validEntrypoint, entrypoint);
|
82 | }
|
83 |
|
84 | if (!isMainFieldValid(entrypoint)) {
|
85 | throw new _errors.FixableError(_messages.errors.invalidMainField, entrypoint);
|
86 | }
|
87 |
|
88 | if (log) {
|
89 | logger.info(_messages.infos.validMainField, entrypoint);
|
90 | }
|
91 |
|
92 | if (entrypoint.module !== null) {
|
93 | if (isModuleFieldValid(entrypoint)) {
|
94 | if (log) {
|
95 | logger.info(_messages.infos.validModuleField, entrypoint);
|
96 | }
|
97 | } else {
|
98 | throw new _errors.FixableError(_messages.errors.invalidModuleField, entrypoint);
|
99 | }
|
100 | }
|
101 |
|
102 | if (entrypoint.umdMain !== null) {
|
103 | if (isUmdMainFieldValid(entrypoint)) {
|
104 | if (isUmdNameSpecified(entrypoint)) {
|
105 | if (log) {
|
106 | logger.info(_messages.infos.validUmdMainField, entrypoint);
|
107 | }
|
108 | } else {
|
109 | throw new _errors.FixableError(_messages.errors.umdNameNotSpecified, entrypoint);
|
110 | }
|
111 | } else {
|
112 | throw new _errors.FixableError(_messages.errors.invalidUmdMainField, entrypoint);
|
113 | }
|
114 | }
|
115 |
|
116 | if (entrypoint.browser !== null) {
|
117 | if (typeof entrypoint.browser === "string" || !isBrowserFieldValid(entrypoint)) {
|
118 | throw new _errors.FixableError(_messages.errors.invalidBrowserField, entrypoint);
|
119 | } else if (log) {
|
120 | logger.info(_messages.infos.validBrowserField, entrypoint);
|
121 | }
|
122 | }
|
123 |
|
124 | if (entrypoint.reactNative !== null) {
|
125 | if (typeof entrypoint.reactNative === "string" || !isReactNativeFieldValid(entrypoint)) {
|
126 | throw new _errors.FixableError(_messages.errors.invalidReactNativeField, entrypoint);
|
127 | } else if (log) {
|
128 | logger.info(_messages.infos.validReactNativeField, entrypoint);
|
129 | }
|
130 | }
|
131 | }
|
132 |
|
133 | async function validate(directory) {
|
134 | let project = await _project.Project.create(directory);
|
135 |
|
136 | for (let pkg of project.packages) {
|
137 | (0, _validatePackage.validatePackage)(pkg);
|
138 |
|
139 | for (let entrypoint of pkg.entrypoints) {
|
140 | validateEntrypoint(entrypoint, true);
|
141 | }
|
142 |
|
143 | logger.info(_messages.infos.validPackageEntrypoints, pkg);
|
144 | }
|
145 |
|
146 | logger.success(_messages.successes.validProject);
|
147 | } |
\ | No newline at end of file |