@karmaniverous/get-dotenv 6.2.3 → 6.3.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.
Files changed (91) hide show
  1. package/README.md +1 -0
  2. package/dist/chunks/AwsRestJsonProtocol-Dv5q8CFK.mjs +932 -0
  3. package/dist/chunks/createCli-BSn6Be40.mjs +440 -0
  4. package/dist/chunks/externalDataInterceptor-pqHO-Qmn.mjs +19 -0
  5. package/dist/chunks/getSSOTokenFromFile-otmZHSRV.mjs +22 -0
  6. package/dist/chunks/helpConfig-CGejgwWW.mjs +12 -0
  7. package/dist/chunks/index-B18W-ELX.mjs +273 -0
  8. package/dist/chunks/index-BNcKuiBy.mjs +9375 -0
  9. package/dist/chunks/index-Bi0RIILn.mjs +25 -0
  10. package/dist/chunks/index-BqZ3PB6c.mjs +375 -0
  11. package/dist/chunks/index-C4Ac6feq.mjs +355 -0
  12. package/dist/chunks/index-C6uLiKpC.mjs +703 -0
  13. package/dist/chunks/index-CGg5wWCm.mjs +188 -0
  14. package/dist/chunks/index-CXpZ0pei.mjs +579 -0
  15. package/dist/chunks/index-CYoFYXZv.mjs +103 -0
  16. package/dist/chunks/index-DFNcs3pR.mjs +444 -0
  17. package/dist/chunks/index-DLQEHTw4.mjs +83 -0
  18. package/dist/chunks/index-DtRaL61T.mjs +380 -0
  19. package/dist/chunks/index-eZMlmESW.mjs +522 -0
  20. package/dist/chunks/invoke-DuRPU1oC.mjs +60 -0
  21. package/dist/chunks/loadModuleDefault-Dj8B3Stt.mjs +123 -0
  22. package/dist/chunks/loadSso-CJ_XUhEj.mjs +413 -0
  23. package/dist/chunks/loader-CePOf74i.mjs +347 -0
  24. package/dist/chunks/overlayEnv-Bqh_kPGA.mjs +235 -0
  25. package/dist/chunks/package-boo9EyYs.mjs +5 -0
  26. package/dist/chunks/parseKnownFiles-B6x1cUmR.mjs +23 -0
  27. package/dist/chunks/readMergedOptions-DLBDzpXX.mjs +1627 -0
  28. package/dist/chunks/resolveCliOptions-_qtsVxda.mjs +139 -0
  29. package/dist/chunks/sdk-stream-mixin-DCdC70Up.mjs +167 -0
  30. package/dist/chunks/spawnEnv-CQwFu7ZJ.mjs +307 -0
  31. package/dist/chunks/types-DdqcXCV1.mjs +59 -0
  32. package/dist/chunks/validate-CDl0rE6k.mjs +61 -0
  33. package/dist/cli.mjs +39 -19307
  34. package/dist/cliHost.mjs +21 -2800
  35. package/dist/config.mjs +11 -509
  36. package/dist/env-overlay.mjs +7 -337
  37. package/dist/getdotenv.cli.mjs +39 -19305
  38. package/dist/index.d.ts +485 -2
  39. package/dist/index.mjs +657 -19322
  40. package/dist/plugins-aws.d.ts +1 -4
  41. package/dist/plugins-aws.mjs +66 -2568
  42. package/dist/plugins-batch.mjs +17 -2573
  43. package/dist/plugins-cmd.mjs +20 -3094
  44. package/dist/plugins-init.d.ts +8 -0
  45. package/dist/plugins-init.mjs +85 -2297
  46. package/dist/plugins.mjs +36 -18817
  47. package/package.json +1 -2
  48. package/dist/templates/cli/index.ts +0 -25
  49. package/dist/templates/cli/plugins/hello/defaultAction.ts +0 -27
  50. package/dist/templates/cli/plugins/hello/index.ts +0 -26
  51. package/dist/templates/cli/plugins/hello/options.ts +0 -31
  52. package/dist/templates/cli/plugins/hello/strangerAction.ts +0 -20
  53. package/dist/templates/cli/plugins/hello/types.ts +0 -13
  54. package/dist/templates/config/js/getdotenv.config.js +0 -20
  55. package/dist/templates/config/json/local/getdotenv.config.local.json +0 -7
  56. package/dist/templates/config/json/public/getdotenv.config.json +0 -9
  57. package/dist/templates/config/public/getdotenv.config.json +0 -8
  58. package/dist/templates/config/ts/getdotenv.config.ts +0 -28
  59. package/dist/templates/config/yaml/local/getdotenv.config.local.yaml +0 -7
  60. package/dist/templates/config/yaml/public/getdotenv.config.yaml +0 -7
  61. package/dist/templates/defaultAction.ts +0 -27
  62. package/dist/templates/getdotenv.config.js +0 -20
  63. package/dist/templates/getdotenv.config.json +0 -9
  64. package/dist/templates/getdotenv.config.local.json +0 -7
  65. package/dist/templates/getdotenv.config.local.yaml +0 -7
  66. package/dist/templates/getdotenv.config.ts +0 -28
  67. package/dist/templates/getdotenv.config.yaml +0 -7
  68. package/dist/templates/hello/defaultAction.ts +0 -27
  69. package/dist/templates/hello/index.ts +0 -26
  70. package/dist/templates/hello/options.ts +0 -31
  71. package/dist/templates/hello/strangerAction.ts +0 -20
  72. package/dist/templates/hello/types.ts +0 -13
  73. package/dist/templates/index.ts +0 -26
  74. package/dist/templates/js/getdotenv.config.js +0 -20
  75. package/dist/templates/json/local/getdotenv.config.local.json +0 -7
  76. package/dist/templates/json/public/getdotenv.config.json +0 -9
  77. package/dist/templates/local/getdotenv.config.local.json +0 -7
  78. package/dist/templates/local/getdotenv.config.local.yaml +0 -7
  79. package/dist/templates/options.ts +0 -31
  80. package/dist/templates/plugins/hello/defaultAction.ts +0 -27
  81. package/dist/templates/plugins/hello/index.ts +0 -26
  82. package/dist/templates/plugins/hello/options.ts +0 -31
  83. package/dist/templates/plugins/hello/strangerAction.ts +0 -20
  84. package/dist/templates/plugins/hello/types.ts +0 -13
  85. package/dist/templates/public/getdotenv.config.json +0 -9
  86. package/dist/templates/public/getdotenv.config.yaml +0 -7
  87. package/dist/templates/strangerAction.ts +0 -20
  88. package/dist/templates/ts/getdotenv.config.ts +0 -28
  89. package/dist/templates/types.ts +0 -13
  90. package/dist/templates/yaml/local/getdotenv.config.local.yaml +0 -7
  91. package/dist/templates/yaml/public/getdotenv.config.yaml +0 -7
