@dbx-tools/tunnel 0.6.67 → 0.6.68
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 +7 -6
- package/lib/src/portr.js +11 -20
- package/package.json +7 -7
- package/src/portr.ts +10 -25
package/README.md
CHANGED
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
Front an app with a public tunnel and an email one-time-code access gate,
|
|
4
4
|
in-process.
|
|
5
5
|
|
|
6
|
-
Built on [
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
Built on the [SSE-enabled Portr fork](https://github.com/reggie-db/portr/releases/tag/v1.0.15-sse.2),
|
|
7
|
+
based on [upstream Portr](https://github.com/amalshaji/portr). Use this library
|
|
8
|
+
when an app needs to be reachable from outside its network - a stakeholder demo,
|
|
9
|
+
a webhook sender that has to reach a dev build, an OAuth redirect that cannot
|
|
10
|
+
point at `localhost` - without publishing the app to anyone who learns the URL.
|
|
11
|
+
It is shaped for Databricks Apps (it honours the `DATABRICKS_APP_PORT` contract
|
|
12
|
+
and lets the platform's own front door through ungated) but the gate itself is
|
|
12
13
|
platform-neutral.
|
|
13
14
|
|
|
14
15
|
The tunnel plugs into `@dbx-tools/appkit`'s `createApp` through its INTERCEPTOR
|
package/lib/src/portr.js
CHANGED
|
@@ -18,7 +18,8 @@ import { bin } from "@dbx-tools/core";
|
|
|
18
18
|
import { env, log } from "@dbx-tools/shared-core";
|
|
19
19
|
import { PUBLIC_DOMAIN_ENV } from "./env.js";
|
|
20
20
|
const logger = log.logger("tunnel:portr");
|
|
21
|
-
const
|
|
21
|
+
const PORTR_VERSION = "1.0.15-sse.2";
|
|
22
|
+
const PORTR_RELEASE_URL = `https://github.com/reggie-db/portr/releases/download/v${PORTR_VERSION}`;
|
|
22
23
|
const PORTR_MIN_VERSION = "v1.0.15";
|
|
23
24
|
const execFileAsync = promisify(execFile);
|
|
24
25
|
/**
|
|
@@ -53,24 +54,10 @@ export function portrAssetName(version, platform = process.platform, arch = proc
|
|
|
53
54
|
}
|
|
54
55
|
return `portr_${version}_${osName}_${archName}.zip`;
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
"user-agent": "@dbx-tools/tunnel",
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
|
-
if (!releaseResponse.ok) {
|
|
64
|
-
throw new Error(`portr release lookup failed (${releaseResponse.status})`);
|
|
65
|
-
}
|
|
66
|
-
const release = (await releaseResponse.json());
|
|
67
|
-
const version = release.tag_name.replace(/^v/, "");
|
|
68
|
-
const assetName = portrAssetName(version);
|
|
69
|
-
const asset = release.assets.find((candidate) => candidate.name === assetName);
|
|
70
|
-
if (!asset)
|
|
71
|
-
throw new Error(`portr release ${release.tag_name} has no ${assetName}`);
|
|
72
|
-
logger.info("installing portr", { version, asset: assetName });
|
|
73
|
-
return asset.browser_download_url;
|
|
57
|
+
function portrDownloadUrl() {
|
|
58
|
+
const assetName = portrAssetName(PORTR_VERSION);
|
|
59
|
+
logger.info("installing portr", { version: PORTR_VERSION, asset: assetName });
|
|
60
|
+
return `${PORTR_RELEASE_URL}/${assetName}`;
|
|
74
61
|
}
|
|
75
62
|
/** Install portr when absent and return the environment used by its process. */
|
|
76
63
|
export async function installPortr(options = {}) {
|
|
@@ -80,6 +67,10 @@ export async function installPortr(options = {}) {
|
|
|
80
67
|
homeDir,
|
|
81
68
|
minVersion: PORTR_MIN_VERSION,
|
|
82
69
|
selector: ({ source }) => join(source, "portr"),
|
|
70
|
+
versionParser: (output) => {
|
|
71
|
+
const version = bin.parseVersion(output);
|
|
72
|
+
return version === PORTR_VERSION ? version : undefined;
|
|
73
|
+
},
|
|
83
74
|
});
|
|
84
75
|
return {
|
|
85
76
|
...process.env,
|
|
@@ -111,4 +102,4 @@ export async function startPortr(config, childEnv) {
|
|
|
111
102
|
logger.info(`portr tunneling https://${config.subdomain}.${config.server} -> :${config.port}`);
|
|
112
103
|
return spawn("portr", ["start"], { env: childEnv, stdio: "inherit" });
|
|
113
104
|
}
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydHIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG9ydHIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU3QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzFDLE1BQU0sd0JBQXdCLEdBQUcsOERBQThELENBQUM7QUFDaEcsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUM7QUFDcEMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBcUIxQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUtsQztJQUNDLG1FQUFtRTtJQUNuRSxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDcEQsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDaEUsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLFNBQVMs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LFNBQVMsRUFBRTtRQUMvQixrQkFBa0IsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNwQyxhQUFhLE1BQU0sQ0FBQyxJQUFJLEVBQUU7UUFDMUIsRUFBRTtLQUNILENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNiLENBQUM7QUFDSixDQUFDO0FBRUQsOEVBQThFO0FBQzlFLE1BQU0sQ0FBQyxLQUFLLFVBQVUsVUFBVSxDQUM5QixNQUFtQixFQUNuQixRQUEyQjtJQUUzQixrRkFBa0Y7SUFDbEYsTUFBTSxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXJFLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLE1BQU0sUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRixPQUFPLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogcG9ydHIgaW5zdGFsbCwgY29uZmlnLCBhbmQgbGF1bmNoIHN1cHBvcnQgZm9yIHRoZSB0dW5uZWwgcnVudGltZS5cbiAqXG4gKiBUaGUgYmluYXJ5IGFuZCBjb25maWcgdXNlIHBvcnRyJ3MgY29udmVudGlvbmFsIGAkSE9NRS8ucG9ydHJgIHRyZWUuIFRoZVxuICogaW5zdGFsbCBpcyBpZGVtcG90ZW50ICh0aGUgaW5zdGFsbGVyIHNraXBzIGFuIGV4aXN0aW5nIGV4ZWN1dGFibGUpLiBUaGVcbiAqIGNvbmZpZyBpcyByZW5kZXJlZCBmcm9tIGBUVU5ORUxfUFVCTElDX0RPTUFJTmBcbiAqIChgPHN1YmRvbWFpbj4uPHNlcnZlcj5gKSArIGBQT1JUUl9UT0tFTmAgYW5kIHBvaW50cyBwb3J0ciBhdCB0aGUgUFVCTElDIHBvcnRcbiAqICh0aGUgcHJveHkgbGlzdGVucyB0aGVyZSkuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBleGVjRmlsZSwgc3Bhd24gfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyB3cml0ZUZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IG9zIGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgeyBkZWxpbWl0ZXIsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tIFwibm9kZTp1dGlsXCI7XG5cbmltcG9ydCB7IGJpbiB9IGZyb20gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmltcG9ydCB7IGVudiwgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IFBVQkxJQ19ET01BSU5fRU5WIH0gZnJvbSBcIi4vZW52LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ0dW5uZWw6cG9ydHJcIik7XG5jb25zdCBQT1JUUl9MQVRFU1RfUkVMRUFTRV9VUkwgPSBcImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYW1hbHNoYWppL3BvcnRyL3JlbGVhc2VzL2xhdGVzdFwiO1xuY29uc3QgUE9SVFJfTUlOX1ZFUlNJT04gPSBcInYxLjAuMTVcIjtcbmNvbnN0IGV4ZWNGaWxlQXN5bmMgPSBwcm9taXNpZnkoZXhlY0ZpbGUpO1xuXG5pbnRlcmZhY2UgUG9ydHJSZWxlYXNlIHtcbiAgdGFnX25hbWU6IHN0cmluZztcbiAgYXNzZXRzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgYnJvd3Nlcl9kb3dubG9hZF91cmw6IHN0cmluZyB9Pjtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIGluc3RhbGxpbmcgdGhlIHBvcnRyIGV4ZWN1dGFibGUuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvcnRySW5zdGFsbE9wdGlvbnMge1xuICAvKiogSG9tZSBkaXJlY3RvcnkgY29udGFpbmluZyBgLnBvcnRyYDsgZGVmYXVsdHMgdG8gdGhlIE9TIGhvbWUgZGlyZWN0b3J5LiAqL1xuICBob21lRGlyPzogc3RyaW5nO1xufVxuXG4vKiogUmVzb2x2ZWQgcG9ydHIgd2lyaW5nLCBvciBgdW5kZWZpbmVkYCB3aGVuIG5vIHR1bm5lbCBpcyBjb25maWd1cmVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb3J0ckNvbmZpZyB7XG4gIHN1YmRvbWFpbjogc3RyaW5nO1xuICBzZXJ2ZXI6IHN0cmluZztcbiAgdG9rZW46IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlc29sdmUgcG9ydHIgY29uZmlnIGZyb20gYFRVTk5FTF9QVUJMSUNfRE9NQUlOYCArIGBQT1JUUl9UT0tFTmAsIG9yIGFuXG4gKiBleHBsaWNpdCBgc3ViZG9tYWluYC4gVGhlIGRvbWFpbiBpcyBgPHN1YmRvbWFpbj4uPHNlcnZlcj5gIChlLmcuXG4gKiBgZGVtby5hcHBzLmRieC50b29sc2ApLiBSZXR1cm5zIGB1bmRlZmluZWRgIChubyB0dW5uZWwpIHdoZW4gdGhlIHRva2VuIG9yIGFcbiAqIHVzYWJsZSBkb21haW4gaXMgYWJzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBvcnRyQ29uZmlnKG9wdHM6IHtcbiAgcHVibGljRG9tYWluPzogc3RyaW5nO1xuICBzdWJkb21haW4/OiBzdHJpbmc7XG4gIHRva2VuPzogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG59KTogUG9ydHJDb25maWcgfCB1bmRlZmluZWQge1xuICAvLyBQT1JUUl8qIGlzIHVwc3RyZWFtIHBvcnRyJ3Mgb3duIG5hbWVzcGFjZSwgc28gaXQga2VlcHMgaXRzIG5hbWUuXG4gIGNvbnN0IHRva2VuID0gZW52LnN0cmluZyhvcHRzLnRva2VuLCBcIlBPUlRSX1RPS0VOXCIpO1xuICBjb25zdCBkb21haW4gPSBlbnYuc3RyaW5nKG9wdHMucHVibGljRG9tYWluLCBQVUJMSUNfRE9NQUlOX0VOVik7XG4gIGlmICghdG9rZW4pIHJldHVybiB1bmRlZmluZWQ7XG4gIGxldCBzdWJkb21haW4gPSBvcHRzLnN1YmRvbWFpbjtcbiAgbGV0IHNlcnZlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAoZG9tYWluKSB7XG4gICAgc3ViZG9tYWluID8/PSBkb21haW4uc3BsaXQoXCIuXCIpWzBdO1xuICAgIHNlcnZlciA9IGRvbWFpbi5zbGljZShkb21haW4uaW5kZXhPZihcIi5cIikgKyAxKTtcbiAgfVxuICBzZXJ2ZXIgPz89IGVudi50ZXh0KFwiUE9SVFJfU0VSVkVSXCIpID8/IHVuZGVmaW5lZDtcbiAgaWYgKCFzdWJkb21haW4gfHwgIXNlcnZlciB8fCBzZXJ2ZXIgPT09IGRvbWFpbikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIHsgc3ViZG9tYWluLCBzZXJ2ZXIsIHRva2VuLCBwb3J0OiBvcHRzLnBvcnQgfTtcbn1cblxuLyoqIEdpdEh1YiByZWxlYXNlIGFzc2V0IG5hbWUgZm9yIHRoZSBjdXJyZW50IG9yIHN1cHBsaWVkIE9TL2FyY2hpdGVjdHVyZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3J0ckFzc2V0TmFtZShcbiAgdmVyc2lvbjogc3RyaW5nLFxuICBwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtID0gcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgYXJjaDogc3RyaW5nID0gcHJvY2Vzcy5hcmNoLFxuKTogc3RyaW5nIHtcbiAgY29uc3Qgb3NOYW1lID0gcGxhdGZvcm0gPT09IFwiZGFyd2luXCIgPyBcIkRhcndpblwiIDogcGxhdGZvcm0gPT09IFwibGludXhcIiA/IFwiTGludXhcIiA6IHVuZGVmaW5lZDtcbiAgY29uc3QgYXJjaE5hbWUgPSBhcmNoID09PSBcImFybTY0XCIgPyBcImFybTY0XCIgOiBhcmNoID09PSBcIng2NFwiID8gXCJ4ODZfNjRcIiA6IHVuZGVmaW5lZDtcbiAgaWYgKCFvc05hbWUgfHwgIWFyY2hOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwb3J0ciBoYXMgbm8gc3VwcG9ydGVkIHJlbGVhc2UgYXNzZXQgZm9yICR7cGxhdGZvcm19LyR7YXJjaH1gKTtcbiAgfVxuICByZXR1cm4gYHBvcnRyXyR7dmVyc2lvbn1fJHtvc05hbWV9XyR7YXJjaE5hbWV9LnppcGA7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBvcnRyRG93bmxvYWRVcmwoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcmVsZWFzZVJlc3BvbnNlID0gYXdhaXQgZmV0Y2goUE9SVFJfTEFURVNUX1JFTEVBU0VfVVJMLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgYWNjZXB0OiBcImFwcGxpY2F0aW9uL3ZuZC5naXRodWIranNvblwiLFxuICAgICAgXCJ1c2VyLWFnZW50XCI6IFwiQGRieC10b29scy90dW5uZWxcIixcbiAgICB9LFxuICB9KTtcbiAgaWYgKCFyZWxlYXNlUmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHBvcnRyIHJlbGVhc2UgbG9va3VwIGZhaWxlZCAoJHtyZWxlYXNlUmVzcG9uc2Uuc3RhdHVzfSlgKTtcbiAgfVxuICBjb25zdCByZWxlYXNlID0gKGF3YWl0IHJlbGVhc2VSZXNwb25zZS5qc29uKCkpIGFzIFBvcnRyUmVsZWFzZTtcbiAgY29uc3QgdmVyc2lvbiA9IHJlbGVhc2UudGFnX25hbWUucmVwbGFjZSgvXnYvLCBcIlwiKTtcblxuICBjb25zdCBhc3NldE5hbWUgPSBwb3J0ckFzc2V0TmFtZSh2ZXJzaW9uKTtcbiAgY29uc3QgYXNzZXQgPSByZWxlYXNlLmFzc2V0cy5maW5kKChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5uYW1lID09PSBhc3NldE5hbWUpO1xuICBpZiAoIWFzc2V0KSB0aHJvdyBuZXcgRXJyb3IoYHBvcnRyIHJlbGVhc2UgJHtyZWxlYXNlLnRhZ19uYW1lfSBoYXMgbm8gJHthc3NldE5hbWV9YCk7XG5cbiAgbG9nZ2VyLmluZm8oXCJpbnN0YWxsaW5nIHBvcnRyXCIsIHsgdmVyc2lvbiwgYXNzZXQ6IGFzc2V0TmFtZSB9KTtcbiAgcmV0dXJuIGFzc2V0LmJyb3dzZXJfZG93bmxvYWRfdXJsO1xufVxuXG4vKiogSW5zdGFsbCBwb3J0ciB3aGVuIGFic2VudCBhbmQgcmV0dXJuIHRoZSBlbnZpcm9ubWVudCB1c2VkIGJ5IGl0cyBwcm9jZXNzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc3RhbGxQb3J0cihvcHRpb25zOiBQb3J0ckluc3RhbGxPcHRpb25zID0ge30pOiBQcm9taXNlPE5vZGVKUy5Qcm9jZXNzRW52PiB7XG4gIGNvbnN0IGhvbWVEaXIgPSBvcHRpb25zLmhvbWVEaXIgPz8gb3MuaG9tZWRpcigpO1xuICBjb25zdCBjb250ZXh0ID0gYXdhaXQgYmluLmVuc3VyZShcInBvcnRyXCIsIHBvcnRyRG93bmxvYWRVcmwsIHtcbiAgICBhdXRvVW5wYWNrYWdlOiB0cnVlLFxuICAgIGhvbWVEaXIsXG4gICAgbWluVmVyc2lvbjogUE9SVFJfTUlOX1ZFUlNJT04sXG4gICAgc2VsZWN0b3I6ICh7IHNvdXJjZSB9KSA9PiBqb2luKHNvdXJjZSwgXCJwb3J0clwiKSxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgSE9NRTogaG9tZURpcixcbiAgICBQT1JUUl9BVVRPX0FERF9QQVRIOiBcIm5vXCIsXG4gICAgUEFUSDogW2NvbnRleHQuYmluRGlyLCBwcm9jZXNzLmVudi5QQVRIID8/IFwiXCJdLmpvaW4oZGVsaW1pdGVyKSxcbiAgfTtcbn1cblxuLyoqIFJlbmRlciBgfi8ucG9ydHIvY29uZmlnLnlhbWxgIGZvciB0aGUgcmVzb2x2ZWQgdHVubmVsLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlUG9ydHJDb25maWcoXG4gIGNvbmZpZzogUG9ydHJDb25maWcsXG4gIGNoaWxkRW52OiBOb2RlSlMuUHJvY2Vzc0Vudixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwYXRoID0gam9pbihjaGlsZEVudi5IT01FID8/IG9zLmhvbWVkaXIoKSwgXCIucG9ydHJcIiwgXCJjb25maWcueWFtbFwiKTtcbiAgYXdhaXQgd3JpdGVGaWxlKFxuICAgIHBhdGgsXG4gICAgW1xuICAgICAgYHNlcnZlcl91cmw6ICR7Y29uZmlnLnNlcnZlcn1gLFxuICAgICAgYHNzaF91cmw6ICR7Y29uZmlnLnNlcnZlcn06NDQ0NGAsXG4gICAgICBgc2VjcmV0X2tleTogJHtjb25maWcudG9rZW59YCxcbiAgICAgIFwiZGlzYWJsZV9kYXNoYm9hcmQ6IHRydWVcIixcbiAgICAgIFwiZGlzYWJsZV90dWk6IHRydWVcIixcbiAgICAgIFwidHVubmVsczpcIixcbiAgICAgIGAgIC0gbmFtZTogJHtjb25maWcuc3ViZG9tYWlufWAsXG4gICAgICBgICAgIHN1YmRvbWFpbjogJHtjb25maWcuc3ViZG9tYWlufWAsXG4gICAgICBgICAgIHBvcnQ6ICR7Y29uZmlnLnBvcnR9YCxcbiAgICAgIFwiXCIsXG4gICAgXS5qb2luKFwiXFxuXCIpLFxuICApO1xufVxuXG4vKiogTGF1bmNoIGBwb3J0ciBzdGFydGAgYXMgYSBjaGlsZCBwcm9jZXNzIChjYWxsZXIgc3VwZXJ2aXNlcyArIGtpbGxzIGl0KS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFBvcnRyKFxuICBjb25maWc6IFBvcnRyQ29uZmlnLFxuICBjaGlsZEVudjogTm9kZUpTLlByb2Nlc3NFbnYsXG4pOiBQcm9taXNlPFJldHVyblR5cGU8dHlwZW9mIHNwYXduPj4ge1xuICAvLyBSZWNsYWltIHRoZSBzdWJkb21haW4gZnJvbSBhbnkgcG9ydHIgbGVmdCBieSBhIHByZXZpb3VzIGJvb3QgaW4gdGhpcyBjb250YWluZXIuXG4gIGF3YWl0IGV4ZWNGaWxlQXN5bmMoXCJwa2lsbFwiLCBbXCIteFwiLCBcInBvcnRyXCJdKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuXG4gIGxvZ2dlci5pbmZvKGBwb3J0ciB0dW5uZWxpbmcgaHR0cHM6Ly8ke2NvbmZpZy5zdWJkb21haW59LiR7Y29uZmlnLnNlcnZlcn0gLT4gOiR7Y29uZmlnLnBvcnR9YCk7XG4gIHJldHVybiBzcGF3bihcInBvcnRyXCIsIFtcInN0YXJ0XCJdLCB7IGVudjogY2hpbGRFbnYsIHN0ZGlvOiBcImluaGVyaXRcIiB9KTtcbn1cbiJdfQ==
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydHIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG9ydHIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU3QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzFDLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQztBQUNyQyxNQUFNLGlCQUFpQixHQUFHLHlEQUF5RCxhQUFhLEVBQUUsQ0FBQztBQUNuRyxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztBQUNwQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFnQjFDOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBS2xDO0lBQ0MsbUVBQW1FO0lBQ25FLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNwRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMs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QUFNLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxNQUFNLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0YsT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHBvcnRyIGluc3RhbGwsIGNvbmZpZywgYW5kIGxhdW5jaCBzdXBwb3J0IGZvciB0aGUgdHVubmVsIHJ1bnRpbWUuXG4gKlxuICogVGhlIGJpbmFyeSBhbmQgY29uZmlnIHVzZSBwb3J0cidzIGNvbnZlbnRpb25hbCBgJEhPTUUvLnBvcnRyYCB0cmVlLiBUaGVcbiAqIGluc3RhbGwgaXMgaWRlbXBvdGVudCAodGhlIGluc3RhbGxlciBza2lwcyBhbiBleGlzdGluZyBleGVjdXRhYmxlKS4gVGhlXG4gKiBjb25maWcgaXMgcmVuZGVyZWQgZnJvbSBgVFVOTkVMX1BVQkxJQ19ET01BSU5gXG4gKiAoYDxzdWJkb21haW4+LjxzZXJ2ZXI+YCkgKyBgUE9SVFJfVE9LRU5gIGFuZCBwb2ludHMgcG9ydHIgYXQgdGhlIFBVQkxJQyBwb3J0XG4gKiAodGhlIHByb3h5IGxpc3RlbnMgdGhlcmUpLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuaW1wb3J0IHsgZXhlY0ZpbGUsIHNwYXduIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCBvcyBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgZGVsaW1pdGVyLCBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSBcIm5vZGU6dXRpbFwiO1xuXG5pbXBvcnQgeyBiaW4gfSBmcm9tIFwiQGRieC10b29scy9jb3JlXCI7XG5pbXBvcnQgeyBlbnYsIGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBQVUJMSUNfRE9NQUlOX0VOViB9IGZyb20gXCIuL2Vudi50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwidHVubmVsOnBvcnRyXCIpO1xuY29uc3QgUE9SVFJfVkVSU0lPTiA9IFwiMS4wLjE1LXNzZS4yXCI7XG5jb25zdCBQT1JUUl9SRUxFQVNFX1VSTCA9IGBodHRwczovL2dpdGh1Yi5jb20vcmVnZ2llLWRiL3BvcnRyL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BPUlRSX1ZFUlNJT059YDtcbmNvbnN0IFBPUlRSX01JTl9WRVJTSU9OID0gXCJ2MS4wLjE1XCI7XG5jb25zdCBleGVjRmlsZUFzeW5jID0gcHJvbWlzaWZ5KGV4ZWNGaWxlKTtcblxuLyoqIE9wdGlvbnMgZm9yIGluc3RhbGxpbmcgdGhlIHBvcnRyIGV4ZWN1dGFibGUuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvcnRySW5zdGFsbE9wdGlvbnMge1xuICAvKiogSG9tZSBkaXJlY3RvcnkgY29udGFpbmluZyBgLnBvcnRyYDsgZGVmYXVsdHMgdG8gdGhlIE9TIGhvbWUgZGlyZWN0b3J5LiAqL1xuICBob21lRGlyPzogc3RyaW5nO1xufVxuXG4vKiogUmVzb2x2ZWQgcG9ydHIgd2lyaW5nLCBvciBgdW5kZWZpbmVkYCB3aGVuIG5vIHR1bm5lbCBpcyBjb25maWd1cmVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb3J0ckNvbmZpZyB7XG4gIHN1YmRvbWFpbjogc3RyaW5nO1xuICBzZXJ2ZXI6IHN0cmluZztcbiAgdG9rZW46IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlc29sdmUgcG9ydHIgY29uZmlnIGZyb20gYFRVTk5FTF9QVUJMSUNfRE9NQUlOYCArIGBQT1JUUl9UT0tFTmAsIG9yIGFuXG4gKiBleHBsaWNpdCBgc3ViZG9tYWluYC4gVGhlIGRvbWFpbiBpcyBgPHN1YmRvbWFpbj4uPHNlcnZlcj5gIChlLmcuXG4gKiBgZGVtby5hcHBzLmRieC50b29sc2ApLiBSZXR1cm5zIGB1bmRlZmluZWRgIChubyB0dW5uZWwpIHdoZW4gdGhlIHRva2VuIG9yIGFcbiAqIHVzYWJsZSBkb21haW4gaXMgYWJzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBvcnRyQ29uZmlnKG9wdHM6IHtcbiAgcHVibGljRG9tYWluPzogc3RyaW5nO1xuICBzdWJkb21haW4/OiBzdHJpbmc7XG4gIHRva2VuPzogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG59KTogUG9ydHJDb25maWcgfCB1bmRlZmluZWQge1xuICAvLyBQT1JUUl8qIGlzIHVwc3RyZWFtIHBvcnRyJ3Mgb3duIG5hbWVzcGFjZSwgc28gaXQga2VlcHMgaXRzIG5hbWUuXG4gIGNvbnN0IHRva2VuID0gZW52LnN0cmluZyhvcHRzLnRva2VuLCBcIlBPUlRSX1RPS0VOXCIpO1xuICBjb25zdCBkb21haW4gPSBlbnYuc3RyaW5nKG9wdHMucHVibGljRG9tYWluLCBQVUJMSUNfRE9NQUlOX0VOVik7XG4gIGlmICghdG9rZW4pIHJldHVybiB1bmRlZmluZWQ7XG4gIGxldCBzdWJkb21haW4gPSBvcHRzLnN1YmRvbWFpbjtcbiAgbGV0IHNlcnZlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAoZG9tYWluKSB7XG4gICAgc3ViZG9tYWluID8/PSBkb21haW4uc3BsaXQoXCIuXCIpWzBdO1xuICAgIHNlcnZlciA9IGRvbWFpbi5zbGljZShkb21haW4uaW5kZXhPZihcIi5cIikgKyAxKTtcbiAgfVxuICBzZXJ2ZXIgPz89IGVudi50ZXh0KFwiUE9SVFJfU0VSVkVSXCIpID8/IHVuZGVmaW5lZDtcbiAgaWYgKCFzdWJkb21haW4gfHwgIXNlcnZlciB8fCBzZXJ2ZXIgPT09IGRvbWFpbikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIHsgc3ViZG9tYWluLCBzZXJ2ZXIsIHRva2VuLCBwb3J0OiBvcHRzLnBvcnQgfTtcbn1cblxuLyoqIEdpdEh1YiByZWxlYXNlIGFzc2V0IG5hbWUgZm9yIHRoZSBjdXJyZW50IG9yIHN1cHBsaWVkIE9TL2FyY2hpdGVjdHVyZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3J0ckFzc2V0TmFtZShcbiAgdmVyc2lvbjogc3RyaW5nLFxuICBwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtID0gcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgYXJjaDogc3RyaW5nID0gcHJvY2Vzcy5hcmNoLFxuKTogc3RyaW5nIHtcbiAgY29uc3Qgb3NOYW1lID0gcGxhdGZvcm0gPT09IFwiZGFyd2luXCIgPyBcIkRhcndpblwiIDogcGxhdGZvcm0gPT09IFwibGludXhcIiA/IFwiTGludXhcIiA6IHVuZGVmaW5lZDtcbiAgY29uc3QgYXJjaE5hbWUgPSBhcmNoID09PSBcImFybTY0XCIgPyBcImFybTY0XCIgOiBhcmNoID09PSBcIng2NFwiID8gXCJ4ODZfNjRcIiA6IHVuZGVmaW5lZDtcbiAgaWYgKCFvc05hbWUgfHwgIWFyY2hOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwb3J0ciBoYXMgbm8gc3VwcG9ydGVkIHJlbGVhc2UgYXNzZXQgZm9yICR7cGxhdGZvcm19LyR7YXJjaH1gKTtcbiAgfVxuICByZXR1cm4gYHBvcnRyXyR7dmVyc2lvbn1fJHtvc05hbWV9XyR7YXJjaE5hbWV9LnppcGA7XG59XG5cbmZ1bmN0aW9uIHBvcnRyRG93bmxvYWRVcmwoKTogc3RyaW5nIHtcbiAgY29uc3QgYXNzZXROYW1lID0gcG9ydHJBc3NldE5hbWUoUE9SVFJfVkVSU0lPTik7XG4gIGxvZ2dlci5pbmZvKFwiaW5zdGFsbGluZyBwb3J0clwiLCB7IHZlcnNpb246IFBPUlRSX1ZFUlNJT04sIGFzc2V0OiBhc3NldE5hbWUgfSk7XG4gIHJldHVybiBgJHtQT1JUUl9SRUxFQVNFX1VSTH0vJHthc3NldE5hbWV9YDtcbn1cblxuLyoqIEluc3RhbGwgcG9ydHIgd2hlbiBhYnNlbnQgYW5kIHJldHVybiB0aGUgZW52aXJvbm1lbnQgdXNlZCBieSBpdHMgcHJvY2Vzcy4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnN0YWxsUG9ydHIob3B0aW9uczogUG9ydHJJbnN0YWxsT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxOb2RlSlMuUHJvY2Vzc0Vudj4ge1xuICBjb25zdCBob21lRGlyID0gb3B0aW9ucy5ob21lRGlyID8/IG9zLmhvbWVkaXIoKTtcbiAgY29uc3QgY29udGV4dCA9IGF3YWl0IGJpbi5lbnN1cmUoXCJwb3J0clwiLCBwb3J0ckRvd25sb2FkVXJsLCB7XG4gICAgYXV0b1VucGFja2FnZTogdHJ1ZSxcbiAgICBob21lRGlyLFxuICAgIG1pblZlcnNpb246IFBPUlRSX01JTl9WRVJTSU9OLFxuICAgIHNlbGVjdG9yOiAoeyBzb3VyY2UgfSkgPT4gam9pbihzb3VyY2UsIFwicG9ydHJcIiksXG4gICAgdmVyc2lvblBhcnNlcjogKG91dHB1dCkgPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbiA9IGJpbi5wYXJzZVZlcnNpb24ob3V0cHV0KTtcbiAgICAgIHJldHVybiB2ZXJzaW9uID09PSBQT1JUUl9WRVJTSU9OID8gdmVyc2lvbiA6IHVuZGVmaW5lZDtcbiAgICB9LFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICAuLi5wcm9jZXNzLmVudixcbiAgICBIT01FOiBob21lRGlyLFxuICAgIFBPUlRSX0FVVE9fQUREX1BBVEg6IFwibm9cIixcbiAgICBQQVRIOiBbY29udGV4dC5iaW5EaXIsIHByb2Nlc3MuZW52LlBBVEggPz8gXCJcIl0uam9pbihkZWxpbWl0ZXIpLFxuICB9O1xufVxuXG4vKiogUmVuZGVyIGB+Ly5wb3J0ci9jb25maWcueWFtbGAgZm9yIHRoZSByZXNvbHZlZCB0dW5uZWwuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVQb3J0ckNvbmZpZyhcbiAgY29uZmlnOiBQb3J0ckNvbmZpZyxcbiAgY2hpbGRFbnY6IE5vZGVKUy5Qcm9jZXNzRW52LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHBhdGggPSBqb2luKGNoaWxkRW52LkhPTUUgPz8gb3MuaG9tZWRpcigpLCBcIi5wb3J0clwiLCBcImNvbmZpZy55YW1sXCIpO1xuICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgcGF0aCxcbiAgICBbXG4gICAgICBgc2VydmVyX3VybDogJHtjb25maWcuc2VydmVyfWAsXG4gICAgICBgc3NoX3VybDogJHtjb25maWcuc2VydmVyfTo0NDQ0YCxcbiAgICAgIGBzZWNyZXRfa2V5OiAke2NvbmZpZy50b2tlbn1gLFxuICAgICAgXCJkaXNhYmxlX2Rhc2hib2FyZDogdHJ1ZVwiLFxuICAgICAgXCJkaXNhYmxlX3R1aTogdHJ1ZVwiLFxuICAgICAgXCJ0dW5uZWxzOlwiLFxuICAgICAgYCAgLSBuYW1lOiAke2NvbmZpZy5zdWJkb21haW59YCxcbiAgICAgIGAgICAgc3ViZG9tYWluOiAke2NvbmZpZy5zdWJkb21haW59YCxcbiAgICAgIGAgICAgcG9ydDogJHtjb25maWcucG9ydH1gLFxuICAgICAgXCJcIixcbiAgICBdLmpvaW4oXCJcXG5cIiksXG4gICk7XG59XG5cbi8qKiBMYXVuY2ggYHBvcnRyIHN0YXJ0YCBhcyBhIGNoaWxkIHByb2Nlc3MgKGNhbGxlciBzdXBlcnZpc2VzICsga2lsbHMgaXQpLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0UG9ydHIoXG4gIGNvbmZpZzogUG9ydHJDb25maWcsXG4gIGNoaWxkRW52OiBOb2RlSlMuUHJvY2Vzc0Vudixcbik6IFByb21pc2U8UmV0dXJuVHlwZTx0eXBlb2Ygc3Bhd24+PiB7XG4gIC8vIFJlY2xhaW0gdGhlIHN1YmRvbWFpbiBmcm9tIGFueSBwb3J0ciBsZWZ0IGJ5IGEgcHJldmlvdXMgYm9vdCBpbiB0aGlzIGNvbnRhaW5lci5cbiAgYXdhaXQgZXhlY0ZpbGVBc3luYyhcInBraWxsXCIsIFtcIi14XCIsIFwicG9ydHJcIl0pLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG5cbiAgbG9nZ2VyLmluZm8oYHBvcnRyIHR1bm5lbGluZyBodHRwczovLyR7Y29uZmlnLnN1YmRvbWFpbn0uJHtjb25maWcuc2VydmVyfSAtPiA6JHtjb25maWcucG9ydH1gKTtcbiAgcmV0dXJuIHNwYXduKFwicG9ydHJcIiwgW1wic3RhcnRcIl0sIHsgZW52OiBjaGlsZEVudiwgc3RkaW86IFwiaW5oZXJpdFwiIH0pO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -18,20 +18,20 @@
|
|
|
18
18
|
"projen": "projen"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@dbx-tools/email": "0.6.
|
|
21
|
+
"@dbx-tools/email": "0.6.68",
|
|
22
22
|
"@types/bun": "^1.3.14",
|
|
23
23
|
"@types/node": "^24.6.0",
|
|
24
24
|
"typescript": "^5.9.3"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@dbx-tools/email": "0.6.
|
|
27
|
+
"@dbx-tools/email": "0.6.68"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@databricks/appkit": "^0.43.0",
|
|
31
|
-
"@dbx-tools/appkit": "0.6.
|
|
32
|
-
"@dbx-tools/core": "0.6.
|
|
33
|
-
"@dbx-tools/shared-core": "0.6.
|
|
34
|
-
"@dbx-tools/shared-email": "0.6.
|
|
31
|
+
"@dbx-tools/appkit": "0.6.68",
|
|
32
|
+
"@dbx-tools/core": "0.6.68",
|
|
33
|
+
"@dbx-tools/shared-core": "0.6.68",
|
|
34
|
+
"@dbx-tools/shared-email": "0.6.68",
|
|
35
35
|
"jose": "^6.2.3"
|
|
36
36
|
},
|
|
37
37
|
"main": "./lib/index.js",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"./package.json": "./package.json"
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
|
-
"version": "0.6.
|
|
51
|
+
"version": "0.6.68",
|
|
52
52
|
"types": "./lib/index.d.ts",
|
|
53
53
|
"type": "module",
|
|
54
54
|
"exports": {
|
package/src/portr.ts
CHANGED
|
@@ -20,15 +20,11 @@ import { env, log } from "@dbx-tools/shared-core";
|
|
|
20
20
|
import { PUBLIC_DOMAIN_ENV } from "./env.ts";
|
|
21
21
|
|
|
22
22
|
const logger = log.logger("tunnel:portr");
|
|
23
|
-
const
|
|
23
|
+
const PORTR_VERSION = "1.0.15-sse.2";
|
|
24
|
+
const PORTR_RELEASE_URL = `https://github.com/reggie-db/portr/releases/download/v${PORTR_VERSION}`;
|
|
24
25
|
const PORTR_MIN_VERSION = "v1.0.15";
|
|
25
26
|
const execFileAsync = promisify(execFile);
|
|
26
27
|
|
|
27
|
-
interface PortrRelease {
|
|
28
|
-
tag_name: string;
|
|
29
|
-
assets: Array<{ name: string; browser_download_url: string }>;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
28
|
/** Options for installing the portr executable. */
|
|
33
29
|
export interface PortrInstallOptions {
|
|
34
30
|
/** Home directory containing `.portr`; defaults to the OS home directory. */
|
|
@@ -84,25 +80,10 @@ export function portrAssetName(
|
|
|
84
80
|
return `portr_${version}_${osName}_${archName}.zip`;
|
|
85
81
|
}
|
|
86
82
|
|
|
87
|
-
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
"user-agent": "@dbx-tools/tunnel",
|
|
92
|
-
},
|
|
93
|
-
});
|
|
94
|
-
if (!releaseResponse.ok) {
|
|
95
|
-
throw new Error(`portr release lookup failed (${releaseResponse.status})`);
|
|
96
|
-
}
|
|
97
|
-
const release = (await releaseResponse.json()) as PortrRelease;
|
|
98
|
-
const version = release.tag_name.replace(/^v/, "");
|
|
99
|
-
|
|
100
|
-
const assetName = portrAssetName(version);
|
|
101
|
-
const asset = release.assets.find((candidate) => candidate.name === assetName);
|
|
102
|
-
if (!asset) throw new Error(`portr release ${release.tag_name} has no ${assetName}`);
|
|
103
|
-
|
|
104
|
-
logger.info("installing portr", { version, asset: assetName });
|
|
105
|
-
return asset.browser_download_url;
|
|
83
|
+
function portrDownloadUrl(): string {
|
|
84
|
+
const assetName = portrAssetName(PORTR_VERSION);
|
|
85
|
+
logger.info("installing portr", { version: PORTR_VERSION, asset: assetName });
|
|
86
|
+
return `${PORTR_RELEASE_URL}/${assetName}`;
|
|
106
87
|
}
|
|
107
88
|
|
|
108
89
|
/** Install portr when absent and return the environment used by its process. */
|
|
@@ -113,6 +94,10 @@ export async function installPortr(options: PortrInstallOptions = {}): Promise<N
|
|
|
113
94
|
homeDir,
|
|
114
95
|
minVersion: PORTR_MIN_VERSION,
|
|
115
96
|
selector: ({ source }) => join(source, "portr"),
|
|
97
|
+
versionParser: (output) => {
|
|
98
|
+
const version = bin.parseVersion(output);
|
|
99
|
+
return version === PORTR_VERSION ? version : undefined;
|
|
100
|
+
},
|
|
116
101
|
});
|
|
117
102
|
return {
|
|
118
103
|
...process.env,
|