@bunworks/inngest-realtime 0.1.0 → 0.1.5
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/CHANGELOG.md +6 -6
- package/README.md +1 -1
- package/_virtual/_rolldown/runtime.cjs +29 -0
- package/api.cjs +45 -0
- package/api.cjs.map +1 -0
- package/api.mjs +44 -0
- package/api.mjs.map +1 -0
- package/channel.cjs +67 -0
- package/channel.cjs.map +1 -0
- package/channel.d.cts +19 -0
- package/channel.d.cts.map +1 -0
- package/channel.d.mts +19 -0
- package/channel.d.mts.map +1 -0
- package/channel.mjs +66 -0
- package/channel.mjs.map +1 -0
- package/env.cjs +72 -0
- package/env.cjs.map +1 -0
- package/env.mjs +71 -0
- package/env.mjs.map +1 -0
- package/hooks.cjs +147 -0
- package/hooks.cjs.map +1 -0
- package/hooks.d.cts +70 -0
- package/hooks.d.cts.map +1 -0
- package/hooks.d.mts +70 -0
- package/hooks.d.mts.map +1 -0
- package/hooks.mjs +144 -0
- package/hooks.mjs.map +1 -0
- package/index.cjs +19 -0
- package/index.d.cts +5 -0
- package/index.d.mts +6 -0
- package/index.mjs +7 -0
- package/middleware.cjs +41 -0
- package/middleware.cjs.map +1 -0
- package/middleware.d.cts +29 -0
- package/middleware.d.cts.map +1 -0
- package/middleware.d.mts +29 -0
- package/middleware.d.mts.map +1 -0
- package/middleware.mjs +34 -0
- package/middleware.mjs.map +1 -0
- package/package.json +6 -5
- package/subscribe/StreamFanout.cjs +47 -0
- package/subscribe/StreamFanout.cjs.map +1 -0
- package/subscribe/StreamFanout.mjs +46 -0
- package/subscribe/StreamFanout.mjs.map +1 -0
- package/subscribe/TokenSubscription.cjs +438 -0
- package/subscribe/TokenSubscription.cjs.map +1 -0
- package/subscribe/TokenSubscription.mjs +436 -0
- package/subscribe/TokenSubscription.mjs.map +1 -0
- package/subscribe/helpers.cjs +41 -0
- package/subscribe/helpers.cjs.map +1 -0
- package/subscribe/helpers.d.cts +64 -0
- package/subscribe/helpers.d.cts.map +1 -0
- package/subscribe/helpers.d.mts +64 -0
- package/subscribe/helpers.d.mts.map +1 -0
- package/subscribe/helpers.mjs +40 -0
- package/subscribe/helpers.mjs.map +1 -0
- package/subscribe/index.cjs +1 -0
- package/subscribe/index.d.mts +1 -0
- package/subscribe/index.mjs +3 -0
- package/topic.cjs +30 -0
- package/topic.cjs.map +1 -0
- package/topic.d.cts +19 -0
- package/topic.d.cts.map +1 -0
- package/topic.d.mts +19 -0
- package/topic.d.mts.map +1 -0
- package/topic.mjs +28 -0
- package/topic.mjs.map +1 -0
- package/types.cjs +45 -0
- package/types.cjs.map +1 -0
- package/types.d.cts +241 -0
- package/types.d.cts.map +1 -0
- package/types.d.mts +241 -0
- package/types.d.mts.map +1 -0
- package/types.mjs +39 -0
- package/types.mjs.map +1 -0
- package/util.cjs +72 -0
- package/util.cjs.map +1 -0
- package/util.mjs +69 -0
- package/util.mjs.map +1 -0
- package/CLAUDE.md +0 -69
- package/bun.lock +0 -527
- package/eslint.config.mjs +0 -19
- package/src/api.ts +0 -83
- package/src/channel.ts +0 -122
- package/src/env.d.ts +0 -15
- package/src/env.ts +0 -152
- package/src/hooks.ts +0 -256
- package/src/index.test.ts +0 -840
- package/src/index.ts +0 -4
- package/src/middleware.ts +0 -68
- package/src/subscribe/StreamFanout.ts +0 -82
- package/src/subscribe/TokenSubscription.ts +0 -524
- package/src/subscribe/helpers.ts +0 -153
- package/src/subscribe/index.ts +0 -1
- package/src/topic.ts +0 -51
- package/src/types.ts +0 -499
- package/src/util.ts +0 -104
- package/tsconfig.build.json +0 -7
- package/tsconfig.json +0 -114
- package/tsdown.config.ts +0 -18
- package/vitest.config.ts +0 -22
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @inngest
|
|
1
|
+
# @bunworks/inngest-realtime
|
|
2
2
|
|
|
3
3
|
## 0.4.5
|
|
4
4
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
- [#1166](https://github.com/inngest/inngest-js/pull/1166) [`1d08b13b`](https://github.com/inngest/inngest-js/commit/1d08b13b589fd17eab55241cb1c34e826776a00f) Thanks [@jpwilliams](https://github.com/jpwilliams)! - Re-export realtime types from `middleware` entrypoint
|
|
10
10
|
|
|
11
|
-
- [#1159](https://github.com/inngest/inngest-js/pull/1159) [`a79b55af`](https://github.com/inngest/inngest-js/commit/a79b55af4a759b933c2c101798b21f3a14df58b2) Thanks [@jpwilliams](https://github.com/jpwilliams)! - Fix `@inngest
|
|
11
|
+
- [#1159](https://github.com/inngest/inngest-js/pull/1159) [`a79b55af`](https://github.com/inngest/inngest-js/commit/a79b55af4a759b933c2c101798b21f3a14df58b2) Thanks [@jpwilliams](https://github.com/jpwilliams)! - Fix `@bunworks/inngest-realtime` attempting to nest steps with `inngest@3.45.0`
|
|
12
12
|
|
|
13
13
|
- Updated dependencies [[`9fa34d12`](https://github.com/inngest/inngest-js/commit/9fa34d1250e25256ddb69606d7932419f131e998), [`ab446473`](https://github.com/inngest/inngest-js/commit/ab4464730ffea7d85de7db603fbda9fb3ac645fe), [`b5139f04`](https://github.com/inngest/inngest-js/commit/b5139f041cfef8a78d75bf9d0254d892e40060fe)]:
|
|
14
14
|
- inngest@3.45.1
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
|
|
54
54
|
### Patch Changes
|
|
55
55
|
|
|
56
|
-
- [#1068](https://github.com/inngest/inngest-js/pull/1068) [`b43bc02`](https://github.com/inngest/inngest-js/commit/b43bc0273d16b5f0fd3ab69d31bcd373245bb27f) Thanks [@jpwilliams](https://github.com/jpwilliams)! - Add `@inngest
|
|
56
|
+
- [#1068](https://github.com/inngest/inngest-js/pull/1068) [`b43bc02`](https://github.com/inngest/inngest-js/commit/b43bc0273d16b5f0fd3ab69d31bcd373245bb27f) Thanks [@jpwilliams](https://github.com/jpwilliams)! - Add `@bunworks/inngest-realtime/browser` entrypoint to bypass some import issues
|
|
57
57
|
|
|
58
58
|
- Updated dependencies [[`8ba5486`](https://github.com/inngest/inngest-js/commit/8ba548647ab17b91b750eea997c016dedee9f1c2)]:
|
|
59
59
|
- inngest@3.40.3
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
|
|
72
72
|
### Patch Changes
|
|
73
73
|
|
|
74
|
-
- [#960](https://github.com/inngest/inngest-js/pull/960) [`fc966ca`](https://github.com/inngest/inngest-js/commit/fc966ca94f699d6534f2fc5c85bbcf5be3c6795a) Thanks [@jpwilliams](https://github.com/jpwilliams)! - Fix requiring signing key for dev in `@inngest
|
|
74
|
+
- [#960](https://github.com/inngest/inngest-js/pull/960) [`fc966ca`](https://github.com/inngest/inngest-js/commit/fc966ca94f699d6534f2fc5c85bbcf5be3c6795a) Thanks [@jpwilliams](https://github.com/jpwilliams)! - Fix requiring signing key for dev in `@bunworks/inngest-realtime`
|
|
75
75
|
|
|
76
76
|
- [#965](https://github.com/inngest/inngest-js/pull/965) [`e55d93e`](https://github.com/inngest/inngest-js/commit/e55d93ef481010e677623978ec89e918fcdd606e) Thanks [@jpwilliams](https://github.com/jpwilliams)! - Fix throw of `TypeError: Failed to execute 'cancel' on 'ReadableStream': Cannot cancel a locked stream` when unmounting or cancelling a stream utilizing the callback feature
|
|
77
77
|
|
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
|
|
156
156
|
### Patch Changes
|
|
157
157
|
|
|
158
|
-
- [#902](https://github.com/inngest/inngest-js/pull/902) [`9546be7`](https://github.com/inngest/inngest-js/commit/9546be72b03a01c0f9d8efcf8ca5bb2639e23473) Thanks [@jpwilliams](https://github.com/jpwilliams)! - Allow connecting to cloud/dev in `@inngest
|
|
158
|
+
- [#902](https://github.com/inngest/inngest-js/pull/902) [`9546be7`](https://github.com/inngest/inngest-js/commit/9546be72b03a01c0f9d8efcf8ca5bb2639e23473) Thanks [@jpwilliams](https://github.com/jpwilliams)! - Allow connecting to cloud/dev in `@bunworks/inngest-realtime`
|
|
159
159
|
|
|
160
160
|
## 0.0.2
|
|
161
161
|
|
|
@@ -169,4 +169,4 @@
|
|
|
169
169
|
|
|
170
170
|
### Patch Changes
|
|
171
171
|
|
|
172
|
-
- [#866](https://github.com/inngest/inngest-js/pull/866) [`98efeb4`](https://github.com/inngest/inngest-js/commit/98efeb4eb6f80f418251a22377f428b42b9fff37) Thanks [@jpwilliams](https://github.com/jpwilliams)! - Initial release of `@inngest
|
|
172
|
+
- [#866](https://github.com/inngest/inngest-js/pull/866) [`98efeb4`](https://github.com/inngest/inngest-js/commit/98efeb4eb6f80f418251a22377f428b42b9fff37) Thanks [@jpwilliams](https://github.com/jpwilliams)! - Initial release of `@bunworks/inngest-realtime` v0
|
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
# @inngest
|
|
1
|
+
# @bunworks/inngest-realtime
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
+
for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
11
|
+
key = keys[i];
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except) {
|
|
13
|
+
__defProp(to, key, {
|
|
14
|
+
get: ((k) => from[k]).bind(null, key),
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
23
|
+
value: mod,
|
|
24
|
+
enumerable: true
|
|
25
|
+
}) : target, mod));
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
|
|
29
|
+
exports.__toESM = __toESM;
|
package/api.cjs
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
const require_env = require('./env.cjs');
|
|
3
|
+
const require_util = require('./util.cjs');
|
|
4
|
+
let zod = require("zod");
|
|
5
|
+
|
|
6
|
+
//#region src/api.ts
|
|
7
|
+
const tokenSchema = zod.z.object({ jwt: zod.z.string() });
|
|
8
|
+
const api = { async getSubscriptionToken({ channel, topics, signingKey, signingKeyFallback, apiBaseUrl }) {
|
|
9
|
+
let url;
|
|
10
|
+
const path = "/v1/realtime/token";
|
|
11
|
+
const inputBaseUrl = apiBaseUrl || require_env.getEnvVar("INNGEST_BASE_URL") || require_env.getEnvVar("INNGEST_API_BASE_URL");
|
|
12
|
+
const devEnvVar = require_env.getEnvVar("INNGEST_DEV");
|
|
13
|
+
if (inputBaseUrl) url = new URL(path, inputBaseUrl);
|
|
14
|
+
else if (devEnvVar) try {
|
|
15
|
+
const devUrl = new URL(devEnvVar);
|
|
16
|
+
url = new URL(path, devUrl);
|
|
17
|
+
} catch {
|
|
18
|
+
if (require_util.parseAsBoolean(devEnvVar)) url = new URL(path, "http://localhost:8288/");
|
|
19
|
+
else url = new URL(path, "https://api.inngest.com/");
|
|
20
|
+
}
|
|
21
|
+
else url = new URL(path, require_env.getEnvVar("NODE_ENV") === "production" ? "https://api.inngest.com/" : "http://localhost:8288/");
|
|
22
|
+
const body = topics.map((topic) => ({
|
|
23
|
+
channel,
|
|
24
|
+
name: topic,
|
|
25
|
+
kind: "run"
|
|
26
|
+
}));
|
|
27
|
+
const res = await require_util.fetchWithAuthFallback({
|
|
28
|
+
authToken: signingKey,
|
|
29
|
+
authTokenFallback: signingKeyFallback,
|
|
30
|
+
fetch,
|
|
31
|
+
url,
|
|
32
|
+
options: {
|
|
33
|
+
method: "POST",
|
|
34
|
+
body: JSON.stringify(body),
|
|
35
|
+
headers: { "Content-Type": "application/json" }
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
if (!res.ok) throw new Error(`Failed to get subscription token: ${res.status} ${res.statusText} - ${await res.text()}`);
|
|
39
|
+
const data = await res.json();
|
|
40
|
+
return tokenSchema.parse(data).jwt;
|
|
41
|
+
} };
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
exports.api = api;
|
|
45
|
+
//# sourceMappingURL=api.cjs.map
|
package/api.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.cjs","names":["z","getEnvVar","parseAsBoolean","fetchWithAuthFallback"],"sources":["../src/api.ts"],"sourcesContent":["import { z } from \"zod\";\r\nimport { getEnvVar } from \"./env\";\r\nimport { fetchWithAuthFallback, parseAsBoolean } from \"./util\";\r\n\r\nconst tokenSchema = z.object({ jwt: z.string() });\r\n\r\nexport const api = {\r\n async getSubscriptionToken({\r\n channel,\r\n topics,\r\n signingKey,\r\n signingKeyFallback,\r\n apiBaseUrl,\r\n }: {\r\n channel: string;\r\n topics: string[];\r\n signingKey: string | undefined;\r\n signingKeyFallback: string | undefined;\r\n apiBaseUrl: string | undefined;\r\n }): Promise<string> {\r\n let url: URL;\r\n const path = \"/v1/realtime/token\";\r\n const inputBaseUrl =\r\n apiBaseUrl ||\r\n getEnvVar(\"INNGEST_BASE_URL\") ||\r\n getEnvVar(\"INNGEST_API_BASE_URL\");\r\n\r\n const devEnvVar = getEnvVar(\"INNGEST_DEV\");\r\n\r\n if (inputBaseUrl) {\r\n url = new URL(path, inputBaseUrl);\r\n } else if (devEnvVar) {\r\n try {\r\n const devUrl = new URL(devEnvVar);\r\n url = new URL(path, devUrl);\r\n } catch {\r\n if (parseAsBoolean(devEnvVar)) {\r\n url = new URL(path, \"http://localhost:8288/\");\r\n } else {\r\n url = new URL(path, \"https://api.inngest.com/\");\r\n }\r\n }\r\n } else {\r\n url = new URL(\r\n path,\r\n getEnvVar(\"NODE_ENV\") === \"production\"\r\n ? \"https://api.inngest.com/\"\r\n : \"http://localhost:8288/\",\r\n );\r\n }\r\n\r\n const body = topics.map((topic) => ({\r\n channel,\r\n name: topic,\r\n kind: \"run\",\r\n }));\r\n\r\n const res = await fetchWithAuthFallback({\r\n authToken: signingKey,\r\n authTokenFallback: signingKeyFallback,\r\n fetch,\r\n url,\r\n options: {\r\n method: \"POST\",\r\n body: JSON.stringify(body),\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n },\r\n });\r\n\r\n if (!res.ok) {\r\n throw new Error(\r\n `Failed to get subscription token: ${res.status} ${\r\n res.statusText\r\n } - ${await res.text()}`,\r\n );\r\n }\r\n\r\n const data = await res.json();\r\n return tokenSchema.parse(data).jwt;\r\n },\r\n};\r\n"],"mappings":";;;;;;AAIA,MAAM,cAAcA,MAAE,OAAO,EAAE,KAAKA,MAAE,QAAQ,EAAE,CAAC;AAEjD,MAAa,MAAM,EACjB,MAAM,qBAAqB,EACzB,SACA,QACA,YACA,oBACA,cAOkB;CAClB,IAAI;CACJ,MAAM,OAAO;CACb,MAAM,eACJ,cACAC,sBAAU,mBAAmB,IAC7BA,sBAAU,uBAAuB;CAEnC,MAAM,YAAYA,sBAAU,cAAc;AAE1C,KAAI,aACF,OAAM,IAAI,IAAI,MAAM,aAAa;UACxB,UACT,KAAI;EACF,MAAM,SAAS,IAAI,IAAI,UAAU;AACjC,QAAM,IAAI,IAAI,MAAM,OAAO;SACrB;AACN,MAAIC,4BAAe,UAAU,CAC3B,OAAM,IAAI,IAAI,MAAM,yBAAyB;MAE7C,OAAM,IAAI,IAAI,MAAM,2BAA2B;;KAInD,OAAM,IAAI,IACR,MACAD,sBAAU,WAAW,KAAK,eACtB,6BACA,yBACL;CAGH,MAAM,OAAO,OAAO,KAAK,WAAW;EAClC;EACA,MAAM;EACN,MAAM;EACP,EAAE;CAEH,MAAM,MAAM,MAAME,mCAAsB;EACtC,WAAW;EACX,mBAAmB;EACnB;EACA;EACA,SAAS;GACP,QAAQ;GACR,MAAM,KAAK,UAAU,KAAK;GAC1B,SAAS,EACP,gBAAgB,oBACjB;GACF;EACF,CAAC;AAEF,KAAI,CAAC,IAAI,GACP,OAAM,IAAI,MACR,qCAAqC,IAAI,OAAO,GAC9C,IAAI,WACL,KAAK,MAAM,IAAI,MAAM,GACvB;CAGH,MAAM,OAAO,MAAM,IAAI,MAAM;AAC7B,QAAO,YAAY,MAAM,KAAK,CAAC;GAElC"}
|
package/api.mjs
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { getEnvVar } from "./env.mjs";
|
|
2
|
+
import { fetchWithAuthFallback, parseAsBoolean } from "./util.mjs";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
|
|
5
|
+
//#region src/api.ts
|
|
6
|
+
const tokenSchema = z.object({ jwt: z.string() });
|
|
7
|
+
const api = { async getSubscriptionToken({ channel, topics, signingKey, signingKeyFallback, apiBaseUrl }) {
|
|
8
|
+
let url;
|
|
9
|
+
const path = "/v1/realtime/token";
|
|
10
|
+
const inputBaseUrl = apiBaseUrl || getEnvVar("INNGEST_BASE_URL") || getEnvVar("INNGEST_API_BASE_URL");
|
|
11
|
+
const devEnvVar = getEnvVar("INNGEST_DEV");
|
|
12
|
+
if (inputBaseUrl) url = new URL(path, inputBaseUrl);
|
|
13
|
+
else if (devEnvVar) try {
|
|
14
|
+
const devUrl = new URL(devEnvVar);
|
|
15
|
+
url = new URL(path, devUrl);
|
|
16
|
+
} catch {
|
|
17
|
+
if (parseAsBoolean(devEnvVar)) url = new URL(path, "http://localhost:8288/");
|
|
18
|
+
else url = new URL(path, "https://api.inngest.com/");
|
|
19
|
+
}
|
|
20
|
+
else url = new URL(path, getEnvVar("NODE_ENV") === "production" ? "https://api.inngest.com/" : "http://localhost:8288/");
|
|
21
|
+
const body = topics.map((topic) => ({
|
|
22
|
+
channel,
|
|
23
|
+
name: topic,
|
|
24
|
+
kind: "run"
|
|
25
|
+
}));
|
|
26
|
+
const res = await fetchWithAuthFallback({
|
|
27
|
+
authToken: signingKey,
|
|
28
|
+
authTokenFallback: signingKeyFallback,
|
|
29
|
+
fetch,
|
|
30
|
+
url,
|
|
31
|
+
options: {
|
|
32
|
+
method: "POST",
|
|
33
|
+
body: JSON.stringify(body),
|
|
34
|
+
headers: { "Content-Type": "application/json" }
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
if (!res.ok) throw new Error(`Failed to get subscription token: ${res.status} ${res.statusText} - ${await res.text()}`);
|
|
38
|
+
const data = await res.json();
|
|
39
|
+
return tokenSchema.parse(data).jwt;
|
|
40
|
+
} };
|
|
41
|
+
|
|
42
|
+
//#endregion
|
|
43
|
+
export { api };
|
|
44
|
+
//# sourceMappingURL=api.mjs.map
|
package/api.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.mjs","names":[],"sources":["../src/api.ts"],"sourcesContent":["import { z } from \"zod\";\r\nimport { getEnvVar } from \"./env\";\r\nimport { fetchWithAuthFallback, parseAsBoolean } from \"./util\";\r\n\r\nconst tokenSchema = z.object({ jwt: z.string() });\r\n\r\nexport const api = {\r\n async getSubscriptionToken({\r\n channel,\r\n topics,\r\n signingKey,\r\n signingKeyFallback,\r\n apiBaseUrl,\r\n }: {\r\n channel: string;\r\n topics: string[];\r\n signingKey: string | undefined;\r\n signingKeyFallback: string | undefined;\r\n apiBaseUrl: string | undefined;\r\n }): Promise<string> {\r\n let url: URL;\r\n const path = \"/v1/realtime/token\";\r\n const inputBaseUrl =\r\n apiBaseUrl ||\r\n getEnvVar(\"INNGEST_BASE_URL\") ||\r\n getEnvVar(\"INNGEST_API_BASE_URL\");\r\n\r\n const devEnvVar = getEnvVar(\"INNGEST_DEV\");\r\n\r\n if (inputBaseUrl) {\r\n url = new URL(path, inputBaseUrl);\r\n } else if (devEnvVar) {\r\n try {\r\n const devUrl = new URL(devEnvVar);\r\n url = new URL(path, devUrl);\r\n } catch {\r\n if (parseAsBoolean(devEnvVar)) {\r\n url = new URL(path, \"http://localhost:8288/\");\r\n } else {\r\n url = new URL(path, \"https://api.inngest.com/\");\r\n }\r\n }\r\n } else {\r\n url = new URL(\r\n path,\r\n getEnvVar(\"NODE_ENV\") === \"production\"\r\n ? \"https://api.inngest.com/\"\r\n : \"http://localhost:8288/\",\r\n );\r\n }\r\n\r\n const body = topics.map((topic) => ({\r\n channel,\r\n name: topic,\r\n kind: \"run\",\r\n }));\r\n\r\n const res = await fetchWithAuthFallback({\r\n authToken: signingKey,\r\n authTokenFallback: signingKeyFallback,\r\n fetch,\r\n url,\r\n options: {\r\n method: \"POST\",\r\n body: JSON.stringify(body),\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n },\r\n });\r\n\r\n if (!res.ok) {\r\n throw new Error(\r\n `Failed to get subscription token: ${res.status} ${\r\n res.statusText\r\n } - ${await res.text()}`,\r\n );\r\n }\r\n\r\n const data = await res.json();\r\n return tokenSchema.parse(data).jwt;\r\n },\r\n};\r\n"],"mappings":";;;;;AAIA,MAAM,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAEjD,MAAa,MAAM,EACjB,MAAM,qBAAqB,EACzB,SACA,QACA,YACA,oBACA,cAOkB;CAClB,IAAI;CACJ,MAAM,OAAO;CACb,MAAM,eACJ,cACA,UAAU,mBAAmB,IAC7B,UAAU,uBAAuB;CAEnC,MAAM,YAAY,UAAU,cAAc;AAE1C,KAAI,aACF,OAAM,IAAI,IAAI,MAAM,aAAa;UACxB,UACT,KAAI;EACF,MAAM,SAAS,IAAI,IAAI,UAAU;AACjC,QAAM,IAAI,IAAI,MAAM,OAAO;SACrB;AACN,MAAI,eAAe,UAAU,CAC3B,OAAM,IAAI,IAAI,MAAM,yBAAyB;MAE7C,OAAM,IAAI,IAAI,MAAM,2BAA2B;;KAInD,OAAM,IAAI,IACR,MACA,UAAU,WAAW,KAAK,eACtB,6BACA,yBACL;CAGH,MAAM,OAAO,OAAO,KAAK,WAAW;EAClC;EACA,MAAM;EACN,MAAM;EACP,EAAE;CAEH,MAAM,MAAM,MAAM,sBAAsB;EACtC,WAAW;EACX,mBAAmB;EACnB;EACA;EACA,SAAS;GACP,QAAQ;GACR,MAAM,KAAK,UAAU,KAAK;GAC1B,SAAS,EACP,gBAAgB,oBACjB;GACF;EACF,CAAC;AAEF,KAAI,CAAC,IAAI,GACP,OAAM,IAAI,MACR,qCAAqC,IAAI,OAAO,GAC9C,IAAI,WACL,KAAK,MAAM,IAAI,MAAM,GACvB;CAGH,MAAM,OAAO,MAAM,IAAI,MAAM;AAC7B,QAAO,YAAY,MAAM,KAAK,CAAC;GAElC"}
|
package/channel.cjs
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const require_topic = require('./topic.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/channel.ts
|
|
4
|
+
/**
|
|
5
|
+
* Create a channel builder
|
|
6
|
+
*/
|
|
7
|
+
const channel = (id) => {
|
|
8
|
+
let channelDefinition;
|
|
9
|
+
const topics = {};
|
|
10
|
+
const builder = (...args) => {
|
|
11
|
+
const finalId = typeof id === "string" ? id : id(...args);
|
|
12
|
+
return {
|
|
13
|
+
name: finalId,
|
|
14
|
+
topics,
|
|
15
|
+
...Object.entries(topics).reduce((acc, [name, topic]) => {
|
|
16
|
+
acc[name] = createTopicFn(finalId, topic);
|
|
17
|
+
return acc;
|
|
18
|
+
}, {})
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
const extras = {
|
|
22
|
+
topics,
|
|
23
|
+
addTopic: (topic) => {
|
|
24
|
+
topics[topic.name] = topic;
|
|
25
|
+
return channelDefinition;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
channelDefinition = Object.assign(builder, extras);
|
|
29
|
+
return channelDefinition;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Create a type-only channel with proxy-based topic access
|
|
33
|
+
*/
|
|
34
|
+
const typeOnlyChannel = (id) => {
|
|
35
|
+
const blankChannel = {
|
|
36
|
+
...channel(id),
|
|
37
|
+
topics: new Proxy({}, { get: (target, prop) => {
|
|
38
|
+
if (prop in target) return target[prop];
|
|
39
|
+
if (typeof prop === "string") return require_topic.topic(prop);
|
|
40
|
+
} })
|
|
41
|
+
};
|
|
42
|
+
return new Proxy(blankChannel, { get: (target, prop) => {
|
|
43
|
+
if (prop in target) return target[prop];
|
|
44
|
+
if (typeof prop === "string") return createTopicFn(id, require_topic.topic(prop));
|
|
45
|
+
} });
|
|
46
|
+
};
|
|
47
|
+
const createTopicFn = (channelId, topic) => {
|
|
48
|
+
return async (data) => {
|
|
49
|
+
const schema = topic.getSchema();
|
|
50
|
+
if (schema) try {
|
|
51
|
+
await schema["~standard"].validate(data);
|
|
52
|
+
} catch (err) {
|
|
53
|
+
console.error(`Failed schema validation for channel "${channelId}" topic "${topic.name}":`, err);
|
|
54
|
+
throw new Error("Failed schema validation");
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
channel: channelId,
|
|
58
|
+
topic: topic.name,
|
|
59
|
+
data
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
//#endregion
|
|
65
|
+
exports.channel = channel;
|
|
66
|
+
exports.typeOnlyChannel = typeOnlyChannel;
|
|
67
|
+
//# sourceMappingURL=channel.cjs.map
|
package/channel.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.cjs","names":["topic"],"sources":["../src/channel.ts"],"sourcesContent":["import { topic } from \"./topic\";\r\nimport { type Realtime } from \"./types\";\r\n\r\n/**\r\n * Create a channel builder\r\n */\r\nexport const channel: Realtime.Channel.Builder = (\r\n /**\r\n * Channel ID or builder function\r\n */\r\n id,\r\n) => {\r\n // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\r\n let channelDefinition: any;\r\n const topics: Record<string, Realtime.Topic.Definition> = {};\r\n\r\n const builder = (...args: unknown[]) => {\r\n const finalId: string = typeof id === \"string\" ? id : id(...args);\r\n\r\n const topicsFns = Object.entries(topics).reduce<\r\n Record<string, (data: unknown) => Promise<Realtime.Message.Input>>\r\n >((acc, [name, topic]) => {\r\n acc[name] = createTopicFn(finalId, topic);\r\n\r\n return acc;\r\n }, {});\r\n\r\n const channel: Realtime.Channel = {\r\n name: finalId,\r\n topics,\r\n ...topicsFns,\r\n };\r\n\r\n return channel;\r\n };\r\n\r\n const extras: Record<string, unknown> = {\r\n topics,\r\n addTopic: (topic: Realtime.Topic.Definition) => {\r\n topics[topic.name] = topic;\r\n\r\n return channelDefinition;\r\n },\r\n };\r\n\r\n channelDefinition = Object.assign(builder, extras);\r\n\r\n return channelDefinition;\r\n};\r\n\r\n/**\r\n * Create a type-only channel with proxy-based topic access\r\n */\r\nexport const typeOnlyChannel = <\r\n TChannelDef extends Realtime.Channel.Definition,\r\n TId extends string = Realtime.Channel.Definition.InferId<TChannelDef>,\r\n TTopics extends Record<string, Realtime.Topic.Definition> =\r\n Realtime.Channel.Definition.InferTopics<TChannelDef>,\r\n TOutput extends Realtime.Channel = Realtime.Channel<TId, TTopics>,\r\n>(\r\n /**\r\n * Channel ID\r\n */\r\n id: TId,\r\n) => {\r\n const blankChannel = {\r\n ...channel(id),\r\n topics: new Proxy(\r\n {},\r\n {\r\n get: (target, prop) => {\r\n if (prop in target) {\r\n return target[prop as keyof typeof target];\r\n }\r\n\r\n if (typeof prop === \"string\") {\r\n return topic(prop);\r\n }\r\n },\r\n },\r\n ),\r\n };\r\n\r\n const ch = new Proxy(blankChannel, {\r\n get: (target, prop) => {\r\n if (prop in target) {\r\n return target[prop as keyof typeof target];\r\n }\r\n\r\n if (typeof prop === \"string\") {\r\n return createTopicFn(id, topic(prop));\r\n }\r\n },\r\n });\r\n\r\n return ch as unknown as TOutput;\r\n};\r\n\r\nconst createTopicFn = (channelId: string, topic: Realtime.Topic.Definition) => {\r\n return async (data: unknown) => {\r\n const schema = topic.getSchema();\r\n if (schema) {\r\n try {\r\n await schema[\"~standard\"].validate(data);\r\n } catch (err) {\r\n console.error(\r\n `Failed schema validation for channel \"${channelId}\" topic \"${topic.name}\":`,\r\n err,\r\n );\r\n throw new Error(\"Failed schema validation\");\r\n }\r\n }\r\n\r\n return {\r\n channel: channelId,\r\n topic: topic.name,\r\n data,\r\n };\r\n };\r\n};\r\n"],"mappings":";;;;;;AAMA,MAAa,WAIX,OACG;CAEH,IAAI;CACJ,MAAM,SAAoD,EAAE;CAE5D,MAAM,WAAW,GAAG,SAAoB;EACtC,MAAM,UAAkB,OAAO,OAAO,WAAW,KAAK,GAAG,GAAG,KAAK;AAgBjE,SANkC;GAChC,MAAM;GACN;GACA,GAXgB,OAAO,QAAQ,OAAO,CAAC,QAEtC,KAAK,CAAC,MAAM,WAAW;AACxB,QAAI,QAAQ,cAAc,SAAS,MAAM;AAEzC,WAAO;MACN,EAAE,CAAC;GAML;;CAKH,MAAM,SAAkC;EACtC;EACA,WAAW,UAAqC;AAC9C,UAAO,MAAM,QAAQ;AAErB,UAAO;;EAEV;AAED,qBAAoB,OAAO,OAAO,SAAS,OAAO;AAElD,QAAO;;;;;AAMT,MAAa,mBAUX,OACG;CACH,MAAM,eAAe;EACnB,GAAG,QAAQ,GAAG;EACd,QAAQ,IAAI,MACV,EAAE,EACF,EACE,MAAM,QAAQ,SAAS;AACrB,OAAI,QAAQ,OACV,QAAO,OAAO;AAGhB,OAAI,OAAO,SAAS,SAClB,QAAOA,oBAAM,KAAK;KAGvB,CACF;EACF;AAcD,QAZW,IAAI,MAAM,cAAc,EACjC,MAAM,QAAQ,SAAS;AACrB,MAAI,QAAQ,OACV,QAAO,OAAO;AAGhB,MAAI,OAAO,SAAS,SAClB,QAAO,cAAc,IAAIA,oBAAM,KAAK,CAAC;IAG1C,CAAC;;AAKJ,MAAM,iBAAiB,WAAmB,UAAqC;AAC7E,QAAO,OAAO,SAAkB;EAC9B,MAAM,SAAS,MAAM,WAAW;AAChC,MAAI,OACF,KAAI;AACF,SAAM,OAAO,aAAa,SAAS,KAAK;WACjC,KAAK;AACZ,WAAQ,MACN,yCAAyC,UAAU,WAAW,MAAM,KAAK,KACzE,IACD;AACD,SAAM,IAAI,MAAM,2BAA2B;;AAI/C,SAAO;GACL,SAAS;GACT,OAAO,MAAM;GACb;GACD"}
|
package/channel.d.cts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Realtime } from "./types.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/channel.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Create a channel builder
|
|
6
|
+
*/
|
|
7
|
+
declare const channel: Realtime.Channel.Builder;
|
|
8
|
+
/**
|
|
9
|
+
* Create a type-only channel with proxy-based topic access
|
|
10
|
+
*/
|
|
11
|
+
declare const typeOnlyChannel: <TChannelDef extends Realtime.Channel.Definition, TId extends string = Realtime.Channel.Definition.InferId<TChannelDef>, TTopics extends Record<string, Realtime.Topic.Definition> = Realtime.Channel.Definition.InferTopics<TChannelDef>, TOutput extends Realtime.Channel = Realtime.Channel<TId, TTopics>>(
|
|
12
|
+
/**
|
|
13
|
+
* Channel ID
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
id: TId) => TOutput;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { channel, typeOnlyChannel };
|
|
19
|
+
//# sourceMappingURL=channel.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.d.cts","names":[],"sources":["../src/channel.ts"],"mappings":";;;;;AAMA;cAAa,OAAA,EAAS,QAAA,CAAS,OAAA,CAAQ,OAAA;;;;cA+C1B,eAAA,uBACS,QAAA,CAAS,OAAA,CAAQ,UAAA,uBAChB,QAAA,CAAS,OAAA,CAAQ,UAAA,CAAW,OAAA,CAAQ,WAAA,mBACzC,MAAA,SAAe,QAAA,CAAS,KAAA,CAAM,UAAA,IAC5C,QAAA,CAAS,OAAA,CAAQ,UAAA,CAAW,WAAA,CAAY,WAAA,mBAC1B,QAAA,CAAS,OAAA,GAAU,QAAA,CAAS,OAAA,CAAQ,GAAA,EAAK,OAAA;;;;;AAKzD,EAAA,EAAI,GAAA,KAgCoB,OAAA"}
|
package/channel.d.mts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Realtime } from "./types.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/channel.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Create a channel builder
|
|
6
|
+
*/
|
|
7
|
+
declare const channel: Realtime.Channel.Builder;
|
|
8
|
+
/**
|
|
9
|
+
* Create a type-only channel with proxy-based topic access
|
|
10
|
+
*/
|
|
11
|
+
declare const typeOnlyChannel: <TChannelDef extends Realtime.Channel.Definition, TId extends string = Realtime.Channel.Definition.InferId<TChannelDef>, TTopics extends Record<string, Realtime.Topic.Definition> = Realtime.Channel.Definition.InferTopics<TChannelDef>, TOutput extends Realtime.Channel = Realtime.Channel<TId, TTopics>>(
|
|
12
|
+
/**
|
|
13
|
+
* Channel ID
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
id: TId) => TOutput;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { channel, typeOnlyChannel };
|
|
19
|
+
//# sourceMappingURL=channel.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.d.mts","names":[],"sources":["../src/channel.ts"],"mappings":";;;;;AAMA;cAAa,OAAA,EAAS,QAAA,CAAS,OAAA,CAAQ,OAAA;;;;cA+C1B,eAAA,uBACS,QAAA,CAAS,OAAA,CAAQ,UAAA,uBAChB,QAAA,CAAS,OAAA,CAAQ,UAAA,CAAW,OAAA,CAAQ,WAAA,mBACzC,MAAA,SAAe,QAAA,CAAS,KAAA,CAAM,UAAA,IAC5C,QAAA,CAAS,OAAA,CAAQ,UAAA,CAAW,WAAA,CAAY,WAAA,mBAC1B,QAAA,CAAS,OAAA,GAAU,QAAA,CAAS,OAAA,CAAQ,GAAA,EAAK,OAAA;;;;;AAKzD,EAAA,EAAI,GAAA,KAgCoB,OAAA"}
|
package/channel.mjs
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { topic } from "./topic.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/channel.ts
|
|
4
|
+
/**
|
|
5
|
+
* Create a channel builder
|
|
6
|
+
*/
|
|
7
|
+
const channel = (id) => {
|
|
8
|
+
let channelDefinition;
|
|
9
|
+
const topics = {};
|
|
10
|
+
const builder = (...args) => {
|
|
11
|
+
const finalId = typeof id === "string" ? id : id(...args);
|
|
12
|
+
return {
|
|
13
|
+
name: finalId,
|
|
14
|
+
topics,
|
|
15
|
+
...Object.entries(topics).reduce((acc, [name, topic]) => {
|
|
16
|
+
acc[name] = createTopicFn(finalId, topic);
|
|
17
|
+
return acc;
|
|
18
|
+
}, {})
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
const extras = {
|
|
22
|
+
topics,
|
|
23
|
+
addTopic: (topic) => {
|
|
24
|
+
topics[topic.name] = topic;
|
|
25
|
+
return channelDefinition;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
channelDefinition = Object.assign(builder, extras);
|
|
29
|
+
return channelDefinition;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Create a type-only channel with proxy-based topic access
|
|
33
|
+
*/
|
|
34
|
+
const typeOnlyChannel = (id) => {
|
|
35
|
+
const blankChannel = {
|
|
36
|
+
...channel(id),
|
|
37
|
+
topics: new Proxy({}, { get: (target, prop) => {
|
|
38
|
+
if (prop in target) return target[prop];
|
|
39
|
+
if (typeof prop === "string") return topic(prop);
|
|
40
|
+
} })
|
|
41
|
+
};
|
|
42
|
+
return new Proxy(blankChannel, { get: (target, prop) => {
|
|
43
|
+
if (prop in target) return target[prop];
|
|
44
|
+
if (typeof prop === "string") return createTopicFn(id, topic(prop));
|
|
45
|
+
} });
|
|
46
|
+
};
|
|
47
|
+
const createTopicFn = (channelId, topic) => {
|
|
48
|
+
return async (data) => {
|
|
49
|
+
const schema = topic.getSchema();
|
|
50
|
+
if (schema) try {
|
|
51
|
+
await schema["~standard"].validate(data);
|
|
52
|
+
} catch (err) {
|
|
53
|
+
console.error(`Failed schema validation for channel "${channelId}" topic "${topic.name}":`, err);
|
|
54
|
+
throw new Error("Failed schema validation");
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
channel: channelId,
|
|
58
|
+
topic: topic.name,
|
|
59
|
+
data
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
//#endregion
|
|
65
|
+
export { channel, typeOnlyChannel };
|
|
66
|
+
//# sourceMappingURL=channel.mjs.map
|
package/channel.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.mjs","names":[],"sources":["../src/channel.ts"],"sourcesContent":["import { topic } from \"./topic\";\r\nimport { type Realtime } from \"./types\";\r\n\r\n/**\r\n * Create a channel builder\r\n */\r\nexport const channel: Realtime.Channel.Builder = (\r\n /**\r\n * Channel ID or builder function\r\n */\r\n id,\r\n) => {\r\n // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\r\n let channelDefinition: any;\r\n const topics: Record<string, Realtime.Topic.Definition> = {};\r\n\r\n const builder = (...args: unknown[]) => {\r\n const finalId: string = typeof id === \"string\" ? id : id(...args);\r\n\r\n const topicsFns = Object.entries(topics).reduce<\r\n Record<string, (data: unknown) => Promise<Realtime.Message.Input>>\r\n >((acc, [name, topic]) => {\r\n acc[name] = createTopicFn(finalId, topic);\r\n\r\n return acc;\r\n }, {});\r\n\r\n const channel: Realtime.Channel = {\r\n name: finalId,\r\n topics,\r\n ...topicsFns,\r\n };\r\n\r\n return channel;\r\n };\r\n\r\n const extras: Record<string, unknown> = {\r\n topics,\r\n addTopic: (topic: Realtime.Topic.Definition) => {\r\n topics[topic.name] = topic;\r\n\r\n return channelDefinition;\r\n },\r\n };\r\n\r\n channelDefinition = Object.assign(builder, extras);\r\n\r\n return channelDefinition;\r\n};\r\n\r\n/**\r\n * Create a type-only channel with proxy-based topic access\r\n */\r\nexport const typeOnlyChannel = <\r\n TChannelDef extends Realtime.Channel.Definition,\r\n TId extends string = Realtime.Channel.Definition.InferId<TChannelDef>,\r\n TTopics extends Record<string, Realtime.Topic.Definition> =\r\n Realtime.Channel.Definition.InferTopics<TChannelDef>,\r\n TOutput extends Realtime.Channel = Realtime.Channel<TId, TTopics>,\r\n>(\r\n /**\r\n * Channel ID\r\n */\r\n id: TId,\r\n) => {\r\n const blankChannel = {\r\n ...channel(id),\r\n topics: new Proxy(\r\n {},\r\n {\r\n get: (target, prop) => {\r\n if (prop in target) {\r\n return target[prop as keyof typeof target];\r\n }\r\n\r\n if (typeof prop === \"string\") {\r\n return topic(prop);\r\n }\r\n },\r\n },\r\n ),\r\n };\r\n\r\n const ch = new Proxy(blankChannel, {\r\n get: (target, prop) => {\r\n if (prop in target) {\r\n return target[prop as keyof typeof target];\r\n }\r\n\r\n if (typeof prop === \"string\") {\r\n return createTopicFn(id, topic(prop));\r\n }\r\n },\r\n });\r\n\r\n return ch as unknown as TOutput;\r\n};\r\n\r\nconst createTopicFn = (channelId: string, topic: Realtime.Topic.Definition) => {\r\n return async (data: unknown) => {\r\n const schema = topic.getSchema();\r\n if (schema) {\r\n try {\r\n await schema[\"~standard\"].validate(data);\r\n } catch (err) {\r\n console.error(\r\n `Failed schema validation for channel \"${channelId}\" topic \"${topic.name}\":`,\r\n err,\r\n );\r\n throw new Error(\"Failed schema validation\");\r\n }\r\n }\r\n\r\n return {\r\n channel: channelId,\r\n topic: topic.name,\r\n data,\r\n };\r\n };\r\n};\r\n"],"mappings":";;;;;;AAMA,MAAa,WAIX,OACG;CAEH,IAAI;CACJ,MAAM,SAAoD,EAAE;CAE5D,MAAM,WAAW,GAAG,SAAoB;EACtC,MAAM,UAAkB,OAAO,OAAO,WAAW,KAAK,GAAG,GAAG,KAAK;AAgBjE,SANkC;GAChC,MAAM;GACN;GACA,GAXgB,OAAO,QAAQ,OAAO,CAAC,QAEtC,KAAK,CAAC,MAAM,WAAW;AACxB,QAAI,QAAQ,cAAc,SAAS,MAAM;AAEzC,WAAO;MACN,EAAE,CAAC;GAML;;CAKH,MAAM,SAAkC;EACtC;EACA,WAAW,UAAqC;AAC9C,UAAO,MAAM,QAAQ;AAErB,UAAO;;EAEV;AAED,qBAAoB,OAAO,OAAO,SAAS,OAAO;AAElD,QAAO;;;;;AAMT,MAAa,mBAUX,OACG;CACH,MAAM,eAAe;EACnB,GAAG,QAAQ,GAAG;EACd,QAAQ,IAAI,MACV,EAAE,EACF,EACE,MAAM,QAAQ,SAAS;AACrB,OAAI,QAAQ,OACV,QAAO,OAAO;AAGhB,OAAI,OAAO,SAAS,SAClB,QAAO,MAAM,KAAK;KAGvB,CACF;EACF;AAcD,QAZW,IAAI,MAAM,cAAc,EACjC,MAAM,QAAQ,SAAS;AACrB,MAAI,QAAQ,OACV,QAAO,OAAO;AAGhB,MAAI,OAAO,SAAS,SAClB,QAAO,cAAc,IAAI,MAAM,KAAK,CAAC;IAG1C,CAAC;;AAKJ,MAAM,iBAAiB,WAAmB,UAAqC;AAC7E,QAAO,OAAO,SAAkB;EAC9B,MAAM,SAAS,MAAM,WAAW;AAChC,MAAI,OACF,KAAI;AACF,SAAM,OAAO,aAAa,SAAS,KAAK;WACjC,KAAK;AACZ,WAAQ,MACN,yCAAyC,UAAU,WAAW,MAAM,KAAK,KACzE,IACD;AACD,SAAM,IAAI,MAAM,2BAA2B;;AAI/C,SAAO;GACL,SAAS;GACT,OAAO,MAAM;GACb;GACD"}
|
package/env.cjs
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/env.ts
|
|
3
|
+
/**
|
|
4
|
+
* The environment variables that we wish to access in the environment.
|
|
5
|
+
*
|
|
6
|
+
* Due to the way that some environment variables are exposed across different
|
|
7
|
+
* runtimes and bundling tools, we need to be careful about how we access them.
|
|
8
|
+
*
|
|
9
|
+
* The most basic annoyance is that environment variables are exposed in
|
|
10
|
+
* different locations (e.g. `process.env`, `Deno.env`, `Netlify.env`,
|
|
11
|
+
* `import.meta.env`).
|
|
12
|
+
*
|
|
13
|
+
* Bundling can be more disruptive though, where some will literally
|
|
14
|
+
* find/replace `process.env.MY_VAR` with the value of `MY_VAR` at build time,
|
|
15
|
+
* which requires us to ensure that the full env var is used in code instead of
|
|
16
|
+
* dynamically building it.
|
|
17
|
+
*/
|
|
18
|
+
const env = (() => {
|
|
19
|
+
try {
|
|
20
|
+
const viteEnv = {}.env;
|
|
21
|
+
if (viteEnv) return {
|
|
22
|
+
INNGEST_DEV: viteEnv.INNGEST_DEV ?? viteEnv.VITE_INNGEST_DEV,
|
|
23
|
+
NODE_ENV: viteEnv.NODE_ENV,
|
|
24
|
+
INNGEST_BASE_URL: viteEnv.INNGEST_BASE_URL ?? viteEnv.VITE_INNGEST_BASE_URL,
|
|
25
|
+
INNGEST_API_BASE_URL: viteEnv.INNGEST_API_BASE_URL ?? viteEnv.VITE_INNGEST_API_BASE_URL,
|
|
26
|
+
INNGEST_SIGNING_KEY: viteEnv.INNGEST_SIGNING_KEY,
|
|
27
|
+
INNGEST_SIGNING_KEY_FALLBACK: viteEnv.INNGEST_SIGNING_KEY_FALLBACK
|
|
28
|
+
};
|
|
29
|
+
} catch {}
|
|
30
|
+
try {
|
|
31
|
+
if (process.env) return {
|
|
32
|
+
INNGEST_DEV: process.env.INNGEST_DEV ?? process.env.NEXT_PUBLIC_INNGEST_DEV ?? process.env.REACT_APP_INNGEST_DEV ?? process.env.NUXT_PUBLIC_INNGEST_DEV ?? process.env.VUE_APP_INNGEST_DEV ?? process.env.VITE_INNGEST_DEV,
|
|
33
|
+
NODE_ENV: process.env.NODE_ENV ?? process.env.NEXT_PUBLIC_NODE_ENV ?? process.env.REACT_APP_NODE_ENV ?? process.env.NUXT_PUBLIC_NODE_ENV ?? process.env.VUE_APP_NODE_ENV ?? process.env.VITE_NODE_ENV ?? process.env.VITE_MODE,
|
|
34
|
+
INNGEST_BASE_URL: process.env.INNGEST_BASE_URL ?? process.env.NEXT_PUBLIC_INNGEST_BASE_URL ?? process.env.REACT_APP_INNGEST_BASE_URL ?? process.env.NUXT_PUBLIC_INNGEST_BASE_URL ?? process.env.VUE_APP_INNGEST_BASE_URL ?? process.env.VITE_INNGEST_BASE_URL,
|
|
35
|
+
INNGEST_API_BASE_URL: process.env.INNGEST_API_BASE_URL ?? process.env.NEXT_PUBLIC_INNGEST_API_BASE_URL ?? process.env.REACT_APP_INNGEST_API_BASE_URL ?? process.env.NUXT_PUBLIC_INNGEST_API_BASE_URL ?? process.env.VUE_APP_INNGEST_API_BASE_URL ?? process.env.VITE_INNGEST_API_BASE_URL,
|
|
36
|
+
INNGEST_SIGNING_KEY: process.env.INNGEST_SIGNING_KEY,
|
|
37
|
+
INNGEST_SIGNING_KEY_FALLBACK: process.env.INNGEST_SIGNING_KEY_FALLBACK
|
|
38
|
+
};
|
|
39
|
+
} catch {}
|
|
40
|
+
try {
|
|
41
|
+
const denoEnv = Deno.env.toObject();
|
|
42
|
+
if (denoEnv) return {
|
|
43
|
+
INNGEST_DEV: denoEnv.INNGEST_DEV,
|
|
44
|
+
NODE_ENV: denoEnv.NODE_ENV,
|
|
45
|
+
INNGEST_BASE_URL: denoEnv.INNGEST_BASE_URL,
|
|
46
|
+
INNGEST_API_BASE_URL: denoEnv.INNGEST_API_BASE_URL,
|
|
47
|
+
INNGEST_SIGNING_KEY: denoEnv.INNGEST_SIGNING_KEY,
|
|
48
|
+
INNGEST_SIGNING_KEY_FALLBACK: denoEnv.INNGEST_SIGNING_KEY_FALLBACK
|
|
49
|
+
};
|
|
50
|
+
} catch {}
|
|
51
|
+
try {
|
|
52
|
+
const netlifyEnv = Netlify.env.toObject();
|
|
53
|
+
if (netlifyEnv) return {
|
|
54
|
+
INNGEST_DEV: netlifyEnv.INNGEST_DEV,
|
|
55
|
+
NODE_ENV: netlifyEnv.NODE_ENV,
|
|
56
|
+
INNGEST_BASE_URL: netlifyEnv.INNGEST_BASE_URL,
|
|
57
|
+
INNGEST_API_BASE_URL: netlifyEnv.INNGEST_API_BASE_URL,
|
|
58
|
+
INNGEST_SIGNING_KEY: netlifyEnv.INNGEST_SIGNING_KEY,
|
|
59
|
+
INNGEST_SIGNING_KEY_FALLBACK: netlifyEnv.INNGEST_SIGNING_KEY_FALLBACK
|
|
60
|
+
};
|
|
61
|
+
} catch {}
|
|
62
|
+
})();
|
|
63
|
+
/**
|
|
64
|
+
* Given a `key`, get the environment variable under that key.
|
|
65
|
+
*/
|
|
66
|
+
const getEnvVar = (key) => {
|
|
67
|
+
return env?.[key];
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
exports.getEnvVar = getEnvVar;
|
|
72
|
+
//# sourceMappingURL=env.cjs.map
|
package/env.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.cjs","names":[],"sources":["../src/env.ts"],"sourcesContent":["export type EnvValue = string | undefined;\r\nexport type Env = Record<string, EnvValue>;\r\n\r\nexport type ExpectedEnv = {\r\n INNGEST_DEV: string | undefined;\r\n NODE_ENV: string | undefined;\r\n INNGEST_BASE_URL: string | undefined;\r\n INNGEST_API_BASE_URL: string | undefined;\r\n INNGEST_SIGNING_KEY: string | undefined;\r\n INNGEST_SIGNING_KEY_FALLBACK: string | undefined;\r\n};\r\n\r\n/**\r\n * The environment variables that we wish to access in the environment.\r\n *\r\n * Due to the way that some environment variables are exposed across different\r\n * runtimes and bundling tools, we need to be careful about how we access them.\r\n *\r\n * The most basic annoyance is that environment variables are exposed in\r\n * different locations (e.g. `process.env`, `Deno.env`, `Netlify.env`,\r\n * `import.meta.env`).\r\n *\r\n * Bundling can be more disruptive though, where some will literally\r\n * find/replace `process.env.MY_VAR` with the value of `MY_VAR` at build time,\r\n * which requires us to ensure that the full env var is used in code instead of\r\n * dynamically building it.\r\n */\r\nconst env: ExpectedEnv | undefined = (() => {\r\n // Pure vite\r\n try {\r\n // @ts-expect-error - import.meta only available in some environments\r\n const viteEnv = import.meta.env;\r\n\r\n if (viteEnv) {\r\n return {\r\n INNGEST_DEV: viteEnv.INNGEST_DEV ?? viteEnv.VITE_INNGEST_DEV,\r\n NODE_ENV: viteEnv.NODE_ENV,\r\n INNGEST_BASE_URL:\r\n viteEnv.INNGEST_BASE_URL ?? viteEnv.VITE_INNGEST_BASE_URL,\r\n INNGEST_API_BASE_URL:\r\n viteEnv.INNGEST_API_BASE_URL ?? viteEnv.VITE_INNGEST_API_BASE_URL,\r\n INNGEST_SIGNING_KEY: viteEnv.INNGEST_SIGNING_KEY,\r\n INNGEST_SIGNING_KEY_FALLBACK: viteEnv.INNGEST_SIGNING_KEY_FALLBACK,\r\n };\r\n }\r\n } catch {\r\n // noop\r\n }\r\n\r\n try {\r\n // Node-like environments (sometimes polyfilled Vite)\r\n if (process.env) {\r\n return {\r\n INNGEST_DEV:\r\n process.env.INNGEST_DEV ??\r\n process.env.NEXT_PUBLIC_INNGEST_DEV ??\r\n process.env.REACT_APP_INNGEST_DEV ??\r\n process.env.NUXT_PUBLIC_INNGEST_DEV ??\r\n process.env.VUE_APP_INNGEST_DEV ??\r\n process.env.VITE_INNGEST_DEV,\r\n\r\n NODE_ENV:\r\n process.env.NODE_ENV ??\r\n process.env.NEXT_PUBLIC_NODE_ENV ??\r\n process.env.REACT_APP_NODE_ENV ??\r\n process.env.NUXT_PUBLIC_NODE_ENV ??\r\n process.env.VUE_APP_NODE_ENV ??\r\n process.env.VITE_NODE_ENV ??\r\n process.env.VITE_MODE,\r\n\r\n INNGEST_BASE_URL:\r\n process.env.INNGEST_BASE_URL ??\r\n process.env.NEXT_PUBLIC_INNGEST_BASE_URL ??\r\n process.env.REACT_APP_INNGEST_BASE_URL ??\r\n process.env.NUXT_PUBLIC_INNGEST_BASE_URL ??\r\n process.env.VUE_APP_INNGEST_BASE_URL ??\r\n process.env.VITE_INNGEST_BASE_URL,\r\n\r\n INNGEST_API_BASE_URL:\r\n process.env.INNGEST_API_BASE_URL ??\r\n process.env.NEXT_PUBLIC_INNGEST_API_BASE_URL ??\r\n process.env.REACT_APP_INNGEST_API_BASE_URL ??\r\n process.env.NUXT_PUBLIC_INNGEST_API_BASE_URL ??\r\n process.env.VUE_APP_INNGEST_API_BASE_URL ??\r\n process.env.VITE_INNGEST_API_BASE_URL,\r\n\r\n INNGEST_SIGNING_KEY: process.env.INNGEST_SIGNING_KEY,\r\n\r\n INNGEST_SIGNING_KEY_FALLBACK: process.env.INNGEST_SIGNING_KEY_FALLBACK,\r\n };\r\n }\r\n } catch {\r\n // noop\r\n }\r\n\r\n // Deno\r\n try {\r\n const denoEnv = Deno.env.toObject();\r\n\r\n if (denoEnv) {\r\n return {\r\n INNGEST_DEV: denoEnv.INNGEST_DEV,\r\n NODE_ENV: denoEnv.NODE_ENV,\r\n INNGEST_BASE_URL: denoEnv.INNGEST_BASE_URL,\r\n INNGEST_API_BASE_URL: denoEnv.INNGEST_API_BASE_URL,\r\n INNGEST_SIGNING_KEY: denoEnv.INNGEST_SIGNING_KEY,\r\n INNGEST_SIGNING_KEY_FALLBACK: denoEnv.INNGEST_SIGNING_KEY_FALLBACK,\r\n };\r\n }\r\n } catch {\r\n // noop\r\n }\r\n\r\n // Netlify\r\n try {\r\n const netlifyEnv = Netlify.env.toObject();\r\n\r\n if (netlifyEnv) {\r\n return {\r\n INNGEST_DEV: netlifyEnv.INNGEST_DEV,\r\n NODE_ENV: netlifyEnv.NODE_ENV,\r\n INNGEST_BASE_URL: netlifyEnv.INNGEST_BASE_URL,\r\n INNGEST_API_BASE_URL: netlifyEnv.INNGEST_API_BASE_URL,\r\n INNGEST_SIGNING_KEY: netlifyEnv.INNGEST_SIGNING_KEY,\r\n INNGEST_SIGNING_KEY_FALLBACK: netlifyEnv.INNGEST_SIGNING_KEY_FALLBACK,\r\n };\r\n }\r\n } catch {\r\n // noop\r\n }\r\n})();\r\n\r\n/**\r\n * The Deno environment, which is not always available.\r\n */\r\ndeclare const Deno: {\r\n env: { toObject: () => Env };\r\n};\r\n\r\n/**\r\n * The Netlify environment, which is not always available.\r\n */\r\ndeclare const Netlify: {\r\n env: { toObject: () => Env };\r\n};\r\n\r\n/**\r\n * Given a `key`, get the environment variable under that key.\r\n */\r\nexport const getEnvVar = (key: keyof ExpectedEnv): string | undefined => {\r\n return env?.[key];\r\n};\r\n"],"mappings":";;;;;;;;;;;;;;;;;AA2BA,MAAM,aAAsC;AAE1C,KAAI;EAEF,MAAM,aAAsB;AAE5B,MAAI,QACF,QAAO;GACL,aAAa,QAAQ,eAAe,QAAQ;GAC5C,UAAU,QAAQ;GAClB,kBACE,QAAQ,oBAAoB,QAAQ;GACtC,sBACE,QAAQ,wBAAwB,QAAQ;GAC1C,qBAAqB,QAAQ;GAC7B,8BAA8B,QAAQ;GACvC;SAEG;AAIR,KAAI;AAEF,MAAI,QAAQ,IACV,QAAO;GACL,aACE,QAAQ,IAAI,eACZ,QAAQ,IAAI,2BACZ,QAAQ,IAAI,yBACZ,QAAQ,IAAI,2BACZ,QAAQ,IAAI,uBACZ,QAAQ,IAAI;GAEd,UACE,QAAQ,IAAI,YACZ,QAAQ,IAAI,wBACZ,QAAQ,IAAI,sBACZ,QAAQ,IAAI,wBACZ,QAAQ,IAAI,oBACZ,QAAQ,IAAI,iBACZ,QAAQ,IAAI;GAEd,kBACE,QAAQ,IAAI,oBACZ,QAAQ,IAAI,gCACZ,QAAQ,IAAI,8BACZ,QAAQ,IAAI,gCACZ,QAAQ,IAAI,4BACZ,QAAQ,IAAI;GAEd,sBACE,QAAQ,IAAI,wBACZ,QAAQ,IAAI,oCACZ,QAAQ,IAAI,kCACZ,QAAQ,IAAI,oCACZ,QAAQ,IAAI,gCACZ,QAAQ,IAAI;GAEd,qBAAqB,QAAQ,IAAI;GAEjC,8BAA8B,QAAQ,IAAI;GAC3C;SAEG;AAKR,KAAI;EACF,MAAM,UAAU,KAAK,IAAI,UAAU;AAEnC,MAAI,QACF,QAAO;GACL,aAAa,QAAQ;GACrB,UAAU,QAAQ;GAClB,kBAAkB,QAAQ;GAC1B,sBAAsB,QAAQ;GAC9B,qBAAqB,QAAQ;GAC7B,8BAA8B,QAAQ;GACvC;SAEG;AAKR,KAAI;EACF,MAAM,aAAa,QAAQ,IAAI,UAAU;AAEzC,MAAI,WACF,QAAO;GACL,aAAa,WAAW;GACxB,UAAU,WAAW;GACrB,kBAAkB,WAAW;GAC7B,sBAAsB,WAAW;GACjC,qBAAqB,WAAW;GAChC,8BAA8B,WAAW;GAC1C;SAEG;IAGN;;;;AAmBJ,MAAa,aAAa,QAA+C;AACvE,QAAO,MAAM"}
|
package/env.mjs
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
//#region src/env.ts
|
|
2
|
+
/**
|
|
3
|
+
* The environment variables that we wish to access in the environment.
|
|
4
|
+
*
|
|
5
|
+
* Due to the way that some environment variables are exposed across different
|
|
6
|
+
* runtimes and bundling tools, we need to be careful about how we access them.
|
|
7
|
+
*
|
|
8
|
+
* The most basic annoyance is that environment variables are exposed in
|
|
9
|
+
* different locations (e.g. `process.env`, `Deno.env`, `Netlify.env`,
|
|
10
|
+
* `import.meta.env`).
|
|
11
|
+
*
|
|
12
|
+
* Bundling can be more disruptive though, where some will literally
|
|
13
|
+
* find/replace `process.env.MY_VAR` with the value of `MY_VAR` at build time,
|
|
14
|
+
* which requires us to ensure that the full env var is used in code instead of
|
|
15
|
+
* dynamically building it.
|
|
16
|
+
*/
|
|
17
|
+
const env = (() => {
|
|
18
|
+
try {
|
|
19
|
+
const viteEnv = import.meta.env;
|
|
20
|
+
if (viteEnv) return {
|
|
21
|
+
INNGEST_DEV: viteEnv.INNGEST_DEV ?? viteEnv.VITE_INNGEST_DEV,
|
|
22
|
+
NODE_ENV: viteEnv.NODE_ENV,
|
|
23
|
+
INNGEST_BASE_URL: viteEnv.INNGEST_BASE_URL ?? viteEnv.VITE_INNGEST_BASE_URL,
|
|
24
|
+
INNGEST_API_BASE_URL: viteEnv.INNGEST_API_BASE_URL ?? viteEnv.VITE_INNGEST_API_BASE_URL,
|
|
25
|
+
INNGEST_SIGNING_KEY: viteEnv.INNGEST_SIGNING_KEY,
|
|
26
|
+
INNGEST_SIGNING_KEY_FALLBACK: viteEnv.INNGEST_SIGNING_KEY_FALLBACK
|
|
27
|
+
};
|
|
28
|
+
} catch {}
|
|
29
|
+
try {
|
|
30
|
+
if (process.env) return {
|
|
31
|
+
INNGEST_DEV: process.env.INNGEST_DEV ?? process.env.NEXT_PUBLIC_INNGEST_DEV ?? process.env.REACT_APP_INNGEST_DEV ?? process.env.NUXT_PUBLIC_INNGEST_DEV ?? process.env.VUE_APP_INNGEST_DEV ?? process.env.VITE_INNGEST_DEV,
|
|
32
|
+
NODE_ENV: process.env.NODE_ENV ?? process.env.NEXT_PUBLIC_NODE_ENV ?? process.env.REACT_APP_NODE_ENV ?? process.env.NUXT_PUBLIC_NODE_ENV ?? process.env.VUE_APP_NODE_ENV ?? process.env.VITE_NODE_ENV ?? process.env.VITE_MODE,
|
|
33
|
+
INNGEST_BASE_URL: process.env.INNGEST_BASE_URL ?? process.env.NEXT_PUBLIC_INNGEST_BASE_URL ?? process.env.REACT_APP_INNGEST_BASE_URL ?? process.env.NUXT_PUBLIC_INNGEST_BASE_URL ?? process.env.VUE_APP_INNGEST_BASE_URL ?? process.env.VITE_INNGEST_BASE_URL,
|
|
34
|
+
INNGEST_API_BASE_URL: process.env.INNGEST_API_BASE_URL ?? process.env.NEXT_PUBLIC_INNGEST_API_BASE_URL ?? process.env.REACT_APP_INNGEST_API_BASE_URL ?? process.env.NUXT_PUBLIC_INNGEST_API_BASE_URL ?? process.env.VUE_APP_INNGEST_API_BASE_URL ?? process.env.VITE_INNGEST_API_BASE_URL,
|
|
35
|
+
INNGEST_SIGNING_KEY: process.env.INNGEST_SIGNING_KEY,
|
|
36
|
+
INNGEST_SIGNING_KEY_FALLBACK: process.env.INNGEST_SIGNING_KEY_FALLBACK
|
|
37
|
+
};
|
|
38
|
+
} catch {}
|
|
39
|
+
try {
|
|
40
|
+
const denoEnv = Deno.env.toObject();
|
|
41
|
+
if (denoEnv) return {
|
|
42
|
+
INNGEST_DEV: denoEnv.INNGEST_DEV,
|
|
43
|
+
NODE_ENV: denoEnv.NODE_ENV,
|
|
44
|
+
INNGEST_BASE_URL: denoEnv.INNGEST_BASE_URL,
|
|
45
|
+
INNGEST_API_BASE_URL: denoEnv.INNGEST_API_BASE_URL,
|
|
46
|
+
INNGEST_SIGNING_KEY: denoEnv.INNGEST_SIGNING_KEY,
|
|
47
|
+
INNGEST_SIGNING_KEY_FALLBACK: denoEnv.INNGEST_SIGNING_KEY_FALLBACK
|
|
48
|
+
};
|
|
49
|
+
} catch {}
|
|
50
|
+
try {
|
|
51
|
+
const netlifyEnv = Netlify.env.toObject();
|
|
52
|
+
if (netlifyEnv) return {
|
|
53
|
+
INNGEST_DEV: netlifyEnv.INNGEST_DEV,
|
|
54
|
+
NODE_ENV: netlifyEnv.NODE_ENV,
|
|
55
|
+
INNGEST_BASE_URL: netlifyEnv.INNGEST_BASE_URL,
|
|
56
|
+
INNGEST_API_BASE_URL: netlifyEnv.INNGEST_API_BASE_URL,
|
|
57
|
+
INNGEST_SIGNING_KEY: netlifyEnv.INNGEST_SIGNING_KEY,
|
|
58
|
+
INNGEST_SIGNING_KEY_FALLBACK: netlifyEnv.INNGEST_SIGNING_KEY_FALLBACK
|
|
59
|
+
};
|
|
60
|
+
} catch {}
|
|
61
|
+
})();
|
|
62
|
+
/**
|
|
63
|
+
* Given a `key`, get the environment variable under that key.
|
|
64
|
+
*/
|
|
65
|
+
const getEnvVar = (key) => {
|
|
66
|
+
return env?.[key];
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
//#endregion
|
|
70
|
+
export { getEnvVar };
|
|
71
|
+
//# sourceMappingURL=env.mjs.map
|
package/env.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.mjs","names":[],"sources":["../src/env.ts"],"sourcesContent":["export type EnvValue = string | undefined;\r\nexport type Env = Record<string, EnvValue>;\r\n\r\nexport type ExpectedEnv = {\r\n INNGEST_DEV: string | undefined;\r\n NODE_ENV: string | undefined;\r\n INNGEST_BASE_URL: string | undefined;\r\n INNGEST_API_BASE_URL: string | undefined;\r\n INNGEST_SIGNING_KEY: string | undefined;\r\n INNGEST_SIGNING_KEY_FALLBACK: string | undefined;\r\n};\r\n\r\n/**\r\n * The environment variables that we wish to access in the environment.\r\n *\r\n * Due to the way that some environment variables are exposed across different\r\n * runtimes and bundling tools, we need to be careful about how we access them.\r\n *\r\n * The most basic annoyance is that environment variables are exposed in\r\n * different locations (e.g. `process.env`, `Deno.env`, `Netlify.env`,\r\n * `import.meta.env`).\r\n *\r\n * Bundling can be more disruptive though, where some will literally\r\n * find/replace `process.env.MY_VAR` with the value of `MY_VAR` at build time,\r\n * which requires us to ensure that the full env var is used in code instead of\r\n * dynamically building it.\r\n */\r\nconst env: ExpectedEnv | undefined = (() => {\r\n // Pure vite\r\n try {\r\n // @ts-expect-error - import.meta only available in some environments\r\n const viteEnv = import.meta.env;\r\n\r\n if (viteEnv) {\r\n return {\r\n INNGEST_DEV: viteEnv.INNGEST_DEV ?? viteEnv.VITE_INNGEST_DEV,\r\n NODE_ENV: viteEnv.NODE_ENV,\r\n INNGEST_BASE_URL:\r\n viteEnv.INNGEST_BASE_URL ?? viteEnv.VITE_INNGEST_BASE_URL,\r\n INNGEST_API_BASE_URL:\r\n viteEnv.INNGEST_API_BASE_URL ?? viteEnv.VITE_INNGEST_API_BASE_URL,\r\n INNGEST_SIGNING_KEY: viteEnv.INNGEST_SIGNING_KEY,\r\n INNGEST_SIGNING_KEY_FALLBACK: viteEnv.INNGEST_SIGNING_KEY_FALLBACK,\r\n };\r\n }\r\n } catch {\r\n // noop\r\n }\r\n\r\n try {\r\n // Node-like environments (sometimes polyfilled Vite)\r\n if (process.env) {\r\n return {\r\n INNGEST_DEV:\r\n process.env.INNGEST_DEV ??\r\n process.env.NEXT_PUBLIC_INNGEST_DEV ??\r\n process.env.REACT_APP_INNGEST_DEV ??\r\n process.env.NUXT_PUBLIC_INNGEST_DEV ??\r\n process.env.VUE_APP_INNGEST_DEV ??\r\n process.env.VITE_INNGEST_DEV,\r\n\r\n NODE_ENV:\r\n process.env.NODE_ENV ??\r\n process.env.NEXT_PUBLIC_NODE_ENV ??\r\n process.env.REACT_APP_NODE_ENV ??\r\n process.env.NUXT_PUBLIC_NODE_ENV ??\r\n process.env.VUE_APP_NODE_ENV ??\r\n process.env.VITE_NODE_ENV ??\r\n process.env.VITE_MODE,\r\n\r\n INNGEST_BASE_URL:\r\n process.env.INNGEST_BASE_URL ??\r\n process.env.NEXT_PUBLIC_INNGEST_BASE_URL ??\r\n process.env.REACT_APP_INNGEST_BASE_URL ??\r\n process.env.NUXT_PUBLIC_INNGEST_BASE_URL ??\r\n process.env.VUE_APP_INNGEST_BASE_URL ??\r\n process.env.VITE_INNGEST_BASE_URL,\r\n\r\n INNGEST_API_BASE_URL:\r\n process.env.INNGEST_API_BASE_URL ??\r\n process.env.NEXT_PUBLIC_INNGEST_API_BASE_URL ??\r\n process.env.REACT_APP_INNGEST_API_BASE_URL ??\r\n process.env.NUXT_PUBLIC_INNGEST_API_BASE_URL ??\r\n process.env.VUE_APP_INNGEST_API_BASE_URL ??\r\n process.env.VITE_INNGEST_API_BASE_URL,\r\n\r\n INNGEST_SIGNING_KEY: process.env.INNGEST_SIGNING_KEY,\r\n\r\n INNGEST_SIGNING_KEY_FALLBACK: process.env.INNGEST_SIGNING_KEY_FALLBACK,\r\n };\r\n }\r\n } catch {\r\n // noop\r\n }\r\n\r\n // Deno\r\n try {\r\n const denoEnv = Deno.env.toObject();\r\n\r\n if (denoEnv) {\r\n return {\r\n INNGEST_DEV: denoEnv.INNGEST_DEV,\r\n NODE_ENV: denoEnv.NODE_ENV,\r\n INNGEST_BASE_URL: denoEnv.INNGEST_BASE_URL,\r\n INNGEST_API_BASE_URL: denoEnv.INNGEST_API_BASE_URL,\r\n INNGEST_SIGNING_KEY: denoEnv.INNGEST_SIGNING_KEY,\r\n INNGEST_SIGNING_KEY_FALLBACK: denoEnv.INNGEST_SIGNING_KEY_FALLBACK,\r\n };\r\n }\r\n } catch {\r\n // noop\r\n }\r\n\r\n // Netlify\r\n try {\r\n const netlifyEnv = Netlify.env.toObject();\r\n\r\n if (netlifyEnv) {\r\n return {\r\n INNGEST_DEV: netlifyEnv.INNGEST_DEV,\r\n NODE_ENV: netlifyEnv.NODE_ENV,\r\n INNGEST_BASE_URL: netlifyEnv.INNGEST_BASE_URL,\r\n INNGEST_API_BASE_URL: netlifyEnv.INNGEST_API_BASE_URL,\r\n INNGEST_SIGNING_KEY: netlifyEnv.INNGEST_SIGNING_KEY,\r\n INNGEST_SIGNING_KEY_FALLBACK: netlifyEnv.INNGEST_SIGNING_KEY_FALLBACK,\r\n };\r\n }\r\n } catch {\r\n // noop\r\n }\r\n})();\r\n\r\n/**\r\n * The Deno environment, which is not always available.\r\n */\r\ndeclare const Deno: {\r\n env: { toObject: () => Env };\r\n};\r\n\r\n/**\r\n * The Netlify environment, which is not always available.\r\n */\r\ndeclare const Netlify: {\r\n env: { toObject: () => Env };\r\n};\r\n\r\n/**\r\n * Given a `key`, get the environment variable under that key.\r\n */\r\nexport const getEnvVar = (key: keyof ExpectedEnv): string | undefined => {\r\n return env?.[key];\r\n};\r\n"],"mappings":";;;;;;;;;;;;;;;;AA2BA,MAAM,aAAsC;AAE1C,KAAI;EAEF,MAAM,UAAU,OAAO,KAAK;AAE5B,MAAI,QACF,QAAO;GACL,aAAa,QAAQ,eAAe,QAAQ;GAC5C,UAAU,QAAQ;GAClB,kBACE,QAAQ,oBAAoB,QAAQ;GACtC,sBACE,QAAQ,wBAAwB,QAAQ;GAC1C,qBAAqB,QAAQ;GAC7B,8BAA8B,QAAQ;GACvC;SAEG;AAIR,KAAI;AAEF,MAAI,QAAQ,IACV,QAAO;GACL,aACE,QAAQ,IAAI,eACZ,QAAQ,IAAI,2BACZ,QAAQ,IAAI,yBACZ,QAAQ,IAAI,2BACZ,QAAQ,IAAI,uBACZ,QAAQ,IAAI;GAEd,UACE,QAAQ,IAAI,YACZ,QAAQ,IAAI,wBACZ,QAAQ,IAAI,sBACZ,QAAQ,IAAI,wBACZ,QAAQ,IAAI,oBACZ,QAAQ,IAAI,iBACZ,QAAQ,IAAI;GAEd,kBACE,QAAQ,IAAI,oBACZ,QAAQ,IAAI,gCACZ,QAAQ,IAAI,8BACZ,QAAQ,IAAI,gCACZ,QAAQ,IAAI,4BACZ,QAAQ,IAAI;GAEd,sBACE,QAAQ,IAAI,wBACZ,QAAQ,IAAI,oCACZ,QAAQ,IAAI,kCACZ,QAAQ,IAAI,oCACZ,QAAQ,IAAI,gCACZ,QAAQ,IAAI;GAEd,qBAAqB,QAAQ,IAAI;GAEjC,8BAA8B,QAAQ,IAAI;GAC3C;SAEG;AAKR,KAAI;EACF,MAAM,UAAU,KAAK,IAAI,UAAU;AAEnC,MAAI,QACF,QAAO;GACL,aAAa,QAAQ;GACrB,UAAU,QAAQ;GAClB,kBAAkB,QAAQ;GAC1B,sBAAsB,QAAQ;GAC9B,qBAAqB,QAAQ;GAC7B,8BAA8B,QAAQ;GACvC;SAEG;AAKR,KAAI;EACF,MAAM,aAAa,QAAQ,IAAI,UAAU;AAEzC,MAAI,WACF,QAAO;GACL,aAAa,WAAW;GACxB,UAAU,WAAW;GACrB,kBAAkB,WAAW;GAC7B,sBAAsB,WAAW;GACjC,qBAAqB,WAAW;GAChC,8BAA8B,WAAW;GAC1C;SAEG;IAGN;;;;AAmBJ,MAAa,aAAa,QAA+C;AACvE,QAAO,MAAM"}
|