@farm.js/core 0.1.0-beta.5 → 0.1.0-beta.7

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 (149) hide show
  1. package/dist/agent-runtime.d.mts +2 -2
  2. package/dist/agent-runtime.d.ts +2 -2
  3. package/dist/api/route-manager.d.mts +3 -3
  4. package/dist/api/route-manager.d.ts +3 -3
  5. package/dist/api.d.mts +3 -3
  6. package/dist/api.d.ts +3 -3
  7. package/dist/{app-CakAr8Be.d.mts → app-BWtqQu3R.d.mts} +6 -4
  8. package/dist/app-markdown.cjs +31 -7
  9. package/dist/app-markdown.cjs.map +1 -1
  10. package/dist/app-markdown.d.mts +2 -2
  11. package/dist/app-markdown.d.ts +2 -2
  12. package/dist/app-markdown.mjs +2 -1
  13. package/dist/{app-BjN-da13.d.ts → app-xltejvLY.d.ts} +6 -4
  14. package/dist/{chunk-A2LUXHD2.mjs → chunk-5VYHFKWE.mjs} +214 -58
  15. package/dist/chunk-5VYHFKWE.mjs.map +1 -0
  16. package/dist/{chunk-EEABSBKK.mjs → chunk-6F5OI5GA.mjs} +2 -2
  17. package/dist/chunk-6F5OI5GA.mjs.map +1 -0
  18. package/dist/{chunk-LLC7BNXW.mjs → chunk-7FBJLMQH.mjs} +73 -10
  19. package/dist/chunk-7FBJLMQH.mjs.map +1 -0
  20. package/dist/{chunk-NM3CRAAL.mjs → chunk-B4W3BNTL.mjs} +24 -8
  21. package/dist/chunk-B4W3BNTL.mjs.map +1 -0
  22. package/dist/{chunk-BHG3LVHH.mjs → chunk-CGIXMLSY.mjs} +15 -7
  23. package/dist/chunk-CGIXMLSY.mjs.map +1 -0
  24. package/dist/{chunk-C3DLZMBU.mjs → chunk-DJSGLHCN.mjs} +2 -2
  25. package/dist/{chunk-2NHCNRF6.mjs → chunk-GFMBXLGP.mjs} +56 -20
  26. package/dist/chunk-GFMBXLGP.mjs.map +1 -0
  27. package/dist/chunk-I4CUBGVF.mjs +93 -0
  28. package/dist/chunk-I4CUBGVF.mjs.map +1 -0
  29. package/dist/{chunk-HNIQFZKB.mjs → chunk-ME4MO2RJ.mjs} +27 -37
  30. package/dist/chunk-ME4MO2RJ.mjs.map +1 -0
  31. package/dist/{chunk-RSKVYESE.mjs → chunk-RQ633A5I.mjs} +1 -1
  32. package/dist/chunk-RQ633A5I.mjs.map +1 -0
  33. package/dist/{chunk-2CUKEMVR.mjs → chunk-WDU6QXNK.mjs} +1 -1
  34. package/dist/chunk-WDU6QXNK.mjs.map +1 -0
  35. package/dist/{chunk-QGQX7SFC.mjs → chunk-ZVWA4ZQ3.mjs} +17 -8
  36. package/dist/chunk-ZVWA4ZQ3.mjs.map +1 -0
  37. package/dist/{client-plugins-DQQ1adXM.d.mts → client-plugins-BI2R6Eae.d.mts} +74 -3
  38. package/dist/{client-plugins-Cw4qUGsw.d.ts → client-plugins-DU9oMspX.d.ts} +74 -3
  39. package/dist/client-plugins.d.mts +2 -2
  40. package/dist/client-plugins.d.ts +2 -2
  41. package/dist/client.cjs.map +1 -1
  42. package/dist/client.d.mts +2 -2
  43. package/dist/client.d.ts +2 -2
  44. package/dist/client.mjs +1 -1
  45. package/dist/config.d.mts +2 -2
  46. package/dist/config.d.ts +2 -2
  47. package/dist/{devtools-LVC3VB5P.mjs → devtools-REQTS3I7.mjs} +6 -5
  48. package/dist/{devtools-LVC3VB5P.mjs.map → devtools-REQTS3I7.mjs.map} +1 -1
  49. package/dist/docs.cjs +51 -56
  50. package/dist/docs.cjs.map +1 -1
  51. package/dist/docs.mjs +6 -5
  52. package/dist/env-types.cjs +14 -5
  53. package/dist/env-types.cjs.map +1 -1
  54. package/dist/env-types.d.mts +2 -1
  55. package/dist/env-types.d.ts +2 -1
  56. package/dist/env-types.mjs +3 -1
  57. package/dist/env.cjs.map +1 -1
  58. package/dist/env.d.mts +1 -1
  59. package/dist/env.d.ts +1 -1
  60. package/dist/env.mjs +1 -1
  61. package/dist/i18n/client.d.mts +2 -2
  62. package/dist/i18n/client.d.ts +2 -2
  63. package/dist/i18n/index.d.mts +3 -3
  64. package/dist/i18n/index.d.ts +3 -3
  65. package/dist/i18n/server.d.mts +5 -5
  66. package/dist/i18n/server.d.ts +5 -5
  67. package/dist/index.cjs +931 -567
  68. package/dist/index.cjs.map +1 -1
  69. package/dist/index.d.mts +15 -13
  70. package/dist/index.d.ts +15 -13
  71. package/dist/index.mjs +23 -16
  72. package/dist/index.mjs.map +1 -1
  73. package/dist/integrations.d.mts +2 -2
  74. package/dist/integrations.d.ts +2 -2
  75. package/dist/internal/build-runtime.cjs +643 -322
  76. package/dist/internal/build-runtime.cjs.map +1 -1
  77. package/dist/internal/build-runtime.d.mts +4 -4
  78. package/dist/internal/build-runtime.d.ts +4 -4
  79. package/dist/internal/build-runtime.mjs +11 -10
  80. package/dist/internal/config-runtime.cjs +135 -39
  81. package/dist/internal/config-runtime.cjs.map +1 -1
  82. package/dist/internal/config-runtime.d.mts +3 -3
  83. package/dist/internal/config-runtime.d.ts +3 -3
  84. package/dist/internal/config-runtime.mjs +5 -4
  85. package/dist/internal/production-runtime.d.mts +6 -6
  86. package/dist/internal/production-runtime.d.ts +6 -6
  87. package/dist/markdown.cjs +73 -8
  88. package/dist/markdown.cjs.map +1 -1
  89. package/dist/markdown.d.mts +19 -2
  90. package/dist/markdown.d.ts +19 -2
  91. package/dist/markdown.mjs +5 -1
  92. package/dist/{metadata-BAPg_Nmo.d.ts → metadata-Cm9ujH4I.d.ts} +1 -1
  93. package/dist/{metadata-_6i9oFG3.d.mts → metadata-DacXbnLA.d.mts} +1 -1
  94. package/dist/middleware.d.mts +4 -4
  95. package/dist/middleware.d.ts +4 -4
  96. package/dist/plugin.cjs +679 -434
  97. package/dist/plugin.cjs.map +1 -1
  98. package/dist/plugin.d.mts +2 -2
  99. package/dist/plugin.d.ts +2 -2
  100. package/dist/plugin.mjs +8 -7
  101. package/dist/{production-runtime-DPfgMV9Y.d.mts → production-runtime-4KKq1AVC.d.mts} +2 -2
  102. package/dist/{production-runtime-BoJDc5mc.d.ts → production-runtime-DRsWDN2x.d.ts} +2 -2
  103. package/dist/{request-BrFBuc8G.d.mts → request-Dsq4kGW0.d.mts} +1 -1
  104. package/dist/{request-BslSZIRz.d.ts → request-udtobOLv.d.ts} +1 -1
  105. package/dist/request.d.mts +2 -2
  106. package/dist/request.d.ts +2 -2
  107. package/dist/{resolver-DlOPpjkB.d.mts → resolver-DJqjLMg_.d.mts} +1 -1
  108. package/dist/{resolver-C6iecsDV.d.ts → resolver-IH4RmPEl.d.ts} +1 -1
  109. package/dist/routes.d.mts +2 -2
  110. package/dist/routes.d.ts +2 -2
  111. package/dist/{runtime-DeAAZ6gO.d.mts → runtime-Cxpq6xZN.d.mts} +2 -2
  112. package/dist/{runtime-B6GvwDS1.d.ts → runtime-bv63eUiO.d.ts} +2 -2
  113. package/dist/server-plugins.d.mts +3 -3
  114. package/dist/server-plugins.d.ts +3 -3
  115. package/dist/server.cjs +731 -447
  116. package/dist/server.cjs.map +1 -1
  117. package/dist/server.d.mts +9 -9
  118. package/dist/server.d.ts +9 -9
  119. package/dist/server.mjs +9 -8
  120. package/dist/server.mjs.map +1 -1
  121. package/dist/testing.d.mts +2 -2
  122. package/dist/testing.d.ts +2 -2
  123. package/dist/{types-BH1lhg5G.d.mts → types-BMxWr97v.d.mts} +2 -2
  124. package/dist/{types-BH1lhg5G.d.ts → types-BMxWr97v.d.ts} +2 -2
  125. package/dist/{utils-Drsyz1Vj.d.ts → utils-B-cUHwoK.d.ts} +1 -1
  126. package/dist/{utils-CHXlMDkg.d.mts → utils-Cm41AefV.d.mts} +1 -1
  127. package/dist/version.cjs +1 -1
  128. package/dist/version.cjs.map +1 -1
  129. package/dist/version.mjs +1 -1
  130. package/dist/vite.cjs +682 -437
  131. package/dist/vite.cjs.map +1 -1
  132. package/dist/vite.d.mts +2 -2
  133. package/dist/vite.d.ts +2 -2
  134. package/dist/vite.mjs +6 -5
  135. package/package.json +3 -2
  136. package/types/client.d.ts +1 -1
  137. package/types/image.d.ts +4 -0
  138. package/types/images.d.ts +59 -0
  139. package/dist/chunk-2CUKEMVR.mjs.map +0 -1
  140. package/dist/chunk-2NHCNRF6.mjs.map +0 -1
  141. package/dist/chunk-A2LUXHD2.mjs.map +0 -1
  142. package/dist/chunk-BHG3LVHH.mjs.map +0 -1
  143. package/dist/chunk-EEABSBKK.mjs.map +0 -1
  144. package/dist/chunk-HNIQFZKB.mjs.map +0 -1
  145. package/dist/chunk-LLC7BNXW.mjs.map +0 -1
  146. package/dist/chunk-NM3CRAAL.mjs.map +0 -1
  147. package/dist/chunk-QGQX7SFC.mjs.map +0 -1
  148. package/dist/chunk-RSKVYESE.mjs.map +0 -1
  149. /package/dist/{chunk-C3DLZMBU.mjs.map → chunk-DJSGLHCN.mjs.map} +0 -0
