@farm.js/core 0.1.0-beta.18 → 0.1.0-beta.19

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.
Files changed (49) hide show
  1. package/dist/agent-runtime.cjs.map +1 -1
  2. package/dist/agent-runtime.mjs +1 -1
  3. package/dist/{chunk-TWOCKYU7.mjs → chunk-5VHPEW6N.mjs} +2 -2
  4. package/dist/{chunk-ZCTTYTRZ.mjs → chunk-7BX7NEA7.mjs} +2 -2
  5. package/dist/{chunk-PWLQWGXD.mjs → chunk-JUQB43GK.mjs} +14 -5
  6. package/dist/chunk-JUQB43GK.mjs.map +1 -0
  7. package/dist/{chunk-XFYFRBX5.mjs → chunk-MFH7BNPY.mjs} +2 -2
  8. package/dist/{chunk-XFYFRBX5.mjs.map → chunk-MFH7BNPY.mjs.map} +1 -1
  9. package/dist/{chunk-6OKRBYDC.mjs → chunk-UNDUIGWC.mjs} +33 -15
  10. package/dist/chunk-UNDUIGWC.mjs.map +1 -0
  11. package/dist/{chunk-SBLHLAE3.mjs → chunk-ZYDQS2TT.mjs} +88 -5
  12. package/dist/chunk-ZYDQS2TT.mjs.map +1 -0
  13. package/dist/{chunk-DGJPXXVL.mjs → chunk-ZYHIM7O7.mjs} +6 -6
  14. package/dist/{devtools-NVNCOYRJ.mjs → devtools-4RDGBT72.mjs} +3 -3
  15. package/dist/docs.cjs.map +1 -1
  16. package/dist/docs.mjs +3 -3
  17. package/dist/index.cjs +136 -20
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.mjs +9 -7
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/integrations.cjs +82 -4
  22. package/dist/integrations.cjs.map +1 -1
  23. package/dist/integrations.mjs +3 -1
  24. package/dist/internal/build-runtime.cjs +134 -20
  25. package/dist/internal/build-runtime.cjs.map +1 -1
  26. package/dist/internal/build-runtime.mjs +7 -7
  27. package/dist/internal/config-runtime.cjs +75 -4
  28. package/dist/internal/config-runtime.cjs.map +1 -1
  29. package/dist/internal/config-runtime.mjs +2 -2
  30. package/dist/plugin.cjs +62 -15
  31. package/dist/plugin.cjs.map +1 -1
  32. package/dist/plugin.mjs +4 -4
  33. package/dist/server.cjs +138 -20
  34. package/dist/server.cjs.map +1 -1
  35. package/dist/server.mjs +5 -5
  36. package/dist/version.cjs +1 -1
  37. package/dist/version.cjs.map +1 -1
  38. package/dist/version.mjs +1 -1
  39. package/dist/vite.cjs +25 -3
  40. package/dist/vite.cjs.map +1 -1
  41. package/dist/vite.mjs +3 -3
  42. package/package.json +1 -1
  43. package/dist/chunk-6OKRBYDC.mjs.map +0 -1
  44. package/dist/chunk-PWLQWGXD.mjs.map +0 -1
  45. package/dist/chunk-SBLHLAE3.mjs.map +0 -1
  46. /package/dist/{chunk-TWOCKYU7.mjs.map → chunk-5VHPEW6N.mjs.map} +0 -0
  47. /package/dist/{chunk-ZCTTYTRZ.mjs.map → chunk-7BX7NEA7.mjs.map} +0 -0
  48. /package/dist/{chunk-DGJPXXVL.mjs.map → chunk-ZYHIM7O7.mjs.map} +0 -0
  49. /package/dist/{devtools-NVNCOYRJ.mjs.map → devtools-4RDGBT72.mjs.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "0.1.0-beta.18";
2
+ var version = "0.1.0-beta.19";
3
3
 
4
4
  // src/version.ts
5
5
  var FARM_VERSION = version;
@@ -7,4 +7,4 @@ var FARM_VERSION = version;
7
7
  export {
8
8
  FARM_VERSION
9
9
  };
10
- //# sourceMappingURL=chunk-XFYFRBX5.mjs.map
10
+ //# sourceMappingURL=chunk-MFH7BNPY.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../package.json","../src/version.ts"],"sourcesContent":["{\n \"name\": \"@farm.js/core\",\n \"version\": \"0.1.0-beta.18\",\n \"description\": \"Core Farm.js framework for modern integrated apps\",\n \"keywords\": [\n \"@farm.js/core\",\n \"framework\",\n \"react\",\n \"rsc\",\n \"server-components\",\n \"ssr\",\n \"vite\"\n ],\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/farming-labs/farm.js\",\n \"directory\": \"packages/farm\"\n },\n \"files\": [\n \"dist\",\n \"types\"\n ],\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"typesVersions\": {\n \"*\": {\n \"middleware\": [\n \"./types/middleware.d.ts\",\n \"./dist/middleware.d.ts\"\n ],\n \"version\": [\n \"./dist/version.d.ts\"\n ],\n \"router\": [\n \"./dist/router.d.ts\"\n ],\n \"routes\": [\n \"./dist/routes.d.ts\"\n ],\n \"storage\": [\n \"./dist/storage.d.ts\"\n ],\n \"integrations\": [\n \"./dist/integrations.d.ts\"\n ],\n \"cache\": [\n \"./dist/cache.d.ts\"\n ],\n \"deferred\": [\n \"./dist/deferred.d.ts\"\n ],\n \"after\": [\n \"./dist/after.d.ts\"\n ],\n \"navigation\": [\n \"./dist/navigation.d.ts\"\n ],\n \"headers\": [\n \"./dist/headers.d.ts\"\n ],\n \"docs\": [\n \"./dist/docs.d.ts\"\n ],\n \"markdown\": [\n \"./dist/markdown.d.ts\"\n ],\n \"app-markdown\": [\n \"./dist/app-markdown.d.ts\"\n ],\n \"observability\": [\n \"./dist/observability.d.ts\"\n ],\n \"workflows\": [\n \"./dist/workflows.d.ts\"\n ],\n \"cron\": [\n \"./dist/cron.d.ts\"\n ],\n \"server-fn\": [\n \"./dist/server-fn.d.ts\"\n ],\n \"server-fn/client\": [\n \"./dist/server-fn-client.d.ts\"\n ],\n \"server-action-security\": [\n \"./dist/server-action-security.d.ts\"\n ],\n \"deployment\": [\n \"./dist/deployment.d.ts\"\n ],\n \"env\": [\n \"./dist/env.d.ts\"\n ],\n \"env-types\": [\n \"./dist/env-types.d.ts\"\n ],\n \"environment\": [\n \"./dist/environment.d.ts\"\n ],\n \"environment/vite\": [\n \"./dist/environment/vite.d.ts\"\n ],\n \"font\": [\n \"./dist/font.d.ts\"\n ],\n \"testing\": [\n \"./dist/testing.d.ts\"\n ],\n \"agent-runtime\": [\n \"./dist/agent-runtime.d.ts\"\n ],\n \"image\": [\n \"./types/image.d.ts\",\n \"./dist/image.d.ts\"\n ],\n \"image/server\": [\n \"./dist/image/server.d.ts\"\n ],\n \"image/sharp\": [\n \"./dist/image/sharp.d.ts\"\n ],\n \"i18n\": [\n \"./dist/i18n/index.d.ts\"\n ],\n \"i18n/server\": [\n \"./dist/i18n/server.d.ts\"\n ],\n \"i18n/client\": [\n \"./dist/i18n/client.d.ts\"\n ],\n \"internal/production-runtime\": [\n \"./dist/internal/production-runtime.d.ts\"\n ],\n \"internal/metadata-image-runtime\": [\n \"./dist/internal/metadata-image-runtime.d.ts\"\n ],\n \"internal/client-runtime\": [\n \"./dist/internal/client-runtime.d.ts\"\n ],\n \"internal/build-runtime\": [\n \"./dist/internal/build-runtime.d.ts\"\n ],\n \"internal/config-runtime\": [\n \"./dist/internal/config-runtime.d.ts\"\n ],\n \"internal/production-node-env\": [\n \"./dist/internal/production-node-env.d.ts\"\n ],\n \"config\": [\n \"./dist/config.d.ts\"\n ],\n \"api\": [\n \"./types/api.d.ts\",\n \"./dist/api.d.ts\"\n ],\n \"api/route-manager\": [\n \"./dist/api/route-manager.d.ts\"\n ],\n \"api/runtime\": [\n \"./dist/api/runtime.d.ts\"\n ],\n \"request\": [\n \"./dist/request.d.ts\"\n ],\n \"client\": [\n \"./types/client.d.ts\",\n \"./dist/client.d.ts\"\n ],\n \"server\": [\n \"./dist/server.d.ts\"\n ],\n \"vite\": [\n \"./dist/vite.d.ts\"\n ],\n \"plugin\": [\n \"./dist/plugin.d.ts\"\n ],\n \"query\": [\n \"./dist/query/index.d.ts\"\n ],\n \"*\": [\n \"./dist/*.d.ts\"\n ]\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./version\": {\n \"types\": \"./dist/version.d.ts\",\n \"import\": \"./dist/version.mjs\",\n \"require\": \"./dist/version.cjs\"\n },\n \"./config\": {\n \"types\": \"./dist/config.d.ts\",\n \"import\": \"./dist/config.mjs\",\n \"require\": \"./dist/config.cjs\"\n },\n \"./server\": {\n \"types\": \"./dist/server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./client\": {\n \"types\": \"./types/client.d.ts\",\n \"import\": \"./dist/client.mjs\",\n \"require\": \"./dist/client.cjs\"\n },\n \"./storage\": {\n \"types\": \"./dist/storage.d.ts\",\n \"import\": \"./dist/storage.mjs\",\n \"require\": \"./dist/storage.cjs\"\n },\n \"./integrations\": {\n \"types\": \"./dist/integrations.d.ts\",\n \"import\": \"./dist/integrations.mjs\",\n \"require\": \"./dist/integrations.cjs\"\n },\n \"./cache\": {\n \"types\": \"./dist/cache.d.ts\",\n \"import\": \"./dist/cache.mjs\",\n \"require\": \"./dist/cache.cjs\"\n },\n \"./deferred\": {\n \"types\": \"./dist/deferred.d.ts\",\n \"import\": \"./dist/deferred.mjs\",\n \"require\": \"./dist/deferred.cjs\"\n },\n \"./after\": {\n \"types\": \"./dist/after.d.ts\",\n \"import\": \"./dist/after.mjs\",\n \"require\": \"./dist/after.cjs\"\n },\n \"./navigation\": {\n \"types\": \"./dist/navigation.d.ts\",\n \"import\": \"./dist/navigation.mjs\",\n \"require\": \"./dist/navigation.cjs\"\n },\n \"./headers\": {\n \"types\": \"./dist/headers.d.ts\",\n \"import\": \"./dist/headers.mjs\",\n \"require\": \"./dist/headers.cjs\"\n },\n \"./docs\": {\n \"types\": \"./dist/docs.d.ts\",\n \"import\": \"./dist/docs.mjs\",\n \"require\": \"./dist/docs.cjs\"\n },\n \"./markdown\": {\n \"types\": \"./dist/markdown.d.ts\",\n \"import\": \"./dist/markdown.mjs\",\n \"require\": \"./dist/markdown.cjs\"\n },\n \"./app-markdown\": {\n \"types\": \"./dist/app-markdown.d.ts\",\n \"import\": \"./dist/app-markdown.mjs\",\n \"require\": \"./dist/app-markdown.cjs\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability.d.ts\",\n \"import\": \"./dist/observability.mjs\",\n \"require\": \"./dist/observability.cjs\"\n },\n \"./workflows\": {\n \"types\": \"./dist/workflows.d.ts\",\n \"import\": \"./dist/workflows.mjs\",\n \"require\": \"./dist/workflows.cjs\"\n },\n \"./cron\": {\n \"types\": \"./dist/cron.d.ts\",\n \"import\": \"./dist/cron.mjs\",\n \"require\": \"./dist/cron.cjs\"\n },\n \"./server-fn\": {\n \"types\": \"./dist/server-fn.d.ts\",\n \"import\": \"./dist/server-fn.mjs\",\n \"require\": \"./dist/server-fn.cjs\"\n },\n \"./server-fn/client\": {\n \"types\": \"./dist/server-fn-client.d.ts\",\n \"import\": \"./dist/server-fn-client.mjs\",\n \"require\": \"./dist/server-fn-client.cjs\"\n },\n \"./server-query\": {\n \"types\": \"./dist/server-query.d.ts\",\n \"import\": \"./dist/server-query.mjs\",\n \"require\": \"./dist/server-query.cjs\"\n },\n \"./server-query/client\": {\n \"types\": \"./dist/server-query-client.d.ts\",\n \"import\": \"./dist/server-query-client.mjs\",\n \"require\": \"./dist/server-query-client.cjs\"\n },\n \"./server-action-security\": {\n \"types\": \"./dist/server-action-security.d.ts\",\n \"import\": \"./dist/server-action-security.mjs\",\n \"require\": \"./dist/server-action-security.cjs\"\n },\n \"./deployment\": {\n \"types\": \"./dist/deployment.d.ts\",\n \"import\": \"./dist/deployment.mjs\",\n \"require\": \"./dist/deployment.cjs\"\n },\n \"./env\": {\n \"types\": \"./dist/env.d.ts\",\n \"import\": \"./dist/env.mjs\",\n \"require\": \"./dist/env.cjs\"\n },\n \"./env-types\": {\n \"types\": \"./dist/env-types.d.ts\",\n \"import\": \"./dist/env-types.mjs\",\n \"require\": \"./dist/env-types.cjs\"\n },\n \"./environment\": {\n \"types\": \"./dist/environment.d.ts\",\n \"import\": \"./dist/environment.mjs\",\n \"require\": \"./dist/environment.cjs\"\n },\n \"./environment/vite\": {\n \"types\": \"./dist/environment/vite.d.ts\",\n \"import\": \"./dist/environment/vite.mjs\",\n \"require\": \"./dist/environment/vite.cjs\"\n },\n \"./font\": {\n \"types\": \"./dist/font.d.ts\",\n \"import\": \"./dist/font.mjs\",\n \"require\": \"./dist/font.cjs\"\n },\n \"./vite\": {\n \"types\": \"./dist/vite.d.ts\",\n \"import\": \"./dist/vite.mjs\",\n \"require\": \"./dist/vite.cjs\"\n },\n \"./plugin\": {\n \"types\": \"./dist/plugin.d.ts\",\n \"import\": \"./dist/plugin.mjs\",\n \"require\": \"./dist/plugin.cjs\"\n },\n \"./plugin/server\": {\n \"types\": \"./dist/server-plugins.d.ts\",\n \"import\": \"./dist/server-plugins.mjs\",\n \"require\": \"./dist/server-plugins.cjs\"\n },\n \"./plugin/client\": {\n \"types\": \"./dist/client-plugins.d.ts\",\n \"import\": \"./dist/client-plugins.mjs\",\n \"require\": \"./dist/client-plugins.cjs\"\n },\n \"./query\": {\n \"types\": \"./dist/query/index.d.ts\",\n \"import\": \"./dist/query/index.mjs\",\n \"require\": \"./dist/query/index.cjs\"\n },\n \"./query/parsers\": {\n \"types\": \"./dist/query/parsers.d.ts\",\n \"import\": \"./dist/query/parsers.mjs\",\n \"require\": \"./dist/query/parsers.cjs\"\n },\n \"./query/client\": {\n \"types\": \"./dist/query/client.d.ts\",\n \"import\": \"./dist/query/client.mjs\",\n \"require\": \"./dist/query/client.cjs\"\n },\n \"./query/server\": {\n \"types\": \"./dist/query/server.d.ts\",\n \"import\": \"./dist/query/server.mjs\",\n \"require\": \"./dist/query/server.cjs\"\n },\n \"./middleware\": {\n \"types\": \"./dist/middleware.d.ts\",\n \"import\": \"./dist/middleware.mjs\",\n \"require\": \"./dist/middleware.cjs\"\n },\n \"./api\": {\n \"types\": \"./dist/api.d.ts\",\n \"import\": \"./dist/api.mjs\",\n \"require\": \"./dist/api.cjs\"\n },\n \"./api/route-manager\": {\n \"types\": \"./dist/api/route-manager.d.ts\",\n \"import\": \"./dist/api/route-manager.mjs\",\n \"require\": \"./dist/api/route-manager.cjs\"\n },\n \"./api/runtime\": {\n \"types\": \"./dist/api/runtime.d.ts\",\n \"import\": \"./dist/api/runtime.mjs\",\n \"require\": \"./dist/api/runtime.cjs\"\n },\n \"./request\": {\n \"types\": \"./dist/request.d.ts\",\n \"import\": \"./dist/request.mjs\",\n \"require\": \"./dist/request.cjs\"\n },\n \"./router\": {\n \"types\": \"./dist/router.d.ts\",\n \"import\": \"./dist/router.mjs\",\n \"require\": \"./dist/router.cjs\"\n },\n \"./routes\": {\n \"types\": \"./dist/routes.d.ts\",\n \"import\": \"./dist/routes.mjs\",\n \"require\": \"./dist/routes.cjs\"\n },\n \"./testing\": {\n \"types\": \"./dist/testing.d.ts\",\n \"import\": \"./dist/testing.mjs\",\n \"require\": \"./dist/testing.cjs\"\n },\n \"./agent-runtime\": {\n \"types\": \"./dist/agent-runtime.d.ts\",\n \"import\": \"./dist/agent-runtime.mjs\",\n \"require\": \"./dist/agent-runtime.cjs\"\n },\n \"./image\": {\n \"types\": \"./types/image.d.ts\",\n \"import\": \"./dist/image.mjs\",\n \"require\": \"./dist/image.cjs\"\n },\n \"./image/server\": {\n \"types\": \"./dist/image/server.d.ts\",\n \"import\": \"./dist/image/server.mjs\",\n \"require\": \"./dist/image/server.cjs\"\n },\n \"./image/sharp\": {\n \"types\": \"./dist/image/sharp.d.ts\",\n \"import\": \"./dist/image/sharp.mjs\",\n \"require\": \"./dist/image/sharp.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.mjs\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./i18n/server\": {\n \"types\": \"./dist/i18n/server.d.ts\",\n \"import\": \"./dist/i18n/server.mjs\",\n \"require\": \"./dist/i18n/server.cjs\"\n },\n \"./i18n/client\": {\n \"types\": \"./dist/i18n/client.d.ts\",\n \"import\": \"./dist/i18n/client.mjs\",\n \"require\": \"./dist/i18n/client.cjs\"\n },\n \"./internal/production-runtime\": {\n \"types\": \"./dist/internal/production-runtime.d.ts\",\n \"import\": \"./dist/internal/production-runtime.mjs\",\n \"require\": \"./dist/internal/production-runtime.cjs\"\n },\n \"./internal/metadata-image-runtime\": {\n \"types\": \"./dist/internal/metadata-image-runtime.d.ts\",\n \"import\": \"./dist/internal/metadata-image-runtime.mjs\",\n \"require\": \"./dist/internal/metadata-image-runtime.cjs\"\n },\n \"./internal/client-runtime\": {\n \"types\": \"./dist/internal/client-runtime.d.ts\",\n \"import\": \"./dist/internal/client-runtime.mjs\",\n \"require\": \"./dist/internal/client-runtime.cjs\"\n },\n \"./internal/build-runtime\": {\n \"types\": \"./dist/internal/build-runtime.d.ts\",\n \"import\": \"./dist/internal/build-runtime.mjs\",\n \"require\": \"./dist/internal/build-runtime.cjs\"\n },\n \"./internal/config-runtime\": {\n \"types\": \"./dist/internal/config-runtime.d.ts\",\n \"import\": \"./dist/internal/config-runtime.mjs\",\n \"require\": \"./dist/internal/config-runtime.cjs\"\n },\n \"./internal/production-node-env\": {\n \"types\": \"./dist/internal/production-node-env.d.ts\",\n \"import\": \"./dist/internal/production-node-env.mjs\",\n \"require\": \"./dist/internal/production-node-env.cjs\"\n }\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:runtime\": \"tsup --config tsup.runtime.config.ts\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:coverage\": \"vitest --coverage\",\n \"lint\": \"biome lint .\",\n \"lint:fix\": \"biome lint --write .\",\n \"format\": \"biome format --write .\",\n \"type-check\": \"tsc --noEmit\",\n \"clean\": \"rm -rf dist\"\n },\n \"dependencies\": {\n \"@farming-labs/docs\": \"^0.2.44\",\n \"@farming-labs/orm\": \"0.0.62\",\n \"@farming-labs/orm-runtime\": \"0.0.62\",\n \"@formatjs/icu-messageformat-parser\": \"3.5.15\",\n \"@mdx-js/mdx\": \"^3.1.1\",\n \"@scalar/api-reference\": \"^1.38.1\",\n \"@scalar/openapi-parser\": \"^0.22.3\",\n \"@tailwindcss/vite\": \"4.1.18\",\n \"@vercel/og\": \"0.11.1\",\n \"@vitejs/plugin-react\": \"^4.2.1\",\n \"better-call\": \"^1.0.19\",\n \"db0\": \"^0.3.4\",\n \"esbuild\": \"^0.28.0\",\n \"fast-glob\": \"^3.3.2\",\n \"h3\": \"2.0.1-rc.5\",\n \"image-size\": \"^2.0.2\",\n \"intl-messageformat\": \"11.2.12\",\n \"marked\": \"^12.0.2\",\n \"nitro\": \"3.0.1-alpha.0\",\n \"pg\": \"^8.20.0\",\n \"picocolors\": \"^1.0.0\",\n \"remark-gfm\": \"^4.0.1\",\n \"sirv\": \"^2.0.4\",\n \"sugar-high\": \"^0.9.5\",\n \"supports-color\": \"^10.2.2\",\n \"tailwindcss\": \"4.1.18\",\n \"unstorage\": \"^2.0.0-alpha.3\",\n \"vite\": \"^5.0.10\",\n \"zod\": \"^4.1.12\"\n },\n \"devDependencies\": {\n \"@clerk/react\": \"^6.1.0\",\n \"@types/react\": \"^18.2.45\",\n \"@types/react-dom\": \"^18.2.18\",\n \"@vitest/coverage-v8\": \"^1.1.0\",\n \"jsdom\": \"^25.0.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"tsup\": \"^8.3.5\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^1.1.0\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.2.0 || ^19.0.0\",\n \"react-dom\": \"^18.2.0 || ^19.0.0\"\n },\n \"optionalDependencies\": {\n \"rolldown\": \"1.2.0\",\n \"sharp\": \"^0.34.5\",\n \"vite-rolldown\": \"npm:vite@8.1.5\"\n }\n}\n","import { version } from \"../package.json\";\n\nexport const FARM_VERSION = version;\n"],"mappings":";AAEE,cAAW;;;ACAN,IAAM,eAAe;","names":[]}
1
+ {"version":3,"sources":["../package.json","../src/version.ts"],"sourcesContent":["{\n \"name\": \"@farm.js/core\",\n \"version\": \"0.1.0-beta.19\",\n \"description\": \"Core Farm.js framework for modern integrated apps\",\n \"keywords\": [\n \"@farm.js/core\",\n \"framework\",\n \"react\",\n \"rsc\",\n \"server-components\",\n \"ssr\",\n \"vite\"\n ],\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/farming-labs/farm.js\",\n \"directory\": \"packages/farm\"\n },\n \"files\": [\n \"dist\",\n \"types\"\n ],\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"typesVersions\": {\n \"*\": {\n \"middleware\": [\n \"./types/middleware.d.ts\",\n \"./dist/middleware.d.ts\"\n ],\n \"version\": [\n \"./dist/version.d.ts\"\n ],\n \"router\": [\n \"./dist/router.d.ts\"\n ],\n \"routes\": [\n \"./dist/routes.d.ts\"\n ],\n \"storage\": [\n \"./dist/storage.d.ts\"\n ],\n \"integrations\": [\n \"./dist/integrations.d.ts\"\n ],\n \"cache\": [\n \"./dist/cache.d.ts\"\n ],\n \"deferred\": [\n \"./dist/deferred.d.ts\"\n ],\n \"after\": [\n \"./dist/after.d.ts\"\n ],\n \"navigation\": [\n \"./dist/navigation.d.ts\"\n ],\n \"headers\": [\n \"./dist/headers.d.ts\"\n ],\n \"docs\": [\n \"./dist/docs.d.ts\"\n ],\n \"markdown\": [\n \"./dist/markdown.d.ts\"\n ],\n \"app-markdown\": [\n \"./dist/app-markdown.d.ts\"\n ],\n \"observability\": [\n \"./dist/observability.d.ts\"\n ],\n \"workflows\": [\n \"./dist/workflows.d.ts\"\n ],\n \"cron\": [\n \"./dist/cron.d.ts\"\n ],\n \"server-fn\": [\n \"./dist/server-fn.d.ts\"\n ],\n \"server-fn/client\": [\n \"./dist/server-fn-client.d.ts\"\n ],\n \"server-action-security\": [\n \"./dist/server-action-security.d.ts\"\n ],\n \"deployment\": [\n \"./dist/deployment.d.ts\"\n ],\n \"env\": [\n \"./dist/env.d.ts\"\n ],\n \"env-types\": [\n \"./dist/env-types.d.ts\"\n ],\n \"environment\": [\n \"./dist/environment.d.ts\"\n ],\n \"environment/vite\": [\n \"./dist/environment/vite.d.ts\"\n ],\n \"font\": [\n \"./dist/font.d.ts\"\n ],\n \"testing\": [\n \"./dist/testing.d.ts\"\n ],\n \"agent-runtime\": [\n \"./dist/agent-runtime.d.ts\"\n ],\n \"image\": [\n \"./types/image.d.ts\",\n \"./dist/image.d.ts\"\n ],\n \"image/server\": [\n \"./dist/image/server.d.ts\"\n ],\n \"image/sharp\": [\n \"./dist/image/sharp.d.ts\"\n ],\n \"i18n\": [\n \"./dist/i18n/index.d.ts\"\n ],\n \"i18n/server\": [\n \"./dist/i18n/server.d.ts\"\n ],\n \"i18n/client\": [\n \"./dist/i18n/client.d.ts\"\n ],\n \"internal/production-runtime\": [\n \"./dist/internal/production-runtime.d.ts\"\n ],\n \"internal/metadata-image-runtime\": [\n \"./dist/internal/metadata-image-runtime.d.ts\"\n ],\n \"internal/client-runtime\": [\n \"./dist/internal/client-runtime.d.ts\"\n ],\n \"internal/build-runtime\": [\n \"./dist/internal/build-runtime.d.ts\"\n ],\n \"internal/config-runtime\": [\n \"./dist/internal/config-runtime.d.ts\"\n ],\n \"internal/production-node-env\": [\n \"./dist/internal/production-node-env.d.ts\"\n ],\n \"config\": [\n \"./dist/config.d.ts\"\n ],\n \"api\": [\n \"./types/api.d.ts\",\n \"./dist/api.d.ts\"\n ],\n \"api/route-manager\": [\n \"./dist/api/route-manager.d.ts\"\n ],\n \"api/runtime\": [\n \"./dist/api/runtime.d.ts\"\n ],\n \"request\": [\n \"./dist/request.d.ts\"\n ],\n \"client\": [\n \"./types/client.d.ts\",\n \"./dist/client.d.ts\"\n ],\n \"server\": [\n \"./dist/server.d.ts\"\n ],\n \"vite\": [\n \"./dist/vite.d.ts\"\n ],\n \"plugin\": [\n \"./dist/plugin.d.ts\"\n ],\n \"query\": [\n \"./dist/query/index.d.ts\"\n ],\n \"*\": [\n \"./dist/*.d.ts\"\n ]\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./version\": {\n \"types\": \"./dist/version.d.ts\",\n \"import\": \"./dist/version.mjs\",\n \"require\": \"./dist/version.cjs\"\n },\n \"./config\": {\n \"types\": \"./dist/config.d.ts\",\n \"import\": \"./dist/config.mjs\",\n \"require\": \"./dist/config.cjs\"\n },\n \"./server\": {\n \"types\": \"./dist/server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./client\": {\n \"types\": \"./types/client.d.ts\",\n \"import\": \"./dist/client.mjs\",\n \"require\": \"./dist/client.cjs\"\n },\n \"./storage\": {\n \"types\": \"./dist/storage.d.ts\",\n \"import\": \"./dist/storage.mjs\",\n \"require\": \"./dist/storage.cjs\"\n },\n \"./integrations\": {\n \"types\": \"./dist/integrations.d.ts\",\n \"import\": \"./dist/integrations.mjs\",\n \"require\": \"./dist/integrations.cjs\"\n },\n \"./cache\": {\n \"types\": \"./dist/cache.d.ts\",\n \"import\": \"./dist/cache.mjs\",\n \"require\": \"./dist/cache.cjs\"\n },\n \"./deferred\": {\n \"types\": \"./dist/deferred.d.ts\",\n \"import\": \"./dist/deferred.mjs\",\n \"require\": \"./dist/deferred.cjs\"\n },\n \"./after\": {\n \"types\": \"./dist/after.d.ts\",\n \"import\": \"./dist/after.mjs\",\n \"require\": \"./dist/after.cjs\"\n },\n \"./navigation\": {\n \"types\": \"./dist/navigation.d.ts\",\n \"import\": \"./dist/navigation.mjs\",\n \"require\": \"./dist/navigation.cjs\"\n },\n \"./headers\": {\n \"types\": \"./dist/headers.d.ts\",\n \"import\": \"./dist/headers.mjs\",\n \"require\": \"./dist/headers.cjs\"\n },\n \"./docs\": {\n \"types\": \"./dist/docs.d.ts\",\n \"import\": \"./dist/docs.mjs\",\n \"require\": \"./dist/docs.cjs\"\n },\n \"./markdown\": {\n \"types\": \"./dist/markdown.d.ts\",\n \"import\": \"./dist/markdown.mjs\",\n \"require\": \"./dist/markdown.cjs\"\n },\n \"./app-markdown\": {\n \"types\": \"./dist/app-markdown.d.ts\",\n \"import\": \"./dist/app-markdown.mjs\",\n \"require\": \"./dist/app-markdown.cjs\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability.d.ts\",\n \"import\": \"./dist/observability.mjs\",\n \"require\": \"./dist/observability.cjs\"\n },\n \"./workflows\": {\n \"types\": \"./dist/workflows.d.ts\",\n \"import\": \"./dist/workflows.mjs\",\n \"require\": \"./dist/workflows.cjs\"\n },\n \"./cron\": {\n \"types\": \"./dist/cron.d.ts\",\n \"import\": \"./dist/cron.mjs\",\n \"require\": \"./dist/cron.cjs\"\n },\n \"./server-fn\": {\n \"types\": \"./dist/server-fn.d.ts\",\n \"import\": \"./dist/server-fn.mjs\",\n \"require\": \"./dist/server-fn.cjs\"\n },\n \"./server-fn/client\": {\n \"types\": \"./dist/server-fn-client.d.ts\",\n \"import\": \"./dist/server-fn-client.mjs\",\n \"require\": \"./dist/server-fn-client.cjs\"\n },\n \"./server-query\": {\n \"types\": \"./dist/server-query.d.ts\",\n \"import\": \"./dist/server-query.mjs\",\n \"require\": \"./dist/server-query.cjs\"\n },\n \"./server-query/client\": {\n \"types\": \"./dist/server-query-client.d.ts\",\n \"import\": \"./dist/server-query-client.mjs\",\n \"require\": \"./dist/server-query-client.cjs\"\n },\n \"./server-action-security\": {\n \"types\": \"./dist/server-action-security.d.ts\",\n \"import\": \"./dist/server-action-security.mjs\",\n \"require\": \"./dist/server-action-security.cjs\"\n },\n \"./deployment\": {\n \"types\": \"./dist/deployment.d.ts\",\n \"import\": \"./dist/deployment.mjs\",\n \"require\": \"./dist/deployment.cjs\"\n },\n \"./env\": {\n \"types\": \"./dist/env.d.ts\",\n \"import\": \"./dist/env.mjs\",\n \"require\": \"./dist/env.cjs\"\n },\n \"./env-types\": {\n \"types\": \"./dist/env-types.d.ts\",\n \"import\": \"./dist/env-types.mjs\",\n \"require\": \"./dist/env-types.cjs\"\n },\n \"./environment\": {\n \"types\": \"./dist/environment.d.ts\",\n \"import\": \"./dist/environment.mjs\",\n \"require\": \"./dist/environment.cjs\"\n },\n \"./environment/vite\": {\n \"types\": \"./dist/environment/vite.d.ts\",\n \"import\": \"./dist/environment/vite.mjs\",\n \"require\": \"./dist/environment/vite.cjs\"\n },\n \"./font\": {\n \"types\": \"./dist/font.d.ts\",\n \"import\": \"./dist/font.mjs\",\n \"require\": \"./dist/font.cjs\"\n },\n \"./vite\": {\n \"types\": \"./dist/vite.d.ts\",\n \"import\": \"./dist/vite.mjs\",\n \"require\": \"./dist/vite.cjs\"\n },\n \"./plugin\": {\n \"types\": \"./dist/plugin.d.ts\",\n \"import\": \"./dist/plugin.mjs\",\n \"require\": \"./dist/plugin.cjs\"\n },\n \"./plugin/server\": {\n \"types\": \"./dist/server-plugins.d.ts\",\n \"import\": \"./dist/server-plugins.mjs\",\n \"require\": \"./dist/server-plugins.cjs\"\n },\n \"./plugin/client\": {\n \"types\": \"./dist/client-plugins.d.ts\",\n \"import\": \"./dist/client-plugins.mjs\",\n \"require\": \"./dist/client-plugins.cjs\"\n },\n \"./query\": {\n \"types\": \"./dist/query/index.d.ts\",\n \"import\": \"./dist/query/index.mjs\",\n \"require\": \"./dist/query/index.cjs\"\n },\n \"./query/parsers\": {\n \"types\": \"./dist/query/parsers.d.ts\",\n \"import\": \"./dist/query/parsers.mjs\",\n \"require\": \"./dist/query/parsers.cjs\"\n },\n \"./query/client\": {\n \"types\": \"./dist/query/client.d.ts\",\n \"import\": \"./dist/query/client.mjs\",\n \"require\": \"./dist/query/client.cjs\"\n },\n \"./query/server\": {\n \"types\": \"./dist/query/server.d.ts\",\n \"import\": \"./dist/query/server.mjs\",\n \"require\": \"./dist/query/server.cjs\"\n },\n \"./middleware\": {\n \"types\": \"./dist/middleware.d.ts\",\n \"import\": \"./dist/middleware.mjs\",\n \"require\": \"./dist/middleware.cjs\"\n },\n \"./api\": {\n \"types\": \"./dist/api.d.ts\",\n \"import\": \"./dist/api.mjs\",\n \"require\": \"./dist/api.cjs\"\n },\n \"./api/route-manager\": {\n \"types\": \"./dist/api/route-manager.d.ts\",\n \"import\": \"./dist/api/route-manager.mjs\",\n \"require\": \"./dist/api/route-manager.cjs\"\n },\n \"./api/runtime\": {\n \"types\": \"./dist/api/runtime.d.ts\",\n \"import\": \"./dist/api/runtime.mjs\",\n \"require\": \"./dist/api/runtime.cjs\"\n },\n \"./request\": {\n \"types\": \"./dist/request.d.ts\",\n \"import\": \"./dist/request.mjs\",\n \"require\": \"./dist/request.cjs\"\n },\n \"./router\": {\n \"types\": \"./dist/router.d.ts\",\n \"import\": \"./dist/router.mjs\",\n \"require\": \"./dist/router.cjs\"\n },\n \"./routes\": {\n \"types\": \"./dist/routes.d.ts\",\n \"import\": \"./dist/routes.mjs\",\n \"require\": \"./dist/routes.cjs\"\n },\n \"./testing\": {\n \"types\": \"./dist/testing.d.ts\",\n \"import\": \"./dist/testing.mjs\",\n \"require\": \"./dist/testing.cjs\"\n },\n \"./agent-runtime\": {\n \"types\": \"./dist/agent-runtime.d.ts\",\n \"import\": \"./dist/agent-runtime.mjs\",\n \"require\": \"./dist/agent-runtime.cjs\"\n },\n \"./image\": {\n \"types\": \"./types/image.d.ts\",\n \"import\": \"./dist/image.mjs\",\n \"require\": \"./dist/image.cjs\"\n },\n \"./image/server\": {\n \"types\": \"./dist/image/server.d.ts\",\n \"import\": \"./dist/image/server.mjs\",\n \"require\": \"./dist/image/server.cjs\"\n },\n \"./image/sharp\": {\n \"types\": \"./dist/image/sharp.d.ts\",\n \"import\": \"./dist/image/sharp.mjs\",\n \"require\": \"./dist/image/sharp.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.mjs\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./i18n/server\": {\n \"types\": \"./dist/i18n/server.d.ts\",\n \"import\": \"./dist/i18n/server.mjs\",\n \"require\": \"./dist/i18n/server.cjs\"\n },\n \"./i18n/client\": {\n \"types\": \"./dist/i18n/client.d.ts\",\n \"import\": \"./dist/i18n/client.mjs\",\n \"require\": \"./dist/i18n/client.cjs\"\n },\n \"./internal/production-runtime\": {\n \"types\": \"./dist/internal/production-runtime.d.ts\",\n \"import\": \"./dist/internal/production-runtime.mjs\",\n \"require\": \"./dist/internal/production-runtime.cjs\"\n },\n \"./internal/metadata-image-runtime\": {\n \"types\": \"./dist/internal/metadata-image-runtime.d.ts\",\n \"import\": \"./dist/internal/metadata-image-runtime.mjs\",\n \"require\": \"./dist/internal/metadata-image-runtime.cjs\"\n },\n \"./internal/client-runtime\": {\n \"types\": \"./dist/internal/client-runtime.d.ts\",\n \"import\": \"./dist/internal/client-runtime.mjs\",\n \"require\": \"./dist/internal/client-runtime.cjs\"\n },\n \"./internal/build-runtime\": {\n \"types\": \"./dist/internal/build-runtime.d.ts\",\n \"import\": \"./dist/internal/build-runtime.mjs\",\n \"require\": \"./dist/internal/build-runtime.cjs\"\n },\n \"./internal/config-runtime\": {\n \"types\": \"./dist/internal/config-runtime.d.ts\",\n \"import\": \"./dist/internal/config-runtime.mjs\",\n \"require\": \"./dist/internal/config-runtime.cjs\"\n },\n \"./internal/production-node-env\": {\n \"types\": \"./dist/internal/production-node-env.d.ts\",\n \"import\": \"./dist/internal/production-node-env.mjs\",\n \"require\": \"./dist/internal/production-node-env.cjs\"\n }\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:runtime\": \"tsup --config tsup.runtime.config.ts\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:coverage\": \"vitest --coverage\",\n \"lint\": \"biome lint .\",\n \"lint:fix\": \"biome lint --write .\",\n \"format\": \"biome format --write .\",\n \"type-check\": \"tsc --noEmit\",\n \"clean\": \"rm -rf dist\"\n },\n \"dependencies\": {\n \"@farming-labs/docs\": \"^0.2.44\",\n \"@farming-labs/orm\": \"0.0.62\",\n \"@farming-labs/orm-runtime\": \"0.0.62\",\n \"@formatjs/icu-messageformat-parser\": \"3.5.15\",\n \"@mdx-js/mdx\": \"^3.1.1\",\n \"@scalar/api-reference\": \"^1.38.1\",\n \"@scalar/openapi-parser\": \"^0.22.3\",\n \"@tailwindcss/vite\": \"4.1.18\",\n \"@vercel/og\": \"0.11.1\",\n \"@vitejs/plugin-react\": \"^4.2.1\",\n \"better-call\": \"^1.0.19\",\n \"db0\": \"^0.3.4\",\n \"esbuild\": \"^0.28.0\",\n \"fast-glob\": \"^3.3.2\",\n \"h3\": \"2.0.1-rc.5\",\n \"image-size\": \"^2.0.2\",\n \"intl-messageformat\": \"11.2.12\",\n \"marked\": \"^12.0.2\",\n \"nitro\": \"3.0.1-alpha.0\",\n \"pg\": \"^8.20.0\",\n \"picocolors\": \"^1.0.0\",\n \"remark-gfm\": \"^4.0.1\",\n \"sirv\": \"^2.0.4\",\n \"sugar-high\": \"^0.9.5\",\n \"supports-color\": \"^10.2.2\",\n \"tailwindcss\": \"4.1.18\",\n \"unstorage\": \"^2.0.0-alpha.3\",\n \"vite\": \"^5.0.10\",\n \"zod\": \"^4.1.12\"\n },\n \"devDependencies\": {\n \"@clerk/react\": \"^6.1.0\",\n \"@types/react\": \"^18.2.45\",\n \"@types/react-dom\": \"^18.2.18\",\n \"@vitest/coverage-v8\": \"^1.1.0\",\n \"jsdom\": \"^25.0.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"tsup\": \"^8.3.5\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^1.1.0\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.2.0 || ^19.0.0\",\n \"react-dom\": \"^18.2.0 || ^19.0.0\"\n },\n \"optionalDependencies\": {\n \"rolldown\": \"1.2.0\",\n \"sharp\": \"^0.34.5\",\n \"vite-rolldown\": \"npm:vite@8.1.5\"\n }\n}\n","import { version } from \"../package.json\";\n\nexport const FARM_VERSION = version;\n"],"mappings":";AAEE,cAAW;;;ACAN,IAAM,eAAe;","names":[]}
@@ -4,11 +4,12 @@ import {
4
4
  import {
5
5
  clearRequestContext,
6
6
  deleteRequestContext,
7
+ getFarmPluginIntegrationContext,
7
8
  getRequestContext,
8
9
  getRequestContextSnapshot,
9
10
  hasRequestContext,
10
11
  setRequestContext
11
- } from "./chunk-SBLHLAE3.mjs";
12
+ } from "./chunk-ZYDQS2TT.mjs";
12
13
  import {
13
14
  __name
14
15
  } from "./chunk-CGILA3WO.mjs";
@@ -79,10 +80,14 @@ var _PluginManager = class _PluginManager {
79
80
  }
80
81
  };
