@monorepolint/rules 0.5.0-alpha.13 → 0.5.0-alpha.130
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.
- package/.turbo/turbo-clean.log +4 -0
- package/.turbo/turbo-compile-typescript.log +4 -0
- package/.turbo/turbo-lint.log +14 -0
- package/.turbo/turbo-test.log +666 -0
- package/.turbo/turbo-transpile-typescript.log +18 -0
- package/build/js/chunk-A2MUUSNE.js +26 -0
- package/build/js/chunk-A2MUUSNE.js.map +1 -0
- package/build/js/index.js +1402 -0
- package/build/js/index.js.map +1 -0
- package/build/js/public/util.js +7 -0
- package/build/js/public/util.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -0
- package/build/types/__tests__/alphabeticalScripts.spec.d.ts.map +1 -0
- package/build/types/__tests__/bannedDependencies.spec.d.ts +2 -0
- package/build/types/__tests__/bannedDependencies.spec.d.ts.map +1 -0
- package/build/types/__tests__/consistentDependencies.spec.d.ts.map +1 -0
- package/build/types/__tests__/consistentVersions.spec.d.ts +8 -0
- package/build/types/__tests__/consistentVersions.spec.d.ts.map +1 -0
- package/build/types/__tests__/fileContents.spec.d.ts.map +1 -0
- package/build/types/__tests__/mustSatisfyPeerDependencies.spec.d.ts +8 -0
- package/build/types/__tests__/mustSatisfyPeerDependencies.spec.d.ts.map +1 -0
- package/build/types/__tests__/nestedWorkspaces.spec.d.ts +2 -0
- package/build/types/__tests__/nestedWorkspaces.spec.d.ts.map +1 -0
- package/build/types/__tests__/packageEntry.spec.d.ts.map +1 -0
- package/build/types/__tests__/packageOrder.spec.d.ts.map +1 -0
- package/build/types/__tests__/packageScript.spec.d.ts.map +1 -0
- package/build/types/__tests__/requireDependency.spec.d.ts +2 -0
- package/build/types/__tests__/requireDependency.spec.d.ts.map +1 -0
- package/build/types/__tests__/utils.d.ts +81 -0
- package/build/types/__tests__/utils.d.ts.map +1 -0
- package/build/types/alphabeticalDependencies.d.ts +8 -0
- package/build/types/alphabeticalDependencies.d.ts.map +1 -0
- package/build/types/alphabeticalScripts.d.ts +8 -0
- package/build/types/alphabeticalScripts.d.ts.map +1 -0
- package/build/types/bannedDependencies.d.ts +66 -0
- package/build/types/bannedDependencies.d.ts.map +1 -0
- package/build/types/consistentDependencies.d.ts +18 -0
- package/build/types/consistentDependencies.d.ts.map +1 -0
- package/build/types/consistentVersions.d.ts +25 -0
- package/build/types/consistentVersions.d.ts.map +1 -0
- package/build/types/fileContents.d.ts +39 -0
- package/build/types/fileContents.d.ts.map +1 -0
- package/build/types/index.d.ts +20 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/mustSatisfyPeerDependencies.d.ts +427 -0
- package/build/types/mustSatisfyPeerDependencies.d.ts.map +1 -0
- package/build/types/nestedWorkspaces.d.ts +10 -0
- package/build/types/nestedWorkspaces.d.ts.map +1 -0
- package/build/types/packageEntry.d.ts +62 -0
- package/build/types/packageEntry.d.ts.map +1 -0
- package/build/types/packageOrder.d.ts +12 -0
- package/build/types/packageOrder.d.ts.map +1 -0
- package/build/types/packageScript.d.ts +47 -0
- package/build/types/packageScript.d.ts.map +1 -0
- package/build/types/public/util.d.ts +2 -0
- package/build/types/public/util.d.ts.map +1 -0
- package/build/types/requireDependency.d.ts +50 -0
- package/build/types/requireDependency.d.ts.map +1 -0
- package/build/types/standardTsconfig.d.ts +29 -0
- package/build/types/standardTsconfig.d.ts.map +1 -0
- package/{lib → build/types}/util/checkAlpha.d.ts +2 -1
- package/build/types/util/checkAlpha.d.ts.map +1 -0
- package/build/types/util/makeDirectory.d.ts.map +1 -0
- package/build/types/util/makeRule.d.ts +12 -0
- package/build/types/util/makeRule.d.ts.map +1 -0
- package/build/types/util/packageDependencyGraphService.d.ts +37 -0
- package/build/types/util/packageDependencyGraphService.d.ts.map +1 -0
- package/package.json +45 -20
- package/src/__tests__/alphabeticalScripts.spec.ts +33 -31
- package/src/__tests__/bannedDependencies.spec.ts +189 -0
- package/src/__tests__/consistentDependencies.spec.ts +40 -15
- package/src/__tests__/consistentVersions.spec.ts +224 -0
- package/src/__tests__/fileContents.spec.ts +69 -50
- package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +1189 -0
- package/src/__tests__/nestedWorkspaces.spec.ts +153 -0
- package/src/__tests__/packageEntry.spec.ts +127 -49
- package/src/__tests__/packageOrder.spec.ts +68 -53
- package/src/__tests__/packageScript.spec.ts +124 -98
- package/src/__tests__/requireDependency.spec.ts +152 -0
- package/src/__tests__/utils.ts +111 -19
- package/src/alphabeticalDependencies.ts +7 -9
- package/src/alphabeticalScripts.ts +7 -9
- package/src/bannedDependencies.ts +135 -46
- package/src/consistentDependencies.ts +41 -17
- package/src/consistentVersions.ts +141 -0
- package/src/fileContents.ts +45 -40
- package/src/index.ts +13 -9
- package/src/mustSatisfyPeerDependencies.ts +744 -0
- package/src/nestedWorkspaces.ts +60 -0
- package/src/packageEntry.ts +72 -28
- package/src/packageOrder.ts +17 -13
- package/src/packageScript.ts +15 -19
- package/src/public/util.ts +1 -0
- package/src/requireDependency.ts +71 -0
- package/src/standardTsconfig.ts +51 -27
- package/src/util/checkAlpha.ts +9 -6
- package/src/util/makeRule.ts +29 -0
- package/src/util/packageDependencyGraphService.ts +114 -0
- package/tsconfig.json +10 -2
- package/lib/__tests__/alphabeticalScripts.spec.d.ts.map +0 -1
- package/lib/__tests__/alphabeticalScripts.spec.js +0 -61
- package/lib/__tests__/alphabeticalScripts.spec.js.map +0 -1
- package/lib/__tests__/consistentDependencies.spec.d.ts.map +0 -1
- package/lib/__tests__/consistentDependencies.spec.js +0 -99
- package/lib/__tests__/consistentDependencies.spec.js.map +0 -1
- package/lib/__tests__/fileContents.spec.d.ts.map +0 -1
- package/lib/__tests__/fileContents.spec.js +0 -66
- package/lib/__tests__/fileContents.spec.js.map +0 -1
- package/lib/__tests__/packageEntry.spec.d.ts.map +0 -1
- package/lib/__tests__/packageEntry.spec.js +0 -99
- package/lib/__tests__/packageEntry.spec.js.map +0 -1
- package/lib/__tests__/packageOrder.spec.d.ts.map +0 -1
- package/lib/__tests__/packageOrder.spec.js +0 -115
- package/lib/__tests__/packageOrder.spec.js.map +0 -1
- package/lib/__tests__/packageScript.spec.d.ts.map +0 -1
- package/lib/__tests__/packageScript.spec.js +0 -172
- package/lib/__tests__/packageScript.spec.js.map +0 -1
- package/lib/__tests__/utils.d.ts +0 -9
- package/lib/__tests__/utils.d.ts.map +0 -1
- package/lib/__tests__/utils.js +0 -33
- package/lib/__tests__/utils.js.map +0 -1
- package/lib/alphabeticalDependencies.d.ts +0 -12
- package/lib/alphabeticalDependencies.d.ts.map +0 -1
- package/lib/alphabeticalDependencies.js +0 -21
- package/lib/alphabeticalDependencies.js.map +0 -1
- package/lib/alphabeticalScripts.d.ts +0 -12
- package/lib/alphabeticalScripts.d.ts.map +0 -1
- package/lib/alphabeticalScripts.js +0 -19
- package/lib/alphabeticalScripts.js.map +0 -1
- package/lib/bannedDependencies.d.ts +0 -15
- package/lib/bannedDependencies.d.ts.map +0 -1
- package/lib/bannedDependencies.js +0 -57
- package/lib/bannedDependencies.js.map +0 -1
- package/lib/consistentDependencies.d.ts +0 -10
- package/lib/consistentDependencies.d.ts.map +0 -1
- package/lib/consistentDependencies.js +0 -57
- package/lib/consistentDependencies.js.map +0 -1
- package/lib/fileContents.d.ts +0 -25
- package/lib/fileContents.d.ts.map +0 -1
- package/lib/fileContents.js +0 -80
- package/lib/fileContents.js.map +0 -1
- package/lib/index.d.ts +0 -16
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -27
- package/lib/index.js.map +0 -1
- package/lib/packageEntry.d.ts +0 -16
- package/lib/packageEntry.d.ts.map +0 -1
- package/lib/packageEntry.js +0 -40
- package/lib/packageEntry.js.map +0 -1
- package/lib/packageOrder.d.ts +0 -12
- package/lib/packageOrder.d.ts.map +0 -1
- package/lib/packageOrder.js +0 -103
- package/lib/packageOrder.js.map +0 -1
- package/lib/packageScript.d.ts +0 -25
- package/lib/packageScript.d.ts.map +0 -1
- package/lib/packageScript.js +0 -89
- package/lib/packageScript.js.map +0 -1
- package/lib/standardTsconfig.d.ts +0 -33
- package/lib/standardTsconfig.d.ts.map +0 -1
- package/lib/standardTsconfig.js +0 -98
- package/lib/standardTsconfig.js.map +0 -1
- package/lib/util/checkAlpha.d.ts.map +0 -1
- package/lib/util/checkAlpha.js +0 -47
- package/lib/util/checkAlpha.js.map +0 -1
- package/lib/util/makeDirectory.d.ts.map +0 -1
- package/lib/util/makeDirectory.js +0 -27
- package/lib/util/makeDirectory.js.map +0 -1
- package/tsconfig.tsbuildinfo +0 -2510
- /package/{lib → build/types}/__tests__/alphabeticalScripts.spec.d.ts +0 -0
- /package/{lib → build/types}/__tests__/consistentDependencies.spec.d.ts +0 -0
- /package/{lib → build/types}/__tests__/fileContents.spec.d.ts +0 -0
- /package/{lib → build/types}/__tests__/packageEntry.spec.d.ts +0 -0
- /package/{lib → build/types}/__tests__/packageOrder.spec.d.ts +0 -0
- /package/{lib → build/types}/__tests__/packageScript.spec.d.ts +0 -0
- /package/{lib → build/types}/util/makeDirectory.d.ts +0 -0
- /package/{jest.config.js → jest.config.cjs} +0 -0
package/lib/index.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright 2019 Palantir Technologies, Inc.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
var alphabeticalDependencies_1 = require("./alphabeticalDependencies");
|
|
10
|
-
exports.alphabeticalDependencies = alphabeticalDependencies_1.alphabeticalDependencies;
|
|
11
|
-
var alphabeticalScripts_1 = require("./alphabeticalScripts");
|
|
12
|
-
exports.alphabeticalScripts = alphabeticalScripts_1.alphabeticalScripts;
|
|
13
|
-
var bannedDependencies_1 = require("./bannedDependencies");
|
|
14
|
-
exports.bannedDependencies = bannedDependencies_1.bannedDependencies;
|
|
15
|
-
var consistentDependencies_1 = require("./consistentDependencies");
|
|
16
|
-
exports.consistentDependencies = consistentDependencies_1.consistentDependencies;
|
|
17
|
-
var fileContents_1 = require("./fileContents");
|
|
18
|
-
exports.fileContents = fileContents_1.fileContents;
|
|
19
|
-
var packageOrder_1 = require("./packageOrder");
|
|
20
|
-
exports.packageOrder = packageOrder_1.packageOrder;
|
|
21
|
-
var packageEntry_1 = require("./packageEntry");
|
|
22
|
-
exports.packageEntry = packageEntry_1.packageEntry;
|
|
23
|
-
var packageScript_1 = require("./packageScript");
|
|
24
|
-
exports.packageScript = packageScript_1.packageScript;
|
|
25
|
-
var standardTsconfig_1 = require("./standardTsconfig");
|
|
26
|
-
exports.standardTsconfig = standardTsconfig_1.standardTsconfig;
|
|
27
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,uEAAsE;AAA7D,8DAAA,wBAAwB,CAAA;AACjC,6DAA4D;AAAnD,oDAAA,mBAAmB,CAAA;AAC5B,2DAA0D;AAAjD,kDAAA,kBAAkB,CAAA;AAC3B,mEAAkE;AAAzD,0DAAA,sBAAsB,CAAA;AAC/B,+CAA8C;AAArC,sCAAA,YAAY,CAAA;AACrB,+CAA8C;AAArC,sCAAA,YAAY,CAAA;AACrB,+CAA8C;AAArC,sCAAA,YAAY,CAAA;AACrB,iDAAgD;AAAvC,wCAAA,aAAa,CAAA;AACtB,uDAAsD;AAA7C,8CAAA,gBAAgB,CAAA"}
|
package/lib/packageEntry.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright 2019 Palantir Technologies, Inc.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
5
|
-
*
|
|
6
|
-
*/
|
|
7
|
-
import { RuleModule } from "@monorepolint/core";
|
|
8
|
-
import * as r from "runtypes";
|
|
9
|
-
export declare const Options: r.Record<{
|
|
10
|
-
entries: r.StringDictionary<r.Unknown>;
|
|
11
|
-
}, false>;
|
|
12
|
-
export declare type Options = r.Static<typeof Options>;
|
|
13
|
-
export declare const packageEntry: RuleModule<r.Record<{
|
|
14
|
-
entries: r.StringDictionary<r.Unknown>;
|
|
15
|
-
}, false>>;
|
|
16
|
-
//# sourceMappingURL=packageEntry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packageEntry.d.ts","sourceRoot":"","sources":["../src/packageEntry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,eAAO,MAAM,OAAO;;SAElB,CAAC;AAEH,oBAAY,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;AAE/C,eAAO,MAAM,YAAY;;UA2BM,CAAC"}
|
package/lib/packageEntry.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright 2019 Palantir Technologies, Inc.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
const tslib_1 = require("tslib");
|
|
10
|
-
const utils_1 = require("@monorepolint/utils");
|
|
11
|
-
const jest_diff_1 = tslib_1.__importDefault(require("jest-diff"));
|
|
12
|
-
const r = tslib_1.__importStar(require("runtypes"));
|
|
13
|
-
exports.Options = r.Record({
|
|
14
|
-
entries: r.Dictionary(r.Unknown),
|
|
15
|
-
});
|
|
16
|
-
exports.packageEntry = {
|
|
17
|
-
check: function expectPackageEntry(context, options) {
|
|
18
|
-
const packageJson = context.getPackageJson();
|
|
19
|
-
for (const key of Object.keys(options.entries)) {
|
|
20
|
-
const value = options.entries[key];
|
|
21
|
-
const entryDiff = jest_diff_1.default(JSON.stringify(value) + "\n", (JSON.stringify(packageJson[key]) || "") + "\n");
|
|
22
|
-
if ((typeof value !== "object" && value !== packageJson[key]) ||
|
|
23
|
-
(entryDiff == null || !entryDiff.includes("Compared values have no visual difference"))) {
|
|
24
|
-
context.addError({
|
|
25
|
-
file: context.getPackageJsonPath(),
|
|
26
|
-
message: `Expected standardized entry for '${key}'`,
|
|
27
|
-
longMessage: entryDiff,
|
|
28
|
-
fixer: () => {
|
|
29
|
-
utils_1.mutateJson(context.getPackageJsonPath(), input => {
|
|
30
|
-
input[key] = value;
|
|
31
|
-
return input;
|
|
32
|
-
});
|
|
33
|
-
},
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
optionsRuntype: exports.Options,
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=packageEntry.js.map
|
package/lib/packageEntry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packageEntry.js","sourceRoot":"","sources":["../src/packageEntry.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,+CAA8D;AAC9D,kEAA6B;AAC7B,oDAA8B;AAEjB,QAAA,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;CACjC,CAAC,CAAC;AAIU,QAAA,YAAY,GAAG;IAC1B,KAAK,EAAE,SAAS,kBAAkB,CAAC,OAAgB,EAAE,OAAgB;QACnE,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QAE7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEnC,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACtG,IACE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC;gBACzD,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC,EACvF;gBACA,OAAO,CAAC,QAAQ,CAAC;oBACf,IAAI,EAAE,OAAO,CAAC,kBAAkB,EAAE;oBAClC,OAAO,EAAE,oCAAoC,GAAG,GAAG;oBACnD,WAAW,EAAE,SAAS;oBACtB,KAAK,EAAE,GAAG,EAAE;wBACV,kBAAU,CAAc,OAAO,CAAC,kBAAkB,EAAE,EAAE,KAAK,CAAC,EAAE;4BAC5D,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;4BACnB,OAAO,KAAK,CAAC;wBACf,CAAC,CAAC,CAAC;oBACL,CAAC;iBACF,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IACD,cAAc,EAAE,eAAO;CACM,CAAC"}
|
package/lib/packageOrder.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright 2019 Palantir Technologies, Inc.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
5
|
-
*
|
|
6
|
-
*/
|
|
7
|
-
import { RuleModule } from "@monorepolint/core";
|
|
8
|
-
import * as r from "runtypes";
|
|
9
|
-
export declare const packageOrder: RuleModule<r.Union2<r.Record<{
|
|
10
|
-
order: r.Union2<r.Array<r.String, false>, r.Function>;
|
|
11
|
-
}, false>, r.Literal<undefined>>>;
|
|
12
|
-
//# sourceMappingURL=packageOrder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packageOrder.d.ts","sourceRoot":"","sources":["../src/packageOrder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAyC9B,eAAO,MAAM,YAAY;;iCA8BM,CAAC"}
|
package/lib/packageOrder.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright 2019 Palantir Technologies, Inc.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
const tslib_1 = require("tslib");
|
|
10
|
-
const utils_1 = require("@monorepolint/utils");
|
|
11
|
-
const jest_diff_1 = tslib_1.__importDefault(require("jest-diff"));
|
|
12
|
-
const r = tslib_1.__importStar(require("runtypes"));
|
|
13
|
-
const Options = r
|
|
14
|
-
.Record({
|
|
15
|
-
order: r.Union(r.Array(r.String), r.Function),
|
|
16
|
-
})
|
|
17
|
-
.Or(r.Undefined);
|
|
18
|
-
const defaultKeyOrder = [
|
|
19
|
-
"name",
|
|
20
|
-
"version",
|
|
21
|
-
"description",
|
|
22
|
-
"author",
|
|
23
|
-
"contributors",
|
|
24
|
-
"url",
|
|
25
|
-
"license",
|
|
26
|
-
"private",
|
|
27
|
-
"engines",
|
|
28
|
-
"bin",
|
|
29
|
-
"main",
|
|
30
|
-
"module",
|
|
31
|
-
"typings",
|
|
32
|
-
"style",
|
|
33
|
-
"sideEffects",
|
|
34
|
-
"workspaces",
|
|
35
|
-
"husky",
|
|
36
|
-
"lint-staged",
|
|
37
|
-
"files",
|
|
38
|
-
"scripts",
|
|
39
|
-
"resolutions",
|
|
40
|
-
"dependencies",
|
|
41
|
-
"peerDependencies",
|
|
42
|
-
"devDependencies",
|
|
43
|
-
"optionalDependencies",
|
|
44
|
-
"publishConfig",
|
|
45
|
-
];
|
|
46
|
-
exports.packageOrder = {
|
|
47
|
-
check: function expectPackageOrder(context, opts) {
|
|
48
|
-
const packageJson = context.getPackageJson();
|
|
49
|
-
const packagePath = context.getPackageJsonPath();
|
|
50
|
-
const order = opts === undefined ? defaultKeyOrder : opts.order;
|
|
51
|
-
const compartor = isOrderFunction(order) ? order(context) : createCompartor(order);
|
|
52
|
-
const actualOrder = Object.keys(packageJson);
|
|
53
|
-
const expectedOrder = actualOrder.slice().sort(compartor); // sort mutates, so we need to copy the previous result
|
|
54
|
-
if (!arrayOrderCompare(actualOrder, expectedOrder)) {
|
|
55
|
-
context.addError({
|
|
56
|
-
file: packagePath,
|
|
57
|
-
message: "Incorrect order of fields in package.json",
|
|
58
|
-
longMessage: jest_diff_1.default(expectedOrder, actualOrder, { expand: true }),
|
|
59
|
-
fixer: () => {
|
|
60
|
-
const expectedPackageJson = {};
|
|
61
|
-
expectedOrder.forEach(key => {
|
|
62
|
-
expectedPackageJson[key] = packageJson[key];
|
|
63
|
-
});
|
|
64
|
-
utils_1.writeJson(packagePath, expectedPackageJson);
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
optionsRuntype: Options,
|
|
70
|
-
};
|
|
71
|
-
function arrayOrderCompare(a, b) {
|
|
72
|
-
for (let index = 0; index < a.length; index++) {
|
|
73
|
-
if (a[index] !== b[index]) {
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
function createCompartor(order) {
|
|
80
|
-
return (a, b) => {
|
|
81
|
-
const aIndex = order.indexOf(a);
|
|
82
|
-
const bIndex = order.indexOf(b);
|
|
83
|
-
// if one of the two is missing from the order array, push it further down
|
|
84
|
-
if (aIndex >= 0 && bIndex < 0) {
|
|
85
|
-
return -1;
|
|
86
|
-
}
|
|
87
|
-
else if (aIndex < 0 && bIndex >= 0) {
|
|
88
|
-
return 1;
|
|
89
|
-
}
|
|
90
|
-
// otherwise compare the indexes and use alphabetical as a tie breaker
|
|
91
|
-
const compared = aIndex - bIndex;
|
|
92
|
-
if (compared !== 0) {
|
|
93
|
-
return compared;
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
return a.localeCompare(b);
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
function isOrderFunction(order) {
|
|
101
|
-
return !Array.isArray(order);
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=packageOrder.js.map
|
package/lib/packageOrder.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packageOrder.js","sourceRoot":"","sources":["../src/packageOrder.ts"],"names":[],"mappings":"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"}
|
package/lib/packageScript.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright 2019 Palantir Technologies, Inc.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
5
|
-
*
|
|
6
|
-
*/
|
|
7
|
-
import { RuleModule } from "@monorepolint/core";
|
|
8
|
-
import * as r from "runtypes";
|
|
9
|
-
export declare const Options: r.Record<{
|
|
10
|
-
scripts: r.StringDictionary<r.Union2<r.String, r.Intersect2<r.Record<{
|
|
11
|
-
options: r.Array<r.Union2<r.String, r.Literal<undefined>>, false>;
|
|
12
|
-
}, false>, r.Part<{
|
|
13
|
-
fixValue: r.Union3<r.String, r.Literal<undefined>, r.Literal<false>>;
|
|
14
|
-
}>>>>;
|
|
15
|
-
}, false>;
|
|
16
|
-
export declare type Options = r.Static<typeof Options>;
|
|
17
|
-
export declare const MSG_NO_SCRIPTS_BLOCK = "No scripts block in package.json";
|
|
18
|
-
export declare const packageScript: RuleModule<r.Record<{
|
|
19
|
-
scripts: r.StringDictionary<r.Union2<r.String, r.Intersect2<r.Record<{
|
|
20
|
-
options: r.Array<r.Union2<r.String, r.Literal<undefined>>, false>;
|
|
21
|
-
}, false>, r.Part<{
|
|
22
|
-
fixValue: r.Union3<r.String, r.Literal<undefined>, r.Literal<false>>;
|
|
23
|
-
}>>>>;
|
|
24
|
-
}, false>>;
|
|
25
|
-
//# sourceMappingURL=packageScript.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packageScript.d.ts","sourceRoot":"","sources":["../src/packageScript.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,eAAO,MAAM,OAAO;;;;;;SAelB,CAAC;AAEH,oBAAY,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;AAE/C,eAAO,MAAM,oBAAoB,qCAAqC,CAAC;AAEvE,eAAO,MAAM,aAAa;;;;;;UAqEK,CAAC"}
|
package/lib/packageScript.js
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright 2019 Palantir Technologies, Inc.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
const tslib_1 = require("tslib");
|
|
10
|
-
const utils_1 = require("@monorepolint/utils");
|
|
11
|
-
const jest_diff_1 = tslib_1.__importDefault(require("jest-diff"));
|
|
12
|
-
const r = tslib_1.__importStar(require("runtypes"));
|
|
13
|
-
exports.Options = r.Record({
|
|
14
|
-
scripts: r.Dictionary(r.Union(r.String, r
|
|
15
|
-
.Record({
|
|
16
|
-
options: r.Array(r.String.Or(r.Undefined)),
|
|
17
|
-
})
|
|
18
|
-
.And(r.Partial({
|
|
19
|
-
fixValue: r.Union(r.String, r.Undefined, r.Literal(false)),
|
|
20
|
-
})))),
|
|
21
|
-
});
|
|
22
|
-
exports.MSG_NO_SCRIPTS_BLOCK = "No scripts block in package.json";
|
|
23
|
-
exports.packageScript = {
|
|
24
|
-
check: function expectPackageScript(context, options) {
|
|
25
|
-
const packageJson = context.getPackageJson();
|
|
26
|
-
if (packageJson.scripts === undefined) {
|
|
27
|
-
context.addError({
|
|
28
|
-
file: context.getPackageJsonPath(),
|
|
29
|
-
message: exports.MSG_NO_SCRIPTS_BLOCK,
|
|
30
|
-
fixer: () => {
|
|
31
|
-
utils_1.mutateJson(context.getPackageJsonPath(), input => {
|
|
32
|
-
input.scripts = {};
|
|
33
|
-
return input;
|
|
34
|
-
});
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
for (const [name, value] of Object.entries(options.scripts)) {
|
|
40
|
-
const allowedValues = new Set();
|
|
41
|
-
let fixValue;
|
|
42
|
-
let allowEmpty = false;
|
|
43
|
-
let fixToEmpty = false;
|
|
44
|
-
if (typeof value === "string") {
|
|
45
|
-
allowedValues.add(value);
|
|
46
|
-
fixValue = value;
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
for (const q of value.options) {
|
|
50
|
-
if (q === undefined) {
|
|
51
|
-
allowEmpty = true;
|
|
52
|
-
}
|
|
53
|
-
allowedValues.add(q);
|
|
54
|
-
}
|
|
55
|
-
fixToEmpty = value.hasOwnProperty("fixValue") && value.fixValue === undefined;
|
|
56
|
-
fixValue = value.fixValue;
|
|
57
|
-
}
|
|
58
|
-
const actualValue = packageJson.scripts[name];
|
|
59
|
-
if (!allowedValues.has(actualValue) && !(allowEmpty === true && actualValue === undefined)) {
|
|
60
|
-
let fixer;
|
|
61
|
-
if (fixValue !== false && (fixValue !== undefined || fixToEmpty === true)) {
|
|
62
|
-
const q = fixValue;
|
|
63
|
-
fixer = () => {
|
|
64
|
-
utils_1.mutateJson(context.getPackageJsonPath(), input => {
|
|
65
|
-
if (fixToEmpty && q === undefined) {
|
|
66
|
-
delete input.scripts[name];
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
input.scripts[name] = q;
|
|
70
|
-
}
|
|
71
|
-
return input;
|
|
72
|
-
});
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
const validOptionsString = Array.from(allowedValues.values())
|
|
76
|
-
.map(a => (a === undefined ? "(empty)" : `'${a}'`))
|
|
77
|
-
.join(", ");
|
|
78
|
-
context.addError({
|
|
79
|
-
file: context.getPackageJsonPath(),
|
|
80
|
-
message: `Expected standardized script entry for '${name}'. Valid options: ${validOptionsString}`,
|
|
81
|
-
longMessage: jest_diff_1.default(validOptionsString + "\n", (packageJson.scripts[name] || "") + "\n"),
|
|
82
|
-
fixer,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
optionsRuntype: exports.Options,
|
|
88
|
-
};
|
|
89
|
-
//# sourceMappingURL=packageScript.js.map
|
package/lib/packageScript.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packageScript.js","sourceRoot":"","sources":["../src/packageScript.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright 2019 Palantir Technologies, Inc.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
5
|
-
*
|
|
6
|
-
*/
|
|
7
|
-
import { RuleModule } from "@monorepolint/core";
|
|
8
|
-
import * as r from "runtypes";
|
|
9
|
-
declare const Options: r.Constraint<r.Part<{
|
|
10
|
-
generator: r.Function;
|
|
11
|
-
template: r.Union2<r.Record<{}, false>, r.String>;
|
|
12
|
-
templateFile: r.String;
|
|
13
|
-
excludedReferences: r.Union2<r.Array<r.String, false>, r.Literal<undefined>>;
|
|
14
|
-
}>, {
|
|
15
|
-
generator?: ((...args: any[]) => any) | undefined;
|
|
16
|
-
template?: string | {} | undefined;
|
|
17
|
-
templateFile?: string | undefined;
|
|
18
|
-
excludedReferences?: string[] | undefined;
|
|
19
|
-
}, unknown>;
|
|
20
|
-
export declare type Options = r.Static<typeof Options>;
|
|
21
|
-
export declare const standardTsconfig: RuleModule<r.Constraint<r.Part<{
|
|
22
|
-
generator: r.Function;
|
|
23
|
-
template: r.Union2<r.Record<{}, false>, r.String>;
|
|
24
|
-
templateFile: r.String;
|
|
25
|
-
excludedReferences: r.Union2<r.Array<r.String, false>, r.Literal<undefined>>;
|
|
26
|
-
}>, {
|
|
27
|
-
generator?: ((...args: any[]) => any) | undefined;
|
|
28
|
-
template?: string | {} | undefined;
|
|
29
|
-
templateFile?: string | undefined;
|
|
30
|
-
excludedReferences?: string[] | undefined;
|
|
31
|
-
}, unknown>>;
|
|
32
|
-
export {};
|
|
33
|
-
//# sourceMappingURL=standardTsconfig.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"standardTsconfig.d.ts","sourceRoot":"","sources":["../src/standardTsconfig.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMzD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,QAAA,MAAM,OAAO;;;;;;;;;;WAoBT,CAAC;AAEL,oBAAY,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;AAE/C,eAAO,MAAM,gBAAgB;;;;;;;;;;YA4BE,CAAC"}
|
package/lib/standardTsconfig.js
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright 2019 Palantir Technologies, Inc.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
const tslib_1 = require("tslib");
|
|
10
|
-
const utils_1 = require("@monorepolint/utils");
|
|
11
|
-
const fs_1 = require("fs");
|
|
12
|
-
const jest_diff_1 = tslib_1.__importDefault(require("jest-diff"));
|
|
13
|
-
const minimatch_1 = tslib_1.__importDefault(require("minimatch"));
|
|
14
|
-
const path = tslib_1.__importStar(require("path"));
|
|
15
|
-
const r = tslib_1.__importStar(require("runtypes"));
|
|
16
|
-
const Options = r
|
|
17
|
-
.Partial({
|
|
18
|
-
generator: r.Function,
|
|
19
|
-
template: r.Record({}).Or(r.String),
|
|
20
|
-
templateFile: r.String,
|
|
21
|
-
excludedReferences: r.Array(r.String).Or(r.Undefined),
|
|
22
|
-
})
|
|
23
|
-
.withConstraint(({ generator, template, templateFile }) => {
|
|
24
|
-
let count = 0;
|
|
25
|
-
if (generator) {
|
|
26
|
-
count++;
|
|
27
|
-
}
|
|
28
|
-
if (template) {
|
|
29
|
-
count++;
|
|
30
|
-
}
|
|
31
|
-
if (templateFile) {
|
|
32
|
-
count++;
|
|
33
|
-
}
|
|
34
|
-
return count === 1 || "Expect one of { generator, template, templateFile }";
|
|
35
|
-
});
|
|
36
|
-
exports.standardTsconfig = {
|
|
37
|
-
check: function expectStandardTsconfig(context, opts) {
|
|
38
|
-
const fullPath = path.resolve(context.packageDir, "tsconfig.json");
|
|
39
|
-
const generator = getGenerator(context, opts);
|
|
40
|
-
const expectedContent = generator(context);
|
|
41
|
-
const actualContent = fs_1.existsSync(fullPath) ? fs_1.readFileSync(fullPath, "utf-8") : undefined;
|
|
42
|
-
if (expectedContent === undefined) {
|
|
43
|
-
context.addWarning({
|
|
44
|
-
file: fullPath,
|
|
45
|
-
message: "Excluding from expect-standard-tsconfig",
|
|
46
|
-
});
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
if (actualContent !== expectedContent) {
|
|
50
|
-
context.addError({
|
|
51
|
-
file: fullPath,
|
|
52
|
-
message: "Expect file contents to match",
|
|
53
|
-
longMessage: jest_diff_1.default(expectedContent, actualContent, { expand: true }),
|
|
54
|
-
fixer: () => {
|
|
55
|
-
fs_1.writeFileSync(fullPath, expectedContent);
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
optionsRuntype: Options,
|
|
61
|
-
};
|
|
62
|
-
function getGenerator(context, opts) {
|
|
63
|
-
if (opts.generator) {
|
|
64
|
-
return opts.generator;
|
|
65
|
-
}
|
|
66
|
-
else if (opts.templateFile) {
|
|
67
|
-
const { packageDir: workspacePackageDir } = context.getWorkspaceContext();
|
|
68
|
-
const fullPath = path.resolve(workspacePackageDir, opts.templateFile);
|
|
69
|
-
const template = JSON.parse(fs_1.readFileSync(fullPath, "utf-8"));
|
|
70
|
-
return makeGenerator(template, opts.excludedReferences);
|
|
71
|
-
}
|
|
72
|
-
else if (opts.template) {
|
|
73
|
-
return makeGenerator(opts.template, opts.excludedReferences);
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
throw new Error("Unable to make generator");
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
function makeGenerator(template, excludedReferences = []) {
|
|
80
|
-
return function generator(context) {
|
|
81
|
-
template = {
|
|
82
|
-
...template,
|
|
83
|
-
references: [],
|
|
84
|
-
}; // make a copy and ensure we have a references array
|
|
85
|
-
const nameToDirectory = utils_1.getPackageNameToDir(context.getWorkspaceContext().packageDir);
|
|
86
|
-
const packageJson = context.getPackageJson();
|
|
87
|
-
const deps = [...Object.keys(packageJson.dependencies || {}), ...Object.keys(packageJson.devDependencies || {})];
|
|
88
|
-
deps
|
|
89
|
-
.filter(name => nameToDirectory.has(name) && !excludedReferences.some(excludedRef => minimatch_1.default(name, excludedRef)))
|
|
90
|
-
.forEach(packageName => {
|
|
91
|
-
template.references.push({
|
|
92
|
-
path: path.relative(context.packageDir, nameToDirectory.get(packageName)),
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
return JSON.stringify(template, undefined, 2) + "\n";
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=standardTsconfig.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"standardTsconfig.js","sourceRoot":"","sources":["../src/standardTsconfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkAlpha.d.ts","sourceRoot":"","sources":["../../src/util/checkAlpha.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,wBAAgB,UAAU,CACxB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,SAAS,QAgC3E"}
|
package/lib/util/checkAlpha.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright 2019 Palantir Technologies, Inc.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
const tslib_1 = require("tslib");
|
|
10
|
-
const utils_1 = require("@monorepolint/utils");
|
|
11
|
-
const jest_diff_1 = tslib_1.__importDefault(require("jest-diff"));
|
|
12
|
-
function checkAlpha(context, block) {
|
|
13
|
-
const packageJson = context.getPackageJson();
|
|
14
|
-
const packagePath = context.getPackageJsonPath();
|
|
15
|
-
const blockToSort = packageJson[block];
|
|
16
|
-
if (blockToSort === undefined) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
const actualOrder = Object.keys(blockToSort);
|
|
20
|
-
const expectedOrder = actualOrder.slice().sort(); // sort mutates, so we need to copy the previous result
|
|
21
|
-
if (!arrayOrderCompare(actualOrder, expectedOrder)) {
|
|
22
|
-
context.addError({
|
|
23
|
-
file: packagePath,
|
|
24
|
-
message: `Incorrect order of ${block} in package.json`,
|
|
25
|
-
longMessage: jest_diff_1.default(expectedOrder, actualOrder, { expand: true }),
|
|
26
|
-
fixer: () => {
|
|
27
|
-
const expectedDependencies = {};
|
|
28
|
-
expectedOrder.forEach(dep => {
|
|
29
|
-
expectedDependencies[dep] = blockToSort[dep];
|
|
30
|
-
});
|
|
31
|
-
const newPackageJson = { ...packageJson };
|
|
32
|
-
newPackageJson[block] = expectedDependencies;
|
|
33
|
-
utils_1.writeJson(packagePath, newPackageJson);
|
|
34
|
-
},
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
exports.checkAlpha = checkAlpha;
|
|
39
|
-
function arrayOrderCompare(a, b) {
|
|
40
|
-
for (let index = 0; index < a.length; index++) {
|
|
41
|
-
if (a[index] !== b[index]) {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=checkAlpha.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkAlpha.js","sourceRoot":"","sources":["../../src/util/checkAlpha.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,+CAAgD;AAChD,kEAA6B;AAE7B,SAAgB,UAAU,CACxB,OAAgB,EAChB,KAA0E;IAE1E,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAEjD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,WAAW,KAAK,SAAS,EAAE;QAC7B,OAAO;KACR;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,uDAAuD;IAEzG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE;QAClD,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,sBAAsB,KAAK,kBAAkB;YACtD,WAAW,EAAE,mBAAI,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC/D,KAAK,EAAE,GAAG,EAAE;gBACV,MAAM,oBAAoB,GAA2B,EAAE,CAAC;gBAExD,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBAC1B,oBAAoB,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBAEH,MAAM,cAAc,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;gBAC1C,cAAc,CAAC,KAAK,CAAC,GAAG,oBAAoB,CAAC;gBAC7C,iBAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACzC,CAAC;SACF,CAAC,CAAC;KACJ;AACH,CAAC;AAlCD,gCAkCC;AAED,SAAS,iBAAiB,CAAC,CAAwB,EAAE,CAAwB;IAC3E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC7C,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"makeDirectory.d.ts","sourceRoot":"","sources":["../../src/util/makeDirectory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,QAa7D"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright 2019 Palantir Technologies, Inc.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
const tslib_1 = require("tslib");
|
|
10
|
-
const fs_1 = require("fs");
|
|
11
|
-
const path = tslib_1.__importStar(require("path"));
|
|
12
|
-
function makeDirectoryRecursively(directoryPath) {
|
|
13
|
-
// node < 10 doesn't support mkdirSync w/ recursive: true
|
|
14
|
-
// so we manually do it instead
|
|
15
|
-
const dirSegments = directoryPath.split(path.sep);
|
|
16
|
-
for (let i = 0; i < dirSegments.length; i++) {
|
|
17
|
-
if (dirSegments[i].length > 0) {
|
|
18
|
-
// we skip the empty segment
|
|
19
|
-
const curDirPath = dirSegments.slice(0, i + 1).join(path.sep);
|
|
20
|
-
if (!fs_1.existsSync(curDirPath)) {
|
|
21
|
-
fs_1.mkdirSync(curDirPath);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
exports.makeDirectoryRecursively = makeDirectoryRecursively;
|
|
27
|
-
//# sourceMappingURL=makeDirectory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"makeDirectory.js","sourceRoot":"","sources":["../../src/util/makeDirectory.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,2BAA2C;AAC3C,mDAA6B;AAE7B,SAAgB,wBAAwB,CAAC,aAAqB;IAC5D,yDAAyD;IACzD,+BAA+B;IAC/B,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,4BAA4B;YAC5B,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9D,IAAI,CAAC,eAAU,CAAC,UAAU,CAAC,EAAE;gBAC3B,cAAS,CAAC,UAAU,CAAC,CAAC;aACvB;SACF;KACF;AACH,CAAC;AAbD,4DAaC"}
|