@@ -0,0 +1,93 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-CGILA3WO.mjs";
4
+
5
+ // src/auth-config.ts
6
+ import { createRequire } from "module";
7
+ import path from "path";
8
+ import { pathToFileURL } from "url";
9
+ function resolveFarmAuthConfig(input) {
10
+ const config = input === true ? {} : input && typeof input === "object" ? input : {};
11
+ const passwordConfig = typeof config.emailAndPassword === "object" ? config.emailAndPassword : {};
12
+ const resolved = {
13
+ enabled: input !== void 0 && input !== false && config.enabled !== false,
14
+ appName: config.appName,
15
+ basePath: normalizeBasePath(config.basePath),
16
+ emailAndPassword: {
17
+ enabled: config.emailAndPassword !== false,
18
+ requireEmailVerification: passwordConfig.requireEmailVerification ?? false,
19
+ minPasswordLength: passwordConfig.minPasswordLength ?? 8,
20
+ maxPasswordLength: passwordConfig.maxPasswordLength ?? 128
21
+ },
22
+ session: {
23
+ expiresIn: config.session?.expiresIn ?? 60 * 60 * 24 * 7,
24
+ updateAge: config.session?.updateAge ?? 60 * 60 * 24
25
+ },
26
+ database: {
27
+ url: config.database?.url,
28
+ path: config.database?.path || ".farm/auth.sqlite",
29
+ migrateInDevelopment: config.database?.migrateInDevelopment ?? true
30
+ }
31
+ };
32
+ validateFarmAuthConfig(resolved);
33
+ return resolved;
34
+ }
35
+ __name(resolveFarmAuthConfig, "resolveFarmAuthConfig");
36
+ async function resolveFarmAuthIntegration(config, options) {
37
+ if (!config.enabled) return void 0;
38
+ const root = path.resolve(options.root);
39
+ let modulePath;
40
+ try {
41
+ const resolveFromApp = createRequire(path.join(root, "package.json"));
42
+ modulePath = resolveFromApp.resolve("@farm.js/auth/internal");
43
+ } catch {
44
+ throw new Error(
45
+ "The `auth` config requires @farm.js/auth. Install it with `pnpm add @farm.js/auth` and try again."
46
+ );
47
+ }
48
+ const runtime = await import(
49
+ /* @vite-ignore */
50
+ pathToFileURL(modulePath).href
51
+ );
52
+ if (typeof runtime.createFarmAuthIntegration !== "function") {
53
+ throw new Error(
54
+ "The installed @farm.js/auth package is incompatible with this version of @farm.js/core."
55
+ );
56
+ }
57
+ return runtime.createFarmAuthIntegration(config, {
58
+ ...options,
59
+ root
60
+ });
61
+ }
62
+ __name(resolveFarmAuthIntegration, "resolveFarmAuthIntegration");
63
+ function normalizeBasePath(value) {
64
+ const route = (value || "/api/auth").trim();
65
+ const withLeadingSlash = route.startsWith("/") ? route : `/${route}`;
66
+ const normalized = withLeadingSlash.replace(/\/+/g, "/").replace(/\/+$/, "");
67
+ return normalized || "/api/auth";
68
+ }
69
+ __name(normalizeBasePath, "normalizeBasePath");
70
+ function validateFarmAuthConfig(config) {
71
+ const { minPasswordLength, maxPasswordLength } = config.emailAndPassword;
72
+ if (!Number.isInteger(minPasswordLength) || minPasswordLength < 1) {
73
+ throw new Error("auth.emailAndPassword.minPasswordLength must be a positive integer.");
74
+ }
75
+ if (!Number.isInteger(maxPasswordLength) || maxPasswordLength < minPasswordLength) {
76
+ throw new Error(
77
+ "auth.emailAndPassword.maxPasswordLength must be an integer greater than or equal to minPasswordLength."
78
+ );
79
+ }
80
+ if (!Number.isInteger(config.session.expiresIn) || config.session.expiresIn < 1) {
81
+ throw new Error("auth.session.expiresIn must be a positive integer.");
82
+ }
83
+ if (!Number.isInteger(config.session.updateAge) || config.session.updateAge < 0) {
84
+ throw new Error("auth.session.updateAge must be a non-negative integer.");
85
+ }
86
+ }
87
+ __name(validateFarmAuthConfig, "validateFarmAuthConfig");
88
+
89
+ export {
90
+ resolveFarmAuthConfig,
91
+ resolveFarmAuthIntegration
92
+ };
93
+ //# sourceMappingURL=chunk-I4CUBGVF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/auth-config.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { FarmIntegration } from \"./integrations\";\n\nexport interface FarmAuthEmailAndPasswordConfig {\n /** Require a verified email before creating a session. @default false */\n requireEmailVerification?: boolean;\n /** Smallest accepted password length. @default 8 */\n minPasswordLength?: number;\n /** Largest accepted password length. @default 128 */\n maxPasswordLength?: number;\n}\n\nexport interface FarmAuthSessionConfig {\n /** Session lifetime in seconds. @default 604800 */\n expiresIn?: number;\n /** Session refresh interval in seconds. @default 86400 */\n updateAge?: number;\n}\n\nexport interface FarmAuthDatabaseConfig {\n /**\n * Postgres connection string. Defaults to DATABASE_URL.\n * Local development falls back to SQLite when no URL is present.\n */\n url?: string;\n /** Local SQLite path. @default \".farm/auth.sqlite\" */\n path?: string;\n /** Automatically update the auth schema in development. @default true */\n migrateInDevelopment?: boolean;\n}\n\nexport interface FarmAuthConfig {\n /** Set false to disable auth without removing its configuration. @default true */\n enabled?: boolean;\n /** Display name used by authentication emails and metadata. */\n appName?: string;\n /** Route prefix for the auth endpoints. @default \"/api/auth\" */\n basePath?: string;\n /**\n * Email/password authentication. It is enabled by default; set false to\n * disable it when adding another sign-in method.\n */\n emailAndPassword?: boolean | FarmAuthEmailAndPasswordConfig;\n session?: FarmAuthSessionConfig;\n database?: FarmAuthDatabaseConfig;\n}\n\nexport type FarmAuthUserConfig = boolean | FarmAuthConfig;\n\nexport interface ResolvedFarmAuthConfig {\n enabled: boolean;\n appName?: string;\n basePath: string;\n emailAndPassword: {\n enabled: boolean;\n requireEmailVerification: boolean;\n minPasswordLength: number;\n maxPasswordLength: number;\n };\n session: {\n expiresIn: number;\n updateAge: number;\n };\n database: {\n url?: string;\n path: string;\n migrateInDevelopment: boolean;\n };\n}\n\ninterface FarmAuthRuntimeModule {\n createFarmAuthIntegration(\n config: ResolvedFarmAuthConfig,\n options: {\n root: string;\n mode: \"development\" | \"production\";\n },\n ): FarmIntegration;\n}\n\nexport function resolveFarmAuthConfig(\n input: FarmAuthUserConfig | undefined,\n): ResolvedFarmAuthConfig {\n const config = input === true ? {} : input && typeof input === \"object\" ? input : {};\n const passwordConfig = typeof config.emailAndPassword === \"object\" ? config.emailAndPassword : {};\n\n const resolved: ResolvedFarmAuthConfig = {\n enabled: input !== undefined && input !== false && config.enabled !== false,\n appName: config.appName,\n basePath: normalizeBasePath(config.basePath),\n emailAndPassword: {\n enabled: config.emailAndPassword !== false,\n requireEmailVerification: passwordConfig.requireEmailVerification ?? false,\n minPasswordLength: passwordConfig.minPasswordLength ?? 8,\n maxPasswordLength: passwordConfig.maxPasswordLength ?? 128,\n },\n session: {\n expiresIn: config.session?.expiresIn ?? 60 * 60 * 24 * 7,\n updateAge: config.session?.updateAge ?? 60 * 60 * 24,\n },\n database: {\n url: config.database?.url,\n path: config.database?.path || \".farm/auth.sqlite\",\n migrateInDevelopment: config.database?.migrateInDevelopment ?? true,\n },\n };\n\n validateFarmAuthConfig(resolved);\n return resolved;\n}\n\nexport async function resolveFarmAuthIntegration(\n config: ResolvedFarmAuthConfig,\n options: {\n root: string;\n mode: \"development\" | \"production\";\n },\n): Promise<FarmIntegration | undefined> {\n if (!config.enabled) return undefined;\n\n const root = path.resolve(options.root);\n let modulePath: string;\n try {\n const resolveFromApp = createRequire(path.join(root, \"package.json\"));\n modulePath = resolveFromApp.resolve(\"@farm.js/auth/internal\");\n } catch {\n throw new Error(\n \"The `auth` config requires @farm.js/auth. Install it with `pnpm add @farm.js/auth` and try again.\",\n );\n }\n\n const runtime = (await import(\n /* @vite-ignore */ pathToFileURL(modulePath).href\n )) as FarmAuthRuntimeModule;\n if (typeof runtime.createFarmAuthIntegration !== \"function\") {\n throw new Error(\n \"The installed @farm.js/auth package is incompatible with this version of @farm.js/core.\",\n );\n }\n\n return runtime.createFarmAuthIntegration(config, {\n ...options,\n root,\n });\n}\n\nfunction normalizeBasePath(value: string | undefined): string {\n const route = (value || \"/api/auth\").trim();\n const withLeadingSlash = route.startsWith(\"/\") ? route : `/${route}`;\n const normalized = withLeadingSlash.replace(/\\/+/g, \"/\").replace(/\\/+$/, \"\");\n return normalized || \"/api/auth\";\n}\n\nfunction validateFarmAuthConfig(config: ResolvedFarmAuthConfig): void {\n const { minPasswordLength, maxPasswordLength } = config.emailAndPassword;\n if (!Number.isInteger(minPasswordLength) || minPasswordLength < 1) {\n throw new Error(\"auth.emailAndPassword.minPasswordLength must be a positive integer.\");\n }\n if (!Number.isInteger(maxPasswordLength) || maxPasswordLength < minPasswordLength) {\n throw new Error(\n \"auth.emailAndPassword.maxPasswordLength must be an integer greater than or equal to minPasswordLength.\",\n );\n }\n if (!Number.isInteger(config.session.expiresIn) || config.session.expiresIn < 1) {\n throw new Error(\"auth.session.expiresIn must be a positive integer.\");\n }\n if (!Number.isInteger(config.session.updateAge) || config.session.updateAge < 0) {\n throw new Error(\"auth.session.updateAge must be a non-negative integer.\");\n }\n}\n"],"mappings":";;;;;AAAA,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAgFvB,SAAS,sBACd,OACwB;AACxB,QAAM,SAAS,UAAU,OAAO,CAAC,IAAI,SAAS,OAAO,UAAU,WAAW,QAAQ,CAAC;AACnF,QAAM,iBAAiB,OAAO,OAAO,qBAAqB,WAAW,OAAO,mBAAmB,CAAC;AAEhG,QAAM,WAAmC;AAAA,IACvC,SAAS,UAAU,UAAa,UAAU,SAAS,OAAO,YAAY;AAAA,IACtE,SAAS,OAAO;AAAA,IAChB,UAAU,kBAAkB,OAAO,QAAQ;AAAA,IAC3C,kBAAkB;AAAA,MAChB,SAAS,OAAO,qBAAqB;AAAA,MACrC,0BAA0B,eAAe,4BAA4B;AAAA,MACrE,mBAAmB,eAAe,qBAAqB;AAAA,MACvD,mBAAmB,eAAe,qBAAqB;AAAA,IACzD;AAAA,IACA,SAAS;AAAA,MACP,WAAW,OAAO,SAAS,aAAa,KAAK,KAAK,KAAK;AAAA,MACvD,WAAW,OAAO,SAAS,aAAa,KAAK,KAAK;AAAA,IACpD;AAAA,IACA,UAAU;AAAA,MACR,KAAK,OAAO,UAAU;AAAA,MACtB,MAAM,OAAO,UAAU,QAAQ;AAAA,MAC/B,sBAAsB,OAAO,UAAU,wBAAwB;AAAA,IACjE;AAAA,EACF;AAEA,yBAAuB,QAAQ;AAC/B,SAAO;AACT;AA7BgB;AA+BhB,eAAsB,2BACpB,QACA,SAIsC;AACtC,MAAI,CAAC,OAAO,QAAS,QAAO;AAE5B,QAAM,OAAO,KAAK,QAAQ,QAAQ,IAAI;AACtC,MAAI;AACJ,MAAI;AACF,UAAM,iBAAiB,cAAc,KAAK,KAAK,MAAM,cAAc,CAAC;AACpE,iBAAa,eAAe,QAAQ,wBAAwB;AAAA,EAC9D,QAAQ;AACN,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAW,MAAM;AAAA;AAAA,IACF,cAAc,UAAU,EAAE;AAAA;AAE/C,MAAI,OAAO,QAAQ,8BAA8B,YAAY;AAC3D,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO,QAAQ,0BAA0B,QAAQ;AAAA,IAC/C,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAjCsB;AAmCtB,SAAS,kBAAkB,OAAmC;AAC5D,QAAM,SAAS,SAAS,aAAa,KAAK;AAC1C,QAAM,mBAAmB,MAAM,WAAW,GAAG,IAAI,QAAQ,IAAI,KAAK;AAClE,QAAM,aAAa,iBAAiB,QAAQ,QAAQ,GAAG,EAAE,QAAQ,QAAQ,EAAE;AAC3E,SAAO,cAAc;AACvB;AALS;AAOT,SAAS,uBAAuB,QAAsC;AACpE,QAAM,EAAE,mBAAmB,kBAAkB,IAAI,OAAO;AACxD,MAAI,CAAC,OAAO,UAAU,iBAAiB,KAAK,oBAAoB,GAAG;AACjE,UAAM,IAAI,MAAM,qEAAqE;AAAA,EACvF;AACA,MAAI,CAAC,OAAO,UAAU,iBAAiB,KAAK,oBAAoB,mBAAmB;AACjF,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,OAAO,UAAU,OAAO,QAAQ,SAAS,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC/E,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,MAAI,CAAC,OAAO,UAAU,OAAO,QAAQ,SAAS,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC/E,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AACF;AAhBS;","names":[]}
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-V7RBCSDJ.mjs";
5
5
  import {
6
6
  resolveDocsConfig
7
- } from "./chunk-NM3CRAAL.mjs";
7
+ } from "./chunk-B4W3BNTL.mjs";
8
8
  import {
9
9
  __name
10
10
  } from "./chunk-CGILA3WO.mjs";
