rc-config-loader 3.0.0 → 4.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.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # rc-config-loader [![Build Status](https://travis-ci.org/azu/rc-config-loader.svg?branch=master)](https://travis-ci.org/azu/rc-config-loader)
1
+ # rc-config-loader [![Actions Status: test](https://github.com/azu/rc-config-loader/workflows/test/badge.svg)](https://github.com/azu/rc-config-loader/actions?query=workflow%3A"test")
2
2
 
3
3
  Load config from `.{product}rc.{json,yml,js}` file.
4
4
 
@@ -26,9 +26,10 @@ Find and load a configuration object from:
26
26
 
27
27
  - <del>Sync loading</del>
28
28
  - [cosmiconfig@3+](https://github.com/davidtheclark/cosmiconfig/blob/master/CHANGELOG.md#300) support `sync` option
29
- - Built-in TypeScript support
29
+ - <del>Built-in TypeScript support</del>
30
+ - [comisconfig@6*](https://github.com/davidtheclark/cosmiconfig/blob/master/CHANGELOG.md#600) is written by TypeScript
30
31
 
31
- If you want to async support and customize loader, recommenced to use [cosmiconfig](https://github.com/davidtheclark/cosmiconfig).
32
+ If you want to async support and customize loader, recommended to use [cosmiconfig](https://github.com/davidtheclark/cosmiconfig).
32
33
 
33
34
  ## Install
34
35
 
@@ -91,7 +92,7 @@ function loadRcFile(rcFileName){
91
92
  if (!results) {
92
93
  return {};
93
94
  }
94
- return config;
95
+ return results.config;
95
96
  } catch (error) {
96
97
  // Found it, but it is parsing error
97
98
  return {} ; // default value
@@ -3,30 +3,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.rcFile = void 0;
6
7
  // MIT © 2017 azu
7
8
  // MIT © Zoltan Kochan
8
9
  // Original https://github.com/zkochan/rcfile
9
- var path_1 = __importDefault(require("path"));
10
- var fs_1 = __importDefault(require("fs"));
11
- var debug = require("debug")("rc-config-loader");
12
- var requireFromString = require("require-from-string");
13
- var JSON5 = require("json5");
14
- var defaultLoaderByExt = {
10
+ const path_1 = __importDefault(require("path"));
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const require_from_string_1 = __importDefault(require("require-from-string"));
13
+ const json5_1 = __importDefault(require("json5"));
14
+ const debug = require("debug")("rc-config-loader");
15
+ const defaultLoaderByExt = {
15
16
  ".js": loadJSConfigFile,
16
17
  ".json": loadJSONConfigFile,
17
18
  ".yaml": loadYAMLConfigFile,
18
- ".yml": loadYAMLConfigFile
19
+ ".yml": loadYAMLConfigFile,
19
20
  };
20
- var defaultOptions = {
21
+ const defaultOptions = {
21
22
  // does look for `package.json`
22
23
  packageJSON: false,
23
24
  // treat default(no ext file) as some extension
24
25
  defaultExtension: [".json", ".yaml", ".yml", ".js"],
25
- cwd: process.cwd()
26
+ cwd: process.cwd(),
26
27
  };
27
- var selectLoader = function (defaultLoaderByExt, extension) {
28
+ const selectLoader = (defaultLoaderByExt, extension) => {
28
29
  if (![".json", ".yaml", ".yml", ".js"].includes(extension)) {
29
- throw new Error(extension + " is not supported.");
30
+ throw new Error(`${extension} is not supported.`);
30
31
  }
31
32
  return defaultLoaderByExt[extension];
32
33
  };
@@ -37,28 +38,25 @@ var selectLoader = function (defaultLoaderByExt, extension) {
37
38
  * @param {rcConfigLoaderOption} [opts]
38
39
  * @returns {{ config: Object, filePath:string } | undefined}
39
40
  */
40
- function rcFile(pkgName, opts) {
41
- if (opts === void 0) { opts = {}; }
41
+ function rcFile(pkgName, opts = {}) {
42
42
  // path/to/config or basename of config file.
43
- var configFileName = opts.configFileName || "." + pkgName + "rc";
44
- var defaultExtension = opts.defaultExtension || defaultOptions.defaultExtension;
45
- var cwd = opts.cwd || defaultOptions.cwd;
46
- var packageJSON = opts.packageJSON || defaultOptions.packageJSON;
47
- var packageJSONFieldName = typeof packageJSON === "object" ? packageJSON.fieldName : pkgName;
48
- var parts = splitPath(cwd);
49
- var loadersByOrder = Array.isArray(defaultExtension)
50
- ? defaultExtension.map(function (extension) { return selectLoader(defaultLoaderByExt, extension); })
43
+ const configFileName = opts.configFileName || `.${pkgName}rc`;
44
+ const defaultExtension = opts.defaultExtension || defaultOptions.defaultExtension;
45
+ const cwd = opts.cwd || defaultOptions.cwd;
46
+ const packageJSON = opts.packageJSON || defaultOptions.packageJSON;
47
+ const packageJSONFieldName = typeof packageJSON === "object" ? packageJSON.fieldName : pkgName;
48
+ const parts = splitPath(cwd);
49
+ const loadersByOrder = Array.isArray(defaultExtension)
50
+ ? defaultExtension.map((extension) => selectLoader(defaultLoaderByExt, extension))
51
51
  : selectLoader(defaultLoaderByExt, defaultExtension);
52
- var loaderByExt = Object.assign({}, defaultLoaderByExt, {
53
- "": loadersByOrder
54
- });
52
+ const loaderByExt = Object.assign(Object.assign({}, defaultLoaderByExt), { "": loadersByOrder });
55
53
  return findConfig({
56
- parts: parts,
57
- loaderByExt: loaderByExt,
58
- loadersByOrder: loadersByOrder,
59
- configFileName: configFileName,
60
- packageJSON: packageJSON,
61
- packageJSONFieldName: packageJSONFieldName
54
+ parts,
55
+ loaderByExt,
56
+ loadersByOrder,
57
+ configFileName,
58
+ packageJSON,
59
+ packageJSONFieldName,
62
60
  });
63
61
  }
64
62
  exports.rcFile = rcFile;
@@ -69,55 +67,54 @@ exports.rcFile = rcFile;
69
67
  * filePath: string
70
68
  * }}
71
69
  */
72
- function findConfig(_a) {
73
- var parts = _a.parts, loaderByExt = _a.loaderByExt, loadersByOrder = _a.loadersByOrder, configFileName = _a.configFileName, packageJSON = _a.packageJSON, packageJSONFieldName = _a.packageJSONFieldName;
74
- var extensions = Object.keys(loaderByExt);
70
+ function findConfig({ parts, loaderByExt, loadersByOrder, configFileName, packageJSON, packageJSONFieldName, }) {
71
+ const extensions = Object.keys(loaderByExt);
75
72
  while (extensions.length) {
76
- var ext = extensions.shift();
73
+ const ext = extensions.shift();
77
74
  // may be ext is "". if it .<product>rc
78
- var configLocation = join(parts, configFileName + ext);
75
+ const configLocation = join(parts, configFileName + ext);
79
76
  if (!fs_1.default.existsSync(configLocation)) {
80
77
  continue;
81
78
  }
82
79
  // if ext === ""(empty string):, use ordered loaders
83
- var loaders = ext ? loaderByExt[ext] : loadersByOrder;
80
+ const loaders = ext ? loaderByExt[ext] : loadersByOrder;
84
81
  if (!Array.isArray(loaders)) {
85
- var loader = loaders;
86
- var result = loader(configLocation, false);
82
+ const loader = loaders;
83
+ const result = loader(configLocation, false);
87
84
  if (!result) {
88
85
  continue;
89
86
  }
90
87
  return {
91
88
  config: result,
92
- filePath: configLocation
89
+ filePath: configLocation,
93
90
  };
94
91
  }
95
- for (var i = 0; i < loaders.length; i++) {
96
- var loader = loaders[i];
97
- var result = loader(configLocation, true);
92
+ for (let i = 0; i < loaders.length; i++) {
93
+ const loader = loaders[i];
94
+ const result = loader(configLocation, true);
98
95
  if (!result) {
99
96
  continue;
100
97
  }
101
98
  return {
102
99
  config: result,
103
- filePath: configLocation
100
+ filePath: configLocation,
104
101
  };
105
102
  }
106
103
  }
107
104
  if (packageJSON) {
108
- var pkgJSONLoc = join(parts, "package.json");
105
+ const pkgJSONLoc = join(parts, "package.json");
109
106
  if (fs_1.default.existsSync(pkgJSONLoc)) {
110
- var pkgJSON = require(pkgJSONLoc);
107
+ const pkgJSON = require(pkgJSONLoc);
111
108
  if (pkgJSON[packageJSONFieldName]) {
112
109
  return {
113
110
  config: pkgJSON[packageJSONFieldName],
114
- filePath: pkgJSONLoc
111
+ filePath: pkgJSONLoc,
115
112
  };
116
113
  }
117
114
  }
118
115
  }
119
116
  if (parts.pop()) {
120
- return findConfig({ parts: parts, loaderByExt: loaderByExt, loadersByOrder: loadersByOrder, configFileName: configFileName, packageJSON: packageJSON, packageJSONFieldName: packageJSONFieldName });
117
+ return findConfig({ parts, loaderByExt, loadersByOrder, configFileName, packageJSON, packageJSONFieldName });
121
118
  }
122
119
  return;
123
120
  }
@@ -128,28 +125,28 @@ function join(parts, filename) {
128
125
  return path_1.default.resolve(parts.join(path_1.default.sep) + path_1.default.sep, filename);
129
126
  }
130
127
  function loadJSConfigFile(filePath, suppress) {
131
- debug("Loading JavaScript config file: " + filePath);
128
+ debug(`Loading JavaScript config file: ${filePath}`);
132
129
  try {
133
- var content = fs_1.default.readFileSync(filePath, "utf-8");
134
- return requireFromString(content, filePath);
130
+ const content = fs_1.default.readFileSync(filePath, "utf-8");
131
+ return require_from_string_1.default(content, filePath);
135
132
  }
136
133
  catch (error) {
137
- debug("Error reading JavaScript file: " + filePath);
134
+ debug(`Error reading JavaScript file: ${filePath}`);
138
135
  if (!suppress) {
139
- error.message = "Cannot read config file: " + filePath + "\nError: " + error.message;
136
+ error.message = `Cannot read config file: ${filePath}\nError: ${error.message}`;
140
137
  throw error;
141
138
  }
142
139
  }
143
140
  }
144
141
  function loadJSONConfigFile(filePath, suppress) {
145
- debug("Loading JSON config file: " + filePath);
142
+ debug(`Loading JSON config file: ${filePath}`);
146
143
  try {
147
- return JSON5.parse(readFile(filePath));
144
+ return json5_1.default.parse(readFile(filePath));
148
145
  }
149
146
  catch (error) {
150
- debug("Error reading JSON file: " + filePath);
147
+ debug(`Error reading JSON file: ${filePath}`);
151
148
  if (!suppress) {
152
- error.message = "Cannot read config file: " + filePath + "\nError: " + error.message;
149
+ error.message = `Cannot read config file: ${filePath}\nError: ${error.message}`;
153
150
  throw error;
154
151
  }
155
152
  }
@@ -158,17 +155,17 @@ function readFile(filePath) {
158
155
  return fs_1.default.readFileSync(filePath, "utf8");
159
156
  }
160
157
  function loadYAMLConfigFile(filePath, suppress) {
161
- debug("Loading YAML config file: " + filePath);
158
+ debug(`Loading YAML config file: ${filePath}`);
162
159
  // lazy load YAML to improve performance when not used
163
- var yaml = require("js-yaml");
160
+ const yaml = require("js-yaml");
164
161
  try {
165
162
  // empty YAML file can be null, so always use
166
- return yaml.safeLoad(readFile(filePath)) || {};
163
+ return yaml.load(readFile(filePath)) || {};
167
164
  }
168
165
  catch (error) {
169
- debug("Error reading YAML file: " + filePath);
166
+ debug(`Error reading YAML file: ${filePath}`);
170
167
  if (!suppress) {
171
- error.message = "Cannot read config file: " + filePath + "\nError: " + error.message;
168
+ error.message = `Cannot read config file: ${filePath}\nError: ${error.message}`;
172
169
  throw error;
173
170
  }
174
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rc-config-loader.js","sourceRoot":"","sources":["../src/rc-config-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rc-config-loader.js","sourceRoot":"","sources":["../src/rc-config-loader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rc-config-loader",
3
- "version": "3.0.0",
3
+ "version": "4.0.0",
4
4
  "description": "load config file from .{product}rc.{json,yml,js}",
5
5
  "keywords": [
6
6
  "config",
@@ -32,7 +32,7 @@
32
32
  "test": "test"
33
33
  },
34
34
  "scripts": {
35
- "build": "cross-env NODE_ENV=production tsc -p .",
35
+ "build": "tsc -p .",
36
36
  "prettier": "prettier --write '**/*.{js,jsx,ts,tsx,css}'",
37
37
  "prepublish": "npm run --if-present build",
38
38
  "test": "mocha \"test/**/*.{js,ts}\"",
@@ -46,8 +46,7 @@
46
46
  },
47
47
  "lint-staged": {
48
48
  "*.{js,jsx,ts,tsx,css}": [
49
- "prettier --write",
50
- "git add"
49
+ "prettier --write"
51
50
  ]
52
51
  },
53
52
  "prettier": {
@@ -56,21 +55,22 @@
56
55
  },
57
56
  "dependencies": {
58
57
  "debug": "^4.1.1",
59
- "js-yaml": "^3.12.0",
60
- "json5": "^2.1.1",
58
+ "js-yaml": "^4.0.0",
59
+ "json5": "^2.1.2",
61
60
  "require-from-string": "^2.0.2"
62
61
  },
63
62
  "devDependencies": {
64
- "@types/mocha": "^5.2.7",
65
- "@types/node": "^12.12.5",
63
+ "@types/json5": "^0.0.30",
64
+ "@types/mocha": "^8.2.0",
65
+ "@types/node": "^14.14.20",
66
+ "@types/require-from-string": "^1.2.0",
66
67
  "chai": "^4.2.0",
67
- "cross-env": "^6.0.3",
68
- "husky": "^3.0.9",
69
- "lint-staged": "^9.4.2",
70
- "mocha": "^6.2.2",
71
- "prettier": "^1.8.2",
72
- "ts-node": "^8.4.1",
73
- "ts-node-test-register": "^8.0.1",
74
- "typescript": "^3.6.4"
68
+ "husky": "^4.2.3",
69
+ "lint-staged": "^10.1.1",
70
+ "mocha": "^8.2.1",
71
+ "prettier": "^2.0.2",
72
+ "ts-node": "^9.1.1",
73
+ "ts-node-test-register": "^9.0.1",
74
+ "typescript": "^4.1.3"
75
75
  }
76
76
  }
@@ -3,16 +3,15 @@
3
3
  // Original https://github.com/zkochan/rcfile
4
4
  import path from "path";
5
5
  import fs from "fs";
6
+ import requireFromString from "require-from-string";
7
+ import JSON5 from "json5";
6
8
 
7
9
  const debug = require("debug")("rc-config-loader");
8
- const requireFromString = require("require-from-string");
9
- const JSON5 = require("json5");
10
-
11
10
  const defaultLoaderByExt = {
12
11
  ".js": loadJSConfigFile,
13
12
  ".json": loadJSONConfigFile,
14
13
  ".yaml": loadYAMLConfigFile,
15
- ".yml": loadYAMLConfigFile
14
+ ".yml": loadYAMLConfigFile,
16
15
  };
17
16
 
18
17
  const defaultOptions = {
@@ -20,7 +19,7 @@ const defaultOptions = {
20
19
  packageJSON: false,
21
20
  // treat default(no ext file) as some extension
22
21
  defaultExtension: [".json", ".yaml", ".yml", ".js"],
23
- cwd: process.cwd()
22
+ cwd: process.cwd(),
24
23
  };
25
24
 
26
25
  export interface rcConfigLoaderOption {
@@ -72,19 +71,20 @@ export function rcFile<R extends {}>(
72
71
 
73
72
  const parts = splitPath(cwd);
74
73
  const loadersByOrder = Array.isArray(defaultExtension)
75
- ? defaultExtension.map(extension => selectLoader(defaultLoaderByExt, extension))
74
+ ? defaultExtension.map((extension) => selectLoader(defaultLoaderByExt, extension))
76
75
  : selectLoader(defaultLoaderByExt, defaultExtension);
77
76
 
78
- const loaderByExt = Object.assign({}, defaultLoaderByExt, {
79
- "": loadersByOrder
80
- });
77
+ const loaderByExt = {
78
+ ...defaultLoaderByExt,
79
+ "": loadersByOrder,
80
+ };
81
81
  return findConfig<R>({
82
82
  parts,
83
83
  loaderByExt,
84
84
  loadersByOrder,
85
85
  configFileName,
86
86
  packageJSON,
87
- packageJSONFieldName
87
+ packageJSONFieldName,
88
88
  });
89
89
  }
90
90
 
@@ -101,11 +101,11 @@ function findConfig<R extends {}>({
101
101
  loadersByOrder,
102
102
  configFileName,
103
103
  packageJSON,
104
- packageJSONFieldName
104
+ packageJSONFieldName,
105
105
  }: {
106
106
  parts: string[];
107
107
  loaderByExt: {
108
- [index: string]: Loader;
108
+ [index: string]: Loader | Loader[];
109
109
  };
110
110
  loadersByOrder: Loader | Loader[];
111
111
  configFileName: string;
@@ -135,7 +135,7 @@ function findConfig<R extends {}>({
135
135
  }
136
136
  return {
137
137
  config: result,
138
- filePath: configLocation
138
+ filePath: configLocation,
139
139
  };
140
140
  }
141
141
  for (let i = 0; i < loaders.length; i++) {
@@ -146,7 +146,7 @@ function findConfig<R extends {}>({
146
146
  }
147
147
  return {
148
148
  config: result,
149
- filePath: configLocation
149
+ filePath: configLocation,
150
150
  };
151
151
  }
152
152
  }
@@ -158,7 +158,7 @@ function findConfig<R extends {}>({
158
158
  if (pkgJSON[packageJSONFieldName]) {
159
159
  return {
160
160
  config: pkgJSON[packageJSONFieldName],
161
- filePath: pkgJSONLoc
161
+ filePath: pkgJSONLoc,
162
162
  };
163
163
  }
164
164
  }
@@ -211,13 +211,11 @@ function readFile(filePath: string) {
211
211
 
212
212
  function loadYAMLConfigFile(filePath: string, suppress: boolean) {
213
213
  debug(`Loading YAML config file: ${filePath}`);
214
-
215
214
  // lazy load YAML to improve performance when not used
216
215
  const yaml = require("js-yaml");
217
-
218
216
  try {
219
217
  // empty YAML file can be null, so always use
220
- return yaml.safeLoad(readFile(filePath)) || {};
218
+ return yaml.load(readFile(filePath)) || {};
221
219
  } catch (error) {
222
220
  debug(`Error reading YAML file: ${filePath}`);
223
221
  if (!suppress) {