@nodetool-ai/config 0.7.0-rc.23 → 0.8.1
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 +50 -0
- package/dist/.nodetool-build-stamp +1 -0
- package/dist/__tests__/credit-policy.test.d.ts +2 -0
- package/dist/__tests__/credit-policy.test.d.ts.map +1 -0
- package/dist/__tests__/credit-policy.test.js +48 -0
- package/dist/__tests__/credit-policy.test.js.map +1 -0
- package/dist/__tests__/env-file.test.d.ts +2 -0
- package/dist/__tests__/env-file.test.d.ts.map +1 -0
- package/dist/__tests__/env-file.test.js +100 -0
- package/dist/__tests__/env-file.test.js.map +1 -0
- package/dist/__tests__/google-workspace.test.d.ts +2 -0
- package/dist/__tests__/google-workspace.test.d.ts.map +1 -0
- package/dist/__tests__/google-workspace.test.js +40 -0
- package/dist/__tests__/google-workspace.test.js.map +1 -0
- package/dist/__tests__/retention.test.d.ts +2 -0
- package/dist/__tests__/retention.test.d.ts.map +1 -0
- package/dist/__tests__/retention.test.js +21 -0
- package/dist/__tests__/retention.test.js.map +1 -0
- package/dist/byte-limits.d.ts +13 -0
- package/dist/byte-limits.d.ts.map +1 -0
- package/dist/byte-limits.js +28 -0
- package/dist/byte-limits.js.map +1 -0
- package/dist/credit-policy.d.ts +25 -0
- package/dist/credit-policy.d.ts.map +1 -0
- package/dist/credit-policy.js +63 -0
- package/dist/credit-policy.js.map +1 -0
- package/dist/deployment.d.ts +8 -0
- package/dist/deployment.d.ts.map +1 -0
- package/dist/deployment.js +19 -0
- package/dist/deployment.js.map +1 -0
- package/dist/env-file.d.ts +33 -0
- package/dist/env-file.d.ts.map +1 -0
- package/dist/env-file.js +83 -0
- package/dist/env-file.js.map +1 -0
- package/dist/environment.d.ts.map +1 -1
- package/dist/environment.js +20 -17
- package/dist/environment.js.map +1 -1
- package/dist/google-workspace.d.ts +3 -0
- package/dist/google-workspace.d.ts.map +1 -0
- package/dist/google-workspace.js +23 -0
- package/dist/google-workspace.js.map +1 -0
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -3
- package/dist/index.js.map +1 -1
- package/dist/logging.d.ts.map +1 -1
- package/dist/logging.js +46 -28
- package/dist/logging.js.map +1 -1
- package/dist/node-import.d.ts +37 -0
- package/dist/node-import.d.ts.map +1 -0
- package/dist/node-import.js +119 -0
- package/dist/node-import.js.map +1 -0
- package/dist/optional-modules.d.ts +8 -0
- package/dist/optional-modules.d.ts.map +1 -0
- package/dist/optional-modules.js +42 -0
- package/dist/optional-modules.js.map +1 -0
- package/dist/package-asset-registry.d.ts +102 -0
- package/dist/package-asset-registry.d.ts.map +1 -0
- package/dist/package-asset-registry.js +154 -0
- package/dist/package-asset-registry.js.map +1 -0
- package/dist/package-assets.d.ts +52 -0
- package/dist/package-assets.d.ts.map +1 -0
- package/dist/package-assets.js +98 -0
- package/dist/package-assets.js.map +1 -0
- package/dist/paths.d.ts +52 -23
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +166 -47
- package/dist/paths.js.map +1 -1
- package/dist/retention.d.ts +3 -0
- package/dist/retention.d.ts.map +1 -0
- package/dist/retention.js +19 -0
- package/dist/retention.js.map +1 -0
- package/dist/setting-catalog.d.ts +28 -0
- package/dist/setting-catalog.d.ts.map +1 -0
- package/dist/setting-catalog.js +161 -0
- package/dist/setting-catalog.js.map +1 -0
- package/dist/storage-config.d.ts +45 -0
- package/dist/storage-config.d.ts.map +1 -0
- package/dist/storage-config.js +62 -0
- package/dist/storage-config.js.map +1 -0
- package/package.json +23 -8
- package/dist/diagnostics.d.ts +0 -27
- package/dist/diagnostics.d.ts.map +0 -1
- package/dist/diagnostics.js +0 -42
- package/dist/diagnostics.js.map +0 -1
- package/dist/settings.d.ts +0 -29
- package/dist/settings.d.ts.map +0 -1
- package/dist/settings.js +0 -29
- package/dist/settings.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-file.js","sourceRoot":"","sources":["../src/env-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAwBA;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAmCtD;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK7E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
|
package/dist/environment.js
CHANGED
|
@@ -3,10 +3,15 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Loads .env files in order: .env, .env.{NODE_ENV}, .env.{NODE_ENV}.local
|
|
5
5
|
* Later files override earlier ones. System env vars always win.
|
|
6
|
+
*
|
|
7
|
+
* `node:fs` and `node:path` are lazy-loaded so the module graph loads
|
|
8
|
+
* on non-Node runtimes (browser, Edge). `loadEnvironment()` is a no-op
|
|
9
|
+
* outside Node.
|
|
6
10
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
11
|
+
import { loadEnvFile } from "./env-file.js";
|
|
12
|
+
import { IS_NODE, getNodeBuiltinSync } from "./node-import.js";
|
|
13
|
+
const fsSync = getNodeBuiltinSync("node:fs");
|
|
14
|
+
const pathSync = getNodeBuiltinSync("node:path");
|
|
10
15
|
let loaded = false;
|
|
11
16
|
const envStore = new Map();
|
|
12
17
|
/**
|
|
@@ -16,26 +21,24 @@ const envStore = new Map();
|
|
|
16
21
|
* @param rootDir - Directory containing .env files. Defaults to cwd.
|
|
17
22
|
*/
|
|
18
23
|
export function loadEnvironment(rootDir) {
|
|
24
|
+
if (!IS_NODE || !fsSync || !pathSync) {
|
|
25
|
+
// Outside Node — no .env files to load.
|
|
26
|
+
loaded = true;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
19
29
|
const root = rootDir ?? process.cwd();
|
|
20
30
|
const nodeEnv = process.env.NODE_ENV ?? "development";
|
|
21
|
-
// Load files in order: .env, .env.{NODE_ENV}, .env.{NODE_ENV}.local
|
|
22
31
|
const files = [
|
|
23
|
-
resolve(root, ".env"),
|
|
24
|
-
resolve(root, `.env.${nodeEnv}`),
|
|
25
|
-
resolve(root, `.env.${nodeEnv}.local`)
|
|
32
|
+
pathSync.resolve(root, ".env"),
|
|
33
|
+
pathSync.resolve(root, `.env.${nodeEnv}`),
|
|
34
|
+
pathSync.resolve(root, `.env.${nodeEnv}.local`)
|
|
26
35
|
];
|
|
27
|
-
// Start fresh
|
|
28
36
|
envStore.clear();
|
|
29
|
-
// Snapshot system env before loading files
|
|
30
37
|
const systemEnv = { ...process.env };
|
|
31
38
|
for (const file of files) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
for (const [key, value] of Object.entries(result.parsed)) {
|
|
36
|
-
envStore.set(key, value);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
+
const parsed = loadEnvFile(fsSync, file);
|
|
40
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
41
|
+
envStore.set(key, value);
|
|
39
42
|
}
|
|
40
43
|
}
|
|
41
44
|
// System env always wins — restore original system values on top
|
|
@@ -55,7 +58,7 @@ export function getEnv(key, defaultValue) {
|
|
|
55
58
|
if (loaded) {
|
|
56
59
|
return envStore.get(key) ?? defaultValue;
|
|
57
60
|
}
|
|
58
|
-
return process.env[key] ?? defaultValue;
|
|
61
|
+
return (IS_NODE ? process.env[key] : undefined) ?? defaultValue;
|
|
59
62
|
}
|
|
60
63
|
/**
|
|
61
64
|
* Get a required environment variable. Throws if not set.
|
package/dist/environment.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAO/D,MAAM,MAAM,GAAG,kBAAkB,CAAQ,SAAS,CAAC,CAAC;AACpD,MAAM,QAAQ,GAAG,kBAAkB,CAAU,WAAW,CAAC,CAAC;AAE1D,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,wCAAwC;QACxC,MAAM,GAAG,IAAI,CAAC;QACd,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;IAEtD,MAAM,KAAK,GAAG;QACZ,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,OAAO,EAAE,CAAC;QACzC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,OAAO,QAAQ,CAAC;KAChD,CAAC;IAEF,QAAQ,CAAC,KAAK,EAAE,CAAC;IAEjB,MAAM,SAAS,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,GAAW,EAAE,YAAqB;IACvD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,aAAa,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,MAAM,GAAG,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-workspace.d.ts","sourceRoot":"","sources":["../src/google-workspace.ts"],"names":[],"mappings":"AAcA,mEAAmE;AACnE,wBAAgB,wBAAwB,IAAI,OAAO,CAKlD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Availability gate for the Google Workspace integration (Drive, Gmail, Docs,
|
|
3
|
+
* Sheets, Calendar).
|
|
4
|
+
*
|
|
5
|
+
* The `google` capability module authenticates with the Google access token the
|
|
6
|
+
* user's Supabase Google login hands back — there is no API key to paste. A
|
|
7
|
+
* local install has no login, so the integration would only ever surface an
|
|
8
|
+
* error; it is hidden there instead.
|
|
9
|
+
*
|
|
10
|
+
* Set `NODETOOL_GOOGLE_WORKSPACE=1` to force it on (useful when a local server
|
|
11
|
+
* points at a hosted Supabase project), or `0` to force it off.
|
|
12
|
+
*/
|
|
13
|
+
import { isAuthEnforced } from "./deployment.js";
|
|
14
|
+
/** Whether the Google Workspace capabilities should be offered. */
|
|
15
|
+
export function isGoogleWorkspaceEnabled() {
|
|
16
|
+
const override = process.env["NODETOOL_GOOGLE_WORKSPACE"]?.trim();
|
|
17
|
+
if (override === "1" || override === "true")
|
|
18
|
+
return true;
|
|
19
|
+
if (override === "0" || override === "false")
|
|
20
|
+
return false;
|
|
21
|
+
return isAuthEnforced();
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=google-workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-workspace.js","sourceRoot":"","sources":["../src/google-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,mEAAmE;AACnE,MAAM,UAAU,wBAAwB;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE,IAAI,EAAE,CAAC;IAClE,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACzD,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3D,OAAO,cAAc,EAAE,CAAC;AAC1B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
+
export { IS_NODE, safeProcessEnv, safeProcessPlatform, importNodeBuiltin, getNodeBuiltinSync, importNodeBuiltinSync, importHidden } from "./node-import.js";
|
|
1
2
|
export { loadEnvironment, getEnv, requireEnv, resetEnvironment } from "./environment.js";
|
|
2
|
-
export {
|
|
3
|
+
export { getByteLimitEnv } from "./byte-limits.js";
|
|
4
|
+
export { isAuthEnforced } from "./deployment.js";
|
|
5
|
+
export { CREDIT_MODELS_ENV, SIGNUP_CREDITS_ENV, DEFAULT_SIGNUP_CREDITS, creditModelAllowlist, isCreditModelAllowed, signupGrantCredits } from "./credit-policy.js";
|
|
6
|
+
export { isGoogleWorkspaceEnabled } from "./google-workspace.js";
|
|
7
|
+
export { isAutomaticStorageCleanupEnabled } from "./retention.js";
|
|
8
|
+
export { settingCatalog, settingDefinition, type SettingCatalogEntry } from "./setting-catalog.js";
|
|
3
9
|
export { configureLogging, getLogLevel, createLogger, type LogLevel, type LoggingOptions, type Logger } from "./logging.js";
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
10
|
+
export { importOptionalModule } from "./optional-modules.js";
|
|
11
|
+
export { PACKAGE_RUNTIME_ASSETS, PACKAGE_RUNTIME_ASSET_DIRS, SHIPPED_SANDBOX_PACKS_SOURCE_DIR, SHIPPED_SANDBOX_PACKS_BUNDLE_DIR, SHIPPED_SYSTEM_SKILLS_SOURCE_DIR, SHIPPED_SYSTEM_SKILLS_BUNDLE_DIR, findPackageAsset, type PackageAssetRef } from "./package-asset-registry.js";
|
|
12
|
+
export { resolvePackageAssetPath, loadPackageAssetJson, getPackageAssetResolutions, type PackageAssetResolution } from "./package-assets.js";
|
|
13
|
+
export { getNodetoolDataDir, getNodetoolCacheDir, getDefaultDbPath, getPostgresDatabaseUrl, getDefaultVectorstoreDbPath, getDefaultAssetsPath, getDefaultTransformersJsCacheDir, getAssetFilePath, buildAssetUrl, getManagedWorkspacesDir, getManagedWorkspaceDir, managedWorkspaceKey, workspaceStorageKind } from "./paths.js";
|
|
14
|
+
export { loadAssetStorageConfig, loadTempStorageConfig, SIGNED_URL_TTL, type StorageConfig } from "./storage-config.js";
|
|
6
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,MAAM,EACN,UAAU,EACV,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,MAAM,EACN,UAAU,EACV,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,gCAAgC,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,MAAM,EACZ,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,gCAAgC,EAChC,gCAAgC,EAChC,gCAAgC,EAChC,gCAAgC,EAChC,gBAAgB,EAChB,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,EAC3B,oBAAoB,EACpB,gCAAgC,EAChC,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
+
export { IS_NODE, safeProcessEnv, safeProcessPlatform, importNodeBuiltin, getNodeBuiltinSync, importNodeBuiltinSync, importHidden } from "./node-import.js";
|
|
1
2
|
export { loadEnvironment, getEnv, requireEnv, resetEnvironment } from "./environment.js";
|
|
2
|
-
export {
|
|
3
|
+
export { getByteLimitEnv } from "./byte-limits.js";
|
|
4
|
+
export { isAuthEnforced } from "./deployment.js";
|
|
5
|
+
export { CREDIT_MODELS_ENV, SIGNUP_CREDITS_ENV, DEFAULT_SIGNUP_CREDITS, creditModelAllowlist, isCreditModelAllowed, signupGrantCredits } from "./credit-policy.js";
|
|
6
|
+
export { isGoogleWorkspaceEnabled } from "./google-workspace.js";
|
|
7
|
+
export { isAutomaticStorageCleanupEnabled } from "./retention.js";
|
|
8
|
+
export { settingCatalog, settingDefinition } from "./setting-catalog.js";
|
|
3
9
|
export { configureLogging, getLogLevel, createLogger } from "./logging.js";
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
10
|
+
export { importOptionalModule } from "./optional-modules.js";
|
|
11
|
+
export { PACKAGE_RUNTIME_ASSETS, PACKAGE_RUNTIME_ASSET_DIRS, SHIPPED_SANDBOX_PACKS_SOURCE_DIR, SHIPPED_SANDBOX_PACKS_BUNDLE_DIR, SHIPPED_SYSTEM_SKILLS_SOURCE_DIR, SHIPPED_SYSTEM_SKILLS_BUNDLE_DIR, findPackageAsset } from "./package-asset-registry.js";
|
|
12
|
+
export { resolvePackageAssetPath, loadPackageAssetJson, getPackageAssetResolutions } from "./package-assets.js";
|
|
13
|
+
export { getNodetoolDataDir, getNodetoolCacheDir, getDefaultDbPath, getPostgresDatabaseUrl, getDefaultVectorstoreDbPath, getDefaultAssetsPath, getDefaultTransformersJsCacheDir, getAssetFilePath, buildAssetUrl, getManagedWorkspacesDir, getManagedWorkspaceDir, managedWorkspaceKey, workspaceStorageKind } from "./paths.js";
|
|
14
|
+
export { loadAssetStorageConfig, loadTempStorageConfig, SIGNED_URL_TTL } from "./storage-config.js";
|
|
6
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,MAAM,EACN,UAAU,EACV,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,MAAM,EACN,UAAU,EACV,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,gCAAgC,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EACL,cAAc,EACd,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EAIb,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,gCAAgC,EAChC,gCAAgC,EAChC,gCAAgC,EAChC,gCAAgC,EAChC,gBAAgB,EAEjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,EAC3B,oBAAoB,EACpB,gCAAgC,EAChC,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EAEf,MAAM,qBAAqB,CAAC"}
|
package/dist/logging.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC7C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC5C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAoCD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,cAAmB,GAAG,IAAI,CAiBhE;AAED,wCAAwC;AACxC,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAgHD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOjD"}
|
package/dist/logging.js
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* log.info("Workflow started", { jobId });
|
|
8
8
|
* log.debug("Node executing", { nodeId, type });
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { IS_NODE, getNodeBuiltinSync } from "./node-import.js";
|
|
11
|
+
const fsSync = getNodeBuiltinSync("node:fs");
|
|
11
12
|
const VALID_LEVELS = ["debug", "info", "warn", "error"];
|
|
12
13
|
const LEVEL_NUM = {
|
|
13
14
|
debug: 0,
|
|
@@ -16,19 +17,22 @@ const LEVEL_NUM = {
|
|
|
16
17
|
error: 3
|
|
17
18
|
};
|
|
18
19
|
/** Maps Python-style log level names to their JS equivalents. */
|
|
19
|
-
const LEVEL_ALIASES =
|
|
20
|
-
warning
|
|
21
|
-
critical
|
|
22
|
-
|
|
20
|
+
const LEVEL_ALIASES = new Map([
|
|
21
|
+
["warning", "warn"],
|
|
22
|
+
["critical", "error"]
|
|
23
|
+
]);
|
|
23
24
|
function normalizeLevel(raw) {
|
|
24
25
|
const lower = raw.toLowerCase();
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
return (VALID_LEVELS.find((level) => level === lower) ??
|
|
27
|
+
LEVEL_ALIASES.get(lower) ??
|
|
28
|
+
null);
|
|
28
29
|
}
|
|
29
30
|
// Initialize eagerly from env so configureLogging() is optional for entry
|
|
30
31
|
// points (e.g. the WebSocket server) that skip the explicit call.
|
|
31
|
-
|
|
32
|
+
// Use globalThis.process so the module loads on runtimes (browser, Edge)
|
|
33
|
+
// where `process` is undefined.
|
|
34
|
+
const ENV = IS_NODE ? process.env : {};
|
|
35
|
+
let currentLevel = normalizeLevel(ENV["NODETOOL_LOG_LEVEL"] ?? ENV["LOG_LEVEL"] ?? "") ?? "info";
|
|
32
36
|
/** File descriptor for log output. Defaults to stderr; set via NODETOOL_LOG_FILE. */
|
|
33
37
|
let logFd = null;
|
|
34
38
|
/**
|
|
@@ -43,14 +47,14 @@ export function configureLogging(opts = {}) {
|
|
|
43
47
|
currentLevel = opts.level;
|
|
44
48
|
}
|
|
45
49
|
else {
|
|
46
|
-
const envRaw =
|
|
50
|
+
const envRaw = ENV["NODETOOL_LOG_LEVEL"] ?? ENV["LOG_LEVEL"] ?? "info";
|
|
47
51
|
currentLevel = normalizeLevel(envRaw) ?? "info";
|
|
48
52
|
}
|
|
49
|
-
// Open log file if configured (
|
|
50
|
-
const logFile =
|
|
51
|
-
if (logFile && logFd === null) {
|
|
53
|
+
// Open log file if configured (only available on Node)
|
|
54
|
+
const logFile = ENV["NODETOOL_LOG_FILE"];
|
|
55
|
+
if (logFile && logFd === null && fsSync) {
|
|
52
56
|
try {
|
|
53
|
-
logFd = openSync(logFile, "a");
|
|
57
|
+
logFd = fsSync.openSync(logFile, "a");
|
|
54
58
|
}
|
|
55
59
|
catch {
|
|
56
60
|
// Fall back to stderr silently
|
|
@@ -61,8 +65,8 @@ export function configureLogging(opts = {}) {
|
|
|
61
65
|
export function getLogLevel() {
|
|
62
66
|
return currentLevel;
|
|
63
67
|
}
|
|
64
|
-
// Colour support
|
|
65
|
-
const USE_COLOR = process.stderr
|
|
68
|
+
// Colour support — only on Node where process.stderr.isTTY exists.
|
|
69
|
+
const USE_COLOR = IS_NODE && Boolean(process.stderr?.isTTY) && !ENV["NO_COLOR"];
|
|
66
70
|
const C = {
|
|
67
71
|
reset: USE_COLOR ? "\x1b[0m" : "",
|
|
68
72
|
dim: USE_COLOR ? "\x1b[2m" : "",
|
|
@@ -85,21 +89,26 @@ function timestamp() {
|
|
|
85
89
|
const ss = String(d.getSeconds()).padStart(2, "0");
|
|
86
90
|
return `${hh}:${mm}:${ss}`;
|
|
87
91
|
}
|
|
88
|
-
// JSON.stringify replacer that unwraps Error instances — their own fields
|
|
89
|
-
// (`message`, `stack`, `name`) are non-enumerable, so the default serializer
|
|
90
|
-
// produces "{}". Without this, nested errors like `{ provider, error }` lose
|
|
91
|
-
// all diagnostic information in the log output.
|
|
92
92
|
function jsonReplacer(_key, value) {
|
|
93
93
|
if (value instanceof Error) {
|
|
94
|
-
|
|
94
|
+
const serialized = {
|
|
95
95
|
name: value.name,
|
|
96
|
-
message: value.message
|
|
97
|
-
...(value.stack ? { stack: value.stack } : {}),
|
|
98
|
-
...(value.cause !== undefined ? { cause: value.cause } : {})
|
|
96
|
+
message: value.message
|
|
99
97
|
};
|
|
98
|
+
if (value.stack) {
|
|
99
|
+
serialized.stack = value.stack;
|
|
100
|
+
}
|
|
101
|
+
if (value.cause !== undefined) {
|
|
102
|
+
serialized.cause = value.cause;
|
|
103
|
+
}
|
|
104
|
+
return serialized;
|
|
100
105
|
}
|
|
101
106
|
return value;
|
|
102
107
|
}
|
|
108
|
+
/** A log argument worth rendering as JSON instead of stringifying. */
|
|
109
|
+
function isStructured(value) {
|
|
110
|
+
return typeof value === "object" && value !== null;
|
|
111
|
+
}
|
|
103
112
|
function formatArgs(args) {
|
|
104
113
|
if (args.length === 0)
|
|
105
114
|
return "";
|
|
@@ -108,7 +117,7 @@ function formatArgs(args) {
|
|
|
108
117
|
.map((a) => {
|
|
109
118
|
if (a instanceof Error)
|
|
110
119
|
return a.stack ?? a.message;
|
|
111
|
-
if (
|
|
120
|
+
if (isStructured(a)) {
|
|
112
121
|
try {
|
|
113
122
|
return JSON.stringify(a, jsonReplacer);
|
|
114
123
|
}
|
|
@@ -128,12 +137,21 @@ function write(level, name, msg, args) {
|
|
|
128
137
|
const lv = `${lc}${level.toUpperCase().padEnd(5)}${C.reset}`;
|
|
129
138
|
const nm = `${C.cyan}${name}${C.reset}`;
|
|
130
139
|
const line = `${ts} | ${lv} | ${nm} | ${msg}${formatArgs(args)}\n`;
|
|
131
|
-
if (logFd !== null) {
|
|
132
|
-
writeSync(logFd, line);
|
|
140
|
+
if (logFd !== null && fsSync) {
|
|
141
|
+
fsSync.writeSync(logFd, line);
|
|
133
142
|
}
|
|
134
|
-
else {
|
|
143
|
+
else if (IS_NODE) {
|
|
135
144
|
process.stderr.write(line);
|
|
136
145
|
}
|
|
146
|
+
else {
|
|
147
|
+
// Browser / V8 isolate — use console.
|
|
148
|
+
const fn = level === "error"
|
|
149
|
+
? console.error
|
|
150
|
+
: level === "warn"
|
|
151
|
+
? console.warn
|
|
152
|
+
: console.log;
|
|
153
|
+
fn(line.trimEnd());
|
|
154
|
+
}
|
|
137
155
|
}
|
|
138
156
|
/**
|
|
139
157
|
* Create a named logger. Mirrors Python's logging.getLogger(__name__).
|
package/dist/logging.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-runtime helpers for loading `node:*` built-ins lazily.
|
|
3
|
+
*
|
|
4
|
+
* Bundlers (Vite, esbuild) try to resolve `node:fs` etc. at build time
|
|
5
|
+
* even when the import is gated behind a runtime check, and `@vite-ignore`
|
|
6
|
+
* comments don't always stop the resolver. We use the `Function`
|
|
7
|
+
* constructor to construct an `import()` call the static analyser never
|
|
8
|
+
* sees.
|
|
9
|
+
*
|
|
10
|
+
* Returns `null` on non-Node runtimes (browser, V8 isolates without
|
|
11
|
+
* Node compat), so callers can fall back to platform-specific paths.
|
|
12
|
+
*/
|
|
13
|
+
export declare const IS_NODE: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* `process` is undefined in browser/edge runtimes, where a bare `process.env`
|
|
16
|
+
* read throws `ReferenceError` — including at module scope, which takes the
|
|
17
|
+
* whole bundle down at import time rather than at the call that wanted the
|
|
18
|
+
* variable. Any module that can end up in a browser graph reads env through
|
|
19
|
+
* this instead.
|
|
20
|
+
*/
|
|
21
|
+
export declare const safeProcessEnv: () => Record<string, string | undefined>;
|
|
22
|
+
/** `process.platform`, or `""` where there is no `process`. */
|
|
23
|
+
export declare const safeProcessPlatform: () => string;
|
|
24
|
+
export declare function importNodeBuiltin<T>(name: string): Promise<T | null>;
|
|
25
|
+
export declare function getNodeBuiltinSync<T>(name: string): T | null;
|
|
26
|
+
/** Alias for `getNodeBuiltinSync` — synchronous counterpart to `importNodeBuiltin`. */
|
|
27
|
+
export declare const importNodeBuiltinSync: typeof getNodeBuiltinSync;
|
|
28
|
+
/**
|
|
29
|
+
* Dynamic import of an arbitrary module specifier hidden from bundler
|
|
30
|
+
* static analysis. Use for native/Node-only npm packages (e.g. `sharp`,
|
|
31
|
+
* `better-sqlite3`) so a browser/edge bundle doesn't try to bundle them.
|
|
32
|
+
*
|
|
33
|
+
* Returns `null` on non-Node runtimes. Throws if the package can't be
|
|
34
|
+
* resolved on Node — callers should catch if the dependency is optional.
|
|
35
|
+
*/
|
|
36
|
+
export declare function importHidden<T>(name: string): Promise<T | null>;
|
|
37
|
+
//# sourceMappingURL=node-import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-import.d.ts","sourceRoot":"","sources":["../src/node-import.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,eAAO,MAAM,OAAO,SAC8C,CAAC;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAAO,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CACD,CAAC;AAEnE,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,QAAO,MACyB,CAAC;AAsCjE,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAS1E;AAoCD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAsB5D;AAED,uFAAuF;AACvF,eAAO,MAAM,qBAAqB,2BAAqB,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAIrE"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-runtime helpers for loading `node:*` built-ins lazily.
|
|
3
|
+
*
|
|
4
|
+
* Bundlers (Vite, esbuild) try to resolve `node:fs` etc. at build time
|
|
5
|
+
* even when the import is gated behind a runtime check, and `@vite-ignore`
|
|
6
|
+
* comments don't always stop the resolver. We use the `Function`
|
|
7
|
+
* constructor to construct an `import()` call the static analyser never
|
|
8
|
+
* sees.
|
|
9
|
+
*
|
|
10
|
+
* Returns `null` on non-Node runtimes (browser, V8 isolates without
|
|
11
|
+
* Node compat), so callers can fall back to platform-specific paths.
|
|
12
|
+
*/
|
|
13
|
+
export const IS_NODE = typeof process !== "undefined" && process.versions?.node != null;
|
|
14
|
+
/**
|
|
15
|
+
* `process` is undefined in browser/edge runtimes, where a bare `process.env`
|
|
16
|
+
* read throws `ReferenceError` — including at module scope, which takes the
|
|
17
|
+
* whole bundle down at import time rather than at the call that wanted the
|
|
18
|
+
* variable. Any module that can end up in a browser graph reads env through
|
|
19
|
+
* this instead.
|
|
20
|
+
*/
|
|
21
|
+
export const safeProcessEnv = () => typeof process !== "undefined" && process.env ? process.env : {};
|
|
22
|
+
/** `process.platform`, or `""` where there is no `process`. */
|
|
23
|
+
export const safeProcessPlatform = () => typeof process !== "undefined" ? (process.platform ?? "") : "";
|
|
24
|
+
/**
|
|
25
|
+
* Dynamic import that bundlers can't statically resolve.
|
|
26
|
+
*
|
|
27
|
+
* The Function-constructor body hides the `import()` call from Vite /
|
|
28
|
+
* Rollup / esbuild static analysis so they don't try to bundle Node
|
|
29
|
+
* built-ins into a browser graph. At runtime we prefer the constructed
|
|
30
|
+
* function, but in some test loaders (vitest) Function-context dynamic
|
|
31
|
+
* imports don't have access to the loader callback ("A dynamic import
|
|
32
|
+
* callback was not specified.") — in that case we fall back to a plain
|
|
33
|
+
* dynamic `import(name)` evaluated in the calling module's context.
|
|
34
|
+
*/
|
|
35
|
+
const hiddenImport = (() => {
|
|
36
|
+
try {
|
|
37
|
+
// SAFETY: the constructed body is exactly `import(id)`, whose resolution
|
|
38
|
+
// value is always a module namespace object.
|
|
39
|
+
return new Function("id", "return import(id)");
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return (id) => import(/* @vite-ignore */ id);
|
|
43
|
+
}
|
|
44
|
+
})();
|
|
45
|
+
async function tryImport(name) {
|
|
46
|
+
try {
|
|
47
|
+
return await hiddenImport(name);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
51
|
+
// Fall back to in-context dynamic import for vitest's VM loader.
|
|
52
|
+
if (msg.includes("dynamic import callback")) {
|
|
53
|
+
return await import(/* @vite-ignore */ name);
|
|
54
|
+
}
|
|
55
|
+
throw err;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export async function importNodeBuiltin(name) {
|
|
59
|
+
if (!IS_NODE)
|
|
60
|
+
return null;
|
|
61
|
+
try {
|
|
62
|
+
// SAFETY: `T` is the namespace shape the caller names for `name`; the
|
|
63
|
+
// pairing of specifier and type is the caller's to keep honest.
|
|
64
|
+
return (await tryImport(name));
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** Whether this Node build exposes the `process.getBuiltinModule` accessor. */
|
|
71
|
+
function hasGetBuiltinModule(proc) {
|
|
72
|
+
return typeof proc?.getBuiltinModule === "function";
|
|
73
|
+
}
|
|
74
|
+
/** Whether this module was loaded from a CJS bundle, which carries `require`. */
|
|
75
|
+
function hasCjsRequire(global) {
|
|
76
|
+
return typeof global.require === "function";
|
|
77
|
+
}
|
|
78
|
+
export function getNodeBuiltinSync(name) {
|
|
79
|
+
if (!IS_NODE)
|
|
80
|
+
return null;
|
|
81
|
+
try {
|
|
82
|
+
// SAFETY: `getBuiltinModule` landed in Node 18.19 and is absent from the
|
|
83
|
+
// `@types/node` `Process` this repo compiles against; the guard below is
|
|
84
|
+
// what decides whether it is really there.
|
|
85
|
+
const proc = globalThis.process;
|
|
86
|
+
if (hasGetBuiltinModule(proc)) {
|
|
87
|
+
// SAFETY: `T` is the namespace shape the caller names for `name`.
|
|
88
|
+
return proc.getBuiltinModule(name);
|
|
89
|
+
}
|
|
90
|
+
// SAFETY: `require` exists only when this module is loaded from a CJS
|
|
91
|
+
// bundle, so it is not on the ESM `globalThis` type; the guard decides.
|
|
92
|
+
const globalScope = globalThis;
|
|
93
|
+
if (hasCjsRequire(globalScope)) {
|
|
94
|
+
// SAFETY: `T` is the export shape the caller names for `name`.
|
|
95
|
+
return globalScope.require(name);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// fall through to null
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
/** Alias for `getNodeBuiltinSync` — synchronous counterpart to `importNodeBuiltin`. */
|
|
104
|
+
export const importNodeBuiltinSync = getNodeBuiltinSync;
|
|
105
|
+
/**
|
|
106
|
+
* Dynamic import of an arbitrary module specifier hidden from bundler
|
|
107
|
+
* static analysis. Use for native/Node-only npm packages (e.g. `sharp`,
|
|
108
|
+
* `better-sqlite3`) so a browser/edge bundle doesn't try to bundle them.
|
|
109
|
+
*
|
|
110
|
+
* Returns `null` on non-Node runtimes. Throws if the package can't be
|
|
111
|
+
* resolved on Node — callers should catch if the dependency is optional.
|
|
112
|
+
*/
|
|
113
|
+
export async function importHidden(name) {
|
|
114
|
+
if (!IS_NODE)
|
|
115
|
+
return null;
|
|
116
|
+
// SAFETY: `T` is the namespace shape the caller names for `name`.
|
|
117
|
+
return (await tryImport(name));
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=node-import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-import.js","sourceRoot":"","sources":["../src/node-import.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Import an optional dependency from the normal module graph, or — on Node —
|
|
3
|
+
* from a user-managed `node_modules` directory pointed to by
|
|
4
|
+
* NODETOOL_OPTIONAL_NODE_MODULES. The fallback path is Node-only; on
|
|
5
|
+
* browsers / Edge we just re-throw the original import failure.
|
|
6
|
+
*/
|
|
7
|
+
export declare function importOptionalModule<T>(packageName: string): Promise<T>;
|
|
8
|
+
//# sourceMappingURL=optional-modules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optional-modules.d.ts","sourceRoot":"","sources":["../src/optional-modules.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAqC7E"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Import an optional dependency from the normal module graph, or — on Node —
|
|
3
|
+
* from a user-managed `node_modules` directory pointed to by
|
|
4
|
+
* NODETOOL_OPTIONAL_NODE_MODULES. The fallback path is Node-only; on
|
|
5
|
+
* browsers / Edge we just re-throw the original import failure.
|
|
6
|
+
*/
|
|
7
|
+
import { IS_NODE, importNodeBuiltin, importHidden } from "./node-import.js";
|
|
8
|
+
export async function importOptionalModule(packageName) {
|
|
9
|
+
try {
|
|
10
|
+
const mod = await importHidden(packageName);
|
|
11
|
+
if (mod === null) {
|
|
12
|
+
throw new Error(`importOptionalModule: ${packageName} unavailable on non-Node`);
|
|
13
|
+
}
|
|
14
|
+
return mod;
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
if (!IS_NODE)
|
|
18
|
+
throw error;
|
|
19
|
+
const optionalNodeModules = process.env["NODETOOL_OPTIONAL_NODE_MODULES"];
|
|
20
|
+
if (!optionalNodeModules) {
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const modMod = await importNodeBuiltin("node:module");
|
|
25
|
+
const pathMod = await importNodeBuiltin("node:path");
|
|
26
|
+
const urlMod = await importNodeBuiltin("node:url");
|
|
27
|
+
if (!modMod || !pathMod || !urlMod)
|
|
28
|
+
throw error;
|
|
29
|
+
const requireFromOptional = modMod.createRequire(pathMod.join(optionalNodeModules, "..", "package.json"));
|
|
30
|
+
const resolved = requireFromOptional.resolve(packageName);
|
|
31
|
+
const fileMod = await importHidden(urlMod.pathToFileURL(resolved).href);
|
|
32
|
+
if (fileMod === null) {
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
return fileMod;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
throw error;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=optional-modules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optional-modules.js","sourceRoot":"","sources":["../src/optional-modules.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAI,WAAmB;IAC/D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAI,WAAW,CAAC,CAAC;QAC/C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,0BAA0B,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,OAAO;YAAE,MAAM,KAAK,CAAC;QAC1B,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC1E,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,aAAa,CACd,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,iBAAiB,CACrC,WAAW,CACZ,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,UAAU,CACX,CAAC;YACF,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;gBAAE,MAAM,KAAK,CAAC;YAChD,MAAM,mBAAmB,GAAG,MAAM,CAAC,aAAa,CAC9C,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,cAAc,CAAC,CACxD,CAAC;YACF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,KAAK,CAAC;YACd,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC"}
|