@@ -600,8 +600,8 @@ code:not(pre code) {
600
600
  }
601
601
 
602
602
  .code-block-header {
603
- min-height: 28px;
604
- padding: 3px 7px 3px 9px;
603
+ min-height: 34px;
604
+ padding: 4px 8px 4px 10px;
605
605
  }
606
606
 
607
607
  .code-block-title {
@@ -815,8 +815,8 @@ code:not(pre code) {
815
815
  }
816
816
 
817
817
  .code-block-header {
818
- min-height: 26px;
819
- padding: 2px 6px 2px 8px;
818
+ min-height: 32px;
819
+ padding: 3px 7px 3px 9px;
820
820
  }
821
821
 
822
822
  .code-copy-floating {
@@ -856,38 +856,30 @@ code:not(pre code) {
856
856
 
857
857
  @media (max-width: 640px) {
858
858
  .code-block-header {
859
- min-height: 22px;
860
- padding: 1px 4px 1px 7px;
861
- }
862
-
863
- .code-block-title {
864
- font-size: 9px;
865
- }
866
-
867
- .code-copy {
868
- width: 20px;
869
- height: 20px;
870
- }
871
-
872
- .code-copy svg {
873
- width: 12px;
874
- height: 12px;
859
+ min-height: 30px;
860
+ padding: 3px 6px 3px 8px;
875
861
  }
876
862
 
877
863
  .code-copy-floating {
878
- top: 5px;
879
- right: 5px;
864
+ top: 7px;
865
+ right: 7px;
880
866
  }
881
867
 
882
868
  #nd-docs-layout figure.shiki.code-block pre,
883
869
  .code-block pre {
884
- padding: 10px !important;
885
- font-size: 11px;
886
- line-height: 1.55;
870
+ padding: 12px !important;
871
+ font-size: 12px;
872
+ line-height: 1.6;
873
+ }
874
+
875
+ #nd-docs-layout figure.shiki.code-block-plain pre,
876
+ .code-block-plain pre {
877
+ padding: 16px 44px 16px 14px !important;
878
+ line-height: 1.65;
887
879
  }
888
880
 
889
881
  .sh__line {
890
- min-height: 1.55em;
882
+ min-height: 1.6em;
891
883
  }
892
884
  }
893
885
 
@@ -2813,7 +2805,7 @@ function renderFarmDocsBridgeCss(docs) {
2813
2805
  .sh-code { --sh-class: #e5c07b; --sh-identifier: #c8ccd4; --sh-string: #98c379; --sh-keyword: #c678dd; --sh-comment: #5c6370; --sh-property: #e06c75; --sh-sign: #c8ccd4; --sh-space: inherit; }
2814
2806
  .code-block { --fd-code-header-bg: color-mix(in srgb, var(--color-fd-foreground, #fff) 5%, var(--color-fd-background, #000)); --fd-code-body-bg: color-mix(in srgb, var(--color-fd-foreground, #fff) 8%, var(--color-fd-background, #000)); position: relative; width: 100%; min-width: 0; max-width: 100%; margin: 20px 0; overflow: hidden; border: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background: var(--color-fd-background, hsl(0 0% 2%)); box-shadow: 3px 3px 0 0 var(--color-fd-border, hsl(0 0% 15%)); font-family: var(--fd-docs-font-mono); }
2815
2807
  #nd-docs-layout figure.shiki.code-block { box-shadow: 3px 3px 0 0 var(--color-fd-border, hsl(0 0% 15%)) !important; }
2816
- .code-block-header { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-width: 0; min-height: 30px; border-bottom: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background-color: var(--fd-code-header-bg); background-image: repeating-linear-gradient(-45deg, color-mix(in srgb, var(--color-fd-foreground, #fff) 7%, transparent), color-mix(in srgb, var(--color-fd-foreground, #fff) 7%, transparent) 1px, transparent 1px, transparent 6px); padding: 4px 8px 4px 10px; }
2808
+ .code-block-header { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-width: 0; min-height: 34px; border-bottom: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background-color: var(--fd-code-header-bg); background-image: repeating-linear-gradient(-45deg, color-mix(in srgb, var(--color-fd-foreground, #fff) 4%, transparent), color-mix(in srgb, var(--color-fd-foreground, #fff) 4%, transparent) 1px, transparent 1px, transparent 6px); padding: 4px 8px 4px 10px; }
2817
2809
  .code-block-title { overflow: hidden; color: color-mix(in srgb, var(--color-fd-foreground, #fff) 50%, transparent); font-size: 10px; line-height: 1.2; text-overflow: ellipsis; text-transform: lowercase; white-space: nowrap; }
2818
2810
  .code-copy { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; flex: 0 0 auto; border: 1px solid var(--color-fd-border, hsl(0 0% 15%)); background: color-mix(in srgb, var(--color-fd-background, #000) 80%, transparent); color: var(--color-fd-muted-foreground, hsl(0 0% 55%)); cursor: pointer; padding: 0; }
2819
2811
  .code-copy-floating { position: absolute; top: 8px; right: 8px; z-index: 2; opacity: 0.72; transition: opacity 150ms ease; }
@@ -2881,7 +2873,7 @@ function renderFarmDocsBridgeCss(docs) {
2881
2873
  .prose h2 { margin-top: 34px; padding-top: 22px; font-size: 23px; }
2882
2874
  .code-block { margin: 16px 0; box-shadow: 2px 2px 0 0 var(--color-fd-border, hsl(0 0% 15%)); }
2883
2875
  #nd-docs-layout figure.shiki.code-block { box-shadow: 2px 2px 0 0 var(--color-fd-border, hsl(0 0% 15%)) !important; }
2884
- .code-block-header { min-height: 26px; padding: 2px 6px 2px 8px; }
2876
+ .code-block-header { min-height: 32px; padding: 3px 7px 3px 9px; }
2885
2877
  .code-copy-floating { top: 6px; right: 6px; }
2886
2878
  #nd-docs-layout figure.shiki.code-block pre, .code-block pre { padding: 12px 11px !important; font-size: 12px; line-height: 1.5; }
2887
2879
  .sh__line { min-height: 1.5em; }
@@ -2891,13 +2883,11 @@ function renderFarmDocsBridgeCss(docs) {
2891
2883
  .fd-page-footer .fd-last-updated-footer { margin-left: 0; }
2892
2884
  }
2893
2885
  @media (max-width: 640px) {
2894
- .code-block-header { min-height: 22px; padding: 1px 4px 1px 7px; }
2895
- .code-block-title { font-size: 9px; }
2896
- .code-copy { width: 20px; height: 20px; }
2897
- .code-copy svg { width: 12px; height: 12px; }
2898
- .code-copy-floating { top: 5px; right: 5px; }
2899
- #nd-docs-layout figure.shiki.code-block pre, .code-block pre { padding: 10px !important; font-size: 11px; line-height: 1.55; }
2900
- .sh__line { min-height: 1.55em; }
2886
+ .code-block-header { min-height: 30px; padding: 3px 6px 3px 8px; }
2887
+ .code-copy-floating { top: 7px; right: 7px; }
2888
+ #nd-docs-layout figure.shiki.code-block pre, .code-block pre { padding: 12px !important; font-size: 12px; line-height: 1.6; }
2889
+ #nd-docs-layout figure.shiki.code-block-plain pre, .code-block-plain pre { padding: 16px 44px 16px 14px !important; line-height: 1.65; }
2890
+ .sh__line { min-height: 1.6em; }
2901
2891
  }
2902
2892
  ${farmDocsPixelBorderCss}
2903
2893
  `;
@@ -3547,4 +3537,4 @@ export {
3547
3537
  createDocsAPI,
3548
3538
  createFarmDocsAPIHandler
3549
3539
  };
3550
- //# sourceMappingURL=chunk-HNIQFZKB.mjs.map
3540
+ //# sourceMappingURL=chunk-ME4MO2RJ.mjs.map