@prosopo/dotenv 3.0.49 → 3.0.51
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-build$colon$cjs.log +11 -8
- package/.turbo/turbo-build$colon$tsc.log +7 -7
- package/.turbo/turbo-build.log +12 -9
- package/CHANGELOG.md +29 -0
- package/dist/_virtual/_rolldown/runtime.js +3 -0
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/cjs/env.cjs +73 -65
- package/dist/cjs/index.cjs +4 -5
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +65 -62
- package/dist/env.js.map +1 -1
- package/dist/index.js +2 -5
- package/dist/tests/env.test-d.d.ts +2 -0
- package/dist/tests/env.test-d.d.ts.map +1 -0
- package/dist/tests/env.test-d.js +50 -0
- package/dist/tests/env.test-d.js.map +1 -0
- package/dist/tests/env.unit.test.d.ts +2 -0
- package/dist/tests/env.unit.test.d.ts.map +1 -0
- package/dist/tests/env.unit.test.js +358 -0
- package/dist/tests/env.unit.test.js.map +1 -0
- package/package.json +7 -6
- package/src/env.ts +6 -2
- package/src/tests/env.test-d.ts +113 -0
- package/src/tests/env.unit.test.ts +624 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/dotenv@3.0.
|
|
2
|
+
> @prosopo/dotenv@3.0.51 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -10,12 +10,15 @@ ViteCommonJSConfig: .
|
|
|
10
10
|
]
|
|
11
11
|
}
|
|
12
12
|
{ externals: [ '@prosopo/logger', '@prosopo/util' ] }
|
|
13
|
-
[
|
|
13
|
+
[33mThe plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the [1mresolve.tsconfigPaths[22m option. You can remove the plugin and set [1mresolve.tsconfigPaths: true[22m in your Vite config instead.[39m
|
|
14
|
+
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
14
15
|
Bundle build started
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
[32m✓[39m 2 modules transformed.
|
|
16
|
+
[2K
|
|
17
|
+
✓ 3 modules transformed.
|
|
18
18
|
rendering chunks...
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
computing gzip size...
|
|
20
|
+
dist/cjs/index.cjs 0.23 kB │ gzip: 0.15 kB
|
|
21
|
+
dist/cjs/_virtual/_rolldown/runtime.cjs 1.00 kB │ gzip: 0.50 kB
|
|
22
|
+
dist/cjs/env.cjs 2.99 kB │ gzip: 1.14 kB
|
|
23
|
+
|
|
24
|
+
[32m✓ built in 61ms[39m
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/dotenv@3.0.
|
|
2
|
+
> @prosopo/dotenv@3.0.51 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
1:
|
|
5
|
+
1:56:49 PM - Projects in this build:
|
|
6
6
|
* ../../dev/config/tsconfig.json
|
|
7
7
|
* ../util/tsconfig.json
|
|
8
8
|
* ../logger/tsconfig.json
|
|
9
9
|
* tsconfig.json
|
|
10
10
|
|
|
11
|
-
1:
|
|
11
|
+
1:56:49 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
12
12
|
|
|
13
|
-
1:
|
|
13
|
+
1:56:49 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
|
|
14
14
|
|
|
15
|
-
1:
|
|
15
|
+
1:56:49 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/logger.ts' is older than output '../logger/tsconfig.tsbuildinfo'
|
|
16
16
|
|
|
17
|
-
1:
|
|
17
|
+
1:56:49 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
18
18
|
|
|
19
|
-
1:
|
|
19
|
+
1:56:49 PM - Building project '/home/runner/work/captcha/captcha/packages/dotenv/tsconfig.json'...
|
|
20
20
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/dotenv@3.0.
|
|
2
|
+
> @prosopo/dotenv@3.0.51 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/dotenv@3.0.
|
|
6
|
+
> @prosopo/dotenv@3.0.51 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -14,12 +14,15 @@ ViteEsmConfig: .
|
|
|
14
14
|
]
|
|
15
15
|
}
|
|
16
16
|
{ externals: [ '@prosopo/logger', '@prosopo/util' ] }
|
|
17
|
-
[
|
|
17
|
+
[33mThe plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the [1mresolve.tsconfigPaths[22m option. You can remove the plugin and set [1mresolve.tsconfigPaths: true[22m in your Vite config instead.[39m
|
|
18
|
+
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
18
19
|
Bundle build started
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
[32m✓[39m 2 modules transformed.
|
|
20
|
+
[2K
|
|
21
|
+
✓ 3 modules transformed.
|
|
22
22
|
rendering chunks...
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
computing gzip size...
|
|
24
|
+
dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
|
|
25
|
+
dist/index.js 0.13 kB │ gzip: 0.10 kB
|
|
26
|
+
dist/env.js 2.44 kB │ gzip: 1.03 kB
|
|
27
|
+
|
|
28
|
+
[32m✓ built in 50ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# @prosopo/dotenv
|
|
2
2
|
|
|
3
|
+
## 3.0.51
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- Updated dependencies [2aabe73]
|
|
7
|
+
- @prosopo/logger@2.0.5
|
|
8
|
+
|
|
9
|
+
## 3.0.50
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- 4cd9035: test(dotenv): add vitest type tests for the env API
|
|
13
|
+
|
|
14
|
+
Runtime tests cannot catch a published signature that silently widens. These
|
|
15
|
+
pin the parts consumers depend on: `getEnv` and `getEnvFile` returning a plain
|
|
16
|
+
`string` rather than `string | undefined` (both already default the absent
|
|
17
|
+
case away, so a nullable return would push work back onto every caller),
|
|
18
|
+
`loadEnv` returning the resolved path rather than void, and the optional
|
|
19
|
+
positional arguments of `loadEnv`/`getEnvFile` in order.
|
|
20
|
+
- 8fba211: test(dotenv): add unit test suite covering env discovery and loading
|
|
21
|
+
|
|
22
|
+
Adds 47 unit tests for `getEnv`, `getEnvFile` and `loadEnv`, reaching 100%
|
|
23
|
+
statement, branch, function and line coverage, and wires the package into
|
|
24
|
+
`turbo run test` so it runs in CI.
|
|
25
|
+
|
|
26
|
+
Also fixes `getEnvFile` so that a `NODE_ENV` sanitising to the empty string
|
|
27
|
+
(e.g. `"!!!"`) falls back to the unsuffixed `.env` rather than searching for
|
|
28
|
+
the never-created `.env.` filename.
|
|
29
|
+
- e14fce6: chore(deps): bump vite to 6.4.3 and mongoose to 8.24.1, and adjust types for the mongoose 8.24 Document/ObjectId changes
|
|
30
|
+
- @prosopo/logger@2.0.4
|
|
31
|
+
|
|
3
32
|
## 3.0.49
|
|
4
33
|
### Patch Changes
|
|
5
34
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
value: mod,
|
|
20
|
+
enumerable: true
|
|
21
|
+
}) : target, mod));
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.__toESM = __toESM;
|
package/dist/cjs/env.cjs
CHANGED
|
@@ -1,73 +1,81 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
);
|
|
1
|
+
const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
let node_fs = require("node:fs");
|
|
3
|
+
node_fs = require_runtime.__toESM(node_fs, 1);
|
|
4
|
+
let node_path = require("node:path");
|
|
5
|
+
node_path = require_runtime.__toESM(node_path, 1);
|
|
6
|
+
let node_url = require("node:url");
|
|
7
|
+
let _prosopo_logger = require("@prosopo/logger");
|
|
8
|
+
let dotenv = require("dotenv");
|
|
9
|
+
dotenv = require_runtime.__toESM(dotenv, 1);
|
|
10
|
+
//#region src/env.ts
|
|
11
|
+
var __filename$1 = (0, node_url.fileURLToPath)(require("url").pathToFileURL(__filename).href);
|
|
12
|
+
var __dirname$1 = node_path.default.dirname(__filename$1);
|
|
13
|
+
var logger = (0, _prosopo_logger.getLogger)((0, _prosopo_logger.parseLogLevel)(process.env.PROSOPO_LOG_LEVEL, _prosopo_logger.LogLevel.enum.info), "dotenv");
|
|
15
14
|
function getEnv() {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
return "development";
|
|
15
|
+
if (process.env.NODE_ENV) return process.env.NODE_ENV.replace(/\W/g, "");
|
|
16
|
+
return "development";
|
|
20
17
|
}
|
|
21
18
|
function loadEnv(rootDir, filename, filePath, nodeEnv, override = false) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
dotenv.config(args);
|
|
34
|
-
return envPath;
|
|
19
|
+
const envPath = getEnvFile(node_path.default.resolve(rootDir || "."), filename, filePath, nodeEnv);
|
|
20
|
+
const args = {
|
|
21
|
+
path: envPath,
|
|
22
|
+
override
|
|
23
|
+
};
|
|
24
|
+
logger.debug(() => ({
|
|
25
|
+
data: { envPath },
|
|
26
|
+
msg: "Loading env"
|
|
27
|
+
}));
|
|
28
|
+
dotenv.default.config(args);
|
|
29
|
+
return envPath;
|
|
35
30
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Get the path to the .env file. Search up directories until `${filename}.${env}`
|
|
33
|
+
* is found — or, when `env` sanitises to the empty string, plain `filename`.
|
|
34
|
+
* If not found, look in the root directory, if specified, or 2 directories up from this file.
|
|
35
|
+
* @param rootDir
|
|
36
|
+
* @param filename
|
|
37
|
+
* @param filepath
|
|
38
|
+
* @param nodeEnv Environment override
|
|
39
|
+
*/
|
|
40
|
+
function getEnvFile(rootDir, filename = ".env", filepath = node_path.default.join(__dirname$1, "../.."), nodeEnv) {
|
|
41
|
+
const env = nodeEnv || getEnv();
|
|
42
|
+
const fileNameFull = env ? `${filename}.${env}` : filename;
|
|
43
|
+
let searchPath = node_path.default.resolve(rootDir || ".");
|
|
44
|
+
logger.debug(() => ({
|
|
45
|
+
data: {
|
|
46
|
+
fileName: fileNameFull,
|
|
47
|
+
searchPath
|
|
48
|
+
},
|
|
49
|
+
msg: "Searching"
|
|
50
|
+
}));
|
|
51
|
+
let levelCount = 0;
|
|
52
|
+
while (!node_fs.default.existsSync(node_path.default.join(searchPath, fileNameFull))) {
|
|
53
|
+
if (node_fs.default.existsSync(node_path.default.join(searchPath, "package.json"))) {
|
|
54
|
+
if (JSON.parse(node_fs.default.readFileSync(node_path.default.join(searchPath, "package.json"), "utf8")).name === "@prosopo/captcha-private") {
|
|
55
|
+
logger.debug(() => ({
|
|
56
|
+
data: { fileName: fileNameFull },
|
|
57
|
+
msg: "Reached the workspace root package.json, stopping search."
|
|
58
|
+
}));
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
searchPath = node_path.default.resolve(searchPath, "..");
|
|
63
|
+
levelCount += 1;
|
|
64
|
+
if (levelCount > 10) {
|
|
65
|
+
logger.debug(() => ({
|
|
66
|
+
data: {
|
|
67
|
+
fileName: fileNameFull,
|
|
68
|
+
levelCount
|
|
69
|
+
},
|
|
70
|
+
msg: "Checked directories above, stopping search."
|
|
71
|
+
}));
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const foundPath = node_path.default.join(searchPath, fileNameFull);
|
|
76
|
+
return node_fs.default.existsSync(foundPath) ? foundPath : node_path.default.join(rootDir || filepath, fileNameFull);
|
|
70
77
|
}
|
|
78
|
+
//#endregion
|
|
71
79
|
exports.getEnv = getEnv;
|
|
72
80
|
exports.getEnvFile = getEnvFile;
|
|
73
81
|
exports.loadEnv = loadEnv;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
4
|
-
exports.getEnv =
|
|
5
|
-
exports.getEnvFile =
|
|
6
|
-
exports.loadEnv =
|
|
2
|
+
const require_env = require("./env.cjs");
|
|
3
|
+
exports.getEnv = require_env.getEnv;
|
|
4
|
+
exports.getEnvFile = require_env.getEnvFile;
|
|
5
|
+
exports.loadEnv = require_env.loadEnv;
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AA2BA,wBAAgB,MAAM,WAKrB;AAED,wBAAgB,OAAO,CACtB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,UAAQ,GACd,MAAM,CAcR;
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AA2BA,wBAAgB,MAAM,WAKrB;AAED,wBAAgB,OAAO,CACtB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,UAAQ,GACd,MAAM,CAcR;AAWD,wBAAgB,UAAU,CACzB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,SAAS,EACjB,QAAQ,SAAgC,EACxC,OAAO,CAAC,EAAE,MAAM,UA6ChB"}
|
package/dist/env.js
CHANGED
|
@@ -1,72 +1,75 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { getLogger, parseLogLevel
|
|
4
|
+
import { LogLevel, getLogger, parseLogLevel } from "@prosopo/logger";
|
|
5
5
|
import dotenv from "dotenv";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"dotenv"
|
|
11
|
-
);
|
|
6
|
+
//#region src/env.ts
|
|
7
|
+
var __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
var __dirname = path.dirname(__filename);
|
|
9
|
+
var logger = getLogger(parseLogLevel(process.env.PROSOPO_LOG_LEVEL, LogLevel.enum.info), "dotenv");
|
|
12
10
|
function getEnv() {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
return "development";
|
|
11
|
+
if (process.env.NODE_ENV) return process.env.NODE_ENV.replace(/\W/g, "");
|
|
12
|
+
return "development";
|
|
17
13
|
}
|
|
18
14
|
function loadEnv(rootDir, filename, filePath, nodeEnv, override = false) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
dotenv.config(args);
|
|
31
|
-
return envPath;
|
|
15
|
+
const envPath = getEnvFile(path.resolve(rootDir || "."), filename, filePath, nodeEnv);
|
|
16
|
+
const args = {
|
|
17
|
+
path: envPath,
|
|
18
|
+
override
|
|
19
|
+
};
|
|
20
|
+
logger.debug(() => ({
|
|
21
|
+
data: { envPath },
|
|
22
|
+
msg: "Loading env"
|
|
23
|
+
}));
|
|
24
|
+
dotenv.config(args);
|
|
25
|
+
return envPath;
|
|
32
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the path to the .env file. Search up directories until `${filename}.${env}`
|
|
29
|
+
* is found — or, when `env` sanitises to the empty string, plain `filename`.
|
|
30
|
+
* If not found, look in the root directory, if specified, or 2 directories up from this file.
|
|
31
|
+
* @param rootDir
|
|
32
|
+
* @param filename
|
|
33
|
+
* @param filepath
|
|
34
|
+
* @param nodeEnv Environment override
|
|
35
|
+
*/
|
|
33
36
|
function getEnvFile(rootDir, filename = ".env", filepath = path.join(__dirname, "../.."), nodeEnv) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
37
|
+
const env = nodeEnv || getEnv();
|
|
38
|
+
const fileNameFull = env ? `${filename}.${env}` : filename;
|
|
39
|
+
let searchPath = path.resolve(rootDir || ".");
|
|
40
|
+
logger.debug(() => ({
|
|
41
|
+
data: {
|
|
42
|
+
fileName: fileNameFull,
|
|
43
|
+
searchPath
|
|
44
|
+
},
|
|
45
|
+
msg: "Searching"
|
|
46
|
+
}));
|
|
47
|
+
let levelCount = 0;
|
|
48
|
+
while (!fs.existsSync(path.join(searchPath, fileNameFull))) {
|
|
49
|
+
if (fs.existsSync(path.join(searchPath, "package.json"))) {
|
|
50
|
+
if (JSON.parse(fs.readFileSync(path.join(searchPath, "package.json"), "utf8")).name === "@prosopo/captcha-private") {
|
|
51
|
+
logger.debug(() => ({
|
|
52
|
+
data: { fileName: fileNameFull },
|
|
53
|
+
msg: "Reached the workspace root package.json, stopping search."
|
|
54
|
+
}));
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
searchPath = path.resolve(searchPath, "..");
|
|
59
|
+
levelCount += 1;
|
|
60
|
+
if (levelCount > 10) {
|
|
61
|
+
logger.debug(() => ({
|
|
62
|
+
data: {
|
|
63
|
+
fileName: fileNameFull,
|
|
64
|
+
levelCount
|
|
65
|
+
},
|
|
66
|
+
msg: "Checked directories above, stopping search."
|
|
67
|
+
}));
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const foundPath = path.join(searchPath, fileNameFull);
|
|
72
|
+
return fs.existsSync(foundPath) ? foundPath : path.join(rootDir || filepath, fileNameFull);
|
|
67
73
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
getEnvFile,
|
|
71
|
-
loadEnv
|
|
72
|
-
};
|
|
74
|
+
//#endregion
|
|
75
|
+
export { getEnv, getEnvFile, loadEnv };
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,MAAM,GAAG,SAAS,CACvB,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAChE,QAAQ,CACR,CAAC;AAEF,MAAM,UAAU,MAAM;IACrB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,aAAa,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,OAAO,CACtB,OAAgB,EAChB,QAAiB,EACjB,QAAiB,EACjB,OAAgB,EAChB,QAAQ,GAAG,KAAK;IAEhB,MAAM,OAAO,GAAG,UAAU,CACzB,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,OAAO,CACP,CAAC;IACF,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACzC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACnB,IAAI,EAAE,EAAE,OAAO,EAAE;QACjB,GAAG,EAAE,aAAa;KAClB,CAAC,CAAC,CAAC;IACJ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,OAAO,CAAC;AAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.test-d.d.ts","sourceRoot":"","sources":["../../src/tests/env.test-d.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { describe, expectTypeOf, it } from "vitest";
|
|
2
|
+
import { getEnv, getEnvFile, loadEnv } from "../index.js";
|
|
3
|
+
describe("getEnv", () => {
|
|
4
|
+
it("always yields a string, since it falls back to development", () => {
|
|
5
|
+
expectTypeOf(getEnv).returns.toEqualTypeOf();
|
|
6
|
+
});
|
|
7
|
+
it("takes no arguments: it reads process.env directly", () => {
|
|
8
|
+
expectTypeOf(getEnv).parameters.toEqualTypeOf();
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
describe("loadEnv", () => {
|
|
12
|
+
it("returns the resolved env path rather than void", () => {
|
|
13
|
+
expectTypeOf(loadEnv).returns.toEqualTypeOf();
|
|
14
|
+
});
|
|
15
|
+
it("is callable with no arguments at all", () => {
|
|
16
|
+
expectTypeOf(loadEnv).toBeCallableWith();
|
|
17
|
+
});
|
|
18
|
+
it("takes every argument as optional, in order", () => {
|
|
19
|
+
expectTypeOf(loadEnv).parameters.toEqualTypeOf();
|
|
20
|
+
});
|
|
21
|
+
it("accepts a partially specified call", () => {
|
|
22
|
+
expectTypeOf(loadEnv).toBeCallableWith("/root");
|
|
23
|
+
expectTypeOf(loadEnv).toBeCallableWith("/root", ".env");
|
|
24
|
+
expectTypeOf(loadEnv).toBeCallableWith("/root", ".env", "/root/.env", "test", true);
|
|
25
|
+
});
|
|
26
|
+
it("keeps override a boolean, not a truthy anything", () => {
|
|
27
|
+
loadEnv("/root", ".env", "/root/.env", "test", "yes");
|
|
28
|
+
});
|
|
29
|
+
it("rejects a numeric root directory", () => {
|
|
30
|
+
loadEnv(1);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe("getEnvFile", () => {
|
|
34
|
+
it("always resolves to a path string", () => {
|
|
35
|
+
expectTypeOf(getEnvFile).returns.toEqualTypeOf();
|
|
36
|
+
});
|
|
37
|
+
it("is callable with no arguments, defaulting filename and search root", () => {
|
|
38
|
+
expectTypeOf(getEnvFile).toBeCallableWith();
|
|
39
|
+
});
|
|
40
|
+
it("takes four optional positional arguments", () => {
|
|
41
|
+
expectTypeOf(getEnvFile).parameters.toEqualTypeOf();
|
|
42
|
+
});
|
|
43
|
+
it("accepts an explicit nodeEnv override in last position", () => {
|
|
44
|
+
expectTypeOf(getEnvFile).toBeCallableWith("/root", ".env", "/fallback", "production");
|
|
45
|
+
});
|
|
46
|
+
it("rejects an extra argument", () => {
|
|
47
|
+
getEnvFile("/root", ".env", "/fallback", "production", true);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=env.test-d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.test-d.js","sourceRoot":"","sources":["../../src/tests/env.test-d.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAIpD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE1D,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QAGrE,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,EAAU,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC5D,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,aAAa,EAAM,CAAC;IACrD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAEzD,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,EAAU,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC/C,YAAY,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACrD,YAAY,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,aAAa,EAQ3C,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC7C,YAAY,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAChD,YAAY,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxD,YAAY,CAAC,OAAO,CAAC,CAAC,gBAAgB,CACrC,OAAO,EACP,MAAM,EACN,YAAY,EACZ,MAAM,EACN,IAAI,CACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAE1D,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAE3C,OAAO,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAG3C,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,aAAa,EAAU,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC7E,YAAY,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACnD,YAAY,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,aAAa,EAO9C,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAChE,YAAY,CAAC,UAAU,CAAC,CAAC,gBAAgB,CACxC,OAAO,EACP,MAAM,EACN,WAAW,EACX,YAAY,CACZ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QAEpC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/env.unit.test.ts"],"names":[],"mappings":""}
|