@farm.js/core 0.1.0-beta.97 → 0.1.0-beta.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/after.cjs.map +1 -0
- package/dist/agent-runtime.cjs +7 -3
- package/dist/agent-runtime.cjs.map +1 -0
- package/dist/agent-runtime.d.mts +2 -2
- package/dist/agent-runtime.d.ts +2 -2
- package/dist/agent-runtime.mjs +2 -1
- package/dist/agent-runtime.mjs.map +1 -1
- package/dist/api/route-manager.cjs.map +1 -0
- package/dist/api/route-manager.d.mts +2 -2
- package/dist/api/route-manager.d.ts +2 -2
- package/dist/api/runtime.cjs.map +1 -0
- package/dist/api.cjs +26 -1
- package/dist/api.cjs.map +1 -0
- package/dist/api.d.mts +3 -3
- package/dist/api.d.ts +3 -3
- package/dist/api.mjs +2 -2
- package/dist/{app-CIOx3LvY.d.ts → app-CJKz2mbi.d.ts} +4 -4
- package/dist/{app-DBd6437H.d.mts → app-DMEGFLR2.d.mts} +4 -4
- package/dist/app-markdown.cjs.map +1 -0
- package/dist/app-markdown.d.mts +3 -3
- package/dist/app-markdown.d.ts +3 -3
- package/dist/cache.cjs.map +1 -0
- package/dist/{chunk-WD2EBM3I.mjs → chunk-3CQJV3NC.mjs} +2 -2
- package/dist/{chunk-I3OOUWO5.mjs → chunk-3GDRV7SG.mjs} +2 -2
- package/dist/{chunk-X4SFHKFH.mjs → chunk-6KJY25DQ.mjs} +5 -5
- package/dist/{chunk-FP5Q67FO.mjs → chunk-AAEZP2EY.mjs} +9 -9
- package/dist/{chunk-WMJGA32P.mjs → chunk-BXVOHG6B.mjs} +27 -2
- package/dist/{chunk-WMJGA32P.mjs.map → chunk-BXVOHG6B.mjs.map} +1 -1
- package/dist/{chunk-BZAIS65C.mjs → chunk-DIHNOVZZ.mjs} +40 -13
- package/dist/chunk-DIHNOVZZ.mjs.map +1 -0
- package/dist/{chunk-ISSFLGJ5.mjs → chunk-FDWECN3W.mjs} +8 -4
- package/dist/chunk-FDWECN3W.mjs.map +1 -0
- package/dist/chunk-FDWXXTWR.mjs +114 -0
- package/dist/chunk-FDWXXTWR.mjs.map +1 -0
- package/dist/{chunk-J3MPQ4MQ.mjs → chunk-IHADQ6J7.mjs} +2 -2
- package/dist/{chunk-J3MPQ4MQ.mjs.map → chunk-IHADQ6J7.mjs.map} +1 -1
- package/dist/{chunk-FSIXEIOB.mjs → chunk-L7FSTPGS.mjs} +2 -2
- package/dist/{chunk-AAC66ILR.mjs → chunk-LXXG3K2Y.mjs} +61 -2
- package/dist/chunk-LXXG3K2Y.mjs.map +1 -0
- package/dist/{chunk-GJ7W6LNK.mjs → chunk-N5RK4LK6.mjs} +3 -3
- package/dist/{chunk-WKDAA6V2.mjs → chunk-NBF56FXB.mjs} +20 -5
- package/dist/chunk-NBF56FXB.mjs.map +1 -0
- package/dist/chunk-RKUPOYQV.mjs +28 -0
- package/dist/chunk-RKUPOYQV.mjs.map +1 -0
- package/dist/{chunk-2SKCXYLB.mjs → chunk-RL3THP3L.mjs} +54 -5
- package/dist/chunk-RL3THP3L.mjs.map +1 -0
- package/dist/{chunk-52BR7LTX.mjs → chunk-STSPSJUI.mjs} +3 -3
- package/dist/{chunk-EPDIF432.mjs → chunk-UOGX6UNO.mjs} +37 -17
- package/dist/chunk-UOGX6UNO.mjs.map +1 -0
- package/dist/{chunk-YIBV77KZ.mjs → chunk-URQELPSH.mjs} +2 -2
- package/dist/{chunk-UMUWR5XA.mjs → chunk-UWQ4EEW7.mjs} +2 -2
- package/dist/{chunk-IZBX2TEU.mjs → chunk-VQG3QWWK.mjs} +2 -2
- package/dist/{chunk-D7F7YZ7L.mjs → chunk-WA77FWAO.mjs} +8 -8
- package/dist/{chunk-35NPLKQJ.mjs → chunk-XWM2C267.mjs} +21 -105
- package/dist/chunk-XWM2C267.mjs.map +1 -0
- package/dist/client/lifecycle.cjs.map +1 -0
- package/dist/client/lifecycle.mjs +2 -2
- package/dist/{client-plugins-B6-07YmP.d.mts → client-plugins-CyTLPqjP.d.mts} +38 -2
- package/dist/{client-plugins-By6MVUX-.d.ts → client-plugins-D-UgzngJ.d.ts} +38 -2
- package/dist/client-plugins.cjs +1 -1
- package/dist/client-plugins.cjs.map +1 -0
- package/dist/client-plugins.d.mts +2 -2
- package/dist/client-plugins.d.ts +2 -2
- package/dist/client-plugins.mjs +2 -2
- package/dist/client.cjs +61 -16
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.mts +5 -5
- package/dist/client.d.ts +5 -5
- package/dist/client.mjs +7 -7
- package/dist/config.cjs.map +1 -0
- package/dist/config.d.mts +2 -2
- package/dist/config.d.ts +2 -2
- package/dist/cron.cjs +48 -12
- package/dist/cron.cjs.map +1 -0
- package/dist/cron.mjs +2 -1
- package/dist/deferred.cjs.map +1 -0
- package/dist/deployment.cjs.map +1 -0
- package/dist/{devtools-XWZX6CCL.mjs → devtools-KQ2PXSIC.mjs} +8 -6
- package/dist/{devtools-XWZX6CCL.mjs.map → devtools-KQ2PXSIC.mjs.map} +1 -1
- package/dist/docs.cjs +7 -3
- package/dist/docs.cjs.map +1 -0
- package/dist/docs.mjs +8 -6
- package/dist/env-types.cjs.map +1 -0
- package/dist/env.cjs.map +1 -0
- package/dist/environment/vite.cjs.map +1 -0
- package/dist/environment.cjs.map +1 -0
- package/dist/font.cjs.map +1 -0
- package/dist/headers.cjs.map +1 -0
- package/dist/i18n/client.cjs.map +1 -0
- package/dist/i18n/index.cjs.map +1 -0
- package/dist/i18n/server.cjs.map +1 -0
- package/dist/image/server.cjs +19 -4
- package/dist/image/server.cjs.map +1 -0
- package/dist/image/server.d.mts +6 -0
- package/dist/image/server.d.ts +6 -0
- package/dist/image/server.mjs +1 -1
- package/dist/image/sharp.cjs +1 -0
- package/dist/image/sharp.cjs.map +1 -0
- package/dist/image/sharp.mjs +1 -1
- package/dist/image.cjs.map +1 -0
- package/dist/index.cjs +370 -143
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +10 -10
- package/dist/index.d.ts +10 -10
- package/dist/index.mjs +29 -21
- package/dist/index.mjs.map +1 -1
- package/dist/instrumentation.cjs.map +1 -0
- package/dist/{integration-orm-LLW6WZNK.mjs → integration-orm-G5BPBT5X.mjs} +3 -3
- package/dist/integrations.cjs +168 -5
- package/dist/integrations.cjs.map +1 -0
- package/dist/integrations.d.mts +2 -2
- package/dist/integrations.d.ts +2 -2
- package/dist/integrations.mjs +10 -3
- package/dist/internal/build-runtime.cjs +178 -51
- package/dist/internal/build-runtime.cjs.map +1 -0
- package/dist/internal/build-runtime.d.mts +4 -4
- package/dist/internal/build-runtime.d.ts +4 -4
- package/dist/internal/build-runtime.mjs +13 -11
- package/dist/internal/client-runtime.cjs +1 -1
- package/dist/internal/client-runtime.cjs.map +1 -0
- package/dist/internal/client-runtime.mjs +2 -2
- package/dist/internal/config-runtime.cjs +48 -42
- package/dist/internal/config-runtime.cjs.map +1 -0
- package/dist/internal/config-runtime.d.mts +3 -3
- package/dist/internal/config-runtime.d.ts +3 -3
- package/dist/internal/config-runtime.mjs +7 -5
- package/dist/internal/isolated-boundary.cjs.map +1 -0
- package/dist/internal/metadata-image-runtime.cjs.map +1 -0
- package/dist/internal/product-telemetry-runtime.cjs +6 -2
- package/dist/internal/product-telemetry-runtime.cjs.map +1 -0
- package/dist/internal/product-telemetry-runtime.mjs +6 -2
- package/dist/internal/product-telemetry-runtime.mjs.map +1 -1
- package/dist/internal/production-node-env.cjs.map +1 -0
- package/dist/internal/production-runtime.cjs.map +1 -0
- package/dist/internal/production-runtime.d.mts +8 -8
- package/dist/internal/production-runtime.d.ts +8 -8
- package/dist/markdown.cjs.map +1 -0
- package/dist/{metadata-route-8_V3UonT.d.ts → metadata-route-BpU8K9RI.d.ts} +1 -1
- package/dist/{metadata-route-CWP_HjGU.d.mts → metadata-route-D1AYgWni.d.mts} +1 -1
- package/dist/middleware.cjs.map +1 -0
- package/dist/middleware.d.mts +4 -4
- package/dist/middleware.d.ts +4 -4
- package/dist/navigation.cjs.map +1 -0
- package/dist/{nitro-EGRNOB5P.mjs → nitro-IITKBMUI.mjs} +4 -3
- package/dist/{nitro-EGRNOB5P.mjs.map → nitro-IITKBMUI.mjs.map} +1 -1
- package/dist/observability.cjs.map +1 -0
- package/dist/plugin.cjs +143 -50
- package/dist/plugin.cjs.map +1 -0
- package/dist/plugin.d.mts +2 -2
- package/dist/plugin.d.ts +2 -2
- package/dist/plugin.mjs +10 -8
- package/dist/{production-runtime-BGRH1dKG.d.mts → production-runtime-BIKA-BVT.d.mts} +2 -2
- package/dist/{production-runtime-CdmzsDax.d.ts → production-runtime-DtCUEELY.d.ts} +2 -2
- package/dist/query/client.cjs.map +1 -0
- package/dist/query/index.cjs.map +1 -0
- package/dist/query/parsers.cjs.map +1 -0
- package/dist/query/server.cjs.map +1 -0
- package/dist/{render-plan-DLxJYAA5.d.mts → render-plan-Dimb23ux.d.mts} +1 -1
- package/dist/{render-plan-0GeHiGVZ.d.ts → render-plan-rg3uiSo3.d.ts} +1 -1
- package/dist/renderer/react/client.cjs.map +1 -0
- package/dist/renderer/react/server.cjs.map +1 -0
- package/dist/renderer/react/vite.cjs.map +1 -0
- package/dist/renderer-client.cjs +26 -1
- package/dist/renderer-client.cjs.map +1 -0
- package/dist/renderer-client.d.mts +4 -4
- package/dist/renderer-client.d.ts +4 -4
- package/dist/renderer-client.mjs +2 -2
- package/dist/renderer.cjs.map +1 -0
- package/dist/{request-BstWbZ6O.d.ts → request-ColD-ChW.d.ts} +1 -1
- package/dist/{request-BCNXSXLh.d.mts → request-D5zvbU2Z.d.mts} +1 -1
- package/dist/request.cjs.map +1 -0
- package/dist/request.d.mts +3 -3
- package/dist/request.d.ts +3 -3
- package/dist/router.cjs.map +1 -0
- package/dist/routes.cjs.map +1 -0
- package/dist/routes.d.mts +2 -2
- package/dist/routes.d.ts +2 -2
- package/dist/server-action-security.cjs +117 -104
- package/dist/server-action-security.cjs.map +1 -0
- package/dist/server-action-security.mjs +2 -1
- package/dist/server-fn-client.cjs.map +1 -0
- package/dist/server-fn.cjs.map +1 -0
- package/dist/server-fn.mjs +3 -2
- package/dist/server-plugins.cjs.map +1 -0
- package/dist/server-plugins.d.mts +3 -3
- package/dist/server-plugins.d.ts +3 -3
- package/dist/server-query-client.cjs +26 -1
- package/dist/server-query-client.cjs.map +1 -0
- package/dist/server-query-client.mjs +3 -3
- package/dist/server-query.cjs.map +1 -0
- package/dist/server-query.mjs +4 -3
- package/dist/server.cjs +221 -116
- package/dist/server.cjs.map +1 -0
- package/dist/server.d.mts +8 -8
- package/dist/server.d.ts +8 -8
- package/dist/server.mjs +13 -11
- package/dist/server.mjs.map +1 -1
- package/dist/{spa-router-BeyAVSc6.d.mts → spa-router-BlilYGAN.d.mts} +1 -1
- package/dist/{spa-router-COgu4txb.d.ts → spa-router-kXORcsT_.d.ts} +1 -1
- package/dist/storage.cjs +7 -3
- package/dist/storage.cjs.map +1 -0
- package/dist/storage.mjs +1 -1
- package/dist/testing.cjs.map +1 -0
- package/dist/testing.d.mts +2 -2
- package/dist/testing.d.ts +2 -2
- package/dist/testing.mjs +2 -1
- package/dist/testing.mjs.map +1 -1
- package/dist/theme/client.cjs.map +1 -0
- package/dist/theme/index.cjs.map +1 -0
- package/dist/theme/runtime.cjs.map +1 -0
- package/dist/theme/server.cjs.map +1 -0
- package/dist/{utils-DkU2c_1B.d.ts → utils-BhvF7Hhl.d.ts} +1 -1
- package/dist/{utils-DL2VwDQl.d.mts → utils-uF32evNX.d.mts} +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -0
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +143 -50
- package/dist/vite.cjs.map +1 -0
- package/dist/vite.d.mts +2 -2
- package/dist/vite.d.ts +2 -2
- package/dist/vite.mjs +10 -8
- package/dist/{workflows-ChyK_oTu.d.mts → workflows-BantWytQ.d.mts} +7 -0
- package/dist/{workflows-ChyK_oTu.d.ts → workflows-BantWytQ.d.ts} +7 -0
- package/dist/workflows.cjs +67 -4
- package/dist/workflows.cjs.map +1 -0
- package/dist/workflows.d.mts +1 -1
- package/dist/workflows.d.ts +1 -1
- package/dist/workflows.mjs +2 -1
- package/package.json +17 -17
- package/dist/chunk-2SKCXYLB.mjs.map +0 -1
- package/dist/chunk-35NPLKQJ.mjs.map +0 -1
- package/dist/chunk-AAC66ILR.mjs.map +0 -1
- package/dist/chunk-BZAIS65C.mjs.map +0 -1
- package/dist/chunk-EPDIF432.mjs.map +0 -1
- package/dist/chunk-ISSFLGJ5.mjs.map +0 -1
- package/dist/chunk-WKDAA6V2.mjs.map +0 -1
- /package/dist/{chunk-WD2EBM3I.mjs.map → chunk-3CQJV3NC.mjs.map} +0 -0
- /package/dist/{chunk-I3OOUWO5.mjs.map → chunk-3GDRV7SG.mjs.map} +0 -0
- /package/dist/{chunk-X4SFHKFH.mjs.map → chunk-6KJY25DQ.mjs.map} +0 -0
- /package/dist/{chunk-FP5Q67FO.mjs.map → chunk-AAEZP2EY.mjs.map} +0 -0
- /package/dist/{chunk-FSIXEIOB.mjs.map → chunk-L7FSTPGS.mjs.map} +0 -0
- /package/dist/{chunk-GJ7W6LNK.mjs.map → chunk-N5RK4LK6.mjs.map} +0 -0
- /package/dist/{chunk-52BR7LTX.mjs.map → chunk-STSPSJUI.mjs.map} +0 -0
- /package/dist/{chunk-YIBV77KZ.mjs.map → chunk-URQELPSH.mjs.map} +0 -0
- /package/dist/{chunk-UMUWR5XA.mjs.map → chunk-UWQ4EEW7.mjs.map} +0 -0
- /package/dist/{chunk-IZBX2TEU.mjs.map → chunk-VQG3QWWK.mjs.map} +0 -0
- /package/dist/{chunk-D7F7YZ7L.mjs.map → chunk-WA77FWAO.mjs.map} +0 -0
- /package/dist/{integration-orm-LLW6WZNK.mjs.map → integration-orm-G5BPBT5X.mjs.map} +0 -0
package/dist/server.cjs
CHANGED
|
@@ -922,6 +922,29 @@ var init_search_params = __esm({
|
|
|
922
922
|
}
|
|
923
923
|
});
|
|
924
924
|
|
|
925
|
+
// src/utils/runtime-env.ts
|
|
926
|
+
function getFarmRuntimeBindings() {
|
|
927
|
+
const runtimeBindings = globalThis.__env__;
|
|
928
|
+
return runtimeBindings && typeof runtimeBindings === "object" ? runtimeBindings : void 0;
|
|
929
|
+
}
|
|
930
|
+
function readFarmEnvironmentValue(name2) {
|
|
931
|
+
const runtimeValue = getFarmRuntimeBindings()?.[name2];
|
|
932
|
+
if (typeof runtimeValue === "string") return runtimeValue;
|
|
933
|
+
return typeof process !== "undefined" ? process.env?.[name2] : void 0;
|
|
934
|
+
}
|
|
935
|
+
function isFarmDeployedRuntime() {
|
|
936
|
+
if (getFarmRuntimeBindings()) return true;
|
|
937
|
+
return readFarmEnvironmentValue("NODE_ENV") === "production";
|
|
938
|
+
}
|
|
939
|
+
var init_runtime_env = __esm({
|
|
940
|
+
"src/utils/runtime-env.ts"() {
|
|
941
|
+
"use strict";
|
|
942
|
+
__name(getFarmRuntimeBindings, "getFarmRuntimeBindings");
|
|
943
|
+
__name(readFarmEnvironmentValue, "readFarmEnvironmentValue");
|
|
944
|
+
__name(isFarmDeployedRuntime, "isFarmDeployedRuntime");
|
|
945
|
+
}
|
|
946
|
+
});
|
|
947
|
+
|
|
925
948
|
// src/utils/decode.ts
|
|
926
949
|
function decodeRouteSegment(segment) {
|
|
927
950
|
try {
|
|
@@ -1491,7 +1514,8 @@ function resolveWorkflowsConfig(workflows) {
|
|
|
1491
1514
|
dirs,
|
|
1492
1515
|
route: normalizeWorkflowRoute(options.route || DEFAULT_FARM_WORKFLOW_ROUTE),
|
|
1493
1516
|
secretEnv: options.secretEnv || DEFAULT_FARM_WORKFLOW_SECRET_ENV,
|
|
1494
|
-
secret: options.secret
|
|
1517
|
+
secret: options.secret,
|
|
1518
|
+
allowUnsecured: options.allowUnsecured === true
|
|
1495
1519
|
};
|
|
1496
1520
|
}
|
|
1497
1521
|
async function discoverFarmWorkflows(config, options = {}) {
|
|
@@ -1617,8 +1641,11 @@ async function prepareFarmWorkflowsForNitro(config) {
|
|
|
1617
1641
|
await fs16.mkdir(generatedDir, { recursive: true });
|
|
1618
1642
|
const tasks = {};
|
|
1619
1643
|
const scheduledTasks = createScheduledTasks(workflows);
|
|
1644
|
+
const wrapperNames = resolveWorkflowWrapperFileNames(workflows.map((workflow) => workflow.id));
|
|
1620
1645
|
for (const workflow of workflows) {
|
|
1621
|
-
const wrapperPath = toPosixPath(
|
|
1646
|
+
const wrapperPath = toPosixPath(
|
|
1647
|
+
path37.join(generatedDir, `${wrapperNames.get(workflow.id)}.mjs`)
|
|
1648
|
+
);
|
|
1622
1649
|
await fs16.writeFile(wrapperPath, createNitroTaskWrapper(workflow), "utf8");
|
|
1623
1650
|
tasks[workflow.id] = {
|
|
1624
1651
|
handler: wrapperPath,
|
|
@@ -1979,8 +2006,16 @@ function readScheduledTime(payload) {
|
|
|
1979
2006
|
return payload && typeof payload === "object" && "scheduledTime" in payload ? payload.scheduledTime : void 0;
|
|
1980
2007
|
}
|
|
1981
2008
|
function verifyWorkflowSecret(request, config) {
|
|
1982
|
-
const secret = config.secret ||
|
|
1983
|
-
if (!secret)
|
|
2009
|
+
const secret = config.secret || readFarmEnvironmentValue(config.secretEnv) || "";
|
|
2010
|
+
if (!secret) {
|
|
2011
|
+
if (config.allowUnsecured === true || !isFarmDeployedRuntime()) return null;
|
|
2012
|
+
return Response.json(
|
|
2013
|
+
{
|
|
2014
|
+
error: "Workflow route requires a secret. Set the CRON_SECRET environment variable, configure workflows.secret, or set workflows.allowUnsecured to true."
|
|
2015
|
+
},
|
|
2016
|
+
{ status: 401 }
|
|
2017
|
+
);
|
|
2018
|
+
}
|
|
1984
2019
|
const authorization = request.headers.get("authorization") || "";
|
|
1985
2020
|
const bearer = authorization.match(/^Bearer\s+(.+)$/i)?.[1] || "";
|
|
1986
2021
|
const headerSecret = request.headers.get("x-farm-workflow-secret") || "";
|
|
@@ -1993,6 +2028,37 @@ function joinRoute(...parts) {
|
|
|
1993
2028
|
function trimSlashes(value) {
|
|
1994
2029
|
return value.replace(/^\/+|\/+$/g, "");
|
|
1995
2030
|
}
|
|
2031
|
+
function resolveWorkflowWrapperFileNames(ids) {
|
|
2032
|
+
const groups = /* @__PURE__ */ new Map();
|
|
2033
|
+
for (const id of ids) {
|
|
2034
|
+
const key = safeFileName(id).toLowerCase();
|
|
2035
|
+
groups.set(key, (groups.get(key) ?? 0) + 1);
|
|
2036
|
+
}
|
|
2037
|
+
const resolved = /* @__PURE__ */ new Map();
|
|
2038
|
+
const claimed = /* @__PURE__ */ new Map();
|
|
2039
|
+
for (const id of ids) {
|
|
2040
|
+
const base = safeFileName(id);
|
|
2041
|
+
const key = base.toLowerCase();
|
|
2042
|
+
const fileName = (groups.get(key) ?? 0) > 1 ? `${key}-${workflowIdFingerprint(id)}` : base;
|
|
2043
|
+
const claimedBy = claimed.get(fileName.toLowerCase());
|
|
2044
|
+
if (claimedBy !== void 0) {
|
|
2045
|
+
throw new Error(
|
|
2046
|
+
`Farm workflows ${JSON.stringify(claimedBy)} and ${JSON.stringify(id)} generate the same wrapper file ${JSON.stringify(`${fileName}.mjs`)}. Rename one of them.`
|
|
2047
|
+
);
|
|
2048
|
+
}
|
|
2049
|
+
claimed.set(fileName.toLowerCase(), id);
|
|
2050
|
+
resolved.set(id, fileName);
|
|
2051
|
+
}
|
|
2052
|
+
return resolved;
|
|
2053
|
+
}
|
|
2054
|
+
function workflowIdFingerprint(value) {
|
|
2055
|
+
let hash = 2166136261;
|
|
2056
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
2057
|
+
hash ^= value.charCodeAt(index);
|
|
2058
|
+
hash = Math.imul(hash, 16777619);
|
|
2059
|
+
}
|
|
2060
|
+
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
2061
|
+
}
|
|
1996
2062
|
function safeFileName(value) {
|
|
1997
2063
|
return value.replace(/[^a-zA-Z0-9._-]+/g, "-") || "workflow";
|
|
1998
2064
|
}
|
|
@@ -2005,6 +2071,7 @@ var init_workflows = __esm({
|
|
|
2005
2071
|
"use strict";
|
|
2006
2072
|
init_server_http();
|
|
2007
2073
|
init_search_params();
|
|
2074
|
+
init_runtime_env();
|
|
2008
2075
|
init_decode();
|
|
2009
2076
|
init_utils();
|
|
2010
2077
|
init_route_pattern();
|
|
@@ -2044,6 +2111,8 @@ var init_workflows = __esm({
|
|
|
2044
2111
|
__name(verifyWorkflowSecret, "verifyWorkflowSecret");
|
|
2045
2112
|
__name(joinRoute, "joinRoute");
|
|
2046
2113
|
__name(trimSlashes, "trimSlashes");
|
|
2114
|
+
__name(resolveWorkflowWrapperFileNames, "resolveWorkflowWrapperFileNames");
|
|
2115
|
+
__name(workflowIdFingerprint, "workflowIdFingerprint");
|
|
2047
2116
|
__name(safeFileName, "safeFileName");
|
|
2048
2117
|
__name(relativePath, "relativePath");
|
|
2049
2118
|
}
|
|
@@ -2194,6 +2263,7 @@ var init_cron = __esm({
|
|
|
2194
2263
|
"src/cron.ts"() {
|
|
2195
2264
|
"use strict";
|
|
2196
2265
|
init_utils();
|
|
2266
|
+
init_runtime_env();
|
|
2197
2267
|
DEFAULT_FARM_CRON_SECRET_ENV = "CRON_SECRET";
|
|
2198
2268
|
CRON_FIELD_RANGES = [
|
|
2199
2269
|
[0, 59, "minute"],
|
|
@@ -2574,9 +2644,13 @@ function getStorage(namespace) {
|
|
|
2574
2644
|
const namespaced = (0, import_unstorage.prefixStorage)(globalStorage, base);
|
|
2575
2645
|
return {
|
|
2576
2646
|
...namespaced,
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2647
|
+
// Scope the wipe to the namespace instead of the whole storage, and keep
|
|
2648
|
+
// the caller's base so `clear("sessions")` cannot take unrelated keys with
|
|
2649
|
+
// it. Dropping the argument silently widens a targeted clear into a
|
|
2650
|
+
// namespace-wide delete.
|
|
2651
|
+
async clear(base2, opts) {
|
|
2652
|
+
const keys = await namespaced.getKeys(base2);
|
|
2653
|
+
await Promise.all(keys.map((key) => namespaced.removeItem(key, opts)));
|
|
2580
2654
|
}
|
|
2581
2655
|
};
|
|
2582
2656
|
}
|
|
@@ -3571,6 +3645,114 @@ var init_cache_invalidation = __esm({
|
|
|
3571
3645
|
}
|
|
3572
3646
|
});
|
|
3573
3647
|
|
|
3648
|
+
// src/request-origin.ts
|
|
3649
|
+
function getRequestSourceOrigin(request) {
|
|
3650
|
+
const origin = request.headers.get("origin")?.trim();
|
|
3651
|
+
if (origin) {
|
|
3652
|
+
return parseSourceOrigin(origin);
|
|
3653
|
+
}
|
|
3654
|
+
const referer = request.headers.get("referer")?.trim();
|
|
3655
|
+
if (referer) {
|
|
3656
|
+
return parseSourceOrigin(referer);
|
|
3657
|
+
}
|
|
3658
|
+
return { ok: true, origin: null };
|
|
3659
|
+
}
|
|
3660
|
+
function parseSourceOrigin(value) {
|
|
3661
|
+
if (value === "null") {
|
|
3662
|
+
return { ok: false, reason: "opaque-origin" };
|
|
3663
|
+
}
|
|
3664
|
+
try {
|
|
3665
|
+
const parsed = new URL(value);
|
|
3666
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
3667
|
+
return { ok: false, reason: "invalid-origin" };
|
|
3668
|
+
}
|
|
3669
|
+
return { ok: true, origin: parsed.origin };
|
|
3670
|
+
} catch {
|
|
3671
|
+
return { ok: false, reason: "invalid-origin" };
|
|
3672
|
+
}
|
|
3673
|
+
}
|
|
3674
|
+
function matchesHostHeader(sourceOrigin, request) {
|
|
3675
|
+
const host = request.headers.get("host")?.trim().toLowerCase();
|
|
3676
|
+
if (!host) return false;
|
|
3677
|
+
try {
|
|
3678
|
+
const source = new URL(sourceOrigin);
|
|
3679
|
+
const target = new URL(request.url);
|
|
3680
|
+
return source.protocol === target.protocol && source.host.toLowerCase() === host;
|
|
3681
|
+
} catch {
|
|
3682
|
+
return false;
|
|
3683
|
+
}
|
|
3684
|
+
}
|
|
3685
|
+
function matchesAllowedOrigin(sourceOrigin, pattern) {
|
|
3686
|
+
const source = new URL(sourceOrigin);
|
|
3687
|
+
if (!pattern.includes("*")) {
|
|
3688
|
+
return pattern.includes("://") ? source.origin === pattern : source.host === pattern;
|
|
3689
|
+
}
|
|
3690
|
+
const schemeEnd = pattern.indexOf("://");
|
|
3691
|
+
const scheme = schemeEnd === -1 ? null : pattern.slice(0, schemeEnd + 1);
|
|
3692
|
+
const hostPattern = pattern.slice(schemeEnd === -1 ? 0 : schemeEnd + 3);
|
|
3693
|
+
const [wildcardHost, port] = splitHostAndPort(hostPattern);
|
|
3694
|
+
const baseHost = wildcardHost.slice(2);
|
|
3695
|
+
if (scheme && source.protocol !== scheme) return false;
|
|
3696
|
+
if (port && getEffectivePort(source) !== port) return false;
|
|
3697
|
+
if (!port && source.port) return false;
|
|
3698
|
+
return source.hostname.endsWith(`.${baseHost}`) && source.hostname !== baseHost;
|
|
3699
|
+
}
|
|
3700
|
+
function normalizeAllowedOriginPattern(value, label) {
|
|
3701
|
+
const pattern = value.trim().toLowerCase();
|
|
3702
|
+
if (!pattern) {
|
|
3703
|
+
throw new TypeError(`${label} cannot contain empty values`);
|
|
3704
|
+
}
|
|
3705
|
+
if (pattern.includes("*")) {
|
|
3706
|
+
if (!/^(?:https?:\/\/)?\*\.[a-z0-9.-]+(?::\d+)?$/.test(pattern)) {
|
|
3707
|
+
throw new TypeError(`Invalid ${label} pattern: ${JSON.stringify(value)}`);
|
|
3708
|
+
}
|
|
3709
|
+
return pattern;
|
|
3710
|
+
}
|
|
3711
|
+
if (pattern.includes("://")) {
|
|
3712
|
+
let parsed;
|
|
3713
|
+
try {
|
|
3714
|
+
parsed = new URL(pattern);
|
|
3715
|
+
} catch {
|
|
3716
|
+
throw new TypeError(`Invalid ${label} value: ${JSON.stringify(value)}`);
|
|
3717
|
+
}
|
|
3718
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:" || parsed.username || parsed.password || parsed.pathname !== "/" || parsed.search || parsed.hash) {
|
|
3719
|
+
throw new TypeError(`${label} must contain origins without paths: ${JSON.stringify(value)}`);
|
|
3720
|
+
}
|
|
3721
|
+
return parsed.origin;
|
|
3722
|
+
}
|
|
3723
|
+
if (/[/@?#]/.test(pattern)) {
|
|
3724
|
+
throw new TypeError(`${label} must contain origins or hosts: ${JSON.stringify(value)}`);
|
|
3725
|
+
}
|
|
3726
|
+
try {
|
|
3727
|
+
return new URL(`http://${pattern}`).host;
|
|
3728
|
+
} catch {
|
|
3729
|
+
throw new TypeError(`Invalid ${label} value: ${JSON.stringify(value)}`);
|
|
3730
|
+
}
|
|
3731
|
+
}
|
|
3732
|
+
function splitHostAndPort(value) {
|
|
3733
|
+
const separator = value.lastIndexOf(":");
|
|
3734
|
+
if (separator === -1) return [value, null];
|
|
3735
|
+
return [value.slice(0, separator), value.slice(separator + 1)];
|
|
3736
|
+
}
|
|
3737
|
+
function getEffectivePort(url) {
|
|
3738
|
+
if (url.port) return url.port;
|
|
3739
|
+
if (url.protocol === "https:") return "443";
|
|
3740
|
+
if (url.protocol === "http:") return "80";
|
|
3741
|
+
return "";
|
|
3742
|
+
}
|
|
3743
|
+
var init_request_origin = __esm({
|
|
3744
|
+
"src/request-origin.ts"() {
|
|
3745
|
+
"use strict";
|
|
3746
|
+
__name(getRequestSourceOrigin, "getRequestSourceOrigin");
|
|
3747
|
+
__name(parseSourceOrigin, "parseSourceOrigin");
|
|
3748
|
+
__name(matchesHostHeader, "matchesHostHeader");
|
|
3749
|
+
__name(matchesAllowedOrigin, "matchesAllowedOrigin");
|
|
3750
|
+
__name(normalizeAllowedOriginPattern, "normalizeAllowedOriginPattern");
|
|
3751
|
+
__name(splitHostAndPort, "splitHostAndPort");
|
|
3752
|
+
__name(getEffectivePort, "getEffectivePort");
|
|
3753
|
+
}
|
|
3754
|
+
});
|
|
3755
|
+
|
|
3574
3756
|
// src/server-fn-error.ts
|
|
3575
3757
|
function isServerFnFailure(value) {
|
|
3576
3758
|
if (!value || typeof value !== "object") return false;
|
|
@@ -3614,7 +3796,9 @@ var init_server_fn_error = __esm({
|
|
|
3614
3796
|
|
|
3615
3797
|
// src/server-action-security.ts
|
|
3616
3798
|
function resolveServerActionsConfig(config) {
|
|
3617
|
-
const allowedOrigins = (config?.allowedOrigins ?? []).map(
|
|
3799
|
+
const allowedOrigins = (config?.allowedOrigins ?? []).map(
|
|
3800
|
+
(value) => normalizeAllowedOriginPattern(value, SERVER_ACTION_ALLOWED_ORIGINS_LABEL)
|
|
3801
|
+
);
|
|
3618
3802
|
const bodySizeLimit = parseBodySizeLimit(
|
|
3619
3803
|
config?.bodySizeLimit ?? DEFAULT_SERVER_ACTION_BODY_SIZE_LIMIT,
|
|
3620
3804
|
"serverActions.bodySizeLimit"
|
|
@@ -3633,7 +3817,7 @@ function validateServerActionRequest(request, config) {
|
|
|
3633
3817
|
);
|
|
3634
3818
|
}
|
|
3635
3819
|
const requestUrl = new URL(request.url);
|
|
3636
|
-
const sourceOrigin =
|
|
3820
|
+
const sourceOrigin = resolveSourceOrigin(request);
|
|
3637
3821
|
const fetchSite = request.headers.get("sec-fetch-site")?.trim().toLowerCase();
|
|
3638
3822
|
if (!sourceOrigin) {
|
|
3639
3823
|
if (fetchSite !== "same-origin") {
|
|
@@ -3749,103 +3933,16 @@ function getFallbackAbortController() {
|
|
|
3749
3933
|
}
|
|
3750
3934
|
return globalState2[FALLBACK_ABORT_CONTROLLER_KEY];
|
|
3751
3935
|
}
|
|
3752
|
-
function
|
|
3753
|
-
const
|
|
3754
|
-
if (!
|
|
3755
|
-
throw new
|
|
3756
|
-
|
|
3757
|
-
|
|
3758
|
-
|
|
3759
|
-
throw new TypeError(`Invalid serverActions.allowedOrigins pattern: ${JSON.stringify(value)}`);
|
|
3760
|
-
}
|
|
3761
|
-
return pattern;
|
|
3762
|
-
}
|
|
3763
|
-
if (pattern.includes("://")) {
|
|
3764
|
-
let parsed;
|
|
3765
|
-
try {
|
|
3766
|
-
parsed = new URL(pattern);
|
|
3767
|
-
} catch {
|
|
3768
|
-
throw new TypeError(`Invalid serverActions.allowedOrigins value: ${JSON.stringify(value)}`);
|
|
3769
|
-
}
|
|
3770
|
-
if (parsed.protocol !== "http:" && parsed.protocol !== "https:" || parsed.username || parsed.password || parsed.pathname !== "/" || parsed.search || parsed.hash) {
|
|
3771
|
-
throw new TypeError(
|
|
3772
|
-
`serverActions.allowedOrigins must contain origins without paths: ${JSON.stringify(value)}`
|
|
3773
|
-
);
|
|
3774
|
-
}
|
|
3775
|
-
return parsed.origin;
|
|
3776
|
-
}
|
|
3777
|
-
if (/[/@?#]/.test(pattern)) {
|
|
3778
|
-
throw new TypeError(
|
|
3779
|
-
`serverActions.allowedOrigins must contain origins or hosts: ${JSON.stringify(value)}`
|
|
3936
|
+
function resolveSourceOrigin(request) {
|
|
3937
|
+
const result = getRequestSourceOrigin(request);
|
|
3938
|
+
if (!result.ok) {
|
|
3939
|
+
throw new ServerActionRequestError(
|
|
3940
|
+
"INVALID_ORIGIN",
|
|
3941
|
+
403,
|
|
3942
|
+
result.reason === "opaque-origin" ? "Opaque origins are not allowed" : "Invalid request origin"
|
|
3780
3943
|
);
|
|
3781
3944
|
}
|
|
3782
|
-
|
|
3783
|
-
return new URL(`http://${pattern}`).host;
|
|
3784
|
-
} catch {
|
|
3785
|
-
throw new TypeError(`Invalid serverActions.allowedOrigins value: ${JSON.stringify(value)}`);
|
|
3786
|
-
}
|
|
3787
|
-
}
|
|
3788
|
-
function getRequestSourceOrigin(request) {
|
|
3789
|
-
const origin = request.headers.get("origin")?.trim();
|
|
3790
|
-
if (origin) {
|
|
3791
|
-
return parseSourceOrigin(origin);
|
|
3792
|
-
}
|
|
3793
|
-
const referer = request.headers.get("referer")?.trim();
|
|
3794
|
-
if (referer) {
|
|
3795
|
-
return parseSourceOrigin(referer);
|
|
3796
|
-
}
|
|
3797
|
-
return null;
|
|
3798
|
-
}
|
|
3799
|
-
function parseSourceOrigin(value) {
|
|
3800
|
-
if (value === "null") {
|
|
3801
|
-
throw new ServerActionRequestError("INVALID_ORIGIN", 403, "Opaque origins are not allowed");
|
|
3802
|
-
}
|
|
3803
|
-
try {
|
|
3804
|
-
const parsed = new URL(value);
|
|
3805
|
-
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
3806
|
-
throw new Error("Unsupported protocol");
|
|
3807
|
-
}
|
|
3808
|
-
return parsed.origin;
|
|
3809
|
-
} catch {
|
|
3810
|
-
throw new ServerActionRequestError("INVALID_ORIGIN", 403, "Invalid request origin");
|
|
3811
|
-
}
|
|
3812
|
-
}
|
|
3813
|
-
function matchesHostHeader(sourceOrigin, request) {
|
|
3814
|
-
const host = request.headers.get("host")?.trim().toLowerCase();
|
|
3815
|
-
if (!host) return false;
|
|
3816
|
-
try {
|
|
3817
|
-
const source = new URL(sourceOrigin);
|
|
3818
|
-
const target = new URL(request.url);
|
|
3819
|
-
return source.protocol === target.protocol && source.host.toLowerCase() === host;
|
|
3820
|
-
} catch {
|
|
3821
|
-
return false;
|
|
3822
|
-
}
|
|
3823
|
-
}
|
|
3824
|
-
function matchesAllowedOrigin(sourceOrigin, pattern) {
|
|
3825
|
-
const source = new URL(sourceOrigin);
|
|
3826
|
-
if (!pattern.includes("*")) {
|
|
3827
|
-
return pattern.includes("://") ? source.origin === pattern : source.host === pattern;
|
|
3828
|
-
}
|
|
3829
|
-
const schemeEnd = pattern.indexOf("://");
|
|
3830
|
-
const scheme = schemeEnd === -1 ? null : pattern.slice(0, schemeEnd + 1);
|
|
3831
|
-
const hostPattern = pattern.slice(schemeEnd === -1 ? 0 : schemeEnd + 3);
|
|
3832
|
-
const [wildcardHost, port] = splitHostAndPort(hostPattern);
|
|
3833
|
-
const baseHost = wildcardHost.slice(2);
|
|
3834
|
-
if (scheme && source.protocol !== scheme) return false;
|
|
3835
|
-
if (port && getEffectivePort(source) !== port) return false;
|
|
3836
|
-
if (!port && source.port) return false;
|
|
3837
|
-
return source.hostname.endsWith(`.${baseHost}`) && source.hostname !== baseHost;
|
|
3838
|
-
}
|
|
3839
|
-
function splitHostAndPort(value) {
|
|
3840
|
-
const separator = value.lastIndexOf(":");
|
|
3841
|
-
if (separator === -1) return [value, null];
|
|
3842
|
-
return [value.slice(0, separator), value.slice(separator + 1)];
|
|
3843
|
-
}
|
|
3844
|
-
function getEffectivePort(url) {
|
|
3845
|
-
if (url.port) return url.port;
|
|
3846
|
-
if (url.protocol === "https:") return "443";
|
|
3847
|
-
if (url.protocol === "http:") return "80";
|
|
3848
|
-
return "";
|
|
3945
|
+
return result.origin;
|
|
3849
3946
|
}
|
|
3850
3947
|
function validateActionId(actionId) {
|
|
3851
3948
|
if (!actionId || actionId.length > 4096 || hasControlCharacters(actionId)) {
|
|
@@ -3966,14 +4063,16 @@ function throwIfAborted2(signal) {
|
|
|
3966
4063
|
if (signal.reason !== void 0) throw signal.reason;
|
|
3967
4064
|
throw new DOMException("The operation was aborted", "AbortError");
|
|
3968
4065
|
}
|
|
3969
|
-
var import_node_async_hooks, DEFAULT_SERVER_ACTION_BODY_SIZE_LIMIT, _ServerActionRequestError, ServerActionRequestError, SERVER_ACTION_STORAGE_KEY, FALLBACK_ABORT_CONTROLLER_KEY, FORM_ACTION_CONTENT_TYPES, JAVASCRIPT_ACTION_CONTENT_TYPES;
|
|
4066
|
+
var import_node_async_hooks, SERVER_ACTION_ALLOWED_ORIGINS_LABEL, DEFAULT_SERVER_ACTION_BODY_SIZE_LIMIT, _ServerActionRequestError, ServerActionRequestError, SERVER_ACTION_STORAGE_KEY, FALLBACK_ABORT_CONTROLLER_KEY, FORM_ACTION_CONTENT_TYPES, JAVASCRIPT_ACTION_CONTENT_TYPES;
|
|
3970
4067
|
var init_server_action_security = __esm({
|
|
3971
4068
|
"src/server-action-security.ts"() {
|
|
3972
4069
|
"use strict";
|
|
3973
4070
|
import_node_async_hooks = require("async_hooks");
|
|
3974
4071
|
init_cache_invalidation();
|
|
4072
|
+
init_request_origin();
|
|
3975
4073
|
init_server_fn_error();
|
|
3976
4074
|
init_server_http();
|
|
4075
|
+
SERVER_ACTION_ALLOWED_ORIGINS_LABEL = "serverActions.allowedOrigins";
|
|
3977
4076
|
DEFAULT_SERVER_ACTION_BODY_SIZE_LIMIT = 1e6;
|
|
3978
4077
|
_ServerActionRequestError = class _ServerActionRequestError extends Error {
|
|
3979
4078
|
constructor(code, status, message) {
|
|
@@ -4014,13 +4113,7 @@ var init_server_action_security = __esm({
|
|
|
4014
4113
|
});
|
|
4015
4114
|
__name(getServerActionStorage, "getServerActionStorage");
|
|
4016
4115
|
__name(getFallbackAbortController, "getFallbackAbortController");
|
|
4017
|
-
__name(
|
|
4018
|
-
__name(getRequestSourceOrigin, "getRequestSourceOrigin");
|
|
4019
|
-
__name(parseSourceOrigin, "parseSourceOrigin");
|
|
4020
|
-
__name(matchesHostHeader, "matchesHostHeader");
|
|
4021
|
-
__name(matchesAllowedOrigin, "matchesAllowedOrigin");
|
|
4022
|
-
__name(splitHostAndPort, "splitHostAndPort");
|
|
4023
|
-
__name(getEffectivePort, "getEffectivePort");
|
|
4116
|
+
__name(resolveSourceOrigin, "resolveSourceOrigin");
|
|
4024
4117
|
__name(validateActionId, "validateActionId");
|
|
4025
4118
|
__name(hasControlCharacters, "hasControlCharacters");
|
|
4026
4119
|
__name(getSupportedContentType, "getSupportedContentType");
|
|
@@ -6398,6 +6491,14 @@ var init_routes = __esm({
|
|
|
6398
6491
|
}
|
|
6399
6492
|
});
|
|
6400
6493
|
|
|
6494
|
+
// src/integration-request-security.ts
|
|
6495
|
+
var init_integration_request_security = __esm({
|
|
6496
|
+
"src/integration-request-security.ts"() {
|
|
6497
|
+
"use strict";
|
|
6498
|
+
init_request_origin();
|
|
6499
|
+
}
|
|
6500
|
+
});
|
|
6501
|
+
|
|
6401
6502
|
// src/integration-api.ts
|
|
6402
6503
|
function defineIntegrationAPIOperation(operation) {
|
|
6403
6504
|
return {
|
|
@@ -8573,6 +8674,7 @@ var init_integrations = __esm({
|
|
|
8573
8674
|
"src/integrations.ts"() {
|
|
8574
8675
|
"use strict";
|
|
8575
8676
|
init_route_pattern();
|
|
8677
|
+
init_integration_request_security();
|
|
8576
8678
|
init_integration_api();
|
|
8577
8679
|
init_plugin_integration_context();
|
|
8578
8680
|
init_decode();
|
|
@@ -10338,10 +10440,11 @@ function createFarmImageHandler(config, options) {
|
|
|
10338
10440
|
"quality"
|
|
10339
10441
|
);
|
|
10340
10442
|
const accept = request.headers.get("accept") ?? "";
|
|
10443
|
+
const negotiatedFormat = selectOutputFormat(accept, config.formats) ?? "";
|
|
10341
10444
|
const cacheKey = `${sourceUrl.href}
|
|
10342
10445
|
${width}
|
|
10343
10446
|
${quality}
|
|
10344
|
-
${
|
|
10447
|
+
${negotiatedFormat}`;
|
|
10345
10448
|
let optimized = cache.get(cacheKey);
|
|
10346
10449
|
if (!optimized) {
|
|
10347
10450
|
const fetchedSource = await fetchImageSource(
|
|
@@ -10368,7 +10471,8 @@ ${accept}`;
|
|
|
10368
10471
|
quality,
|
|
10369
10472
|
accept,
|
|
10370
10473
|
formats: config.formats,
|
|
10371
|
-
signal: request.signal
|
|
10474
|
+
signal: request.signal,
|
|
10475
|
+
maximumResponseBody: config.maximumResponseBody
|
|
10372
10476
|
});
|
|
10373
10477
|
throwIfAborted3(request.signal);
|
|
10374
10478
|
validateTransformedResult(result, config);
|
|
@@ -10699,7 +10803,7 @@ function throwIfAborted3(signal) {
|
|
|
10699
10803
|
function isAbortError(error) {
|
|
10700
10804
|
return error instanceof Error && error.name === "AbortError";
|
|
10701
10805
|
}
|
|
10702
|
-
var _FarmImageRequestError, FarmImageRequestError, _FarmImageMemoryCache, FarmImageMemoryCache;
|
|
10806
|
+
var _FarmImageRequestError, FarmImageRequestError, DEFAULT_IMAGE_TRANSFORM_BODY_LIMIT, _FarmImageMemoryCache, FarmImageMemoryCache;
|
|
10703
10807
|
var init_image_server = __esm({
|
|
10704
10808
|
"src/image-server.ts"() {
|
|
10705
10809
|
"use strict";
|
|
@@ -10715,6 +10819,7 @@ var init_image_server = __esm({
|
|
|
10715
10819
|
__name(_FarmImageRequestError, "FarmImageRequestError");
|
|
10716
10820
|
FarmImageRequestError = _FarmImageRequestError;
|
|
10717
10821
|
__name(createFarmImageHandler, "createFarmImageHandler");
|
|
10822
|
+
DEFAULT_IMAGE_TRANSFORM_BODY_LIMIT = 10 * 1024 * 1024;
|
|
10718
10823
|
__name(selectOutputFormat, "selectOutputFormat");
|
|
10719
10824
|
__name(isPrivateImageAddress, "isPrivateImageAddress");
|
|
10720
10825
|
__name(parseAllowedInteger, "parseAllowedInteger");
|
|
@@ -23907,7 +24012,7 @@ _setFarmThemeServerSnapshotResolver(() => {
|
|
|
23907
24012
|
});
|
|
23908
24013
|
|
|
23909
24014
|
// package.json
|
|
23910
|
-
var version = "0.1.0-beta.
|
|
24015
|
+
var version = "0.1.0-beta.98";
|
|
23911
24016
|
|
|
23912
24017
|
// src/version.ts
|
|
23913
24018
|
var FARM_VERSION = version;
|