@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.d.mts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export { F as FarmApp, R as RouteManager, S as ServerRenderer, c as createFarmApp } from './app-
|
|
2
|
-
import { q as FarmConfig } from './client-plugins-
|
|
3
|
-
export { A as AppRoutePattern, $ as BuildOptions, S as ErrorBoundary, G as ErrorProps, e as FarmAppContext, u as FarmComponentType, n as FarmContextFactory, C as FarmContextFactoryInput, D as FarmIsolatedClientHydrationMode, a2 as FarmLayerEntry, a6 as FarmLayerResolution, w as FarmMigrationCommand, x as FarmMigrationsConfig, y as FarmMigrationsUserConfig, Y as FarmRequest, Z as FarmResponse, a4 as FarmSourceRoot, W as GenerateStaticParams, O as Layout, J as LayoutMetadataProps, X as LayoutModule, L as LayoutProps, Q as Loading, E as LoadingProps, M as Metadata, I as MetadataProps, o as MiddlewareProps, N as NitroPreset, K as Page, f as PageProps, H as PagePropsWithMiddleware, v as PageRouteParams, P as ParsedRoute, g as PluginContextProps, a5 as ResolveFarmLayersOptions, a3 as ResolvedFarmLayer, z as ResolvedFarmMigrationsConfig, h as RouteModule, R as RouteSegment, a1 as SSGCollectionResult, a0 as SSGPage, _ as ServerAction, U as StaticPathParams, T as StaticPathPrimitive, V as StaticRouteParams, ab as createFarmConfigResolutionPlugin, t as defineConfig, s as farmPlugin, a9 as getFarmAppDirectories, aa as getFarmLayerAliases, a8 as getFarmSourceRoots, ac as loadFarmConfigFile, a7 as resolveFarmLayers } from './client-plugins-
|
|
4
|
-
export { f as fileExists, g as globFiles, l as logger, m as matchRoute, a as matchRoutePrefix, p as parseRoutePath, d as parseSearchParams, r as resolveAppPath, s as segmentsToPattern, b as toPosixPath, t as toRootRelativeUrlPath, c as toViteModuleId } from './utils-
|
|
1
|
+
export { F as FarmApp, R as RouteManager, S as ServerRenderer, c as createFarmApp } from './app-DMEGFLR2.mjs';
|
|
2
|
+
import { q as FarmConfig } from './client-plugins-CyTLPqjP.mjs';
|
|
3
|
+
export { A as AppRoutePattern, $ as BuildOptions, S as ErrorBoundary, G as ErrorProps, e as FarmAppContext, u as FarmComponentType, n as FarmContextFactory, C as FarmContextFactoryInput, D as FarmIsolatedClientHydrationMode, a2 as FarmLayerEntry, a6 as FarmLayerResolution, w as FarmMigrationCommand, x as FarmMigrationsConfig, y as FarmMigrationsUserConfig, Y as FarmRequest, Z as FarmResponse, a4 as FarmSourceRoot, W as GenerateStaticParams, O as Layout, J as LayoutMetadataProps, X as LayoutModule, L as LayoutProps, Q as Loading, E as LoadingProps, M as Metadata, I as MetadataProps, o as MiddlewareProps, N as NitroPreset, K as Page, f as PageProps, H as PagePropsWithMiddleware, v as PageRouteParams, P as ParsedRoute, g as PluginContextProps, a5 as ResolveFarmLayersOptions, a3 as ResolvedFarmLayer, z as ResolvedFarmMigrationsConfig, h as RouteModule, R as RouteSegment, a1 as SSGCollectionResult, a0 as SSGPage, _ as ServerAction, U as StaticPathParams, T as StaticPathPrimitive, V as StaticRouteParams, ab as createFarmConfigResolutionPlugin, t as defineConfig, s as farmPlugin, a9 as getFarmAppDirectories, aa as getFarmLayerAliases, a8 as getFarmSourceRoots, ac as loadFarmConfigFile, a7 as resolveFarmLayers } from './client-plugins-CyTLPqjP.mjs';
|
|
4
|
+
export { f as fileExists, g as globFiles, l as logger, m as matchRoute, a as matchRoutePrefix, p as parseRoutePath, d as parseSearchParams, r as resolveAppPath, s as segmentsToPattern, b as toPosixPath, t as toRootRelativeUrlPath, c as toViteModuleId } from './utils-uF32evNX.mjs';
|
|
5
5
|
export { createFarmStorage, createStorageClient, databaseStorage, defineStorageClient, disposeStorage, driverStorage, getStorage, initStorage, libsqlStorage, localStorage, memoryStorage, mongodbStorage, mysql2Storage, mysqlStorage, netlifyBlobsStorage, pgStorage, pgliteStorage, planetscaleStorage, postgresStorage, redisStorage, resolveStorageRuntimeClient, s3Storage, sqliteStorage, upstashStorage, vercelBlobStorage, vercelKVStorage } from './storage.mjs';
|
|
6
6
|
export { CacheKeyFactory, DefinedCacheKey, FarmCacheAdapter, FarmCacheEntry, FarmCacheInvalidationTarget, FarmCacheOptions, FarmCacheSetOptions, FarmCacheStorage, FarmCacheUserConfig, FarmClientCacheUserConfig, FarmDataCache, GetFarmCacheEntryOptions, InferCacheKeyData, RevalidateTagProfile, RouteDataCacheKey, StorageFarmCacheAdapterOptions, applyFarmCacheInvalidationTargets, applyFarmCacheInvalidations, configureFarmCache, createFarmCacheKey, createPathCacheTag, createRouteDataCacheKey, createRouteDataCacheTag, defineCacheKey, getFarmDataCache, invalidate, invalidateRouteData, normalizeRevalidatePath, revalidatePath, revalidateTag, storageCacheAdapter, unstable_cache, updateTag } from './cache.mjs';
|
|
7
7
|
export { AfterCallback, FarmAfterPlatformContext, _runWithAfterNodeResponse, _runWithAfterRequest, _withAfterNodeMiddleware, after } from './after.mjs';
|
|
8
8
|
export { FARM_SERVER_QUERY_SYMBOL, ServerQuery, ServerQueryKey, ServerQueryOptions, ServerQueryOutputOptions, ServerQueryStaleTime, createServerQuery } from './server-query.mjs';
|
|
9
9
|
import { ViteDevServer } from 'vite';
|
|
10
|
-
export { g as getCurrentRequest } from './request-
|
|
10
|
+
export { g as getCurrentRequest } from './request-D5zvbU2Z.mjs';
|
|
11
11
|
import { ServerResponse } from 'node:http';
|
|
12
12
|
export { getTheme, getThemeSnapshot } from './theme/server.mjs';
|
|
13
13
|
export { DEFAULT_SERVER_ACTION_BODY_SIZE_LIMIT, FarmServerActionsConfig, PreparedServerActionRequest, ResolvedFarmServerActionsConfig, SanitizedServerActionError, ServerActionRequestError, ServerActionRequestKind, createServerActionRequestErrorResponse, getServerActionExecutionContext, getServerActionInvalidations, getServerActionSignal, prepareServerActionRequest, resolveServerActionsConfig, runWithServerActionRequest, sanitizeServerActionError, validateServerActionRequest } from './server-action-security.mjs';
|
|
@@ -18,7 +18,7 @@ export { ConnectorName, ConnectorOptions, Database } from 'db0';
|
|
|
18
18
|
import './types-CKwggz9n.mjs';
|
|
19
19
|
import '@farming-labs/docs';
|
|
20
20
|
import './markdown.mjs';
|
|
21
|
-
import './workflows-
|
|
21
|
+
import './workflows-BantWytQ.mjs';
|
|
22
22
|
import './cron.mjs';
|
|
23
23
|
import './image-config-Duob7wER.mjs';
|
|
24
24
|
import './routes.mjs';
|
|
@@ -40,8 +40,8 @@ import './types-CnH8DOqo.mjs';
|
|
|
40
40
|
import './types-DQnyD3VD.mjs';
|
|
41
41
|
import './font.mjs';
|
|
42
42
|
import './island-CfGru1MO.mjs';
|
|
43
|
-
import './metadata-route-
|
|
44
|
-
import './render-plan-
|
|
43
|
+
import './metadata-route-D1AYgWni.mjs';
|
|
44
|
+
import './render-plan-Dimb23ux.mjs';
|
|
45
45
|
import './runtime-CV2UCV-5.mjs';
|
|
46
46
|
import './resolver-khasx3fU.mjs';
|
|
47
47
|
|
package/dist/server.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export { F as FarmApp, R as RouteManager, S as ServerRenderer, c as createFarmApp } from './app-
|
|
2
|
-
import { q as FarmConfig } from './client-plugins-
|
|
3
|
-
export { A as AppRoutePattern, $ as BuildOptions, S as ErrorBoundary, G as ErrorProps, e as FarmAppContext, u as FarmComponentType, n as FarmContextFactory, C as FarmContextFactoryInput, D as FarmIsolatedClientHydrationMode, a2 as FarmLayerEntry, a6 as FarmLayerResolution, w as FarmMigrationCommand, x as FarmMigrationsConfig, y as FarmMigrationsUserConfig, Y as FarmRequest, Z as FarmResponse, a4 as FarmSourceRoot, W as GenerateStaticParams, O as Layout, J as LayoutMetadataProps, X as LayoutModule, L as LayoutProps, Q as Loading, E as LoadingProps, M as Metadata, I as MetadataProps, o as MiddlewareProps, N as NitroPreset, K as Page, f as PageProps, H as PagePropsWithMiddleware, v as PageRouteParams, P as ParsedRoute, g as PluginContextProps, a5 as ResolveFarmLayersOptions, a3 as ResolvedFarmLayer, z as ResolvedFarmMigrationsConfig, h as RouteModule, R as RouteSegment, a1 as SSGCollectionResult, a0 as SSGPage, _ as ServerAction, U as StaticPathParams, T as StaticPathPrimitive, V as StaticRouteParams, ab as createFarmConfigResolutionPlugin, t as defineConfig, s as farmPlugin, a9 as getFarmAppDirectories, aa as getFarmLayerAliases, a8 as getFarmSourceRoots, ac as loadFarmConfigFile, a7 as resolveFarmLayers } from './client-plugins-
|
|
4
|
-
export { f as fileExists, g as globFiles, l as logger, m as matchRoute, a as matchRoutePrefix, p as parseRoutePath, d as parseSearchParams, r as resolveAppPath, s as segmentsToPattern, b as toPosixPath, t as toRootRelativeUrlPath, c as toViteModuleId } from './utils-
|
|
1
|
+
export { F as FarmApp, R as RouteManager, S as ServerRenderer, c as createFarmApp } from './app-CJKz2mbi.js';
|
|
2
|
+
import { q as FarmConfig } from './client-plugins-D-UgzngJ.js';
|
|
3
|
+
export { A as AppRoutePattern, $ as BuildOptions, S as ErrorBoundary, G as ErrorProps, e as FarmAppContext, u as FarmComponentType, n as FarmContextFactory, C as FarmContextFactoryInput, D as FarmIsolatedClientHydrationMode, a2 as FarmLayerEntry, a6 as FarmLayerResolution, w as FarmMigrationCommand, x as FarmMigrationsConfig, y as FarmMigrationsUserConfig, Y as FarmRequest, Z as FarmResponse, a4 as FarmSourceRoot, W as GenerateStaticParams, O as Layout, J as LayoutMetadataProps, X as LayoutModule, L as LayoutProps, Q as Loading, E as LoadingProps, M as Metadata, I as MetadataProps, o as MiddlewareProps, N as NitroPreset, K as Page, f as PageProps, H as PagePropsWithMiddleware, v as PageRouteParams, P as ParsedRoute, g as PluginContextProps, a5 as ResolveFarmLayersOptions, a3 as ResolvedFarmLayer, z as ResolvedFarmMigrationsConfig, h as RouteModule, R as RouteSegment, a1 as SSGCollectionResult, a0 as SSGPage, _ as ServerAction, U as StaticPathParams, T as StaticPathPrimitive, V as StaticRouteParams, ab as createFarmConfigResolutionPlugin, t as defineConfig, s as farmPlugin, a9 as getFarmAppDirectories, aa as getFarmLayerAliases, a8 as getFarmSourceRoots, ac as loadFarmConfigFile, a7 as resolveFarmLayers } from './client-plugins-D-UgzngJ.js';
|
|
4
|
+
export { f as fileExists, g as globFiles, l as logger, m as matchRoute, a as matchRoutePrefix, p as parseRoutePath, d as parseSearchParams, r as resolveAppPath, s as segmentsToPattern, b as toPosixPath, t as toRootRelativeUrlPath, c as toViteModuleId } from './utils-BhvF7Hhl.js';
|
|
5
5
|
export { createFarmStorage, createStorageClient, databaseStorage, defineStorageClient, disposeStorage, driverStorage, getStorage, initStorage, libsqlStorage, localStorage, memoryStorage, mongodbStorage, mysql2Storage, mysqlStorage, netlifyBlobsStorage, pgStorage, pgliteStorage, planetscaleStorage, postgresStorage, redisStorage, resolveStorageRuntimeClient, s3Storage, sqliteStorage, upstashStorage, vercelBlobStorage, vercelKVStorage } from './storage.js';
|
|
6
6
|
export { CacheKeyFactory, DefinedCacheKey, FarmCacheAdapter, FarmCacheEntry, FarmCacheInvalidationTarget, FarmCacheOptions, FarmCacheSetOptions, FarmCacheStorage, FarmCacheUserConfig, FarmClientCacheUserConfig, FarmDataCache, GetFarmCacheEntryOptions, InferCacheKeyData, RevalidateTagProfile, RouteDataCacheKey, StorageFarmCacheAdapterOptions, applyFarmCacheInvalidationTargets, applyFarmCacheInvalidations, configureFarmCache, createFarmCacheKey, createPathCacheTag, createRouteDataCacheKey, createRouteDataCacheTag, defineCacheKey, getFarmDataCache, invalidate, invalidateRouteData, normalizeRevalidatePath, revalidatePath, revalidateTag, storageCacheAdapter, unstable_cache, updateTag } from './cache.js';
|
|
7
7
|
export { AfterCallback, FarmAfterPlatformContext, _runWithAfterNodeResponse, _runWithAfterRequest, _withAfterNodeMiddleware, after } from './after.js';
|
|
8
8
|
export { FARM_SERVER_QUERY_SYMBOL, ServerQuery, ServerQueryKey, ServerQueryOptions, ServerQueryOutputOptions, ServerQueryStaleTime, createServerQuery } from './server-query.js';
|
|
9
9
|
import { ViteDevServer } from 'vite';
|
|
10
|
-
export { g as getCurrentRequest } from './request-
|
|
10
|
+
export { g as getCurrentRequest } from './request-ColD-ChW.js';
|
|
11
11
|
import { ServerResponse } from 'node:http';
|
|
12
12
|
export { getTheme, getThemeSnapshot } from './theme/server.js';
|
|
13
13
|
export { DEFAULT_SERVER_ACTION_BODY_SIZE_LIMIT, FarmServerActionsConfig, PreparedServerActionRequest, ResolvedFarmServerActionsConfig, SanitizedServerActionError, ServerActionRequestError, ServerActionRequestKind, createServerActionRequestErrorResponse, getServerActionExecutionContext, getServerActionInvalidations, getServerActionSignal, prepareServerActionRequest, resolveServerActionsConfig, runWithServerActionRequest, sanitizeServerActionError, validateServerActionRequest } from './server-action-security.js';
|
|
@@ -18,7 +18,7 @@ export { ConnectorName, ConnectorOptions, Database } from 'db0';
|
|
|
18
18
|
import './types-CKwggz9n.js';
|
|
19
19
|
import '@farming-labs/docs';
|
|
20
20
|
import './markdown.js';
|
|
21
|
-
import './workflows-
|
|
21
|
+
import './workflows-BantWytQ.js';
|
|
22
22
|
import './cron.js';
|
|
23
23
|
import './image-config-Duob7wER.js';
|
|
24
24
|
import './routes.js';
|
|
@@ -40,8 +40,8 @@ import './types-CnH8DOqo.js';
|
|
|
40
40
|
import './types-DQnyD3VD.js';
|
|
41
41
|
import './font.js';
|
|
42
42
|
import './island-CfGru1MO.js';
|
|
43
|
-
import './metadata-route-
|
|
44
|
-
import './render-plan-
|
|
43
|
+
import './metadata-route-BpU8K9RI.js';
|
|
44
|
+
import './render-plan-rg3uiSo3.js';
|
|
45
45
|
import './runtime-BgDQzBiu.js';
|
|
46
46
|
import './resolver-DadfRL6F.js';
|
|
47
47
|
|
package/dist/server.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FARM_SERVER_QUERY_SYMBOL,
|
|
3
3
|
createServerQuery
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-N5RK4LK6.mjs";
|
|
5
5
|
import {
|
|
6
6
|
FarmEnvironmentError,
|
|
7
7
|
createClientOnlyFn,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import {
|
|
12
12
|
loadConfig,
|
|
13
13
|
resolveConfig
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-6KJY25DQ.mjs";
|
|
15
15
|
import "./chunk-UVCIEUJC.mjs";
|
|
16
16
|
import {
|
|
17
17
|
loadFarmInstrumentation,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
import {
|
|
21
21
|
createFarmInstrumentationLifecycle
|
|
22
22
|
} from "./chunk-7AZEWZ7N.mjs";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-3GDRV7SG.mjs";
|
|
24
24
|
import "./chunk-EHTUKVSW.mjs";
|
|
25
25
|
import {
|
|
26
26
|
FarmApp,
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
farmI18nClientBridgePlugin,
|
|
36
36
|
farmPlugin,
|
|
37
37
|
mergeFarmViteConfig
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-AAEZP2EY.mjs";
|
|
39
39
|
import "./chunk-YVPFZ2TK.mjs";
|
|
40
40
|
import "./chunk-KDP5ZSWP.mjs";
|
|
41
41
|
import "./chunk-WQDQCTC5.mjs";
|
|
@@ -43,7 +43,7 @@ import "./chunk-6ZXIQSXE.mjs";
|
|
|
43
43
|
import {
|
|
44
44
|
farmEnvironmentFunctionsPlugin
|
|
45
45
|
} from "./chunk-V6WE6JSZ.mjs";
|
|
46
|
-
import "./chunk-
|
|
46
|
+
import "./chunk-NBF56FXB.mjs";
|
|
47
47
|
import "./chunk-CGIXMLSY.mjs";
|
|
48
48
|
import "./chunk-USWZZUEH.mjs";
|
|
49
49
|
import "./chunk-USLFXFFH.mjs";
|
|
@@ -68,8 +68,9 @@ import "./chunk-RQ633A5I.mjs";
|
|
|
68
68
|
import "./chunk-VMCHLH3Y.mjs";
|
|
69
69
|
import "./chunk-A5VG2BDG.mjs";
|
|
70
70
|
import "./chunk-EUYRVVXL.mjs";
|
|
71
|
-
import "./chunk-
|
|
72
|
-
import "./chunk-
|
|
71
|
+
import "./chunk-RL3THP3L.mjs";
|
|
72
|
+
import "./chunk-DIHNOVZZ.mjs";
|
|
73
|
+
import "./chunk-RKUPOYQV.mjs";
|
|
73
74
|
import {
|
|
74
75
|
DEFAULT_SERVER_ACTION_BODY_SIZE_LIMIT,
|
|
75
76
|
ServerActionRequestError,
|
|
@@ -82,14 +83,15 @@ import {
|
|
|
82
83
|
runWithServerActionRequest,
|
|
83
84
|
sanitizeServerActionError,
|
|
84
85
|
validateServerActionRequest
|
|
85
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-XWM2C267.mjs";
|
|
86
87
|
import {
|
|
87
88
|
getTheme,
|
|
88
89
|
getThemeSnapshot
|
|
89
90
|
} from "./chunk-N2KC75H7.mjs";
|
|
90
91
|
import "./chunk-H53KVQUU.mjs";
|
|
91
92
|
import "./chunk-QKVUNGAH.mjs";
|
|
92
|
-
import "./chunk-
|
|
93
|
+
import "./chunk-LXXG3K2Y.mjs";
|
|
94
|
+
import "./chunk-FDWXXTWR.mjs";
|
|
93
95
|
import {
|
|
94
96
|
createFarmStorage,
|
|
95
97
|
createStorageClient,
|
|
@@ -117,7 +119,7 @@ import {
|
|
|
117
119
|
upstashStorage,
|
|
118
120
|
vercelBlobStorage,
|
|
119
121
|
vercelKVStorage
|
|
120
|
-
} from "./chunk-
|
|
122
|
+
} from "./chunk-FDWECN3W.mjs";
|
|
121
123
|
import "./chunk-4X57GXQA.mjs";
|
|
122
124
|
import "./chunk-IGOLMCE3.mjs";
|
|
123
125
|
import "./chunk-YUE4CJNB.mjs";
|
|
@@ -196,7 +198,7 @@ import "./chunk-N2FY2QZ7.mjs";
|
|
|
196
198
|
import "./chunk-FXG2PS27.mjs";
|
|
197
199
|
import {
|
|
198
200
|
FARM_VERSION
|
|
199
|
-
} from "./chunk-
|
|
201
|
+
} from "./chunk-IHADQ6J7.mjs";
|
|
200
202
|
import {
|
|
201
203
|
createCompressionPlugin,
|
|
202
204
|
createHeadersPlugin,
|
package/dist/server.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/create-server.ts"],"sourcesContent":["import { createServer as createViteServer, type ViteDevServer } from \"vite\";\nimport type { FarmConfig } from \"../types\";\nimport { farmI18nClientBridgePlugin, farmPlugin } from \"../vite\";\nimport { logger } from \"../utils\";\nimport { loadConfig, resolveConfig } from \"../config\";\nimport { PluginManager } from \"../plugin\";\nimport { farmEnvironmentFunctionsPlugin } from \"../environment-vite\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport {\n createRedirectsPlugin,\n createHeadersPlugin,\n createRewritesPlugin,\n createCompressionPlugin,\n createLoggerPlugin,\n} from \"../plugins\";\nimport {\n createFarmClientOptimizeDepsConfig,\n createFarmClientOptimizeDepsEntries,\n mergeFarmViteConfig,\n} from \"./vite-config\";\nimport { FARM_VERSION } from \"../version\";\nimport { getFarmAppDirectories } from \"../layers\";\nimport { createCliColors } from \"../cli-colors\";\nimport { createFarmThemeCssPlugin } from \"../theme/vite\";\nimport {\n createFarmInstrumentationLifecycle,\n loadFarmInstrumentation,\n resolveFarmInstrumentationFile,\n type FarmInstrumentationLifecycle,\n} from \"../instrumentation\";\nimport { loadFarmRendererVitePlugins, resolveFarmRenderer } from \"../renderer\";\n\nexport const DEFAULT_FARM_DEV_SERVER_PORT = 3000;\n\n// Farm.js branding plugin for createServer\nfunction createBrandingPlugin() {\n let serverStarted = false;\n let startTime = Date.now();\n\n return {\n name: \"farm:branding\",\n enforce: \"pre\" as const,\n configureServer(server: ViteDevServer) {\n startTime = Date.now();\n\n const originalListen = server.listen.bind(server);\n server.listen = async (port?: number, ...args: any[]) => {\n const result = await originalListen(port, ...args);\n if (!serverStarted) {\n serverStarted = true;\n const elapsed = Date.now() - startTime;\n const address = server.httpServer?.address();\n const resolvedPort =\n typeof address === \"object\" && address\n ? address.port\n : server.config.server.port || port || 3000;\n\n const pc = createCliColors();\n console.log(\"\");\n console.log(\n ` ${pc.bold(pc.green(\"Farm.js\"))} ${pc.dim(`v${FARM_VERSION}`)} ${pc.dim(`ready in ${elapsed}ms`)}`,\n );\n console.log(\"\");\n console.log(\n ` ${pc.dim(\"➜\")} ${pc.bold(\"Local:\")} ${pc.cyan(`http://localhost:${resolvedPort}/`)}`,\n );\n console.log(` ${pc.dim(\"➜\")} ${pc.bold(\"Network:\")} ${pc.dim(\"use --host to expose\")}`);\n console.log(\"\");\n }\n return result;\n };\n },\n };\n}\n\nfunction hasProjectPostcssConfig(root: string): boolean {\n const candidates = [\n \"postcss.config.js\",\n \"postcss.config.cjs\",\n \"postcss.config.mjs\",\n \"postcss.config.ts\",\n \"postcss.config.json\",\n \".postcssrc\",\n \".postcssrc.json\",\n \".postcssrc.js\",\n \".postcssrc.cjs\",\n \".postcssrc.mjs\",\n \".postcssrc.ts\",\n ];\n\n return candidates.some((file) => fs.existsSync(path.join(root, file)));\n}\n\nfunction createDevDependencyStubsPlugin() {\n const stubs: Record<string, string> = {\n \"supports-color\":\n \"const disabled = false; export default { stdout: disabled, stderr: disabled }; export const stdout = disabled; export const stderr = disabled;\",\n };\n\n return {\n name: \"farm:dev-dependency-stubs\",\n enforce: \"pre\" as const,\n resolveId(id: string) {\n if (id in stubs) {\n return `\\0farm-dev-dependency-stub:${id}`;\n }\n return null;\n },\n load(id: string) {\n if (!id.startsWith(\"\\0farm-dev-dependency-stub:\")) {\n return null;\n }\n\n const moduleName = id.slice(\"\\0farm-dev-dependency-stub:\".length);\n return stubs[moduleName] || null;\n },\n };\n}\n\n/**\n * Create a Vite development server with Farm.js integration\n */\nexport async function createServer(config: FarmConfig = {}) {\n let pluginManager: PluginManager | null = null;\n let instrumentation: FarmInstrumentationLifecycle | null = null;\n try {\n const root = config.root || process.cwd();\n\n // Load farm.config.ts if it exists\n const mode = process.env.NODE_ENV === \"production\" ? \"production\" : \"development\";\n const userConfig = await loadConfig(root, undefined, mode);\n\n const resolvedConfig = userConfig ? await resolveConfig(userConfig, mode) : null;\n const instrumentationConfig = resolvedConfig || config;\n const instrumentationRoot = instrumentationConfig.root || root;\n const instrumentationFile = resolveFarmInstrumentationFile(\n instrumentationRoot,\n instrumentationConfig.srcDir || \"src\",\n );\n const instrumentationModule = await loadFarmInstrumentation(\n instrumentationFile,\n instrumentationRoot,\n );\n instrumentation = createFarmInstrumentationLifecycle(instrumentationModule, {\n root: instrumentationRoot,\n mode,\n runtime: \"nodejs\",\n });\n await instrumentation.start();\n\n // Initialize plugin manager\n pluginManager = new PluginManager({\n config: resolvedConfig || config,\n isDev: mode === \"development\",\n isProd: mode === \"production\",\n });\n\n // Add built-in plugins if config is available\n if (resolvedConfig) {\n const redirects = await resolvedConfig.redirects();\n const headers = await resolvedConfig.headers();\n const rewrites = await resolvedConfig.rewrites();\n\n if (redirects.length > 0) {\n pluginManager.addPlugin(createRedirectsPlugin(redirects, { i18n: resolvedConfig.i18n }));\n }\n\n if (headers.length > 0) {\n pluginManager.addPlugin(createHeadersPlugin(headers, { i18n: resolvedConfig.i18n }));\n }\n\n if (rewrites.length > 0) {\n pluginManager.addPlugin(createRewritesPlugin(rewrites, { i18n: resolvedConfig.i18n }));\n }\n\n // Compression is applied by production adapters. Its hook is a no-op in\n // development, so do not put every dev response through that lifecycle.\n if (resolvedConfig.compress && mode === \"production\") {\n pluginManager.addPlugin(createCompressionPlugin());\n }\n\n if (resolvedConfig.plugins) {\n pluginManager.addPlugins(resolvedConfig.plugins);\n }\n }\n\n if (mode === \"development\") {\n const hasLogger = pluginManager.getPlugins().some((p) => p.name === \"farm:logger\");\n if (!hasLogger) {\n pluginManager.addPlugin(createLoggerPlugin());\n }\n }\n\n // Run config hooks\n await pluginManager.runHookParallel(\"init\");\n\n let finalConfig = resolvedConfig || config;\n finalConfig = await pluginManager.runHookSerial(\"config\", finalConfig);\n finalConfig.renderer = resolveFarmRenderer(finalConfig.renderer);\n const projectRoot = finalConfig.root || process.cwd();\n const rendererVitePlugins = await loadFarmRendererVitePlugins(\n finalConfig.renderer,\n projectRoot,\n { ssr: true },\n );\n\n let tailwindVitePlugin: any = undefined;\n const shouldUseProjectPostcss = hasProjectPostcssConfig(projectRoot);\n if (shouldUseProjectPostcss) {\n logger.info(\"📦 Using project PostCSS/Tailwind configuration\");\n } else {\n try {\n const tailwindcss = (await import(\"@tailwindcss/vite\")).default;\n tailwindVitePlugin = tailwindcss();\n } catch (error) {\n logger.warn(\n `Tailwind plugin auto-enable failed; continuing without it: ${(error as Error).message}`,\n );\n }\n }\n\n const server = await createViteServer(\n mergeFarmViteConfig(\n {\n root: projectRoot,\n css: shouldUseProjectPostcss ? undefined : { postcss: { plugins: [] } },\n plugins: [\n createFarmThemeCssPlugin(finalConfig.theme, finalConfig.basePath),\n ...(tailwindVitePlugin ? [tailwindVitePlugin] : []),\n ...(rendererVitePlugins as any[]),\n createDevDependencyStubsPlugin(),\n farmI18nClientBridgePlugin(),\n farmPlugin(finalConfig, pluginManager),\n farmEnvironmentFunctionsPlugin(),\n createBrandingPlugin(),\n ],\n server: {\n middlewareMode: false,\n port: DEFAULT_FARM_DEV_SERVER_PORT,\n strictPort: true,\n },\n resolve: {\n // Keep framework and application modules on one renderer runtime.\n dedupe: [...(finalConfig.renderer.dedupe || [])],\n },\n optimizeDeps: {\n ...createFarmClientOptimizeDepsConfig(\n createFarmClientOptimizeDepsEntries(projectRoot, getFarmAppDirectories(finalConfig)),\n finalConfig.renderer,\n ),\n exclude: [\n \"@farm.js/core/server\",\n \"@farm.js/core/api\",\n \"@farm.js/core/middleware\",\n \"@farm.js/core/config\",\n \"nitro\",\n \"h3\",\n \"vite\",\n \"esbuild\",\n \"rollup\",\n \"fsevents\",\n \"nf3\",\n \"better-call\",\n \"zod\",\n \"supports-color\",\n \"node-fetch\",\n \"consola\",\n \"mock-aws-s3\",\n \"aws-sdk\",\n \"nock\",\n \"lightningcss\",\n \"@tailwindcss/oxide\",\n ],\n },\n ssr: {\n noExternal: [\"farm\"],\n },\n customLogger: {\n info: () => {},\n warn: () => {},\n warnOnce: () => {},\n error: (msg) => logger.error(String(msg)),\n clearScreen: () => {},\n hasErrorLogged: () => false,\n hasWarned: false,\n },\n },\n finalConfig.vite,\n ),\n );\n\n (server as any).__farmPluginManager = pluginManager;\n (server as any).__farmInstrumentation = instrumentation;\n const closeViteServer = server.close.bind(server);\n server.close = async () => {\n try {\n await closeViteServer();\n } finally {\n await instrumentation?.shutdown();\n }\n };\n server.httpServer?.once(\"close\", () => {\n instrumentation?.shutdown().catch((error) => {\n logger.warn(`Instrumentation shutdown failed: ${error}`);\n });\n });\n\n // Update plugin manager with vite server\n pluginManager.updateContext({ config: finalConfig, viteServer: server });\n await pluginManager.setupPlugins();\n await pluginManager.runHookParallel(\"devServerCreated\", server);\n\n // Run configResolved hooks\n await pluginManager.runHookParallel(\"configResolved\", finalConfig);\n\n // Run buildStart hooks\n await pluginManager.runHookParallel(\"buildStart\");\n\n return server;\n } catch (error) {\n if (pluginManager) {\n await pluginManager.runHookParallel(\"onError\", {\n phase: \"createServer\",\n error,\n });\n }\n await instrumentation?.shutdown().catch(() => {});\n logger.error(`Failed to create server: ${error}`);\n throw error;\n }\n}\n\n/**\n * Start the development server\n */\nexport async function startDevServer(config: FarmConfig = {}, port?: number) {\n const server = await createServer(config);\n await server.listen(port);\n const pluginManager = (server as any).__farmPluginManager as PluginManager | undefined;\n if (pluginManager) {\n await pluginManager.startRuntime();\n server.httpServer?.once(\"close\", () => {\n pluginManager.closeRuntime(\"dev-server-closed\").catch(() => {});\n });\n }\n // Branding is handled by farmBrandingPlugin in vite.ts\n return server;\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/server/create-server.ts"],"sourcesContent":["import { createServer as createViteServer, type ViteDevServer } from \"vite\";\nimport type { FarmConfig } from \"../types\";\nimport { farmI18nClientBridgePlugin, farmPlugin } from \"../vite\";\nimport { logger } from \"../utils\";\nimport { loadConfig, resolveConfig } from \"../config\";\nimport { PluginManager } from \"../plugin\";\nimport { farmEnvironmentFunctionsPlugin } from \"../environment-vite\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport {\n createRedirectsPlugin,\n createHeadersPlugin,\n createRewritesPlugin,\n createCompressionPlugin,\n createLoggerPlugin,\n} from \"../plugins\";\nimport {\n createFarmClientOptimizeDepsConfig,\n createFarmClientOptimizeDepsEntries,\n mergeFarmViteConfig,\n} from \"./vite-config\";\nimport { FARM_VERSION } from \"../version\";\nimport { getFarmAppDirectories } from \"../layers\";\nimport { createCliColors } from \"../cli-colors\";\nimport { createFarmThemeCssPlugin } from \"../theme/vite\";\nimport {\n createFarmInstrumentationLifecycle,\n loadFarmInstrumentation,\n resolveFarmInstrumentationFile,\n type FarmInstrumentationLifecycle,\n} from \"../instrumentation\";\nimport { loadFarmRendererVitePlugins, resolveFarmRenderer } from \"../renderer\";\n\nexport const DEFAULT_FARM_DEV_SERVER_PORT = 3000;\n\n// Farm.js branding plugin for createServer\nfunction createBrandingPlugin() {\n let serverStarted = false;\n let startTime = Date.now();\n\n return {\n name: \"farm:branding\",\n enforce: \"pre\" as const,\n configureServer(server: ViteDevServer) {\n startTime = Date.now();\n\n const originalListen = server.listen.bind(server);\n server.listen = async (port?: number, ...args: any[]) => {\n const result = await originalListen(port, ...args);\n if (!serverStarted) {\n serverStarted = true;\n const elapsed = Date.now() - startTime;\n const address = server.httpServer?.address();\n const resolvedPort =\n typeof address === \"object\" && address\n ? address.port\n : server.config.server.port || port || 3000;\n\n const pc = createCliColors();\n console.log(\"\");\n console.log(\n ` ${pc.bold(pc.green(\"Farm.js\"))} ${pc.dim(`v${FARM_VERSION}`)} ${pc.dim(`ready in ${elapsed}ms`)}`,\n );\n console.log(\"\");\n console.log(\n ` ${pc.dim(\"➜\")} ${pc.bold(\"Local:\")} ${pc.cyan(`http://localhost:${resolvedPort}/`)}`,\n );\n console.log(` ${pc.dim(\"➜\")} ${pc.bold(\"Network:\")} ${pc.dim(\"use --host to expose\")}`);\n console.log(\"\");\n }\n return result;\n };\n },\n };\n}\n\nfunction hasProjectPostcssConfig(root: string): boolean {\n const candidates = [\n \"postcss.config.js\",\n \"postcss.config.cjs\",\n \"postcss.config.mjs\",\n \"postcss.config.ts\",\n \"postcss.config.json\",\n \".postcssrc\",\n \".postcssrc.json\",\n \".postcssrc.js\",\n \".postcssrc.cjs\",\n \".postcssrc.mjs\",\n \".postcssrc.ts\",\n ];\n\n return candidates.some((file) => fs.existsSync(path.join(root, file)));\n}\n\nfunction createDevDependencyStubsPlugin() {\n const stubs: Record<string, string> = {\n \"supports-color\":\n \"const disabled = false; export default { stdout: disabled, stderr: disabled }; export const stdout = disabled; export const stderr = disabled;\",\n };\n\n return {\n name: \"farm:dev-dependency-stubs\",\n enforce: \"pre\" as const,\n resolveId(id: string) {\n if (id in stubs) {\n return `\\0farm-dev-dependency-stub:${id}`;\n }\n return null;\n },\n load(id: string) {\n if (!id.startsWith(\"\\0farm-dev-dependency-stub:\")) {\n return null;\n }\n\n const moduleName = id.slice(\"\\0farm-dev-dependency-stub:\".length);\n return stubs[moduleName] || null;\n },\n };\n}\n\n/**\n * Create a Vite development server with Farm.js integration\n */\nexport async function createServer(config: FarmConfig = {}) {\n let pluginManager: PluginManager | null = null;\n let instrumentation: FarmInstrumentationLifecycle | null = null;\n try {\n const root = config.root || process.cwd();\n\n // Load farm.config.ts if it exists\n const mode = process.env.NODE_ENV === \"production\" ? \"production\" : \"development\";\n const userConfig = await loadConfig(root, undefined, mode);\n\n const resolvedConfig = userConfig ? await resolveConfig(userConfig, mode) : null;\n const instrumentationConfig = resolvedConfig || config;\n const instrumentationRoot = instrumentationConfig.root || root;\n const instrumentationFile = resolveFarmInstrumentationFile(\n instrumentationRoot,\n instrumentationConfig.srcDir || \"src\",\n );\n const instrumentationModule = await loadFarmInstrumentation(\n instrumentationFile,\n instrumentationRoot,\n );\n instrumentation = createFarmInstrumentationLifecycle(instrumentationModule, {\n root: instrumentationRoot,\n mode,\n runtime: \"nodejs\",\n });\n await instrumentation.start();\n\n // Initialize plugin manager\n pluginManager = new PluginManager({\n config: resolvedConfig || config,\n isDev: mode === \"development\",\n isProd: mode === \"production\",\n });\n\n // Add built-in plugins if config is available\n if (resolvedConfig) {\n const redirects = await resolvedConfig.redirects();\n const headers = await resolvedConfig.headers();\n const rewrites = await resolvedConfig.rewrites();\n\n if (redirects.length > 0) {\n pluginManager.addPlugin(createRedirectsPlugin(redirects, { i18n: resolvedConfig.i18n }));\n }\n\n if (headers.length > 0) {\n pluginManager.addPlugin(createHeadersPlugin(headers, { i18n: resolvedConfig.i18n }));\n }\n\n if (rewrites.length > 0) {\n pluginManager.addPlugin(createRewritesPlugin(rewrites, { i18n: resolvedConfig.i18n }));\n }\n\n // Compression is applied by production adapters. Its hook is a no-op in\n // development, so do not put every dev response through that lifecycle.\n if (resolvedConfig.compress && mode === \"production\") {\n pluginManager.addPlugin(createCompressionPlugin());\n }\n\n if (resolvedConfig.plugins) {\n pluginManager.addPlugins(resolvedConfig.plugins);\n }\n }\n\n if (mode === \"development\") {\n const hasLogger = pluginManager.getPlugins().some((p) => p.name === \"farm:logger\");\n if (!hasLogger) {\n pluginManager.addPlugin(createLoggerPlugin());\n }\n }\n\n // Run config hooks\n await pluginManager.runHookParallel(\"init\");\n\n let finalConfig = resolvedConfig || config;\n finalConfig = await pluginManager.runHookSerial(\"config\", finalConfig);\n finalConfig.renderer = resolveFarmRenderer(finalConfig.renderer);\n const projectRoot = finalConfig.root || process.cwd();\n const rendererVitePlugins = await loadFarmRendererVitePlugins(\n finalConfig.renderer,\n projectRoot,\n { ssr: true },\n );\n\n let tailwindVitePlugin: any = undefined;\n const shouldUseProjectPostcss = hasProjectPostcssConfig(projectRoot);\n if (shouldUseProjectPostcss) {\n logger.info(\"📦 Using project PostCSS/Tailwind configuration\");\n } else {\n try {\n const tailwindcss = (await import(\"@tailwindcss/vite\")).default;\n tailwindVitePlugin = tailwindcss();\n } catch (error) {\n logger.warn(\n `Tailwind plugin auto-enable failed; continuing without it: ${(error as Error).message}`,\n );\n }\n }\n\n const server = await createViteServer(\n mergeFarmViteConfig(\n {\n root: projectRoot,\n css: shouldUseProjectPostcss ? undefined : { postcss: { plugins: [] } },\n plugins: [\n createFarmThemeCssPlugin(finalConfig.theme, finalConfig.basePath),\n ...(tailwindVitePlugin ? [tailwindVitePlugin] : []),\n ...(rendererVitePlugins as any[]),\n createDevDependencyStubsPlugin(),\n farmI18nClientBridgePlugin(),\n farmPlugin(finalConfig, pluginManager),\n farmEnvironmentFunctionsPlugin(),\n createBrandingPlugin(),\n ],\n server: {\n middlewareMode: false,\n port: DEFAULT_FARM_DEV_SERVER_PORT,\n strictPort: true,\n },\n resolve: {\n // Keep framework and application modules on one renderer runtime.\n dedupe: [...(finalConfig.renderer.dedupe || [])],\n },\n optimizeDeps: {\n ...createFarmClientOptimizeDepsConfig(\n createFarmClientOptimizeDepsEntries(projectRoot, getFarmAppDirectories(finalConfig)),\n finalConfig.renderer,\n ),\n exclude: [\n \"@farm.js/core/server\",\n \"@farm.js/core/api\",\n \"@farm.js/core/middleware\",\n \"@farm.js/core/config\",\n \"nitro\",\n \"h3\",\n \"vite\",\n \"esbuild\",\n \"rollup\",\n \"fsevents\",\n \"nf3\",\n \"better-call\",\n \"zod\",\n \"supports-color\",\n \"node-fetch\",\n \"consola\",\n \"mock-aws-s3\",\n \"aws-sdk\",\n \"nock\",\n \"lightningcss\",\n \"@tailwindcss/oxide\",\n ],\n },\n ssr: {\n noExternal: [\"farm\"],\n },\n customLogger: {\n info: () => {},\n warn: () => {},\n warnOnce: () => {},\n error: (msg) => logger.error(String(msg)),\n clearScreen: () => {},\n hasErrorLogged: () => false,\n hasWarned: false,\n },\n },\n finalConfig.vite,\n ),\n );\n\n (server as any).__farmPluginManager = pluginManager;\n (server as any).__farmInstrumentation = instrumentation;\n const closeViteServer = server.close.bind(server);\n server.close = async () => {\n try {\n await closeViteServer();\n } finally {\n await instrumentation?.shutdown();\n }\n };\n server.httpServer?.once(\"close\", () => {\n instrumentation?.shutdown().catch((error) => {\n logger.warn(`Instrumentation shutdown failed: ${error}`);\n });\n });\n\n // Update plugin manager with vite server\n pluginManager.updateContext({ config: finalConfig, viteServer: server });\n await pluginManager.setupPlugins();\n await pluginManager.runHookParallel(\"devServerCreated\", server);\n\n // Run configResolved hooks\n await pluginManager.runHookParallel(\"configResolved\", finalConfig);\n\n // Run buildStart hooks\n await pluginManager.runHookParallel(\"buildStart\");\n\n return server;\n } catch (error) {\n if (pluginManager) {\n await pluginManager.runHookParallel(\"onError\", {\n phase: \"createServer\",\n error,\n });\n }\n await instrumentation?.shutdown().catch(() => {});\n logger.error(`Failed to create server: ${error}`);\n throw error;\n }\n}\n\n/**\n * Start the development server\n */\nexport async function startDevServer(config: FarmConfig = {}, port?: number) {\n const server = await createServer(config);\n await server.listen(port);\n const pluginManager = (server as any).__farmPluginManager as PluginManager | undefined;\n if (pluginManager) {\n await pluginManager.startRuntime();\n server.httpServer?.once(\"close\", () => {\n pluginManager.closeRuntime(\"dev-server-closed\").catch(() => {});\n });\n }\n // Branding is handled by farmBrandingPlugin in vite.ts\n return server;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { F as FarmClientPluginManager } from './lifecycle-De0vQG45.mjs';
|
|
2
2
|
import { F as FarmI18nClientSnapshot } from './types-CnH8DOqo.mjs';
|
|
3
3
|
import { F as FarmIslandStrategy } from './island-CfGru1MO.mjs';
|
|
4
|
-
import { F as FarmRouteRenderPlan } from './render-plan-
|
|
4
|
+
import { F as FarmRouteRenderPlan } from './render-plan-Dimb23ux.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Farm.js SPA Router
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { F as FarmClientPluginManager } from './lifecycle-De0vQG45.js';
|
|
2
2
|
import { F as FarmI18nClientSnapshot } from './types-CnH8DOqo.js';
|
|
3
3
|
import { F as FarmIslandStrategy } from './island-CfGru1MO.js';
|
|
4
|
-
import { F as FarmRouteRenderPlan } from './render-plan-
|
|
4
|
+
import { F as FarmRouteRenderPlan } from './render-plan-rg3uiSo3.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Farm.js SPA Router
|
package/dist/storage.cjs
CHANGED
|
@@ -495,9 +495,13 @@ function getStorage(namespace) {
|
|
|
495
495
|
const namespaced = (0, import_unstorage.prefixStorage)(globalStorage, base);
|
|
496
496
|
return {
|
|
497
497
|
...namespaced,
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
498
|
+
// Scope the wipe to the namespace instead of the whole storage, and keep
|
|
499
|
+
// the caller's base so `clear("sessions")` cannot take unrelated keys with
|
|
500
|
+
// it. Dropping the argument silently widens a targeted clear into a
|
|
501
|
+
// namespace-wide delete.
|
|
502
|
+
async clear(base2, opts) {
|
|
503
|
+
const keys = await namespaced.getKeys(base2);
|
|
504
|
+
await Promise.all(keys.map((key) => namespaced.removeItem(key, opts)));
|
|
501
505
|
}
|
|
502
506
|
};
|
|
503
507
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/storage/index.ts"],"sourcesContent":["import { createStorage, prefixStorage, builtinDrivers, type BuiltinDriverName } from \"unstorage\";\nimport type { Driver, Storage, TransactionOptions } from \"unstorage\";\nimport type { Database } from \"db0\";\nimport memoryDriver from \"unstorage/drivers/memory\";\nimport type {\n FarmStorageClient,\n FarmStorageClientConfig,\n FarmStorageConfigObject,\n FarmStorageLocalDriverConfig,\n FarmStorageDatabaseConfig,\n FarmStorageDatabaseDriverMap,\n FarmStorageDatabaseDriverName,\n FarmStorageRuntimeClient,\n FarmStorageMountConfig,\n FarmStorageMounts,\n FarmStorageUserConfig,\n} from \"./types\";\n\nexport type {\n FarmStorageBuiltinDriverConfig,\n FarmStorageClient,\n FarmStorageClientConfig,\n FarmStorageConfigObject,\n FarmStorageCustomDriverConfig,\n FarmStorageDatabaseConfig,\n FarmStorageDatabaseDriverName,\n FarmStorageLocalDriverConfig,\n FarmStorageRuntimeClient,\n FarmStorageMountConfig,\n FarmStorageMounts,\n FarmStorageUserConfig,\n} from \"./types\";\nexport type {\n BuiltinDriverName,\n BuiltinDriverOptions,\n Driver,\n Storage,\n StorageMeta,\n StorageValue,\n TransactionOptions,\n} from \"unstorage\";\nexport type { ConnectorName, ConnectorOptions, Database } from \"db0\";\n\ntype DriverFactoryModule = {\n default: (options?: Record<string, any>) => Driver;\n};\n\ntype DriverResolver = () => Driver | Promise<Driver>;\ntype ModuleLoader = <T = any>(specifier: string) => Promise<T>;\n\nconst loadModule: ModuleLoader = (specifier) => import(/* @vite-ignore */ specifier);\n\nconst DATABASE_CONNECTORS: {\n [K in FarmStorageDatabaseDriverName]: {\n connector: FarmStorageDatabaseDriverMap[K];\n load: () => Promise<{ default: (options?: any) => any }>;\n };\n} = {\n sqlite: {\n connector: \"node-sqlite\",\n load: () => loadModule(\"db0/connectors/node-sqlite\"),\n },\n \"node-sqlite\": {\n connector: \"node-sqlite\",\n load: () => loadModule(\"db0/connectors/node-sqlite\"),\n },\n sqlite3: {\n connector: \"sqlite3\",\n load: () => loadModule(\"db0/connectors/sqlite3\"),\n },\n \"better-sqlite3\": {\n connector: \"better-sqlite3\",\n load: () => loadModule(\"db0/connectors/better-sqlite3\"),\n },\n postgres: {\n connector: \"postgresql\",\n load: () => loadModule(\"db0/connectors/postgresql\"),\n },\n postgresql: {\n connector: \"postgresql\",\n load: () => loadModule(\"db0/connectors/postgresql\"),\n },\n pg: {\n connector: \"postgresql\",\n load: () => loadModule(\"db0/connectors/postgresql\"),\n },\n mysql: {\n connector: \"mysql2\",\n load: () => loadModule(\"db0/connectors/mysql2\"),\n },\n mysql2: {\n connector: \"mysql2\",\n load: () => loadModule(\"db0/connectors/mysql2\"),\n },\n pglite: {\n connector: \"pglite\",\n load: () => loadModule(\"db0/connectors/pglite\"),\n },\n planetscale: {\n connector: \"planetscale\",\n load: () => loadModule(\"db0/connectors/planetscale\"),\n },\n libsql: {\n connector: \"libsql\",\n load: () => loadModule(\"db0/connectors/libsql/node\"),\n },\n \"libsql-node\": {\n connector: \"libsql-node\",\n load: () => loadModule(\"db0/connectors/libsql/node\"),\n },\n \"libsql-http\": {\n connector: \"libsql-http\",\n load: () => loadModule(\"db0/connectors/libsql/http\"),\n },\n};\n\nfunction createMemoryStorage(): Storage {\n return createStorage({\n driver: memoryDriver(),\n });\n}\n\nconst GLOBAL_STORAGE_KEY = Symbol.for(\"farmjs.storage.global\");\n\nfunction readGlobalStorage(): Storage | undefined {\n return (globalThis as unknown as Record<PropertyKey, Storage | undefined>)[GLOBAL_STORAGE_KEY];\n}\n\nfunction writeGlobalStorage(storage: Storage): Storage {\n (globalThis as unknown as Record<PropertyKey, Storage | undefined>)[GLOBAL_STORAGE_KEY] = storage;\n return storage;\n}\n\nfunction getActiveGlobalStorage(): Storage {\n const existing = readGlobalStorage();\n if (existing) {\n return existing;\n }\n return writeGlobalStorage(createMemoryStorage());\n}\n\nlet globalStorage = getActiveGlobalStorage();\n\nfunction normalizeMountKey(base?: string): string {\n return (base || \"\")\n .trim()\n .replace(/^[:/\\\\]+|[:/\\\\]+$/g, \"\")\n .replace(/[\\\\/]+/g, \":\");\n}\n\nfunction isDriverInstance(value: unknown): value is Driver {\n return (\n !!value &&\n typeof value === \"object\" &&\n typeof (value as Driver).getItem === \"function\" &&\n typeof (value as Driver).getKeys === \"function\"\n );\n}\n\nfunction isStorageInstance(value: unknown): value is Storage {\n return (\n !!value &&\n typeof value === \"object\" &&\n typeof (value as Storage).mount === \"function\" &&\n typeof (value as Storage).getMount === \"function\"\n );\n}\n\nfunction isStorageClient(value: unknown): value is FarmStorageClient {\n return (\n !!value &&\n typeof value === \"object\" &&\n (value as FarmStorageClient).kind === \"farm-storage-client\" &&\n typeof (value as FarmStorageClient).resolveDriver === \"function\" &&\n typeof (value as FarmStorageClient).createStorage === \"function\"\n );\n}\n\nfunction isDatabaseDriverName(name: string): name is FarmStorageDatabaseDriverName {\n return name in DATABASE_CONNECTORS;\n}\n\nfunction extractDriverOptions(config: FarmStorageClientConfig): Record<string, any> | undefined {\n const source = config as Record<string, any>;\n const {\n client: _client,\n driver: _driver,\n mounts: _mounts,\n options,\n tableName: _tableName,\n ...inlineOptions\n } = source;\n const hasInlineOptions = Object.keys(inlineOptions).length > 0;\n\n if (options && typeof options === \"object\" && !Array.isArray(options)) {\n return hasInlineOptions ? { ...inlineOptions, ...options } : options;\n }\n\n if (hasInlineOptions) {\n return inlineOptions;\n }\n\n return options;\n}\n\nasync function loadBuiltinDriver(\n name: BuiltinDriverName,\n options?: Record<string, any>,\n): Promise<Driver> {\n const modulePath = builtinDrivers[name];\n\n if (!modulePath) {\n throw new Error(`Unsupported storage driver \"${name}\".`);\n }\n\n const module = (await loadModule(modulePath)) as DriverFactoryModule;\n return module.default(options);\n}\n\nasync function loadDatabaseDriver(config: FarmStorageDatabaseConfig): Promise<Driver> {\n const connectorEntry = DATABASE_CONNECTORS[config.driver as FarmStorageDatabaseDriverName];\n const [{ createDatabase }, connectorModule, db0DriverModule] = await Promise.all([\n loadModule<typeof import(\"db0\")>(\"db0\"),\n connectorEntry.load(),\n loadModule<typeof import(\"unstorage/drivers/db0\")>(\"unstorage/drivers/db0\"),\n ]);\n\n const database = createDatabase(connectorModule.default(extractDriverOptions(config) || {}));\n const driver = db0DriverModule.default({\n database,\n tableName: config.tableName,\n });\n\n // The db0 driver has no dispose, so this connection is Farm's to close. Databases\n // handed to `databaseStorage` stay owned by the caller and are left open.\n return {\n ...driver,\n async dispose() {\n await driver.dispose?.();\n await database.dispose();\n },\n };\n}\n\nasync function resolveDriver(config?: FarmStorageMountConfig): Promise<Driver> {\n if (config && isStorageClient(config)) {\n return config.resolveDriver();\n }\n\n const driverInput = config?.driver ?? \"memory\";\n\n if (typeof driverInput === \"function\") {\n return await driverInput();\n }\n\n if (isDriverInstance(driverInput)) {\n return driverInput;\n }\n\n if (isDatabaseDriverName(driverInput)) {\n return loadDatabaseDriver(config as FarmStorageDatabaseConfig);\n }\n\n if (driverInput === \"local\") {\n return loadBuiltinDriver(\"fs-lite\", extractDriverOptions(config as FarmStorageMountConfig));\n }\n\n return loadBuiltinDriver(\n driverInput as BuiltinDriverName,\n extractDriverOptions(config as FarmStorageClientConfig),\n );\n}\n\nfunction createStorageClientFromResolver(resolveDriver: DriverResolver): FarmStorageClient {\n let driverPromise: Promise<Driver> | undefined;\n let storagePromise: Promise<Storage> | undefined;\n\n const ensureDriver = () => {\n if (driverPromise) return driverPromise;\n\n const pending = Promise.resolve().then(resolveDriver);\n driverPromise = pending;\n void pending.catch(() => {\n if (driverPromise === pending) {\n driverPromise = undefined;\n storagePromise = undefined;\n }\n });\n return pending;\n };\n\n const ensureStorage = () => {\n if (storagePromise) return storagePromise;\n\n const pending = ensureDriver().then((driver) =>\n createStorage({\n driver,\n }),\n );\n storagePromise = pending;\n void pending.catch(() => {\n if (storagePromise === pending) storagePromise = undefined;\n });\n return pending;\n };\n\n const target = {\n kind: \"farm-storage-client\" as const,\n ready: ensureStorage,\n createStorage: ensureStorage,\n resolveDriver: ensureDriver,\n };\n\n return new Proxy(target as FarmStorageClient, {\n get(currentTarget, prop, receiver) {\n if (prop === \"then\") {\n return undefined;\n }\n\n if (Reflect.has(currentTarget, prop)) {\n return Reflect.get(currentTarget, prop, receiver);\n }\n\n return (...args: any[]) =>\n ensureStorage().then(async (storage) => {\n const member = Reflect.get(storage as object, prop);\n\n if (typeof member !== \"function\") {\n return member;\n }\n\n const result = Reflect.apply(member, storage, args);\n\n if (prop === \"dispose\") {\n return Promise.resolve(result).finally(() => {\n // Disposing the storage also disposed the driver, so drop both\n // cached promises: a later call must re-run the driver factory\n // instead of rebuilding storage over the dead driver.\n storagePromise = undefined;\n driverPromise = undefined;\n });\n }\n\n return result;\n });\n },\n });\n}\n\nexport function defineStorageClient(resolveDriver: DriverResolver): FarmStorageClient {\n return createStorageClientFromResolver(resolveDriver);\n}\n\nexport function createStorageClient(config: FarmStorageClientConfig): FarmStorageClient {\n return defineStorageClient(() => resolveDriver(config));\n}\n\nexport function driverStorage(\n driver: Driver | (() => Driver | Promise<Driver>),\n): FarmStorageClient {\n return defineStorageClient(() => (typeof driver === \"function\" ? driver() : driver));\n}\n\nexport function databaseStorage(\n database: Database,\n options: { tableName?: string } = {},\n): FarmStorageClient {\n return defineStorageClient(async () => {\n const db0DriverModule =\n await loadModule<typeof import(\"unstorage/drivers/db0\")>(\"unstorage/drivers/db0\");\n return db0DriverModule.default({\n database,\n tableName: options.tableName,\n });\n });\n}\n\nexport function memoryStorage(): FarmStorageClient {\n return createStorageClient({ driver: \"memory\" });\n}\n\nexport function localStorage(options: Omit<FarmStorageLocalDriverConfig, \"driver\"> = {}) {\n return createStorageClient({\n driver: \"local\",\n ...options,\n });\n}\n\nexport function sqliteStorage(options: Omit<FarmStorageDatabaseConfig, \"driver\">) {\n return createStorageClient({\n driver: \"sqlite\",\n ...options,\n });\n}\n\nexport function mysqlStorage(options: Omit<FarmStorageDatabaseConfig, \"driver\">) {\n return createStorageClient({\n driver: \"mysql\",\n ...options,\n });\n}\n\nexport function mysql2Storage(options: Omit<FarmStorageDatabaseConfig, \"driver\">) {\n return mysqlStorage(options);\n}\n\nexport function postgresStorage(options: Omit<FarmStorageDatabaseConfig, \"driver\">) {\n return createStorageClient({\n driver: \"postgres\",\n ...options,\n });\n}\n\nexport function pgStorage(options: Omit<FarmStorageDatabaseConfig, \"driver\">) {\n return postgresStorage(options);\n}\n\nexport function pgliteStorage(options: Omit<FarmStorageDatabaseConfig, \"driver\">) {\n return createStorageClient({\n driver: \"pglite\",\n ...options,\n });\n}\n\nexport function planetscaleStorage(options: Omit<FarmStorageDatabaseConfig, \"driver\">) {\n return createStorageClient({\n driver: \"planetscale\",\n ...options,\n });\n}\n\nexport function libsqlStorage(options: Omit<FarmStorageDatabaseConfig, \"driver\">) {\n return createStorageClient({\n driver: \"libsql\",\n ...options,\n });\n}\n\nexport function redisStorage(\n options: Omit<Extract<FarmStorageClientConfig, { driver: \"redis\" }>, \"driver\">,\n) {\n return createStorageClient({\n driver: \"redis\",\n ...options,\n });\n}\n\nexport function s3Storage(\n options: Omit<Extract<FarmStorageClientConfig, { driver: \"s3\" }>, \"driver\">,\n) {\n return createStorageClient({\n driver: \"s3\",\n ...options,\n });\n}\n\nexport function mongodbStorage(\n options: Omit<Extract<FarmStorageClientConfig, { driver: \"mongodb\" }>, \"driver\">,\n) {\n return createStorageClient({\n driver: \"mongodb\",\n ...options,\n });\n}\n\nexport function upstashStorage(\n options: Omit<Extract<FarmStorageClientConfig, { driver: \"upstash\" }>, \"driver\">,\n) {\n return createStorageClient({\n driver: \"upstash\",\n ...options,\n });\n}\n\nexport function netlifyBlobsStorage(\n options: Omit<Extract<FarmStorageClientConfig, { driver: \"netlify-blobs\" }>, \"driver\">,\n) {\n return createStorageClient({\n driver: \"netlify-blobs\",\n ...options,\n });\n}\n\nexport function vercelKVStorage(\n options: Omit<Extract<FarmStorageClientConfig, { driver: \"vercel-kv\" }>, \"driver\">,\n) {\n return createStorageClient({\n driver: \"vercel-kv\",\n ...options,\n });\n}\n\nexport function vercelBlobStorage(\n options: Omit<Extract<FarmStorageClientConfig, { driver: \"vercel-blob\" }>, \"driver\">,\n) {\n return createStorageClient({\n driver: \"vercel-blob\",\n ...options,\n });\n}\n\nasync function mountNamespaces(storage: Storage, mounts?: FarmStorageMounts): Promise<void> {\n if (!mounts) {\n return;\n }\n\n for (const [base, config] of Object.entries(mounts)) {\n storage.mount(normalizeMountKey(base), await resolveDriver(config));\n }\n}\n\nexport async function createFarmStorage(config: FarmStorageUserConfig = {}): Promise<Storage> {\n if (isStorageInstance(config)) {\n return config;\n }\n\n if (isStorageClient(config)) {\n return config.createStorage();\n }\n\n const rootConfig = isStorageClient(config.client) ? config.client : config;\n const storage = createStorage({\n driver: await resolveDriver(rootConfig),\n });\n\n try {\n await mountNamespaces(storage, config.mounts);\n } catch (error) {\n await storage.dispose().catch(() => {});\n throw error;\n }\n return storage;\n}\n\nexport async function resolveStorageRuntimeClient(\n config: FarmStorageUserConfig | undefined,\n): Promise<unknown | undefined> {\n if (!config || isStorageInstance(config) || isStorageClient(config)) {\n return undefined;\n }\n\n const client = config.client;\n if (!client || isStorageInstance(client) || isStorageClient(client)) {\n return undefined;\n }\n\n return typeof client === \"function\" ? await client() : client;\n}\n\nexport async function initStorage(config: FarmStorageUserConfig = {}): Promise<Storage> {\n globalStorage = getActiveGlobalStorage();\n const nextStorage = await createFarmStorage(config);\n const previousStorage = globalStorage;\n globalStorage = writeGlobalStorage(nextStorage);\n\n if (previousStorage !== nextStorage) {\n await previousStorage.dispose().catch(() => {});\n }\n\n return globalStorage;\n}\n\nexport function getStorage(namespace?: string): Storage {\n globalStorage = getActiveGlobalStorage();\n const base = normalizeMountKey(namespace);\n if (!base) {\n return globalStorage;\n }\n\n const namespaced = prefixStorage(globalStorage, base);\n return {\n ...namespaced,\n // Scope the wipe to the namespace instead of the whole storage, and keep\n // the caller's base so `clear(\"sessions\")` cannot take unrelated keys with\n // it. Dropping the argument silently widens a targeted clear into a\n // namespace-wide delete.\n async clear(base?: string, opts?: TransactionOptions) {\n const keys = await namespaced.getKeys(base);\n await Promise.all(keys.map((key) => namespaced.removeItem(key, opts)));\n },\n } as Storage;\n}\n\nexport async function disposeStorage(): Promise<void> {\n globalStorage = getActiveGlobalStorage();\n const previousStorage = globalStorage;\n globalStorage = writeGlobalStorage(createMemoryStorage());\n await previousStorage.dispose().catch(() => {});\n}\n"],"mappings":"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","names":["memoryDriver","module","resolveDriver","base"]}
|