varlock 0.0.14 → 0.0.15
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/dist/auto-load.js +3 -2
- package/dist/{chunk-J5SIYSJV.js → chunk-EPKIAPPA.js} +4 -4
- package/dist/{chunk-J5SIYSJV.js.map → chunk-EPKIAPPA.js.map} +1 -1
- package/dist/{chunk-ZYL5D2UA.js → chunk-IH74UIYN.js} +10 -6
- package/dist/chunk-IH74UIYN.js.map +1 -0
- package/dist/{chunk-FCVBOYES.js → chunk-IWQ4BDSW.js} +4 -7
- package/dist/chunk-IWQ4BDSW.js.map +1 -0
- package/dist/chunk-LBV2UW3I.js +56 -0
- package/dist/chunk-LBV2UW3I.js.map +1 -0
- package/dist/{chunk-OJFTFBQG.js → chunk-LYSRVOTA.js} +7 -5
- package/dist/chunk-LYSRVOTA.js.map +1 -0
- package/dist/{chunk-UPOIK25P.js → chunk-OLZUI45U.js} +4 -4
- package/dist/{chunk-UPOIK25P.js.map → chunk-OLZUI45U.js.map} +1 -1
- package/dist/{chunk-4QTFFYV6.js → chunk-UPLR6H2O.js} +17 -16
- package/dist/chunk-UPLR6H2O.js.map +1 -0
- package/dist/{chunk-HGJF2DUO.js → chunk-WMCJKFEN.js} +4 -4
- package/dist/{chunk-HGJF2DUO.js.map → chunk-WMCJKFEN.js.map} +1 -1
- package/dist/{chunk-EQQCW3OI.js → chunk-WTAZCEL6.js} +4 -4
- package/dist/{chunk-EQQCW3OI.js.map → chunk-WTAZCEL6.js.map} +1 -1
- package/dist/{chunk-QCKADJNV.js → chunk-XTPPJ3UK.js} +4 -4
- package/dist/{chunk-QCKADJNV.js.map → chunk-XTPPJ3UK.js.map} +1 -1
- package/dist/cli/cli-executable.js +19 -17
- package/dist/cli/cli-executable.js.map +1 -1
- package/dist/dotenv-compat.js +3 -2
- package/dist/index.js +3 -3
- package/dist/init.command-YZ23U7SF.js +8 -0
- package/dist/{init.command-VK4OGIYP.js.map → init.command-YZ23U7SF.js.map} +1 -1
- package/dist/lib/exec-sync-varlock.d.ts +14 -0
- package/dist/lib/exec-sync-varlock.js +4 -0
- package/dist/lib/exec-sync-varlock.js.map +1 -0
- package/dist/load.command-NVMWXLOK.js +8 -0
- package/dist/{load.command-N7FMBREX.js.map → load.command-NVMWXLOK.js.map} +1 -1
- package/dist/login.command-W4DP7RUO.js +8 -0
- package/dist/{login.command-GQCJY4NK.js.map → login.command-W4DP7RUO.js.map} +1 -1
- package/dist/run.command-CXMAPHO7.js +8 -0
- package/dist/{run.command-LYY2M5AP.js.map → run.command-CXMAPHO7.js.map} +1 -1
- package/dist/telemetry.command-3DVW7H2K.js +8 -0
- package/dist/{telemetry.command-QTEDXKIG.js.map → telemetry.command-3DVW7H2K.js.map} +1 -1
- package/package.json +6 -1
- package/dist/chunk-4QTFFYV6.js.map +0 -1
- package/dist/chunk-FCVBOYES.js.map +0 -1
- package/dist/chunk-OJFTFBQG.js.map +0 -1
- package/dist/chunk-ZYL5D2UA.js.map +0 -1
- package/dist/init.command-VK4OGIYP.js +0 -8
- package/dist/load.command-N7FMBREX.js +0 -8
- package/dist/login.command-GQCJY4NK.js +0 -8
- package/dist/run.command-LYY2M5AP.js +0 -8
- package/dist/telemetry.command-QTEDXKIG.js +0 -8
package/dist/auto-load.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import './chunk-
|
|
1
|
+
import './chunk-IH74UIYN.js';
|
|
2
|
+
import './chunk-7JMYT62X.js';
|
|
3
|
+
import './chunk-LBV2UW3I.js';
|
|
2
4
|
import './chunk-C5BEZMSO.js';
|
|
3
5
|
import './chunk-OM3JCP4E.js';
|
|
4
|
-
import './chunk-7JMYT62X.js';
|
|
5
6
|
import './chunk-2SPIWTVE.js';
|
|
6
7
|
import './chunk-FGMXIEFA.js';
|
|
7
8
|
import './chunk-XN24GZXQ.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { logLines } from './chunk-
|
|
1
|
+
import { logLines } from './chunk-LYSRVOTA.js';
|
|
2
2
|
import { define } from './chunk-33ROL4J5.js';
|
|
3
|
-
import { gracefulExit, ansis_default } from './chunk-
|
|
3
|
+
import { gracefulExit, ansis_default } from './chunk-IWQ4BDSW.js';
|
|
4
4
|
import { __name } from './chunk-XN24GZXQ.js';
|
|
5
5
|
import { setTimeout } from 'timers/promises';
|
|
6
6
|
import os from 'os';
|
|
@@ -142,5 +142,5 @@ var commandFn = /* @__PURE__ */ __name(async (ctx) => {
|
|
|
142
142
|
}, "commandFn");
|
|
143
143
|
|
|
144
144
|
export { CONFIG, commandFn, commandSpec };
|
|
145
|
-
//# sourceMappingURL=chunk-
|
|
146
|
-
//# sourceMappingURL=chunk-
|
|
145
|
+
//# sourceMappingURL=chunk-EPKIAPPA.js.map
|
|
146
|
+
//# sourceMappingURL=chunk-EPKIAPPA.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config.ts","../src/cli/helpers/open-url.ts","../src/cli/helpers/key-press.ts","../src/cli/commands/login.command.ts"],"names":["delay"],"mappings":"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","file":"chunk-J5SIYSJV.js","sourcesContent":["// TODO: figure out dev vs prod env vars... would be great to use varlock here!\n\n// NOTE - these keys are safe to publish\n\nexport const CONFIG = {\n // VARLOCK_API_URL: 'http://localhost:8888',\n VARLOCK_API_URL: 'https://api.varlock.dev',\n GITHUB_APP_CLIENT_ID: 'Iv23li50gB8bMxLauiJQ', // varlock.dev app\n POSTHOG_API_KEY: 'phc_bfzH97VIta8yQa8HrsgmitqS6rTydjMISs0m8aqJTnq',\n POSTHOG_HOST: 'https://ph.varlock.dev',\n};\n","import os from 'node:os';\nimport { spawn } from 'node:child_process';\n\nconst platform = os.platform();\n\nconst isWindows = platform.match(/^win/i);\nconst isMac = platform.match(/^darwin/i);\nconst isLinux = (!isWindows && !isMac);\n\n/** opens a url using the default browser */\nexport function openUrl(url: string) {\n if (isWindows) {\n spawn('cmd', ['/c', 'start', ' ', url], { detached: true });\n } else if (isMac) {\n spawn('open', [url], { detached: true });\n } else if (isLinux) {\n // TODO: maybe check for x-www-browser instead?\n spawn('xdg-open', [url], { detached: true });\n }\n}\n","import { gracefulExit } from 'exit-hook';\n\nexport async function keyPressed(keys: Array<string> | true = true) {\n process.stdin.setRawMode(true);\n return new Promise<void>((resolve) => {\n function keyPressHandler(d: Buffer) {\n const keyStr = d.toString();\n // exit on ctrl+c or ctrl+d\n if (['\\u0003', '\\u0004'].includes(keyStr)) {\n return gracefulExit(1);\n }\n if (keys === true || keys.includes(keyStr)) {\n process.stdin.setRawMode(false);\n process.stdin.off('data', keyPressHandler);\n resolve();\n }\n }\n process.stdin.on('data', keyPressHandler);\n });\n}\n","\nimport { setTimeout as delay } from 'node:timers/promises';\nimport ansis from 'ansis';\nimport { define } from 'gunshi';\nimport { logLines } from '../helpers/pretty-format';\nimport { CONFIG } from '../../config';\nimport { openUrl } from '../helpers/open-url';\nimport { keyPressed } from '../helpers/key-press';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport { gracefulExit } from 'exit-hook';\n\n\nexport const commandSpec = define({\n name: 'login',\n description: 'Authenticate (using GitHub)',\n args: {},\n});\n\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const codeReq = await fetch('https://github.com/login/device/code', {\n method: 'POST',\n body: JSON.stringify({\n client_id: CONFIG.GITHUB_APP_CLIENT_ID,\n }),\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n });\n if (codeReq.status !== 200) {\n console.log('Failed to initiate GitHub device flow login!');\n return gracefulExit(1);\n }\n\n const ghCodeInfo = await codeReq.json() as {\n device_code: string;\n user_code: string;\n verification_uri: string;\n expires_in: number;\n interval: number;\n };\n\n logLines([\n '🔑 Authenticating using GitHub:',\n '',\n `First please copy this code: ${ansis.bold.magenta(ghCodeInfo.user_code)}`,\n '',\n `Log in @ ${ghCodeInfo.verification_uri}`,\n '',\n 'Press ENTER to open in your default browser...',\n ]);\n await keyPressed(['\\r']);\n console.log(ansis.italic.gray('... please complete login on github.com ...'));\n openUrl(ghCodeInfo.verification_uri);\n\n const pollMs = ghCodeInfo.interval * 1000;\n const expiresMs = ghCodeInfo.expires_in * 1000;\n const startAt = new Date();\n\n let oauthStatus: any;\n while (true) {\n await delay(pollMs);\n try {\n const oauthStatusReq = await fetch('https://github.com/login/oauth/access_token', {\n method: 'POST',\n body: JSON.stringify({\n client_id: CONFIG.GITHUB_APP_CLIENT_ID,\n device_code: ghCodeInfo.device_code,\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n }),\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n });\n oauthStatus = await oauthStatusReq.json();\n } catch (err) {\n console.log(err);\n }\n\n // we are expecting to see { error: 'authorization_pending' }\n // probably a few more error types we could bail early on\n if (oauthStatus.error === 'access_denied') {\n console.log('❌ Login attempt was cancelled! Please try again.');\n return gracefulExit(1);\n }\n\n // if we got the token, we break and continue\n if (oauthStatus.access_token) break;\n\n // if we've been polling for too long, give up\n if (new Date().getTime() - startAt.getTime() > expiresMs) {\n console.log('❌ Login timed out! Please try again.');\n return gracefulExit(1);\n }\n }\n\n // oauthStatus when completed looks like:\n // {\n // access_token: 'ghu_abcxyz',\n // expires_in: 28800,\n // refresh_token: 'ghr_abcxyz',\n // refresh_token_expires_in: 15897600,\n // token_type: 'bearer',\n // scope: ''\n // }\n\n // pass along github auth info to API, which will fetch info from HG, handle login/signup, return JWT\n const authReq = await fetch(`${CONFIG.VARLOCK_API_URL}/github/auth-from-device-flow`, {\n method: 'POST',\n body: JSON.stringify({\n accessToken: oauthStatus.access_token,\n refreshToken: oauthStatus.refresh_token,\n accessTokenExpiresAt: new Date(Date.now() + oauthStatus.expires_in * 1000).toISOString(),\n refreshTokenExpiresAt: new Date(Date.now() + oauthStatus.refresh_token_expires_in * 1000).toISOString(),\n tokenType: oauthStatus.token_type,\n scope: oauthStatus.scope,\n }),\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n });\n if (authReq.status !== 200) {\n console.log(await authReq.json());\n return gracefulExit(1);\n }\n\n const authRes = await authReq.json() as {\n user: {\n githubUserId: string;\n githubUsername: string;\n name: string;\n },\n token: string;\n isNewUser: boolean;\n publicKey?: string;\n };\n\n // TODO: if app exists, pass off login info to it instead of storing in home folder\n // otherwise save login info in ~/.varlock/identity.json\n // also save it along with a new keypair if necessary, and send the public key to the api\n\n console.log(`✅ Logged in as ${authRes.user.githubUsername} (${authRes.user.name})!`);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/cli/helpers/open-url.ts","../src/cli/helpers/key-press.ts","../src/cli/commands/login.command.ts"],"names":["delay"],"mappings":"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","file":"chunk-EPKIAPPA.js","sourcesContent":["// TODO: figure out dev vs prod env vars... would be great to use varlock here!\n\n// NOTE - these keys are safe to publish\n\nexport const CONFIG = {\n // VARLOCK_API_URL: 'http://localhost:8888',\n VARLOCK_API_URL: 'https://api.varlock.dev',\n GITHUB_APP_CLIENT_ID: 'Iv23li50gB8bMxLauiJQ', // varlock.dev app\n POSTHOG_API_KEY: 'phc_bfzH97VIta8yQa8HrsgmitqS6rTydjMISs0m8aqJTnq',\n POSTHOG_HOST: 'https://ph.varlock.dev',\n};\n","import os from 'node:os';\nimport { spawn } from 'node:child_process';\n\nconst platform = os.platform();\n\nconst isWindows = platform.match(/^win/i);\nconst isMac = platform.match(/^darwin/i);\nconst isLinux = (!isWindows && !isMac);\n\n/** opens a url using the default browser */\nexport function openUrl(url: string) {\n if (isWindows) {\n spawn('cmd', ['/c', 'start', ' ', url], { detached: true });\n } else if (isMac) {\n spawn('open', [url], { detached: true });\n } else if (isLinux) {\n // TODO: maybe check for x-www-browser instead?\n spawn('xdg-open', [url], { detached: true });\n }\n}\n","import { gracefulExit } from 'exit-hook';\n\nexport async function keyPressed(keys: Array<string> | true = true) {\n process.stdin.setRawMode(true);\n return new Promise<void>((resolve) => {\n function keyPressHandler(d: Buffer) {\n const keyStr = d.toString();\n // exit on ctrl+c or ctrl+d\n if (['\\u0003', '\\u0004'].includes(keyStr)) {\n return gracefulExit(1);\n }\n if (keys === true || keys.includes(keyStr)) {\n process.stdin.setRawMode(false);\n process.stdin.off('data', keyPressHandler);\n resolve();\n }\n }\n process.stdin.on('data', keyPressHandler);\n });\n}\n","\nimport { setTimeout as delay } from 'node:timers/promises';\nimport ansis from 'ansis';\nimport { define } from 'gunshi';\nimport { logLines } from '../helpers/pretty-format';\nimport { CONFIG } from '../../config';\nimport { openUrl } from '../helpers/open-url';\nimport { keyPressed } from '../helpers/key-press';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport { gracefulExit } from 'exit-hook';\n\n\nexport const commandSpec = define({\n name: 'login',\n description: 'Authenticate (using GitHub)',\n args: {},\n});\n\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const codeReq = await fetch('https://github.com/login/device/code', {\n method: 'POST',\n body: JSON.stringify({\n client_id: CONFIG.GITHUB_APP_CLIENT_ID,\n }),\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n });\n if (codeReq.status !== 200) {\n console.log('Failed to initiate GitHub device flow login!');\n return gracefulExit(1);\n }\n\n const ghCodeInfo = await codeReq.json() as {\n device_code: string;\n user_code: string;\n verification_uri: string;\n expires_in: number;\n interval: number;\n };\n\n logLines([\n '🔑 Authenticating using GitHub:',\n '',\n `First please copy this code: ${ansis.bold.magenta(ghCodeInfo.user_code)}`,\n '',\n `Log in @ ${ghCodeInfo.verification_uri}`,\n '',\n 'Press ENTER to open in your default browser...',\n ]);\n await keyPressed(['\\r']);\n console.log(ansis.italic.gray('... please complete login on github.com ...'));\n openUrl(ghCodeInfo.verification_uri);\n\n const pollMs = ghCodeInfo.interval * 1000;\n const expiresMs = ghCodeInfo.expires_in * 1000;\n const startAt = new Date();\n\n let oauthStatus: any;\n while (true) {\n await delay(pollMs);\n try {\n const oauthStatusReq = await fetch('https://github.com/login/oauth/access_token', {\n method: 'POST',\n body: JSON.stringify({\n client_id: CONFIG.GITHUB_APP_CLIENT_ID,\n device_code: ghCodeInfo.device_code,\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n }),\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n });\n oauthStatus = await oauthStatusReq.json();\n } catch (err) {\n console.log(err);\n }\n\n // we are expecting to see { error: 'authorization_pending' }\n // probably a few more error types we could bail early on\n if (oauthStatus.error === 'access_denied') {\n console.log('❌ Login attempt was cancelled! Please try again.');\n return gracefulExit(1);\n }\n\n // if we got the token, we break and continue\n if (oauthStatus.access_token) break;\n\n // if we've been polling for too long, give up\n if (new Date().getTime() - startAt.getTime() > expiresMs) {\n console.log('❌ Login timed out! Please try again.');\n return gracefulExit(1);\n }\n }\n\n // oauthStatus when completed looks like:\n // {\n // access_token: 'ghu_abcxyz',\n // expires_in: 28800,\n // refresh_token: 'ghr_abcxyz',\n // refresh_token_expires_in: 15897600,\n // token_type: 'bearer',\n // scope: ''\n // }\n\n // pass along github auth info to API, which will fetch info from HG, handle login/signup, return JWT\n const authReq = await fetch(`${CONFIG.VARLOCK_API_URL}/github/auth-from-device-flow`, {\n method: 'POST',\n body: JSON.stringify({\n accessToken: oauthStatus.access_token,\n refreshToken: oauthStatus.refresh_token,\n accessTokenExpiresAt: new Date(Date.now() + oauthStatus.expires_in * 1000).toISOString(),\n refreshTokenExpiresAt: new Date(Date.now() + oauthStatus.refresh_token_expires_in * 1000).toISOString(),\n tokenType: oauthStatus.token_type,\n scope: oauthStatus.scope,\n }),\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n });\n if (authReq.status !== 200) {\n console.log(await authReq.json());\n return gracefulExit(1);\n }\n\n const authRes = await authReq.json() as {\n user: {\n githubUserId: string;\n githubUsername: string;\n name: string;\n },\n token: string;\n isNewUser: boolean;\n publicKey?: string;\n };\n\n // TODO: if app exists, pass off login info to it instead of storing in home folder\n // otherwise save login info in ~/.varlock/identity.json\n // also save it along with a new keypair if necessary, and send the public key to the api\n\n console.log(`✅ Logged in as ${authRes.user.githubUsername} (${authRes.user.name})!`);\n};\n"]}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
+
import { patchGlobalServerResponse } from './chunk-7JMYT62X.js';
|
|
2
|
+
import { execSyncVarlock } from './chunk-LBV2UW3I.js';
|
|
1
3
|
import { patchGlobalConsole } from './chunk-C5BEZMSO.js';
|
|
2
4
|
import { patchGlobalResponse } from './chunk-OM3JCP4E.js';
|
|
3
|
-
import { patchGlobalServerResponse } from './chunk-7JMYT62X.js';
|
|
4
5
|
import { initVarlockEnv } from './chunk-2SPIWTVE.js';
|
|
5
|
-
import { execSync } from 'child_process';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
// src/auto-load.ts
|
|
8
|
+
var execResult = execSyncVarlock("load --format json-full", {
|
|
9
|
+
exitOnError: true,
|
|
10
|
+
showLogsOnError: true
|
|
11
|
+
});
|
|
12
|
+
process.env.__VARLOCK_ENV = execResult;
|
|
9
13
|
initVarlockEnv();
|
|
10
14
|
patchGlobalConsole();
|
|
11
15
|
patchGlobalServerResponse();
|
|
12
16
|
patchGlobalResponse();
|
|
13
|
-
//# sourceMappingURL=chunk-
|
|
14
|
-
//# sourceMappingURL=chunk-
|
|
17
|
+
//# sourceMappingURL=chunk-IH74UIYN.js.map
|
|
18
|
+
//# sourceMappingURL=chunk-IH74UIYN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/auto-load.ts"],"names":[],"mappings":";;;;;;;AAaA,IAAM,UAAA,GAAa,gBAAgB,yBAAA,EAA2B;AAAA,EAC5D,WAAA,EAAa,IAAA;AAAA,EACb,eAAA,EAAiB;AACnB,CAAC,CAAA;AACD,OAAA,CAAQ,IAAI,aAAA,GAAgB,UAAA;AAG5B,cAAA,EAAe;AAEf,kBAAA,EAAmB;AACnB,yBAAA,EAA0B;AAC1B,mBAAA,EAAoB","file":"chunk-IH74UIYN.js","sourcesContent":["import { execSyncVarlock } from './lib/exec-sync-varlock';\n\nimport { initVarlockEnv } from './runtime/env';\nimport { patchGlobalConsole } from './runtime/patch-console';\nimport { patchGlobalServerResponse } from './runtime/patch-server-response';\nimport { patchGlobalResponse } from './runtime/patch-response';\n\n// The varlock loading process uses async calls, but we need this to run synchronously.\n// because even with top level await, we run into hoisting issues where things happen out of order\n// so we call out to the CLI using execSync\n// this also isolates the varlock loading process from the end user process\n\n\nconst execResult = execSyncVarlock('load --format json-full', {\n exitOnError: true,\n showLogsOnError: true,\n});\nprocess.env.__VARLOCK_ENV = execResult;\n\n// initialize varlock and patch globals as necessary\ninitVarlockEnv();\n// these will be no-ops if these are disabled by settings\npatchGlobalConsole();\npatchGlobalServerResponse();\npatchGlobalResponse();\n\n"]}
|
|
@@ -981,7 +981,7 @@ async function checkIsFileGitIgnored(path3, warnIfNotGitRepo = false) {
|
|
|
981
981
|
return true;
|
|
982
982
|
} catch (err) {
|
|
983
983
|
const stderr = err.stderr;
|
|
984
|
-
if (stderr.includes("not found")) return void 0;
|
|
984
|
+
if (err.status === 127 || stderr.includes("not found")) return void 0;
|
|
985
985
|
if (err.code === "ENOENT") return void 0;
|
|
986
986
|
if (stderr === "") return false;
|
|
987
987
|
if (stderr.includes("not a git repository")) {
|
|
@@ -2576,7 +2576,7 @@ var EnvGraphDataSource3 = class {
|
|
|
2576
2576
|
await this.addChild(source, { isImport: true, importKeys });
|
|
2577
2577
|
}
|
|
2578
2578
|
} else {
|
|
2579
|
-
const fsStat = await tryCatch(async () => fs2.stat(
|
|
2579
|
+
const fsStat = await tryCatch(async () => fs2.stat(fullImportPath), (_err) => {
|
|
2580
2580
|
});
|
|
2581
2581
|
if (!fsStat) {
|
|
2582
2582
|
this._loadingError = new Error(`Import path does not exist: ${fullImportPath}`);
|
|
@@ -2807,9 +2807,6 @@ var DirectoryDataSource = class extends EnvGraphDataSource3 {
|
|
|
2807
2807
|
return `directory - ${this.basePath}`;
|
|
2808
2808
|
}
|
|
2809
2809
|
schemaDataSource;
|
|
2810
|
-
get loadingError() {
|
|
2811
|
-
return this._loadingError || this.schemaDataSource?.loadingError;
|
|
2812
|
-
}
|
|
2813
2810
|
async addAutoLoadedFile(fileName) {
|
|
2814
2811
|
if (!this.graph) throw new Error("expected graph to be set");
|
|
2815
2812
|
const filePath = path2.join(this.basePath, fileName);
|
|
@@ -3048,5 +3045,5 @@ __name(gracefulExit, "gracefulExit");
|
|
|
3048
3045
|
//! these are probably not relevant anymore, or needs to move to a plugin layer?
|
|
3049
3046
|
|
|
3050
3047
|
export { CoercionError, ConfigLoadError, DotEnvFileDataSource, EnvGraph2 as EnvGraph, EnvSourceParseError, FileBasedDataSource, ResolutionError, SchemaError, ValidationError, ansis_default, asyncExitHook, checkIsFileGitIgnored, getItemSummary, gracefulExit, joinAndCompact, loadEnvGraph, my_dash_default, pathExists, pathExistsSync, tryCatch };
|
|
3051
|
-
//# sourceMappingURL=chunk-
|
|
3052
|
-
//# sourceMappingURL=chunk-
|
|
3048
|
+
//# sourceMappingURL=chunk-IWQ4BDSW.js.map
|
|
3049
|
+
//# sourceMappingURL=chunk-IWQ4BDSW.js.map
|