81
82
  }
82
- createRequestHookContext(target) {
83
+ createPluginHookContext(plugin, context = this.context) {
84
+ const integration = getFarmPluginIntegrationContext(plugin);
85
+ return integration ? { ...context, integration } : context;
86
+ }
87
+ createRequestHookContext(target, plugin) {
83
88
  const requestContext = this.context.requestContext;
84
89
  return {
85
- ...this.context,
90
+ ...this.createPluginHookContext(plugin),
86
91
  req: {
87
92
  set(key, value, options) {
88
93
  requestContext.set(target, key, value, options);
@@ -125,7 +130,7 @@ var _PluginManager = class _PluginManager {
125
130
  return {
126
131
  ...this.createStateHookContext(plugin),
127
132
  request,
128
- req: this.createRequestHookContext(request).req,
133
+ req: this.createRequestHookContext(request, plugin).req,
129
134
  kind: options.kind ?? "request",
130
135
  route: options.route,
131
136
  signal: request.signal,
@@ -191,7 +196,7 @@ var _PluginManager = class _PluginManager {
191
196
  }
192
197
  createStateHookContext(plugin, context = this.context) {
193
198
  return {
194
- ...context,
199
+ ...this.createPluginHookContext(plugin, context),
195
200
  state: this.pluginStates.get(plugin)
196
201
  };
197
202
  }
@@ -319,14 +324,14 @@ var _PluginManager = class _PluginManager {
319
324
  }
320
325
  return hooks;
321
326
  }
322
- getHookContext(hookName, args) {
327
+ getHookContext(plugin, hookName, args) {
323
328
  if (hookName === "beforeRequest" || hookName === "afterResponse" || hookName === "beforeApiHandler") {
324
329
  const target = args[0];
325
330
  if (target && typeof target === "object") {
326
- return this.createRequestHookContext(target);
331
+ return this.createRequestHookContext(target, plugin);
327
332
  }
328
333
  }
329
- return this.context;
334
+ return this.createPluginHookContext(plugin);
330
335
  }
331
336
  addPlugin(plugin) {
332
337
  this.plugins.push(plugin);
@@ -375,7 +380,7 @@ var _PluginManager = class _PluginManager {
375
380
  for (const plugin of this.getSortedPlugins()) {
376
381
  if (!plugin.setup) continue;
377
382
  const state = await plugin.setup({
378
- ...this.context,
383
+ ...this.createPluginHookContext(plugin),
379
384
  env: getResolvedEnv()
380
385
  });
381
386
  this.pluginStates.set(plugin, state);
@@ -546,7 +551,7 @@ var _PluginManager = class _PluginManager {
546
551
  const plugins = this.getSortedPlugins();
547
552
  for (const plugin of plugins) {
548
553
  for (const hook of this.getPluginHooks(plugin, hookName)) {
549
- const hookContext = this.getHookContext(hookName, args);
554
+ const hookContext = this.getHookContext(plugin, hookName, args);
550
555
  const result = await hook.apply(plugin, [...args, hookContext]);
551
556
  if (result !== void 0) {
552
557
  return result;
@@ -560,7 +565,7 @@ var _PluginManager = class _PluginManager {
560
565
  for (const plugin of plugins) {
561
566
  for (const hook of this.getPluginHooks(plugin, hookName)) {
562
567
  const hookArgs = [value, ...args];
563
- const hookContext = this.getHookContext(hookName, hookArgs);
568
+ const hookContext = this.getHookContext(plugin, hookName, hookArgs);
564
569
  const result = await hook.apply(plugin, [...hookArgs, hookContext]);
565
570
  if (result !== void 0) {
566
571
  if (hookName === "beforeApiHandler" && result !== value && value && result && typeof value === "object" && typeof result === "object") {
@@ -573,11 +578,15 @@ var _PluginManager = class _PluginManager {
573
578
  return value;
574
579
  }
575
580
  async runHookParallel(hookName, ...args) {
581
+ return this.runHookParallelFiltered(hookName, () => true, ...args);
582
+ }
583
+ /** @internal Runs hooks for only the plugins selected by the runtime adapter. */
584
+ async runHookParallelFiltered(hookName, include, ...args) {
576
585
  if (hookName === "shutdown" && !this.runtimeShutdownHooksRunning) {
577
586
  await this.closeRuntime(args[0]?.reason);
578
587
  return false;
579
588
  }
580
- const plugins = this.getSortedPlugins();
589
+ const plugins = this.getSortedPlugins().filter(include);
581
590
  const sequentialHooks = /* @__PURE__ */ new Set([
582
591
  "ready",
583
592
  "shutdown",
@@ -600,7 +609,7 @@ var _PluginManager = class _PluginManager {
600
609
  return true;
601
610
  }
602
611
  }
603
- const hookContext = this.getHookContext(hookName, args);
612
+ const hookContext = this.getHookContext(plugin, hookName, args);
604
613
  try {
605
614
  await hook.apply(plugin, [...args, hookContext]);
606
615
  } catch (error) {
@@ -622,7 +631,7 @@ var _PluginManager = class _PluginManager {
622
631
  const promises = [];
623
632
  for (const plugin of plugins) {
624
633
  for (const hook of this.getPluginHooks(plugin, hookName)) {
625
- const hookContext = this.getHookContext(hookName, args);
634
+ const hookContext = this.getHookContext(plugin, hookName, args);
626
635
  promises.push(hook.apply(plugin, [...args, hookContext]));
627
636
  }
628
637
  }
@@ -646,10 +655,19 @@ function definePlugin(plugin) {
646
655
  return plugin;
647
656
  }
648
657
  __name(definePlugin, "definePlugin");
658
+ ((definePlugin2) => {
659
+ function forIntegration() {
660
+ return /* @__PURE__ */ __name(function defineBoundPlugin(plugin) {
661
+ return plugin;
662
+ }, "defineBoundPlugin");
663
+ }
664
+ definePlugin2.forIntegration = forIntegration;
665
+ __name(forIntegration, "forIntegration");
666
+ })(definePlugin || (definePlugin = {}));
649
667
 
650
668
  export {
651
669
  FarmRuntimeShutdownError,
652
670
  PluginManager,
653
671
  definePlugin
654
672
  };
655
- //# sourceMappingURL=chunk-6OKRBYDC.mjs.map
673
+ //# sourceMappingURL=chunk-UNDUIGWC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/plugin.ts"],"sourcesContent":["import type { FarmConfig, FarmRequest, FarmResponse } from \"./types\";\nimport type { ViteDevServer } from \"vite\";\nimport type { FarmClientPlugin } from \"./client/plugin\";\nimport { getResolvedEnv, type ResolvedFarmEnv } from \"./env\";\nimport {\n clearRequestContext,\n deleteRequestContext,\n getRequestContext,\n getRequestContextSnapshot,\n hasRequestContext,\n setRequestContext,\n} from \"./request-context\";\nimport { getFarmPluginIntegrationContext } from \"./plugin-integration-context\";\n\ntype MaybePromise<T> = T | Promise<T>;\ndeclare const FARM_PLUGIN_INTEGRATION_INSTANCE: unique symbol;\n\nexport interface FarmPluginIntegrationContext<TInstance = unknown> {\n /** Key used to register the integration in farm.config.ts. */\n readonly key: string;\n readonly category: string;\n readonly type: string;\n readonly instance: TInstance;\n readonly serverRuntime: boolean;\n}\n\nexport class FarmRuntimeShutdownError extends Error {\n readonly errors: readonly unknown[];\n\n constructor(message: string, errors: readonly unknown[]) {\n super(message);\n this.name = \"FarmRuntimeShutdownError\";\n this.errors = errors;\n }\n}\n\nexport interface PluginRequestContext {\n set: (\n target: FarmRequest | Request,\n key: string,\n value: any,\n options?: { exposeToPage?: boolean },\n ) => void;\n get: <T = any>(target: FarmRequest | Request, key: string) => T | undefined;\n has: (target: FarmRequest | Request, key: string) => boolean;\n delete: (target: FarmRequest | Request, key: string) => boolean;\n clear: (target: FarmRequest | Request) => void;\n getAll: (target: FarmRequest | Request, options?: { exposedOnly?: boolean }) => Map<string, any>;\n}\n\nexport interface FarmRequestStore {\n set(key: string, value: unknown, options?: { exposeToPage?: boolean }): void;\n get<T = unknown>(key: string): T | undefined;\n has(key: string): boolean;\n delete(key: string): boolean;\n clear(): void;\n snapshot(options?: { exposedOnly?: boolean }): Map<string, unknown>;\n}\n\nexport interface FarmPluginContext<TIntegrationInstance = unknown> {\n config: FarmConfig;\n viteServer?: ViteDevServer;\n isDev: boolean;\n isProd: boolean;\n /** The owning integration when this plugin is contributed through `integration.plugins`. */\n readonly integration?: Readonly<FarmPluginIntegrationContext<TIntegrationInstance>>;\n /** Register resource cleanup that must run when the application runtime closes. */\n lifecycle: FarmPluginLifecycle;\n /** @deprecated Use `ctx.req` inside request hooks. */\n requestContext: PluginRequestContext;\n}\n\nexport interface FarmPluginLifecycle {\n /**\n * Register a database, storage, queue, or other resource disposer.\n * Disposers run once in reverse registration order after plugin shutdown hooks.\n */\n onShutdown(dispose: () => void | Promise<void>): () => void;\n}\n\nexport interface FarmRequestPluginContext<\n TIntegrationInstance = unknown,\n> extends FarmPluginContext<TIntegrationInstance> {\n /** Request-scoped values for the current hook invocation. */\n readonly req: FarmRequestStore;\n}\n\nexport interface RouteDiscoveredPayload {\n kind: \"page\" | \"layout\";\n pattern: string;\n modulePath: string;\n}\n\nexport interface RoutesGeneratedPayload {\n routes: RouteDiscoveredPayload[];\n pageCount: number;\n layoutCount: number;\n}\n\nexport interface MiddlewareDiscoveredPayload {\n path: string;\n filePath: string;\n handlerCount: number;\n}\n\nexport interface APIRouteDiscoveredPayload {\n path: string;\n filePath: string;\n methods: string[];\n}\n\nexport interface RouteMatchPayload {\n pathname: string;\n method?: string;\n}\n\nexport interface RouteMatchResultPayload {\n pathname: string;\n matched: boolean;\n routePattern: string | null;\n params: Record<string, string>;\n layoutPatterns: string[];\n}\n\nexport interface RenderLifecyclePayload {\n pathname: string;\n method: string;\n routePattern: string | null;\n params: Record<string, string>;\n}\n\nexport interface APIHandlerLifecyclePayload {\n pathname: string;\n method: string;\n routePath?: string;\n}\n\nexport interface ErrorLifecyclePayload {\n phase: string;\n error: unknown;\n meta?: Record<string, unknown>;\n}\n\nexport interface HMRUpdatePayload {\n file: string;\n modules: string[];\n}\n\nexport interface BundleLifecyclePayload {\n root: string;\n preset: string;\n universal: boolean;\n distDir: string;\n outputDir?: string;\n}\n\nexport interface BundleResultPayload extends BundleLifecyclePayload {\n success: boolean;\n}\n\nexport interface NitroBuildLifecyclePayload {\n root: string;\n preset: string;\n distDir: string;\n outputDir: string;\n}\n\nexport interface ShutdownPayload {\n reason: string;\n}\n\nexport type FarmPluginRuntimeKind =\n | \"request\"\n | \"page\"\n | \"api\"\n | \"action\"\n | \"integration\"\n | \"docs\"\n | \"asset\"\n | (string & {});\n\nexport interface FarmPluginRouteRuntimePayload {\n pathname: string;\n pattern?: string | null;\n params?: Record<string, string>;\n}\n\nexport interface FarmPluginSetupContext<\n TIntegrationInstance = unknown,\n> extends FarmPluginContext<TIntegrationInstance> {\n env: ResolvedFarmEnv;\n}\n\nexport interface FarmPluginStateContext<\n TState = unknown,\n TIntegrationInstance = unknown,\n> extends FarmPluginContext<TIntegrationInstance> {\n state: TState;\n}\n\nexport interface FarmPluginRuntimeBaseEvent<\n TState = unknown,\n TIntegrationInstance = unknown,\n> extends FarmPluginStateContext<TState, TIntegrationInstance> {\n request: Request;\n /** Request-scoped values shared by plugin hooks. */\n req: FarmRequestStore;\n kind: FarmPluginRuntimeKind;\n route?: FarmPluginRouteRuntimePayload;\n signal: AbortSignal;\n waitUntil(promise: Promise<unknown>): void;\n}\n\nexport type FarmPluginRuntimeContextEvent<\n TState = unknown,\n TIntegrationInstance = unknown,\n> = FarmPluginRuntimeBaseEvent<TState, TIntegrationInstance>;\n\nexport interface FarmPluginRuntimeBeforeEvent<\n TState = unknown,\n TRequestContext extends object = Record<string, unknown>,\n TIntegrationInstance = unknown,\n> extends FarmPluginRuntimeBaseEvent<TState, TIntegrationInstance> {\n ctx: Readonly<TRequestContext>;\n}\n\nexport interface FarmPluginRuntimeAfterEvent<\n TState = unknown,\n TRequestContext extends object = Record<string, unknown>,\n TIntegrationInstance = unknown,\n> extends FarmPluginRuntimeBeforeEvent<TState, TRequestContext, TIntegrationInstance> {\n response: Response;\n durationMs: number;\n}\n\nexport interface FarmPluginRuntimeErrorEvent<\n TState = unknown,\n TRequestContext extends object = Record<string, unknown>,\n TIntegrationInstance = unknown,\n> extends FarmPluginRuntimeBeforeEvent<TState, TRequestContext, TIntegrationInstance> {\n error: unknown;\n durationMs: number;\n}\n\nexport type FarmPluginRuntimeStartEvent<\n TState = unknown,\n TIntegrationInstance = unknown,\n> = FarmPluginStateContext<TState, TIntegrationInstance>;\n\nexport interface FarmPluginRuntimeCloseEvent<TState = unknown, TIntegrationInstance = unknown>\n extends FarmPluginStateContext<TState, TIntegrationInstance>, ShutdownPayload {}\n\nexport interface FarmPluginRuntimeHooks<\n TState = unknown,\n TRequestContext extends object = Record<string, unknown>,\n TIntegrationInstance = unknown,\n> {\n start?(event: FarmPluginRuntimeStartEvent<TState, TIntegrationInstance>): MaybePromise<void>;\n context?(\n event: FarmPluginRuntimeContextEvent<TState, TIntegrationInstance>,\n ): MaybePromise<TRequestContext>;\n before?(\n event: FarmPluginRuntimeBeforeEvent<TState, TRequestContext, TIntegrationInstance>,\n ): MaybePromise<Request | Response | void>;\n after?(\n event: FarmPluginRuntimeAfterEvent<TState, TRequestContext, TIntegrationInstance>,\n ): MaybePromise<Response | void>;\n error?(\n event: FarmPluginRuntimeErrorEvent<TState, TRequestContext, TIntegrationInstance>,\n ): MaybePromise<void>;\n close?(event: FarmPluginRuntimeCloseEvent<TState, TIntegrationInstance>): MaybePromise<void>;\n}\n\nexport interface FarmPluginRuntimeRequestOptions {\n kind?: FarmPluginRuntimeKind;\n route?: FarmPluginRouteRuntimePayload;\n waitUntil?: (promise: Promise<unknown>) => void;\n}\n\nexport type FarmPluginRuntimeRequestHandler = (request: Request) => MaybePromise<Response>;\n\nexport interface FarmPluginRuntimeSession {\n request: Request;\n response?: Response;\n ctx: Readonly<Record<string, unknown>>;\n startedAt: number;\n options: FarmPluginRuntimeRequestOptions;\n waitUntil(promise: Promise<unknown>): void;\n}\n\nexport type FarmPluginDiscoveredRoute =\n | RouteDiscoveredPayload\n | ({ kind: \"middleware\" } & MiddlewareDiscoveredPayload)\n | ({ kind: \"api\" } & APIRouteDiscoveredPayload);\n\nexport interface FarmPluginRouterHooks<TState = unknown, TIntegrationInstance = unknown> {\n discovered?(\n route: FarmPluginDiscoveredRoute,\n context: FarmPluginStateContext<TState, TIntegrationInstance>,\n ): MaybePromise<void>;\n generated?(\n routes: RoutesGeneratedPayload,\n context: FarmPluginStateContext<TState, TIntegrationInstance>,\n ): MaybePromise<void>;\n before?(\n route: RouteMatchPayload,\n context: FarmPluginStateContext<TState, TIntegrationInstance>,\n ): MaybePromise<void>;\n after?(\n result: RouteMatchResultPayload,\n context: FarmPluginStateContext<TState, TIntegrationInstance>,\n ): MaybePromise<void>;\n}\n\nexport interface FarmPluginRenderHooks<TState = unknown, TIntegrationInstance = unknown> {\n before?(\n render: RenderLifecyclePayload,\n context: FarmPluginStateContext<TState, TIntegrationInstance>,\n ): MaybePromise<void>;\n html?(\n html: string,\n render: RenderLifecyclePayload,\n context: FarmPluginStateContext<TState, TIntegrationInstance>,\n ): MaybePromise<string | void>;\n}\n\nexport interface FarmPluginBuildHooks<TState = unknown, TIntegrationInstance = unknown> {\n before?(\n bundle: BundleLifecyclePayload,\n context: FarmPluginStateContext<TState, TIntegrationInstance>,\n ): MaybePromise<void>;\n configure?(\n buildConfig: any,\n context: FarmPluginStateContext<TState, TIntegrationInstance>,\n ): MaybePromise<any>;\n after?(\n result: BundleResultPayload,\n context: FarmPluginStateContext<TState, TIntegrationInstance>,\n ): MaybePromise<void>;\n}\n\nexport interface FarmPluginDevHooks<TState = unknown, TIntegrationInstance = unknown> {\n server?(\n viteServer: ViteDevServer,\n context: FarmPluginStateContext<TState, TIntegrationInstance>,\n ): MaybePromise<void>;\n update?(\n update: HMRUpdatePayload,\n context: FarmPluginStateContext<TState, TIntegrationInstance>,\n ): MaybePromise<void>;\n}\n\nexport interface FarmPluginClientConfig<\n TState = unknown,\n TPublic = undefined,\n> extends FarmClientPlugin<TState, TPublic> {\n /** Explicitly public, JSON-safe data embedded in the browser bundle. */\n public?: TPublic;\n}\n\nexport interface FarmPlugin<\n TState = any,\n TRequestContext extends object = Record<string, unknown>,\n TClientState = any,\n TClientPublic = any,\n TIntegrationInstance = unknown,\n> {\n name: string;\n version?: string;\n enforce?: \"pre\" | \"post\";\n\n /** Transform Farm config before it is resolved. */\n configure?: (\n config: FarmConfig,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => MaybePromise<FarmConfig | void>;\n /** Initialize private plugin state once for this plugin manager. */\n setup?: (context: FarmPluginSetupContext<TIntegrationInstance>) => MaybePromise<TState>;\n\n runtime?: FarmPluginRuntimeHooks<TState, TRequestContext, TIntegrationInstance>;\n router?: FarmPluginRouterHooks<TState, TIntegrationInstance>;\n render?: FarmPluginRenderHooks<TState, TIntegrationInstance>;\n build?: FarmPluginBuildHooks<TState, TIntegrationInstance>;\n dev?: FarmPluginDevHooks<TState, TIntegrationInstance>;\n /** Optional browser lifecycle for this logical plugin. */\n client?: FarmPluginClientConfig<TClientState, TClientPublic>;\n\n /** @internal Carries the expected integration instance type without runtime data. */\n readonly [FARM_PLUGIN_INTEGRATION_INSTANCE]?: (instance: TIntegrationInstance) => void;\n\n /** @deprecated Use `setup` instead. */\n init?: (context: FarmPluginContext<TIntegrationInstance>) => void | Promise<void>;\n /** @deprecated Use `runtime.start` instead. */\n ready?: (context: FarmPluginContext<TIntegrationInstance>) => void | Promise<void>;\n /** @deprecated Use `dev.server` instead. */\n devServerCreated?: (\n viteServer: ViteDevServer,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n\n /** @deprecated Use `configure` instead. */\n config?: (\n config: FarmConfig,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => FarmConfig | Promise<FarmConfig>;\n configResolved?: (\n config: FarmConfig,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `build.before` instead. */\n buildStart?: (context: FarmPluginContext<TIntegrationInstance>) => void | Promise<void>;\n /** @deprecated Use `build.after` instead. */\n buildEnd?: (context: FarmPluginContext<TIntegrationInstance>) => void | Promise<void>;\n\n /** @deprecated Use `router.discovered` instead. */\n routeDiscovered?: (\n route: RouteDiscoveredPayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `router.generated` instead. */\n routesGenerated?: (\n routes: RoutesGeneratedPayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `router.discovered` instead. */\n middlewareDiscovered?: (\n middleware: MiddlewareDiscoveredPayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `router.discovered` instead. */\n apiRouteDiscovered?: (\n route: APIRouteDiscoveredPayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `router.before` instead. */\n beforeRouteMatch?: (\n route: RouteMatchPayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `router.after` instead. */\n afterRouteMatch?: (\n result: RouteMatchResultPayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `render.before` instead. */\n beforeRender?: (\n render: RenderLifecyclePayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `render.html` instead. */\n afterRender?: (\n html: string,\n render: RenderLifecyclePayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => string | Promise<string> | void | Promise<void>;\n /** @deprecated Use `runtime.before` instead. */\n beforeApiHandler?: (\n request: Request,\n api: APIHandlerLifecyclePayload,\n context: FarmRequestPluginContext<TIntegrationInstance>,\n ) => Request | Promise<Request> | void | Promise<void>;\n /** @deprecated Use `runtime.after` instead. */\n afterApiHandler?: (\n response: Response,\n api: APIHandlerLifecyclePayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => Response | Promise<Response> | void | Promise<void>;\n onError?: (\n error: ErrorLifecyclePayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `dev.update` instead. */\n hmrUpdate?: (\n update: HMRUpdatePayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `build.before` instead. */\n beforeBundle?: (\n bundle: BundleLifecyclePayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `build.after` instead. */\n afterBundle?: (\n result: BundleResultPayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `build.configure` instead. */\n beforeNitroBuild?: (\n nitroConfig: any,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => any | Promise<any>;\n afterNitroBuild?: (\n payload: NitroBuildLifecyclePayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use `runtime.close` instead. */\n shutdown?: (\n payload: ShutdownPayload,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n\n /** @deprecated Use the Web Request based `runtime.before` hook instead. */\n beforeRequest?: (\n req: FarmRequest,\n res: FarmResponse,\n context: FarmRequestPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n /** @deprecated Use the Web Response based `runtime.after` hook instead. */\n afterResponse?: (\n req: FarmRequest,\n res: FarmResponse,\n context: FarmRequestPluginContext<TIntegrationInstance>,\n ) => void | Promise<void>;\n\n // Transform hooks\n /** @deprecated Use `render.html` instead. */\n transformHTML?: (\n html: string,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => string | Promise<string>;\n /** @deprecated Use `render.before` or `render.html` instead. */\n transformPage?: (\n component: any,\n context: FarmPluginContext<TIntegrationInstance>,\n ) => any | Promise<any>;\n}\n\nexport class PluginManager {\n private plugins: FarmPlugin[] = [];\n private hookPresence = new Map<keyof FarmPlugin, boolean>();\n private runtimeHookPresence = new Map<\"context\" | \"before\" | \"after\" | \"error\", boolean>();\n private context: FarmPluginContext;\n private pluginStates = new Map<FarmPlugin, unknown>();\n private setupComplete = false;\n private initialized = false;\n private runtimeReady = false;\n private runtimeClosed = false;\n private runtimeStartPromise?: Promise<void>;\n private runtimeClosePromise?: Promise<void>;\n private runtimeShutdownHooksRunning = false;\n private runtimeDisposers: Array<() => void | Promise<void>> = [];\n private runtimeRequestContexts = new WeakMap<Request, Readonly<Record<string, unknown>>>();\n private failedRuntimeSessions = new WeakSet<FarmPluginRuntimeSession>();\n\n constructor(context: Omit<FarmPluginContext, \"requestContext\" | \"lifecycle\">) {\n this.context = {\n ...context,\n lifecycle: {\n onShutdown: (dispose) => {\n if (typeof dispose !== \"function\") {\n throw new TypeError(\"Farm lifecycle.onShutdown requires a cleanup function\");\n }\n if (this.runtimeClosePromise || this.runtimeClosed) {\n throw new Error(\"Farm runtime cleanup cannot be registered after shutdown begins\");\n }\n\n this.runtimeDisposers.push(dispose);\n let registered = true;\n return () => {\n if (!registered) return;\n registered = false;\n const index = this.runtimeDisposers.indexOf(dispose);\n if (index >= 0) this.runtimeDisposers.splice(index, 1);\n };\n },\n },\n requestContext: {\n set(target, key, value, options) {\n setRequestContext(target as object, key, value, options);\n },\n get(target, key) {\n return getRequestContext(target as object, key);\n },\n has(target, key) {\n return hasRequestContext(target as object, key);\n },\n delete(target, key) {\n return deleteRequestContext(target as object, key);\n },\n clear(target) {\n clearRequestContext(target as object);\n },\n getAll(target, options) {\n return getRequestContextSnapshot(target as object, options);\n },\n },\n };\n }\n\n private createPluginHookContext(\n plugin: FarmPlugin,\n context: FarmPluginContext = this.context,\n ): FarmPluginContext {\n const integration = getFarmPluginIntegrationContext(plugin);\n return integration ? { ...context, integration } : context;\n }\n\n private createRequestHookContext(\n target: FarmRequest | Request,\n plugin: FarmPlugin,\n ): FarmRequestPluginContext {\n const requestContext = this.context.requestContext;\n\n return {\n ...this.createPluginHookContext(plugin),\n req: {\n set(key, value, options) {\n requestContext.set(target, key, value, options);\n },\n get(key) {\n return requestContext.get(target, key);\n },\n has(key) {\n return requestContext.has(target, key);\n },\n delete(key) {\n return requestContext.delete(target, key);\n },\n clear() {\n requestContext.clear(target);\n },\n snapshot(options) {\n return requestContext.getAll(target, options);\n },\n },\n };\n }\n\n private copyRequestStore(source: FarmRequest | Request, target: FarmRequest | Request): void {\n const requestContext = this.context.requestContext;\n const values = requestContext.getAll(source);\n const exposed = requestContext.getAll(source, { exposedOnly: true });\n\n for (const [key, value] of values) {\n requestContext.set(target, key, value, {\n exposeToPage: exposed.has(key),\n });\n }\n }\n\n private copyRuntimeRequestContext(source: Request, target: Request): void {\n const runtimeContext = this.runtimeRequestContexts.get(source);\n if (runtimeContext) {\n this.runtimeRequestContexts.set(target, runtimeContext);\n }\n }\n\n private createRuntimeBaseEvent(\n plugin: FarmPlugin,\n request: Request,\n options: FarmPluginRuntimeRequestOptions,\n waitUntil: (promise: Promise<unknown>) => void,\n ): FarmPluginRuntimeBaseEvent {\n return {\n ...this.createStateHookContext(plugin),\n request,\n req: this.createRequestHookContext(request, plugin).req,\n kind: options.kind ?? \"request\",\n route: options.route,\n signal: request.signal,\n waitUntil,\n };\n }\n\n private async createRuntimeRequestContext(\n request: Request,\n options: FarmPluginRuntimeRequestOptions,\n waitUntil: (promise: Promise<unknown>) => void,\n ): Promise<Readonly<Record<string, unknown>>> {\n const values: Record<string, unknown> = {};\n const owners = new Map<string, string>();\n\n for (const plugin of this.getSortedPlugins()) {\n const createContext = plugin.runtime?.context;\n if (!createContext) continue;\n\n const result = await createContext(\n this.createRuntimeBaseEvent(plugin, request, options, waitUntil),\n );\n if (result === undefined) continue;\n if (!result || typeof result !== \"object\" || Array.isArray(result)) {\n throw new TypeError(`Farm plugin \"${plugin.name}\" runtime.context must return an object`);\n }\n\n for (const [key, value] of Object.entries(result)) {\n const owner = owners.get(key);\n if (owner) {\n throw new Error(\n `Farm plugin context key \"${key}\" from \"${plugin.name}\" conflicts with \"${owner}\"`,\n );\n }\n owners.set(key, plugin.name);\n values[key] = value;\n }\n }\n\n const runtimeContext = Object.freeze(values);\n this.runtimeRequestContexts.set(request, runtimeContext);\n return runtimeContext;\n }\n\n private async runRuntimeErrorHooks(\n request: Request,\n error: unknown,\n ctx: Readonly<Record<string, unknown>>,\n durationMs: number,\n options: FarmPluginRuntimeRequestOptions,\n waitUntil: (promise: Promise<unknown>) => void,\n ): Promise<void> {\n for (const plugin of this.getSortedPlugins()) {\n const onError = plugin.runtime?.error;\n if (!onError) continue;\n\n try {\n await onError({\n ...this.createRuntimeBaseEvent(plugin, request, options, waitUntil),\n ctx,\n error,\n durationMs,\n });\n } catch (hookError) {\n console.error(`Farm plugin \"${plugin.name}\" runtime.error failed:`, hookError);\n }\n }\n\n try {\n await this.runHookParallel(\"onError\", {\n phase: \"runtime\",\n error,\n meta: {\n kind: options.kind ?? \"request\",\n pathname: new URL(request.url).pathname,\n durationMs,\n },\n });\n } catch (hookError) {\n console.error(\"Farm plugin onError hook failed:\", hookError);\n }\n }\n\n private createStateHookContext(\n plugin: FarmPlugin,\n context: FarmPluginContext = this.context,\n ): FarmPluginStateContext {\n return {\n ...this.createPluginHookContext(plugin, context),\n state: this.pluginStates.get(plugin),\n };\n }\n\n private getPluginHooks(\n plugin: FarmPlugin,\n hookName: keyof FarmPlugin,\n ): Array<(...args: any[]) => any> {\n const hooks: Array<(...args: any[]) => any> = [];\n const legacyHook = plugin[hookName];\n if (typeof legacyHook === \"function\") {\n hooks.push(legacyHook);\n }\n\n const withState = (context: FarmPluginContext) => this.createStateHookContext(plugin, context);\n\n switch (hookName) {\n case \"config\":\n if (plugin.configure) {\n hooks.push((config: FarmConfig, context: FarmPluginContext) =>\n plugin.configure?.(config, context),\n );\n }\n break;\n case \"ready\":\n if (plugin.runtime?.start) {\n hooks.push((context: FarmPluginContext) => plugin.runtime?.start?.(withState(context)));\n }\n break;\n case \"shutdown\":\n if (plugin.runtime?.close) {\n hooks.push((payload: ShutdownPayload, context: FarmPluginContext) =>\n plugin.runtime?.close?.({\n ...withState(context),\n reason: payload.reason,\n }),\n );\n }\n break;\n case \"routeDiscovered\":\n if (plugin.router?.discovered) {\n hooks.push((route: RouteDiscoveredPayload, context: FarmPluginContext) =>\n plugin.router?.discovered?.(route, withState(context)),\n );\n }\n break;\n case \"middlewareDiscovered\":\n if (plugin.router?.discovered) {\n hooks.push((route: MiddlewareDiscoveredPayload, context: FarmPluginContext) =>\n plugin.router?.discovered?.({ kind: \"middleware\", ...route }, withState(context)),\n );\n }\n break;\n case \"apiRouteDiscovered\":\n if (plugin.router?.discovered) {\n hooks.push((route: APIRouteDiscoveredPayload, context: FarmPluginContext) =>\n plugin.router?.discovered?.({ kind: \"api\", ...route }, withState(context)),\n );\n }\n break;\n case \"routesGenerated\":\n if (plugin.router?.generated) {\n hooks.push((routes: RoutesGeneratedPayload, context: FarmPluginContext) =>\n plugin.router?.generated?.(routes, withState(context)),\n );\n }\n break;\n case \"beforeRouteMatch\":\n if (plugin.router?.before) {\n hooks.push((route: RouteMatchPayload, context: FarmPluginContext) =>\n plugin.router?.before?.(route, withState(context)),\n );\n }\n break;\n case \"afterRouteMatch\":\n if (plugin.router?.after) {\n hooks.push((result: RouteMatchResultPayload, context: FarmPluginContext) =>\n plugin.router?.after?.(result, withState(context)),\n );\n }\n break;\n case \"beforeRender\":\n if (plugin.render?.before) {\n hooks.push((render: RenderLifecyclePayload, context: FarmPluginContext) =>\n plugin.render?.before?.(render, withState(context)),\n );\n }\n break;\n case \"afterRender\":\n if (plugin.render?.html) {\n hooks.push((html: string, render: RenderLifecyclePayload, context: FarmPluginContext) =>\n plugin.render?.html?.(html, render, withState(context)),\n );\n }\n break;\n case \"beforeBundle\":\n if (plugin.build?.before) {\n hooks.push((bundle: BundleLifecyclePayload, context: FarmPluginContext) =>\n plugin.build?.before?.(bundle, withState(context)),\n );\n }\n break;\n case \"beforeNitroBuild\":\n if (plugin.build?.configure) {\n hooks.push((buildConfig: any, context: FarmPluginContext) =>\n plugin.build?.configure?.(buildConfig, withState(context)),\n );\n }\n break;\n case \"afterBundle\":\n if (plugin.build?.after) {\n hooks.push((result: BundleResultPayload, context: FarmPluginContext) =>\n plugin.build?.after?.(result, withState(context)),\n );\n }\n break;\n case \"devServerCreated\":\n if (plugin.dev?.server) {\n hooks.push((server: ViteDevServer, context: FarmPluginContext) =>\n plugin.dev?.server?.(server, withState(context)),\n );\n }\n break;\n case \"hmrUpdate\":\n if (plugin.dev?.update) {\n hooks.push((update: HMRUpdatePayload, context: FarmPluginContext) =>\n plugin.dev?.update?.(update, withState(context)),\n );\n }\n break;\n }\n\n return hooks;\n }\n\n private getHookContext(\n plugin: FarmPlugin,\n hookName: keyof FarmPlugin,\n args: any[],\n ): FarmPluginContext {\n if (\n hookName === \"beforeRequest\" ||\n hookName === \"afterResponse\" ||\n hookName === \"beforeApiHandler\"\n ) {\n const target = args[0];\n if (target && typeof target === \"object\") {\n return this.createRequestHookContext(target, plugin);\n }\n }\n\n return this.createPluginHookContext(plugin);\n }\n\n addPlugin(plugin: FarmPlugin) {\n this.plugins.push(plugin);\n this.hookPresence.clear();\n this.runtimeHookPresence.clear();\n }\n\n addPlugins(plugins: FarmPlugin[]) {\n for (const plugin of plugins) {\n this.addPlugin(plugin);\n }\n }\n\n getPlugins(): FarmPlugin[] {\n return [...this.plugins];\n }\n\n getSortedPlugins(): FarmPlugin[] {\n const pre = this.plugins.filter((p) => p.enforce === \"pre\");\n const normal = this.plugins.filter((p) => !p.enforce);\n const post = this.plugins.filter((p) => p.enforce === \"post\");\n return [...pre, ...normal, ...post];\n }\n\n hasHook(hookName: keyof FarmPlugin): boolean {\n const cached = this.hookPresence.get(hookName);\n if (cached !== undefined) return cached;\n\n const present = this.plugins.some((plugin) => this.getPluginHooks(plugin, hookName).length > 0);\n this.hookPresence.set(hookName, present);\n return present;\n }\n\n hasRuntimeHook(hookName: \"context\" | \"before\" | \"after\" | \"error\"): boolean {\n const cached = this.runtimeHookPresence.get(hookName);\n if (cached !== undefined) return cached;\n\n const present = this.plugins.some((plugin) => typeof plugin.runtime?.[hookName] === \"function\");\n this.runtimeHookPresence.set(hookName, present);\n return present;\n }\n\n hasRuntimeRequestHooks(): boolean {\n return (\n this.hasRuntimeHook(\"context\") ||\n this.hasRuntimeHook(\"before\") ||\n this.hasRuntimeHook(\"after\") ||\n this.hasRuntimeHook(\"error\")\n );\n }\n\n copyRequestContext(source: FarmRequest | Request, target: FarmRequest | Request): void {\n this.copyRequestStore(source, target);\n if (source instanceof Request && target instanceof Request) {\n this.copyRuntimeRequestContext(source, target);\n }\n }\n\n async setupPlugins(): Promise<void> {\n if (this.setupComplete) return;\n\n for (const plugin of this.getSortedPlugins()) {\n if (!plugin.setup) continue;\n const state = await plugin.setup({\n ...this.createPluginHookContext(plugin),\n env: getResolvedEnv(),\n });\n this.pluginStates.set(plugin, state);\n }\n\n this.setupComplete = true;\n }\n\n async startRuntime(): Promise<void> {\n if (this.runtimeReady) return;\n if (this.runtimeStartPromise) return this.runtimeStartPromise;\n\n this.runtimeStartPromise = (async () => {\n if (!this.initialized) {\n await this.runHookParallel(\"init\");\n }\n await this.setupPlugins();\n if (!this.runtimeReady) {\n await this.runHookParallel(\"ready\");\n }\n })();\n\n try {\n await this.runtimeStartPromise;\n } catch (error) {\n this.runtimeStartPromise = undefined;\n throw error;\n }\n }\n\n async closeRuntime(reason = \"runtime-closed\"): Promise<void> {\n if (this.runtimeClosePromise) return this.runtimeClosePromise;\n if (this.runtimeClosed) return;\n\n this.runtimeClosePromise = (async () => {\n const errors: unknown[] = [];\n this.runtimeShutdownHooksRunning = true;\n try {\n await this.runHookParallel(\"shutdown\", { reason });\n } catch (error) {\n if (error instanceof FarmRuntimeShutdownError) errors.push(...error.errors);\n else errors.push(error);\n } finally {\n this.runtimeShutdownHooksRunning = false;\n }\n\n const disposers = this.runtimeDisposers.splice(0).reverse();\n for (const dispose of disposers) {\n try {\n await dispose();\n } catch (error) {\n errors.push(error);\n }\n }\n\n this.runtimeClosed = true;\n if (errors.length > 0) {\n throw new FarmRuntimeShutdownError(\"Farm runtime shutdown failed\", errors);\n }\n })();\n return this.runtimeClosePromise;\n }\n\n async beginRuntimeRequest(\n request: Request,\n options: FarmPluginRuntimeRequestOptions = {},\n ): Promise<FarmPluginRuntimeSession> {\n await this.startRuntime();\n\n const startedAt = Date.now();\n const waitUntil = options.waitUntil\n ? (promise: Promise<unknown>) => options.waitUntil?.(Promise.resolve(promise))\n : (promise: Promise<unknown>) => {\n void Promise.resolve(promise).catch(() => {});\n };\n let activeRequest = request;\n let runtimeContext: Readonly<Record<string, unknown>> = Object.freeze({});\n\n try {\n runtimeContext = await this.createRuntimeRequestContext(activeRequest, options, waitUntil);\n\n let response: Response | undefined;\n for (const plugin of this.getSortedPlugins()) {\n const before = plugin.runtime?.before;\n if (!before) continue;\n\n const result = await before({\n ...this.createRuntimeBaseEvent(plugin, activeRequest, options, waitUntil),\n ctx: runtimeContext,\n });\n\n if (result instanceof Request) {\n this.copyRequestStore(activeRequest, result);\n this.copyRuntimeRequestContext(activeRequest, result);\n activeRequest = result;\n continue;\n }\n if (result instanceof Response) {\n response = result;\n break;\n }\n if (result !== undefined) {\n throw new TypeError(\n `Farm plugin \"${plugin.name}\" runtime.before must return a Request, Response, or undefined`,\n );\n }\n }\n\n return {\n request: activeRequest,\n response,\n ctx: runtimeContext,\n startedAt,\n options,\n waitUntil,\n };\n } catch (error) {\n await this.runRuntimeErrorHooks(\n activeRequest,\n error,\n runtimeContext,\n Date.now() - startedAt,\n options,\n waitUntil,\n );\n throw error;\n }\n }\n\n async endRuntimeRequest(\n session: FarmPluginRuntimeSession,\n initialResponse: Response,\n ): Promise<Response> {\n let response = initialResponse;\n\n try {\n for (const plugin of this.getSortedPlugins()) {\n const after = plugin.runtime?.after;\n if (!after) continue;\n\n const result = await after({\n ...this.createRuntimeBaseEvent(\n plugin,\n session.request,\n session.options,\n session.waitUntil,\n ),\n ctx: session.ctx,\n response,\n durationMs: Date.now() - session.startedAt,\n });\n if (result !== undefined) {\n if (!(result instanceof Response)) {\n throw new TypeError(\n `Farm plugin \"${plugin.name}\" runtime.after must return a Response or undefined`,\n );\n }\n response = result;\n }\n }\n\n return response;\n } catch (error) {\n await this.failRuntimeRequest(session, error);\n throw error;\n }\n }\n\n async failRuntimeRequest(session: FarmPluginRuntimeSession, error: unknown): Promise<void> {\n if (this.failedRuntimeSessions.has(session)) return;\n this.failedRuntimeSessions.add(session);\n await this.runRuntimeErrorHooks(\n session.request,\n error,\n session.ctx,\n Date.now() - session.startedAt,\n session.options,\n session.waitUntil,\n );\n }\n\n async runRuntimeRequest(\n request: Request,\n handler: FarmPluginRuntimeRequestHandler,\n options: FarmPluginRuntimeRequestOptions = {},\n ): Promise<Response> {\n const session = await this.beginRuntimeRequest(request, options);\n try {\n const response = session.response ?? (await handler(session.request));\n if (!(response instanceof Response)) {\n throw new TypeError(\"Farm plugin runtime handlers must return a Response\");\n }\n return await this.endRuntimeRequest(session, response);\n } catch (error) {\n await this.failRuntimeRequest(session, error);\n throw error;\n }\n }\n\n async runHook<K extends keyof FarmPlugin>(hookName: K, ...args: any[]): Promise<any> {\n const plugins = this.getSortedPlugins();\n\n for (const plugin of plugins) {\n for (const hook of this.getPluginHooks(plugin, hookName)) {\n const hookContext = this.getHookContext(plugin, hookName, args);\n const result = await (hook as any).apply(plugin, [...args, hookContext]);\n if (result !== undefined) {\n return result;\n }\n }\n }\n }\n\n async runHookSerial<K extends keyof FarmPlugin>(\n hookName: K,\n initialValue: any,\n ...args: any[]\n ): Promise<any> {\n const plugins = this.getSortedPlugins();\n let value = initialValue;\n\n for (const plugin of plugins) {\n for (const hook of this.getPluginHooks(plugin, hookName)) {\n const hookArgs = [value, ...args];\n const hookContext = this.getHookContext(plugin, hookName, hookArgs);\n const result = await (hook as any).apply(plugin, [...hookArgs, hookContext]);\n if (result !== undefined) {\n if (\n hookName === \"beforeApiHandler\" &&\n result !== value &&\n value &&\n result &&\n typeof value === \"object\" &&\n typeof result === \"object\"\n ) {\n this.copyRequestStore(value as FarmRequest | Request, result as FarmRequest | Request);\n }\n value = result;\n }\n }\n }\n\n return value;\n }\n\n async runHookParallel<K extends keyof FarmPlugin>(hookName: K, ...args: any[]): Promise<boolean> {\n return this.runHookParallelFiltered(hookName, () => true, ...args);\n }\n\n /** @internal Runs hooks for only the plugins selected by the runtime adapter. */\n async runHookParallelFiltered<K extends keyof FarmPlugin>(\n hookName: K,\n include: (plugin: FarmPlugin) => boolean,\n ...args: any[]\n ): Promise<boolean> {\n if (hookName === \"shutdown\" && !this.runtimeShutdownHooksRunning) {\n await this.closeRuntime(args[0]?.reason);\n return false;\n }\n\n const plugins = this.getSortedPlugins().filter(include);\n\n // Run selected hooks sequentially for deterministic execution and short-circuiting.\n const sequentialHooks = new Set<keyof FarmPlugin>([\n \"ready\",\n \"shutdown\",\n \"beforeRequest\",\n \"afterResponse\",\n \"beforeApiHandler\",\n \"afterApiHandler\",\n \"beforeRouteMatch\",\n \"afterRouteMatch\",\n \"beforeRender\",\n \"afterRender\",\n ]);\n\n if (sequentialHooks.has(hookName)) {\n const shutdownErrors: unknown[] = [];\n for (const plugin of plugins) {\n for (const hook of this.getPluginHooks(plugin, hookName)) {\n // Check if response is already sent (only for beforeRequest)\n if (hookName === \"beforeRequest\") {\n const res = args[1];\n if (res && res.writableEnded) {\n return true;\n }\n }\n\n const hookContext = this.getHookContext(plugin, hookName, args);\n try {\n await (hook as any).apply(plugin, [...args, hookContext]);\n } catch (error) {\n if (hookName !== \"shutdown\") throw error;\n shutdownErrors.push(error);\n }\n\n // Check again after plugin execution (only for beforeRequest)\n if (hookName === \"beforeRequest\") {\n const res = args[1];\n if (res && res.writableEnded) {\n return true;\n }\n }\n }\n }\n if (hookName === \"shutdown\" && shutdownErrors.length > 0) {\n throw new FarmRuntimeShutdownError(\"Farm plugin shutdown hooks failed\", shutdownErrors);\n }\n } else {\n // Run other hooks in parallel\n const promises: Promise<any>[] = [];\n for (const plugin of plugins) {\n for (const hook of this.getPluginHooks(plugin, hookName)) {\n const hookContext = this.getHookContext(plugin, hookName, args);\n promises.push((hook as any).apply(plugin, [...args, hookContext]));\n }\n }\n await Promise.all(promises);\n }\n\n if (hookName === \"init\") this.initialized = true;\n if (hookName === \"ready\") this.runtimeReady = true;\n\n return false;\n }\n\n updateContext(updates: Partial<FarmPluginContext>) {\n this.context = {\n ...this.context,\n ...updates,\n requestContext: this.context.requestContext,\n };\n }\n}\n\nexport function definePlugin<\n TState = undefined,\n TRequestContext extends object = Record<string, never>,\n TClientState = unknown,\n TClientPublic = undefined,\n TIntegrationInstance = unknown,\n>(\n plugin: FarmPlugin<TState, TRequestContext, TClientState, TClientPublic, TIntegrationInstance>,\n): FarmPlugin<TState, TRequestContext, TClientState, TClientPublic, TIntegrationInstance> {\n return plugin;\n}\n\nexport namespace definePlugin {\n /** Bind an integration instance type while preserving inference for plugin state and context. */\n export function forIntegration<TIntegrationInstance>() {\n return function defineBoundPlugin<\n TState = undefined,\n TRequestContext extends object = Record<string, never>,\n TClientState = unknown,\n TClientPublic = undefined,\n >(\n plugin: FarmPlugin<\n TState,\n TRequestContext,\n TClientState,\n TClientPublic,\n TIntegrationInstance\n >,\n ): FarmPlugin<TState, TRequestContext, TClientState, TClientPublic, TIntegrationInstance> {\n return plugin;\n };\n }\n}\nexport { farmPlugin } from \"./vite\";\n"],"mappings":"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","names":["definePlugin"]}
@@ -15,6 +15,20 @@ import {
15
15
  __name
16
16
  } from "./chunk-CGILA3WO.mjs";
17
17
 
18
+ // src/plugin-integration-context.ts
19
+ var FARM_PLUGIN_INTEGRATION_CONTEXT = /* @__PURE__ */ Symbol.for("@farm.js/core/plugin-integration-context");
20
+ function setFarmPluginIntegrationContext(plugin, integration) {
21
+ Object.defineProperty(plugin, FARM_PLUGIN_INTEGRATION_CONTEXT, {
22
+ value: integration
23
+ });
24
+ }
25
+ __name(setFarmPluginIntegrationContext, "setFarmPluginIntegrationContext");
26
+ function getFarmPluginIntegrationContext(plugin) {
27
+ const value = plugin[FARM_PLUGIN_INTEGRATION_CONTEXT];
28
+ return value && typeof value === "object" ? value : void 0;
29
+ }
30
+ __name(getFarmPluginIntegrationContext, "getFarmPluginIntegrationContext");
31
+
18
32
  // src/request-context.ts
19
33
  var REQUEST_CONTEXT_STORE_KEY = /* @__PURE__ */ Symbol.for("farm.requestContextStore");
20
34
  function getRequestContextStore() {
@@ -95,11 +109,17 @@ __name(defineIntegrationSchema, "defineIntegrationSchema");
95
109
  var FARM_INTEGRATION_PLUGIN_SERVER_RUNTIME = /* @__PURE__ */ Symbol.for(
96
110
  "@farm.js/core/integration-plugin-server-runtime"
97
111
  );
112
+ var FARM_INTEGRATION_PLUGIN_OWNER = /* @__PURE__ */ Symbol.for("@farm.js/core/integration-plugin-owner");
98
113
  function getFarmIntegrationPluginServerRuntime(plugin) {
99
114
  const value = plugin[FARM_INTEGRATION_PLUGIN_SERVER_RUNTIME];
100
115
  return typeof value === "boolean" ? value : void 0;
101
116
  }
102
117
  __name(getFarmIntegrationPluginServerRuntime, "getFarmIntegrationPluginServerRuntime");
118
+ function getFarmIntegrationPluginOwner(plugin) {
119
+ const value = plugin[FARM_INTEGRATION_PLUGIN_OWNER];
120
+ return value && typeof value === "object" ? value : void 0;
121
+ }
122
+ __name(getFarmIntegrationPluginOwner, "getFarmIntegrationPluginOwner");
103
123
  function defineTypedIntegrationRoute(method, path, input) {
104
124
  return {
105
125
  path,
@@ -259,14 +279,75 @@ function resolveIntegrationPlugins(integrations) {
259
279
  if (!integration || !isFarmIntegration(integration)) {
260
280
  continue;
261
281
  }
262
- plugins.push(createIntegrationPlugin(key, integration));
263
- if (integration.plugins?.length) {
264
- plugins.push(...integration.plugins);
265
- }
282
+ const owner = createIntegrationPluginOwner(key, integration, "lifecycle");
283
+ plugins.push(withIntegrationPluginOwner(createIntegrationPlugin(key, integration), owner));
284
+ plugins.push(...resolveIntegrationPluginContributions(key, integration));
266
285
  }
267
286
  return plugins;
268
287
  }
269
288
  __name(resolveIntegrationPlugins, "resolveIntegrationPlugins");
289
+ function resolveIntegrationPluginContributions(key, integration) {
290
+ const contributions = integration.plugins;
291
+ if (!contributions) return [];
292
+ if (!Array.isArray(contributions)) {
293
+ throw new TypeError(`Integration "${key}" plugins must be an array`);
294
+ }
295
+ const names = /* @__PURE__ */ new Set();
296
+ return contributions.map((plugin, index) => {
297
+ if (!plugin || typeof plugin !== "object" || typeof plugin.name !== "string") {
298
+ throw new TypeError(`Integration "${key}" plugin at index ${index} is invalid`);
299
+ }
300
+ const name = plugin.name.trim();
301
+ if (!name) {
302
+ throw new TypeError(`Integration "${key}" plugin at index ${index} requires a name`);
303
+ }
304
+ if (names.has(name)) {
305
+ throw new Error(`Integration "${key}" contributes duplicate plugin name "${name}"`);
306
+ }
307
+ names.add(name);
308
+ return withIntegrationPluginOwner(
309
+ plugin,
310
+ createIntegrationPluginOwner(key, integration, "contribution"),
311
+ createIntegrationPluginContext(key, integration)
312
+ );
313
+ });
314
+ }
315
+ __name(resolveIntegrationPluginContributions, "resolveIntegrationPluginContributions");
316
+ function createIntegrationPluginOwner(key, integration, source) {
317
+ return Object.freeze({
318
+ key,
319
+ category: integration.category,
320
+ type: integration.type,
321
+ source,
322
+ serverRuntime: integration.serverRuntime !== false
323
+ });
324
+ }
325
+ __name(createIntegrationPluginOwner, "createIntegrationPluginOwner");
326
+ function createIntegrationPluginContext(key, integration) {
327
+ return Object.freeze({
328
+ key,
329
+ category: integration.category,
330
+ type: integration.type,
331
+ instance: integration.instance,
332
+ serverRuntime: integration.serverRuntime !== false
333
+ });
334
+ }
335
+ __name(createIntegrationPluginContext, "createIntegrationPluginContext");
336
+ function withIntegrationPluginOwner(plugin, owner, integration) {
337
+ const descriptors = Object.getOwnPropertyDescriptors(plugin);
338
+ Reflect.deleteProperty(descriptors, FARM_INTEGRATION_PLUGIN_OWNER);
339
+ Reflect.deleteProperty(descriptors, FARM_INTEGRATION_PLUGIN_SERVER_RUNTIME);
340
+ const ownedPlugin = Object.create(Object.getPrototypeOf(plugin), descriptors);
341
+ Object.defineProperty(ownedPlugin, FARM_INTEGRATION_PLUGIN_OWNER, { value: owner });
342
+ Object.defineProperty(ownedPlugin, FARM_INTEGRATION_PLUGIN_SERVER_RUNTIME, {
343
+ value: owner.serverRuntime
344
+ });
345
+ if (integration) {
346
+ setFarmPluginIntegrationContext(ownedPlugin, integration);
347
+ }
348
+ return ownedPlugin;
349
+ }
350
+ __name(withIntegrationPluginOwner, "withIntegrationPluginOwner");
270
351
  function getIntegrationProviders(integrations) {
271
352
  if (!integrations) {
272
353
  return [];
@@ -1903,6 +1984,7 @@ function normalizeMatcher(matcher) {
1903
1984
  __name(normalizeMatcher, "normalizeMatcher");
1904
1985
 
1905
1986
  export {
1987
+ getFarmPluginIntegrationContext,
1906
1988
  setRequestContext,
1907
1989
  getRequestContext,
1908
1990
  hasRequestContext,
@@ -1912,6 +1994,7 @@ export {
1912
1994
  FARM_INTEGRATION_INTERNAL_DISPATCH_CONTEXT_KEY,
1913
1995
  defineIntegrationSchema,
1914
1996
  getFarmIntegrationPluginServerRuntime,
1997
+ getFarmIntegrationPluginOwner,
1915
1998
  createIntegrationRoute,
1916
1999
  integrationRoute,
1917
2000
  defineIntegration,
@@ -1928,4 +2011,4 @@ export {
1928
2011
  getRegisteredIntegrationAPIManifest,
1929
2012
  dispatchIntegrationRequest
1930
2013
  };
1931
- //# sourceMappingURL=chunk-SBLHLAE3.mjs.map
2014
+ //# sourceMappingURL=chunk-ZYDQS2TT.mjs.map