@@ -0,0 +1,188 @@
1
+ import fs from 'fs/promises';
2
+ import { C as CredentialsProviderError, H as HttpRequest, p as parseRfc3339DateTime, N as NodeHttpHandler, s as setCredentialFeature } from './index-BNcKuiBy.mjs';
3
+ import { s as sdkStreamMixin } from './sdk-stream-mixin-DCdC70Up.mjs';
4
+ import './readMergedOptions-DLBDzpXX.mjs';
5
+ import 'zod';
6
+ import '@commander-js/extra-typings';
7
+ import './overlayEnv-Bqh_kPGA.mjs';
8
+ import 'fs-extra';
9
+ import 'node:path';
10
+ import './loadModuleDefault-Dj8B3Stt.mjs';
11
+ import 'crypto';
12
+ import 'path';
13
+ import 'url';
14
+ import 'nanoid';
15
+ import 'dotenv';
16
+ import './loader-CePOf74i.mjs';
17
+ import 'package-directory';
18
+ import 'yaml';
19
+ import 'execa';
20
+ import 'buffer';
21
+ import 'os';
22
+ import 'node:fs/promises';
23
+ import 'http';
24
+ import 'https';
25
+ import 'stream';
26
+ import 'process';
27
+ import 'node:fs';
28
+
29
+ const ECS_CONTAINER_HOST = "169.254.170.2";
30
+ const EKS_CONTAINER_HOST_IPv4 = "169.254.170.23";
31
+ const EKS_CONTAINER_HOST_IPv6 = "[fd00:ec2::23]";
32
+ const checkUrl = (url, logger) => {
33
+ if (url.protocol === "https:") {
34
+ return;
35
+ }
36
+ if (url.hostname === ECS_CONTAINER_HOST ||
37
+ url.hostname === EKS_CONTAINER_HOST_IPv4 ||
38
+ url.hostname === EKS_CONTAINER_HOST_IPv6) {
39
+ return;
40
+ }
41
+ if (url.hostname.includes("[")) {
42
+ if (url.hostname === "[::1]" || url.hostname === "[0000:0000:0000:0000:0000:0000:0000:0001]") {
43
+ return;
44
+ }
45
+ }
46
+ else {
47
+ if (url.hostname === "localhost") {
48
+ return;
49
+ }
50
+ const ipComponents = url.hostname.split(".");
51
+ const inRange = (component) => {
52
+ const num = parseInt(component, 10);
53
+ return 0 <= num && num <= 255;
54
+ };
55
+ if (ipComponents[0] === "127" &&
56
+ inRange(ipComponents[1]) &&
57
+ inRange(ipComponents[2]) &&
58
+ inRange(ipComponents[3]) &&
59
+ ipComponents.length === 4) {
60
+ return;
61
+ }
62
+ }
63
+ throw new CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following:
64
+ - loopback CIDR 127.0.0.0/8 or [::1/128]
65
+ - ECS container host 169.254.170.2
66
+ - EKS container host 169.254.170.23 or [fd00:ec2::23]`, { logger });
67
+ };
68
+
69
+ function createGetRequest(url) {
70
+ return new HttpRequest({
71
+ protocol: url.protocol,
72
+ hostname: url.hostname,
73
+ port: Number(url.port),
74
+ path: url.pathname,
75
+ query: Array.from(url.searchParams.entries()).reduce((acc, [k, v]) => {
76
+ acc[k] = v;
77
+ return acc;
78
+ }, {}),
79
+ fragment: url.hash,
80
+ });
81
+ }
82
+ async function getCredentials(response, logger) {
83
+ const stream = sdkStreamMixin(response.body);
84
+ const str = await stream.transformToString();
85
+ if (response.statusCode === 200) {
86
+ const parsed = JSON.parse(str);
87
+ if (typeof parsed.AccessKeyId !== "string" ||
88
+ typeof parsed.SecretAccessKey !== "string" ||
89
+ typeof parsed.Token !== "string" ||
90
+ typeof parsed.Expiration !== "string") {
91
+ throw new CredentialsProviderError("HTTP credential provider response not of the required format, an object matching: " +
92
+ "{ AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }", { logger });
93
+ }
94
+ return {
95
+ accessKeyId: parsed.AccessKeyId,
96
+ secretAccessKey: parsed.SecretAccessKey,
97
+ sessionToken: parsed.Token,
98
+ expiration: parseRfc3339DateTime(parsed.Expiration),
99
+ };
100
+ }
101
+ if (response.statusCode >= 400 && response.statusCode < 500) {
102
+ let parsedBody = {};
103
+ try {
104
+ parsedBody = JSON.parse(str);
105
+ }
106
+ catch (e) { }
107
+ throw Object.assign(new CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }), {
108
+ Code: parsedBody.Code,
109
+ Message: parsedBody.Message,
110
+ });
111
+ }
112
+ throw new CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger });
113
+ }
114
+
115
+ const retryWrapper = (toRetry, maxRetries, delayMs) => {
116
+ return async () => {
117
+ for (let i = 0; i < maxRetries; ++i) {
118
+ try {
119
+ return await toRetry();
120
+ }
121
+ catch (e) {
122
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
123
+ }
124
+ }
125
+ return await toRetry();
126
+ };
127
+ };
128
+
129
+ const AWS_CONTAINER_CREDENTIALS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI";
130
+ const DEFAULT_LINK_LOCAL_HOST = "http://169.254.170.2";
131
+ const AWS_CONTAINER_CREDENTIALS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI";
132
+ const AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE = "AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE";
133
+ const AWS_CONTAINER_AUTHORIZATION_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN";
134
+ const fromHttp = (options = {}) => {
135
+ options.logger?.debug("@aws-sdk/credential-provider-http - fromHttp");
136
+ let host;
137
+ const relative = options.awsContainerCredentialsRelativeUri ?? process.env[AWS_CONTAINER_CREDENTIALS_RELATIVE_URI];
138
+ const full = options.awsContainerCredentialsFullUri ?? process.env[AWS_CONTAINER_CREDENTIALS_FULL_URI];
139
+ const token = options.awsContainerAuthorizationToken ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN];
140
+ const tokenFile = options.awsContainerAuthorizationTokenFile ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE];
141
+ const warn = options.logger?.constructor?.name === "NoOpLogger" || !options.logger?.warn
142
+ ? console.warn
143
+ : options.logger.warn.bind(options.logger);
144
+ if (relative && full) {
145
+ warn("@aws-sdk/credential-provider-http: " +
146
+ "you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri.");
147
+ warn("awsContainerCredentialsFullUri will take precedence.");
148
+ }
149
+ if (token && tokenFile) {
150
+ warn("@aws-sdk/credential-provider-http: " +
151
+ "you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile.");
152
+ warn("awsContainerAuthorizationToken will take precedence.");
153
+ }
154
+ if (full) {
155
+ host = full;
156
+ }
157
+ else if (relative) {
158
+ host = `${DEFAULT_LINK_LOCAL_HOST}${relative}`;
159
+ }
160
+ else {
161
+ throw new CredentialsProviderError(`No HTTP credential provider host provided.
162
+ Set AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`, { logger: options.logger });
163
+ }
164
+ const url = new URL(host);
165
+ checkUrl(url, options.logger);
166
+ const requestHandler = NodeHttpHandler.create({
167
+ requestTimeout: options.timeout ?? 1000,
168
+ connectionTimeout: options.timeout ?? 1000,
169
+ });
170
+ return retryWrapper(async () => {
171
+ const request = createGetRequest(url);
172
+ if (token) {
173
+ request.headers.Authorization = token;
174
+ }
175
+ else if (tokenFile) {
176
+ request.headers.Authorization = (await fs.readFile(tokenFile)).toString();
177
+ }
178
+ try {
179
+ const result = await requestHandler.handle(request);
180
+ return getCredentials(result.response).then((creds) => setCredentialFeature(creds, "CREDENTIALS_HTTP", "z"));
181
+ }
182
+ catch (e) {
183
+ throw new CredentialsProviderError(String(e), { logger: options.logger });
184
+ }
185
+ }, options.maxRetries ?? 3, options.timeout ?? 1000);
186
+ };
187
+
188
+ export { fromHttp };