@wildo-ai/zod-decorators 1.0.1 → 1.1.0

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 (98) hide show
  1. package/LICENSE +34 -0
  2. package/dist/esm/.builder.pid +9 -0
  3. package/dist/esm/__mocks__/mime.d.ts.map +1 -1
  4. package/dist/esm/__mocks__/mime.js +1 -1
  5. package/dist/esm/__mocks__/mime.js.map +1 -1
  6. package/dist/esm/commons.d.ts.map +1 -1
  7. package/dist/esm/commons.js +1 -1
  8. package/dist/esm/commons.js.map +1 -1
  9. package/dist/esm/companion-exports.d.ts +8 -0
  10. package/dist/esm/companion-exports.d.ts.map +1 -0
  11. package/dist/esm/companion-exports.js +8 -0
  12. package/dist/esm/companion-exports.js.map +1 -0
  13. package/dist/esm/currencies.shared.schemas.d.ts.map +1 -1
  14. package/dist/esm/currencies.shared.schemas.js +1 -1
  15. package/dist/esm/currencies.shared.schemas.js.map +1 -1
  16. package/dist/esm/files/agent-file-formats.d.ts.map +1 -1
  17. package/dist/esm/files/agent-file-formats.js +1 -1
  18. package/dist/esm/files/agent-file-formats.js.map +1 -1
  19. package/dist/esm/files/extension-nature-map.d.ts +1 -1
  20. package/dist/esm/files/extension-nature-map.d.ts.map +1 -1
  21. package/dist/esm/files/extension-nature-map.js +1 -1
  22. package/dist/esm/files/extension-nature-map.js.map +1 -1
  23. package/dist/esm/files/file-extensions.enum.d.ts.map +1 -1
  24. package/dist/esm/files/file-extensions.enum.js +1 -1
  25. package/dist/esm/files/file-extensions.enum.js.map +1 -1
  26. package/dist/esm/files/mime-registry.d.ts +1 -1
  27. package/dist/esm/files/mime-registry.d.ts.map +1 -1
  28. package/dist/esm/files/mime-registry.js +1 -1
  29. package/dist/esm/files/mime-registry.js.map +1 -1
  30. package/dist/esm/files/unified-registry.d.ts +1 -1
  31. package/dist/esm/files/unified-registry.d.ts.map +1 -1
  32. package/dist/esm/files/unified-registry.js +1 -1
  33. package/dist/esm/files/unified-registry.js.map +1 -1
  34. package/dist/esm/index.d.ts +20 -19
  35. package/dist/esm/index.d.ts.map +1 -1
  36. package/dist/esm/index.js +10 -1
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/install-bigint-json-encoding.d.ts +80 -0
  39. package/dist/esm/install-bigint-json-encoding.d.ts.map +1 -0
  40. package/dist/esm/install-bigint-json-encoding.js +85 -0
  41. package/dist/esm/install-bigint-json-encoding.js.map +1 -0
  42. package/dist/esm/testing/decorated-test-schemas.d.ts +8 -8
  43. package/dist/esm/testing/decorated-test-schemas.d.ts.map +1 -1
  44. package/dist/esm/testing/decorated-test-schemas.js +1 -1
  45. package/dist/esm/testing/decorated-test-schemas.js.map +1 -1
  46. package/dist/esm/testing.d.ts +1 -1
  47. package/dist/esm/testing.d.ts.map +1 -1
  48. package/dist/esm/testing.js +1 -1
  49. package/dist/esm/testing.js.map +1 -1
  50. package/dist/esm/zod-bigdecimal.d.ts +5 -1
  51. package/dist/esm/zod-bigdecimal.d.ts.map +1 -1
  52. package/dist/esm/zod-bigdecimal.js +4 -1
  53. package/dist/esm/zod-bigdecimal.js.map +1 -1
  54. package/dist/esm/zod-code.d.ts +4 -1
  55. package/dist/esm/zod-code.d.ts.map +1 -1
  56. package/dist/esm/zod-code.js +4 -1
  57. package/dist/esm/zod-code.js.map +1 -1
  58. package/dist/esm/zod-color.d.ts.map +1 -1
  59. package/dist/esm/zod-color.js +1 -1
  60. package/dist/esm/zod-color.js.map +1 -1
  61. package/dist/esm/zod-decorators.types.d.ts +1410 -56
  62. package/dist/esm/zod-decorators.types.d.ts.map +1 -1
  63. package/dist/esm/zod-decorators.types.js +662 -16
  64. package/dist/esm/zod-decorators.types.js.map +1 -1
  65. package/dist/esm/zod-duration.d.ts +8 -4
  66. package/dist/esm/zod-duration.d.ts.map +1 -1
  67. package/dist/esm/zod-duration.js +2 -1
  68. package/dist/esm/zod-duration.js.map +1 -1
  69. package/dist/esm/zod-file.d.ts +75 -14
  70. package/dist/esm/zod-file.d.ts.map +1 -1
  71. package/dist/esm/zod-file.js +151 -8
  72. package/dist/esm/zod-file.js.map +1 -1
  73. package/dist/esm/zod-money.d.ts +18 -3
  74. package/dist/esm/zod-money.d.ts.map +1 -1
  75. package/dist/esm/zod-money.js +4 -1
  76. package/dist/esm/zod-money.js.map +1 -1
  77. package/dist/esm/zod-phone.d.ts +37 -1
  78. package/dist/esm/zod-phone.d.ts.map +1 -1
  79. package/dist/esm/zod-phone.js +66 -5
  80. package/dist/esm/zod-phone.js.map +1 -1
  81. package/dist/esm/zod-range.d.ts +4 -1
  82. package/dist/esm/zod-range.d.ts.map +1 -1
  83. package/dist/esm/zod-range.js +4 -1
  84. package/dist/esm/zod-range.js.map +1 -1
  85. package/dist/esm/zod-utils.shared.d.ts +411 -6
  86. package/dist/esm/zod-utils.shared.d.ts.map +1 -1
  87. package/dist/esm/zod-utils.shared.js +624 -9
  88. package/dist/esm/zod-utils.shared.js.map +1 -1
  89. package/dist/esm/zod-versioned.d.ts +1 -1
  90. package/dist/esm/zod-versioned.d.ts.map +1 -1
  91. package/dist/esm/zod-versioned.js +1 -1
  92. package/dist/esm/zod-versioned.js.map +1 -1
  93. package/dist/esm/zod.module-override.d.ts +458 -68
  94. package/dist/esm/zod.module-override.d.ts.map +1 -1
  95. package/dist/esm/zod.module-override.js +1214 -195
  96. package/dist/esm/zod.module-override.js.map +1 -1
  97. package/dist/tsconfig.build.tsbuildinfo +1 -1
  98. package/package.json +20 -11
@@ -1 +1 @@
1
- {"version":3,"file":"zod-duration.d.ts","sourceRoot":"","sources":["../../src/zod-duration.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EAId,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAeD,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,2FAAkD,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;uCAG9B,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAsBrE;AAeD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,aAAa,EAChB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,MAAM,CAOR;AAED;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,qBAA0B,GAClC,uBAAuB,CAyCzB;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,SAAS,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC;IACnB,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC;CACpB,CAAC,GAAG;IACH,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,uBAAuB,CAAC;IACxD,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAC;IAC5G,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,uBAAuB,CAAC;IACxH,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,uBAAuB,CAAC;IACtF,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,uBAAuB,CAAC;IACxH,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,uBAAuB,CAAC;IAC9D,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,uBAAuB,CAAC;IAC9D,aAAa,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,uBAAuB,CAAC;CACtE,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,uBAAuB,CAEnF;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,yBAGlC,CAAC"}
1
+ {"version":3,"file":"zod-duration.d.ts","sourceRoot":"","sources":["../../../src/zod-duration.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EAId,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAeD,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,2FAAkD,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;iBAG9B,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAsBrE;AAeD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,aAAa,EAChB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,MAAM,CAOR;AAED;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,qBAA0B,GAClC,uBAAuB,CAyCzB;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,SAAS,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC;IACnB,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC;CACpB,CAAC,GAAG;IACH,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,uBAAuB,CAAC;IACxD,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAC;IAC5G,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,uBAAuB,CAAC;IACxH,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,uBAAuB,CAAC;IACtF,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,uBAAuB,CAAC;IACxH,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,YAAY,CAAC,oBAAoB,CAAC,GAAG,uBAAuB,CAAC;IAClI,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,uBAAuB,CAAC;IAC9D,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,uBAAuB,CAAC;IAC9D,aAAa,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,uBAAuB,CAAC;CACtE,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,uBAAuB,CAEnF;AACD,oDAAoD;AAEpD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,yBAGlC,CAAC"}
@@ -163,6 +163,7 @@ export function createDurationSchema(options = {}) {
163
163
  export function z_duration(options) {
164
164
  return createDurationSchema(options);
165
165
  }
166
+ /** @wildo_source:part:end zod.factories.duration */
166
167
  /**
167
168
  * Schema for token expiry duration — minutes, hours, or days only, value ≥ 1.
168
169
  * Use for expiresIn in consumable tokens, sharableDefaults, and share API.
@@ -171,4 +172,4 @@ export const ExpiresInDurationSchema = z_duration({
171
172
  minValue: 1,
172
173
  allowedUnits: [DurationUnit.MINUTES, DurationUnit.HOURS, DurationUnit.DAYS],
173
174
  });
174
- //# sourceMappingURL=zod-duration.js.map
175
+ //# sourceMappingURL=zod-duration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zod-duration.js","sourceRoot":"","sources":["../../src/zod-duration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zod-duration.js","sourceRoot":"","sources":["../../../src/zod-duration.ts"],"names":[],"mappings":"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","sourcesContent":["\n// ============================================================================\n// DURATION SCHEMA HELPER\n// ============================================================================\n\nimport {\n DecoratorInput,\n SCHEMA_METADATA,\n CustomFieldMetadata,\n DurationSchemaMetadata,\n DurationUnit,\n SummaryFieldParams,\n ZodDecorator,\n ZodDecorator_ParamsType,\n} from './zod-decorators.types';\nimport { z } from 'zod';\nimport { addChainableMethods } from './zod.module-override';\n\n/**\n * @wildo_source:part:start zod.factories.duration facet:layer:shared facet:family:schema-factory\n *\n * Duration value type — represents a time span with value and unit.\n *\n * Stored as { value: number, unit: DurationUnit } for clarity and flexibility.\n * Use durationToSeconds() for canonical conversion when needed (e.g., TTL, expiry).\n *\n * @example\n * { value: 5, unit: DurationUnit.MINUTES } // 5 minutes\n * { value: 1, unit: DurationUnit.HOURS } // 1 hour\n */\nexport interface DurationValue {\n /** Numeric quantity (must be non-negative for typical use) */\n value: number;\n /** Unit of time */\n unit: DurationUnit;\n}\n\n/**\n * Options for creating a duration schema via z_duration().\n * Uses the DurationUnit enum for type-safe configuration.\n */\nexport interface DurationSchemaOptions {\n /** Allowed units (if empty/undefined, all units are allowed) */\n allowedUnits?: DurationUnit[];\n /** Minimum value (for the numeric part) */\n minValue?: number;\n /** Maximum value (for the numeric part) */\n maxValue?: number;\n}\n\n/** Seconds multiplier for each duration unit */\nconst DURATION_MULTIPLIERS: Record<DurationUnit, number> = {\n [DurationUnit.MILLISECONDS]: 0.001,\n [DurationUnit.SECONDS]: 1,\n [DurationUnit.MINUTES]: 60,\n [DurationUnit.HOURS]: 3600,\n [DurationUnit.DAYS]: 86400,\n [DurationUnit.WEEKS]: 604800,\n [DurationUnit.MONTHS]: 30 * 86400,\n [DurationUnit.YEARS]: 365.25 * 86400,\n [DurationUnit.CENTURIES]: 100 * 365.25 * 86400,\n};\n\n/** Canonical Zod schema for DurationUnit. Clone via `z_clone()` for independent metadata. */\nexport const DurationUnitSchema = z.enum(DurationUnit).systemEnum('DurationUnit');\n\n/**\n * Zod schema for DurationValue.\n */\nexport const DurationValueSchema = z.object({\n value: z.number().int().min(0),\n unit: DurationUnitSchema,\n});\n\n/**\n * Convert a duration to total seconds for canonical storage/comparison.\n * Use when setting TTL, expiry, or comparing durations.\n *\n * @param d - Duration value\n * @returns Total seconds\n */\nexport function durationToSeconds(d: DurationValue): number {\n return d.value * DURATION_MULTIPLIERS[d.unit];\n}\n\n/**\n * Create a duration from total seconds, using the most appropriate unit.\n * Prefers larger units when the value divides evenly.\n *\n * @param totalSeconds - Total seconds\n * @returns DurationValue\n */\nexport function secondsToDuration(totalSeconds: number): DurationValue {\n if (totalSeconds <= 0) {\n return { value: 0, unit: DurationUnit.SECONDS };\n }\n const units: DurationUnit[] = [\n DurationUnit.CENTURIES,\n DurationUnit.YEARS,\n DurationUnit.MONTHS,\n DurationUnit.WEEKS,\n DurationUnit.DAYS,\n DurationUnit.HOURS,\n DurationUnit.MINUTES,\n DurationUnit.SECONDS,\n DurationUnit.MILLISECONDS,\n ];\n for (const unit of units) {\n const m = DURATION_MULTIPLIERS[unit];\n if (totalSeconds % m === 0 && totalSeconds >= m) {\n return { value: totalSeconds / m, unit };\n }\n }\n return { value: totalSeconds, unit: DurationUnit.SECONDS };\n}\n\n/** Singular form for each duration unit (when value is 1) */\nconst DURATION_UNIT_SINGULAR: Record<DurationUnit, string> = {\n [DurationUnit.MILLISECONDS]: 'millisecond',\n [DurationUnit.SECONDS]: 'second',\n [DurationUnit.MINUTES]: 'minute',\n [DurationUnit.HOURS]: 'hour',\n [DurationUnit.DAYS]: 'day',\n [DurationUnit.WEEKS]: 'week',\n [DurationUnit.MONTHS]: 'month',\n [DurationUnit.YEARS]: 'year',\n [DurationUnit.CENTURIES]: 'century',\n};\n\n/**\n * Format a duration for display.\n *\n * @param d - Duration value\n * @param options - Format options\n * @returns Formatted string (e.g., \"5 minutes\", \"1 hour\")\n */\nexport function formatDuration(\n d: DurationValue,\n options: { pluralize?: boolean } = {}\n): string {\n const { pluralize = true } = options;\n const label =\n pluralize && d.value === 1\n ? DURATION_UNIT_SINGULAR[d.unit] ?? d.unit\n : d.unit;\n return `${d.value} ${label}`;\n}\n\n/**\n * z_duration() - Creates duration schemas for time spans.\n *\n * Duration values are stored as { value, unit }.\n * Use durationToSeconds() when you need canonical seconds (e.g., TTL).\n *\n * @example\n * ```typescript\n * import { z_duration, DurationUnit } from '@wildo-ai/zod-decorators';\n *\n * const sessionTtl = z_duration();\n * const allowedUnits = z_duration({ allowedUnits: [DurationUnit.MINUTES, DurationUnit.HOURS] });\n *\n * // UI props via .durationUI()\n * z_duration().durationUI({ edit: { defaultUnit: DurationUnit.MINUTES } })\n * z_duration({ allowedUnits: [DurationUnit.HOURS, DurationUnit.DAYS] }).durationUI({ edit: { defaultUnit: DurationUnit.HOURS } })\n * ```\n */\n\n/**\n * Creates a duration schema with metadata for detection and form component rendering.\n *\n * @param options - Configuration options for duration field\n * @returns A Zod object schema with metadata for duration detection\n */\nexport function createDurationSchema(\n options: DurationSchemaOptions = {}\n): DecoratedDurationSchema {\n const {\n allowedUnits,\n minValue,\n maxValue,\n } = options;\n\n let valueSchema = z.number().int().min(0);\n if (minValue !== undefined) {\n valueSchema = valueSchema.min(minValue);\n }\n if (maxValue !== undefined) {\n valueSchema = valueSchema.max(maxValue);\n }\n\n const unitSchema =\n allowedUnits && allowedUnits.length > 0\n ? z.enum([allowedUnits[0], ...allowedUnits.slice(1)] as [string, ...string[]])\n : DurationUnitSchema;\n\n const durationSchema = z.object({\n value: valueSchema,\n unit: unitSchema,\n });\n\n const durationMetadata: DurationSchemaMetadata = {\n isDuration: true,\n ...(allowedUnits && allowedUnits.length > 0 && { allowedUnits }),\n ...(minValue !== undefined && { minValue }),\n ...(maxValue !== undefined && { maxValue }),\n };\n\n const existingMetadata: CustomFieldMetadata = (durationSchema as any)[SCHEMA_METADATA] || {};\n (durationSchema as any)[SCHEMA_METADATA] = {\n ...existingMetadata,\n durationConfig: durationMetadata,\n };\n\n addChainableMethods(durationSchema);\n\n return durationSchema as unknown as DecoratedDurationSchema;\n}\n\n/**\n * Return type for duration schemas - includes decorator methods.\n */\nexport type DecoratedDurationSchema = z.ZodObject<{\n value: z.ZodNumber;\n unit: z.ZodTypeAny;\n}> & {\n [ZodDecorator.IS_DB_INDEXED](): DecoratedDurationSchema;\n [ZodDecorator.IS_HIDDEN](params?: ZodDecorator_ParamsType[ZodDecorator.IS_HIDDEN]): DecoratedDurationSchema;\n [ZodDecorator.IS_NOT_EDITABLE](params?: ZodDecorator_ParamsType[ZodDecorator.IS_NOT_EDITABLE]): DecoratedDurationSchema;\n [ZodDecorator.IS_SUMMARY_FIELD](params?: SummaryFieldParams): DecoratedDurationSchema;\n [ZodDecorator.IS_BACKEND_ONLY](params?: ZodDecorator_ParamsType[ZodDecorator.IS_BACKEND_ONLY]): DecoratedDurationSchema;\n [ZodDecorator.IS_WRITE_ONLY_SECRET](params?: ZodDecorator_ParamsType[ZodDecorator.IS_WRITE_ONLY_SECRET]): DecoratedDurationSchema;\n [ZodDecorator.EXCLUDE_FROM_CREATE](): DecoratedDurationSchema;\n [ZodDecorator.EXCLUDE_FROM_UPDATE](): DecoratedDurationSchema;\n addDecorators(decorators: DecoratorInput[]): DecoratedDurationSchema;\n};\n\n/**\n * Creates a duration schema for time spans.\n *\n * @example\n * ```typescript\n * import { z_duration, DurationUnit } from '@wildo-ai/zod-decorators';\n *\n * z_duration()\n * z_duration({ allowedUnits: [DurationUnit.MINUTES, DurationUnit.HOURS, DurationUnit.DAYS] })\n * z_duration({ minValue: 1, maxValue: 1440 }) // 1–1440 minutes\n *\n * // UI props via .durationUI()\n * z_duration().durationUI({ edit: { defaultUnit: DurationUnit.HOURS } })\n * ```\n */\nexport function z_duration(options?: DurationSchemaOptions): DecoratedDurationSchema {\n return createDurationSchema(options);\n}\n/** @wildo_source:part:end zod.factories.duration */\n\n/**\n * Schema for token expiry duration — minutes, hours, or days only, value ≥ 1.\n * Use for expiresIn in consumable tokens, sharableDefaults, and share API.\n */\nexport const ExpiresInDurationSchema = z_duration({\n minValue: 1,\n allowedUnits: [DurationUnit.MINUTES, DurationUnit.HOURS, DurationUnit.DAYS],\n});\n"]}
@@ -1,4 +1,4 @@
1
- import { FileSchemaOptions, FileMimeTypeGroup, FileNature, FileDisplayNature, FileStorageAccepted, FileNatureConstraints_Image, FileNatureConstraints_Video, FileNatureConstraints_Audio, FileNatureConstraints_Document, ZodDecorator, ZodDecorator_ParamsType } from "./zod-decorators.types.js";
1
+ import { FileSchemaOptions, FileMimeTypeGroup, FileNature, FileDisplayNature, FileDisplayPresentation, type FileActivationConfig, type FileUIDisplayParams, FileStorageAccepted, FileNatureConstraints_Image, FileNatureConstraints_Video, FileNatureConstraints_Audio, FileNatureConstraints_Document } from "./zod-decorators.types";
2
2
  import { z } from "zod";
3
3
  /**
4
4
  * Single file value type - represents a single file reference stored in the database.
@@ -67,6 +67,8 @@ export declare function resolveMimeTypes(allowedMimeTypes: string[] | FileMimeTy
67
67
  * ```
68
68
  */
69
69
  /**
70
+ * @wildo_source:part:start zod.decorators.file-schema
71
+ *
70
72
  * Creates a file schema with metadata for detection and form component rendering.
71
73
  *
72
74
  * @param options - Configuration options for file field
@@ -74,15 +76,18 @@ export declare function resolveMimeTypes(allowedMimeTypes: string[] | FileMimeTy
74
76
  */
75
77
  export declare function createFileSchema(options?: FileSchemaOptions): DecoratedFileSchema | DecoratedMultipleFileSchema;
76
78
  /**
77
- * Chainable decorator methods shared by single and multiple file schemas.
78
- * File schemas support the same decorator surface as regular fields for full parity.
79
+ * File schemas declare NO decorator surface of their own.
80
+ *
81
+ * They used to, via a `FileSchemaDecoratorMethods<TSelf>` mixin that re-declared `isDBIndexed`,
82
+ * `isHidden`, `isNotEditable` and `showWhen` with the return narrowed to the file schema — necessary
83
+ * only because the `ZodObject` module augmentation did not carry them. It now does (2026-08-12), and
84
+ * re-declaring them made both interfaces below fail TS2320: an interface may not extend two types
85
+ * whose same-named member differs, and `TSelf` is not `DecoratedPrimitiveZodType<this>`.
86
+ *
87
+ * Removing the mixin costs nothing, because `DecoratedPrimitiveZodType<T>` is `T & { … }` — an
88
+ * INTERSECTION. `z_file().isHidden()` still returns something assignable to `DecoratedFileSchema`,
89
+ * and the full decorator surface is now available rather than the four this mixin listed.
79
90
  */
80
- type FileSchemaDecoratorMethods<TSelf> = {
81
- [ZodDecorator.IS_DB_INDEXED](): TSelf;
82
- [ZodDecorator.IS_HIDDEN](params?: ZodDecorator_ParamsType[ZodDecorator.IS_HIDDEN]): TSelf;
83
- [ZodDecorator.IS_NOT_EDITABLE](params?: ZodDecorator_ParamsType[ZodDecorator.IS_NOT_EDITABLE]): TSelf;
84
- [ZodDecorator.SHOW_WHEN](params: ZodDecorator_ParamsType[ZodDecorator.SHOW_WHEN]): TSelf;
85
- };
86
91
  /**
87
92
  * Return type for single file schemas - includes decorator methods.
88
93
  * IS_DB_INDEXED will index the fileId field for query optimization.
@@ -92,7 +97,7 @@ type FileSchemaDecoratorMethods<TSelf> = {
92
97
  export interface DecoratedFileSchema extends z.ZodObject<{
93
98
  fileId: z.ZodString;
94
99
  updatedAt: z.ZodDate;
95
- }>, FileSchemaDecoratorMethods<DecoratedFileSchema> {
100
+ }> {
96
101
  }
97
102
  /**
98
103
  * Return type for multiple file schemas - includes decorator methods.
@@ -103,7 +108,7 @@ export interface DecoratedFileSchema extends z.ZodObject<{
103
108
  export interface DecoratedMultipleFileSchema extends z.ZodObject<{
104
109
  fileIds: z.ZodArray<z.ZodString>;
105
110
  updatedAt: z.ZodDate;
106
- }>, FileSchemaDecoratorMethods<DecoratedMultipleFileSchema> {
111
+ }> {
107
112
  }
108
113
  /**
109
114
  * Creates a file schema for file uploads with reference storage.
@@ -137,8 +142,9 @@ export interface DecoratedMultipleFileSchema extends z.ZodObject<{
137
142
  * // Non-overridable (append-only)
138
143
  * z_file({ overridable: false })
139
144
  *
140
- * // RAG and text extraction
141
- * z_file({ rag: { enabled: true, extractText: true } })
145
+ * // RAG corpus source — registers the shared RAG_SOURCE decorator on the returned schema
146
+ * // (chunking config), with the file-side text-provider knobs beside it (OCR opt-in).
147
+ * z_file({ allowedMimeTypes: 'Documents', ragSource: {}, textExtraction: { ocr: true } })
142
148
  *
143
149
  * // With decorators
144
150
  * z_file().fileUI({ edit: { editMode: FileEditMode.DROPZONE } })
@@ -146,6 +152,7 @@ export interface DecoratedMultipleFileSchema extends z.ZodObject<{
146
152
  * ```
147
153
  */
148
154
  export declare function z_file(options?: FileSchemaOptions): DecoratedFileSchema | DecoratedMultipleFileSchema;
155
+ /** @wildo_source:part:end zod.decorators.file-schema */
149
156
  /**
150
157
  * Format file size for display.
151
158
  */
@@ -215,5 +222,59 @@ export declare function getFileConstraints(schema: z.ZodTypeAny): {
215
222
  * ```
216
223
  */
217
224
  export declare function resolveFileDisplayNature(schemaNature?: FileNature, mimeType?: string): FileDisplayNature;
218
- export {};
225
+ /**
226
+ * Whether the engine can RENDER a file of this nature/MIME (i.e. whether
227
+ * `THUMBNAIL` / `FULL` presentation and `OVERLAY` activation are satisfiable).
228
+ *
229
+ * Nature alone is not always enough: `DOCUMENT` covers PDF *and* Office, and only
230
+ * PDF has a viewer — so the MIME decides when it is known. Extend this (and only
231
+ * this) when a new displayer ships; every guard tier reads it, so availability can
232
+ * never drift between the static and runtime answers.
233
+ */
234
+ export declare function fileNatureHasDisplayer(displayNature: FileDisplayNature, mimeType?: string): boolean;
235
+ /**
236
+ * Whether a DECLARED schema nature can satisfy a display-requiring policy, decided
237
+ * WITHOUT a MIME type. This is the static (registry-build) tier of the guard.
238
+ *
239
+ * Returns `undefined` for `FileNature.ALL` — genuinely undecidable before the file
240
+ * exists, so the static tier must admit it and the runtime tier decides. Any other
241
+ * nature yields a definite answer, which is what lets a misauthored
242
+ * `ARCHIVE` + `FULL` fail at build instead of rendering nothing at runtime.
243
+ */
244
+ export declare function declaredFileNatureCanDisplay(schemaNature: FileNature): boolean | undefined;
245
+ /** Outcome of {@link resolveFileDisplayPolicy}. */
246
+ export interface ResolvedFileDisplayPolicy {
247
+ /** Effective resting presentation after the availability guard. */
248
+ presentation: FileDisplayPresentation;
249
+ /** Effective activation after the availability guard. */
250
+ activation: FileActivationConfig;
251
+ /** The nature the effective policy was resolved against. */
252
+ displayNature: FileDisplayNature;
253
+ /** True when the authored policy could not be satisfied and was degraded. */
254
+ degraded: boolean;
255
+ /** Human-readable cause, for the dev-only warning. Set iff `degraded`. */
256
+ degradationReason?: string;
257
+ }
258
+ /**
259
+ * Resolve the effective file display policy — the RUNTIME tier of the guard.
260
+ *
261
+ * Defaults, when nothing is authored: `CARD` presentation, and an activation derived
262
+ * from the nature (`OVERLAY` when a displayer exists, `DOWNLOAD` otherwise) — so a
263
+ * file is always useful without any authoring, and a document does not mount a
264
+ * viewer just by being on the page.
265
+ *
266
+ * Degradation is deterministic, never a crash and never a dead control:
267
+ * `FULL`/`THUMBNAIL` → `CARD`, `OVERLAY` → `DOWNLOAD`. It only fires when the file's
268
+ * actual nature has no displayer — which is only reachable when the schema declared
269
+ * an open nature (`FileNature.ALL`), because a narrow declared nature that cannot
270
+ * display was already refused at registry build.
271
+ *
272
+ * `CUSTOM` is never degraded: it targets an operation, not a displayer, so displayer
273
+ * availability is irrelevant to it.
274
+ */
275
+ export declare function resolveFileDisplayPolicy(params: {
276
+ schemaNature?: FileNature;
277
+ mimeType?: string;
278
+ authored?: FileUIDisplayParams;
279
+ }): ResolvedFileDisplayPolicy;
219
280
  //# sourceMappingURL=zod-file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zod-file.d.ts","sourceRoot":"","sources":["../../src/zod-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zod-file.d.ts","sourceRoot":"","sources":["../../../src/zod-file.ts"],"names":[],"mappings":"AAMA,OAAO,EAKL,iBAAiB,EAEjB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EAEvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,8BAA8B,EAM/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgBxB;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,SAAS,EAAE,IAAI,CAAC;CAEjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4BAA4B;IAC5B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,CAAC,CAAC,SAAS,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAA;CAAE,CAG3F,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,CAAC,CAAC,SAAS,CAAC;IAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAA;CAAE,CAG1G,CAAC;AAGH;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,gBAAgB,EAAE,MAAM,EAAE,GAAG,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,GAC/E,MAAM,EAAE,GAAG,SAAS,CA6BtB;AAiED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,mBAAmB,GAAG,2BAA2B,CAiInD;AAED;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,mBAAoB,SAAQ,CAAC,CAAC,SAAS,CAAC;IACvD,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;IACpB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC;CACtB,CAAC;CAAG;AAEL;;;;;GAKG;AACH,MAAM,WAAW,2BAA4B,SAAQ,CAAC,CAAC,SAAS,CAAC;IAC/D,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC;CACtB,CAAC;CAAG;AAEL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,2BAA2B,CAErG;AACD,wDAAwD;AAMxD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUpD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAqChE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAWxF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CA4DxE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,GAAG,SAAS,CAG1E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,mBAAmB,EAAE,GAAG,SAAS,CAG1F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG;IACxD,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;IAC/C,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;IAC/C,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;IAC/C,mBAAmB,CAAC,EAAE,8BAA8B,CAAC;CACtD,GAAG,SAAS,CAmBZ;AAwCD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,CAAC,EAAE,UAAU,EACzB,QAAQ,CAAC,EAAE,MAAM,GAChB,iBAAiB,CAWnB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,iBAAiB,EAChC,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAcT;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,CAG1F;AAED,mDAAmD;AACnD,MAAM,WAAW,yBAAyB;IACxC,mEAAmE;IACnE,YAAY,EAAE,uBAAuB,CAAC;IACtC,yDAAyD;IACzD,UAAU,EAAE,oBAAoB,CAAC;IACjC,4DAA4D;IAC5D,aAAa,EAAE,iBAAiB,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC,GAAG,yBAAyB,CA4B5B"}
@@ -1,9 +1,9 @@
1
1
  // ============================================================================
2
2
  // FILE SCHEMA HELPER
3
3
  // ============================================================================
4
- import { SCHEMA_METADATA, FileMimeTypeGroups, FileNature, FileDisplayNature, FileStorageAccepted, ZodDecorator } from "./zod-decorators.types.js";
4
+ import { SCHEMA_METADATA, FileMimeTypeGroups, FileNature, FileDisplayNature, FileDisplayPresentation, FileActivationPolicy, FileStorageAccepted, FileGenerationSource, ZodDecorator } from "./zod-decorators.types.js";
5
5
  import { z } from "zod";
6
- import { addChainableMethods } from "./zod.module-override.js";
6
+ import { addChainableMethods, addDecorators } from "./zod.module-override.js";
7
7
  import { UnifiedFileFormatRegistry } from "./files/unified-registry.js";
8
8
  /**
9
9
  * Deduplicated warning tracker for unsupported storage providers.
@@ -11,6 +11,8 @@ import { UnifiedFileFormatRegistry } from "./files/unified-registry.js";
11
11
  */
12
12
  const _warnedStorageProviders = new Set();
13
13
  const _supportedProviders = new Set([FileStorageAccepted.WILDO_MANAGED, FileStorageAccepted.LOCAL_DIRECTORY]);
14
+ const GENERATED_PDF_MIME_TYPES = ['application/pdf'];
15
+ const GENERATION_METADATA_KEYS = new Set(['source', 'templateId']);
14
16
  /**
15
17
  * Zod schema for SingleFileValue.
16
18
  */
@@ -58,6 +60,48 @@ export function resolveMimeTypes(allowedMimeTypes) {
58
60
  }
59
61
  return undefined;
60
62
  }
63
+ function assertValidFileGenerationConfig(generation) {
64
+ const rawGeneration = generation;
65
+ if (!rawGeneration || typeof rawGeneration !== 'object' || Array.isArray(rawGeneration)) {
66
+ throw new Error('[z_file] generation must be an object.');
67
+ }
68
+ const extraKeys = Object.keys(rawGeneration).filter((key) => !GENERATION_METADATA_KEYS.has(key));
69
+ if (extraKeys.length > 0) {
70
+ throw new Error(`[z_file] generation contains unsupported key(s): ${extraKeys.join(', ')}. ` +
71
+ 'Use only { source: FileGenerationSource.PDF_TEMPLATE, templateId }.');
72
+ }
73
+ if (rawGeneration.source !== FileGenerationSource.PDF_TEMPLATE) {
74
+ throw new Error('[z_file] generation.source must be FileGenerationSource.PDF_TEMPLATE.');
75
+ }
76
+ if (typeof rawGeneration.templateId !== 'string' || rawGeneration.templateId.trim().length === 0) {
77
+ throw new Error('[z_file] generation.templateId must be a non-empty string.');
78
+ }
79
+ }
80
+ function assertGeneratedPdfFileOptions(params) {
81
+ if (!params.generation)
82
+ return;
83
+ assertValidFileGenerationConfig(params.generation);
84
+ if (params.multiple) {
85
+ throw new Error('[z_file] PDF template generation supports single-file fields only.');
86
+ }
87
+ if (params.overridable === false) {
88
+ throw new Error('[z_file] PDF template generation requires overridable to remain true so framework REGENERATE can replace the generated file.');
89
+ }
90
+ // Re-expression of the pre-Phase-0 `rag` refusal against the shared decorator: a PDF-template
91
+ // output is framework-RENDERED presentation of resource data the corpus can already reach at the
92
+ // source fields — chunking the rendering would index the same facts twice, keyed to a file the
93
+ // next REGENERATE silently replaces.
94
+ if (params.ragSource) {
95
+ throw new Error('[z_file] PDF template generation cannot be combined with RAG ingestion options.');
96
+ }
97
+ if (params.scanPolicy) {
98
+ throw new Error('[z_file] PDF template generation cannot be combined with upload scanPolicy options.');
99
+ }
100
+ if (params.resolvedMimeTypes !== undefined &&
101
+ (params.resolvedMimeTypes.length !== 1 || params.resolvedMimeTypes[0] !== GENERATED_PDF_MIME_TYPES[0])) {
102
+ throw new Error('[z_file] PDF template generation requires allowedMimeTypes to resolve exactly to application/pdf.');
103
+ }
104
+ }
61
105
  /**
62
106
  * z_file() - Creates file schemas for file uploads.
63
107
  *
@@ -83,13 +127,15 @@ export function resolveMimeTypes(allowedMimeTypes) {
83
127
  * ```
84
128
  */
85
129
  /**
130
+ * @wildo_source:part:start zod.decorators.file-schema
131
+ *
86
132
  * Creates a file schema with metadata for detection and form component rendering.
87
133
  *
88
134
  * @param options - Configuration options for file field
89
135
  * @returns A Zod object schema with metadata for file detection
90
136
  */
91
137
  export function createFileSchema(options = {}) {
92
- const { overridable = true, allowedMimeTypes, maxSize, minSize, multiple = false, maxFiles, nature, storageAccepted, filePathBinding, imageConstraints, videoConstraints, audioConstraints, documentConstraints, rag, scanPolicy, onParentDelete = 'cascade', sharable, sharableDefaults, } = options;
138
+ const { overridable = true, allowedMimeTypes, maxSize, minSize, multiple = false, maxFiles, nature, storageAccepted, filePathBinding, generation, imageConstraints, videoConstraints, audioConstraints, documentConstraints, ragSource, textExtraction, scanPolicy, onParentDelete = 'cascade', sharable, sharableDefaults, } = options;
93
139
  // Warn at schema creation if non-WILDO_MANAGED storage providers are configured (not yet supported)
94
140
  // Uses deduplication to avoid console spam during tests or HMR
95
141
  if (storageAccepted && storageAccepted.some(s => !_supportedProviders.has(s))) {
@@ -120,6 +166,8 @@ export function createFileSchema(options = {}) {
120
166
  }
121
167
  // Resolve MIME type groups to actual MIME types
122
168
  const resolvedMimeTypes = resolveMimeTypes(allowedMimeTypes);
169
+ assertGeneratedPdfFileOptions({ generation, multiple, resolvedMimeTypes, overridable, ragSource, scanPolicy });
170
+ const effectiveMimeTypes = generation ? [...GENERATED_PDF_MIME_TYPES] : resolvedMimeTypes;
123
171
  // Create the file object schema based on single/multiple
124
172
  const fileSchema = multiple
125
173
  ? z.object({
@@ -135,7 +183,7 @@ export function createFileSchema(options = {}) {
135
183
  const fileMetadata = {
136
184
  isFile: true,
137
185
  overridable,
138
- ...(resolvedMimeTypes !== undefined && { allowedMimeTypes: resolvedMimeTypes }),
186
+ ...(effectiveMimeTypes !== undefined && { allowedMimeTypes: effectiveMimeTypes }),
139
187
  ...(maxSize !== undefined && { maxSize }),
140
188
  ...(minSize !== undefined && { minSize }),
141
189
  multiple,
@@ -143,11 +191,14 @@ export function createFileSchema(options = {}) {
143
191
  ...(nature !== undefined && { nature }),
144
192
  ...(storageAccepted !== undefined && { storageAccepted }),
145
193
  ...(filePathBinding !== undefined && { filePathBinding }),
194
+ ...(generation !== undefined && { generation }),
146
195
  ...(imageConstraints !== undefined && { imageConstraints }),
147
196
  ...(videoConstraints !== undefined && { videoConstraints }),
148
197
  ...(audioConstraints !== undefined && { audioConstraints }),
149
198
  ...(documentConstraints !== undefined && { documentConstraints }),
150
- ...(rag !== undefined && { rag }),
199
+ // Text-provider config only — the RAG declaration itself is NOT stored here (single source of
200
+ // truth is the RAG_SOURCE decorator registered below; read it with `getRagSourceConfig`).
201
+ ...(textExtraction !== undefined && { textExtraction }),
151
202
  ...(scanPolicy !== undefined && { scanPolicy }),
152
203
  onParentDelete,
153
204
  ...(sharable !== undefined && { sharable }),
@@ -161,6 +212,14 @@ export function createFileSchema(options = {}) {
161
212
  };
162
213
  // Add chainable decorator methods to the file schema instance
163
214
  addChainableMethods(fileSchema);
215
+ // Map the file-side `ragSource` option onto the SHARED RAG_SOURCE decorator — the same one
216
+ // `z.string().ragSource()` registers — so `RagSourceFieldDetection` sees one uniform declaration
217
+ // regardless of text provider. Registered through `addDecorators` (the escape-hatch door) because
218
+ // the fluent `.ragSource()` is deliberately not installed on ZodObject; the shared chokepoint
219
+ // still validates the config and enforces the refused companions identically.
220
+ if (ragSource !== undefined) {
221
+ addDecorators(fileSchema, [{ ref: ZodDecorator.RAG_SOURCE, params: ragSource }]);
222
+ }
164
223
  if (multiple) {
165
224
  return fileSchema;
166
225
  }
@@ -198,8 +257,9 @@ export function createFileSchema(options = {}) {
198
257
  * // Non-overridable (append-only)
199
258
  * z_file({ overridable: false })
200
259
  *
201
- * // RAG and text extraction
202
- * z_file({ rag: { enabled: true, extractText: true } })
260
+ * // RAG corpus source — registers the shared RAG_SOURCE decorator on the returned schema
261
+ * // (chunking config), with the file-side text-provider knobs beside it (OCR opt-in).
262
+ * z_file({ allowedMimeTypes: 'Documents', ragSource: {}, textExtraction: { ocr: true } })
203
263
  *
204
264
  * // With decorators
205
265
  * z_file().fileUI({ edit: { editMode: FileEditMode.DROPZONE } })
@@ -209,6 +269,7 @@ export function createFileSchema(options = {}) {
209
269
  export function z_file(options) {
210
270
  return createFileSchema(options);
211
271
  }
272
+ /** @wildo_source:part:end zod.decorators.file-schema */
212
273
  // ============================================================================
213
274
  // UTILITY FUNCTIONS
214
275
  // ============================================================================
@@ -466,4 +527,86 @@ export function resolveFileDisplayNature(schemaNature, mimeType) {
466
527
  // Priority 3: Fallback
467
528
  return FileDisplayNature.GENERIC;
468
529
  }
469
- //# sourceMappingURL=zod-file.js.map
530
+ // ============================================================================
531
+ // DISPLAY POLICY RESOLUTION (presentation × activation, + the availability guard)
532
+ // ============================================================================
533
+ /**
534
+ * Whether the engine can RENDER a file of this nature/MIME (i.e. whether
535
+ * `THUMBNAIL` / `FULL` presentation and `OVERLAY` activation are satisfiable).
536
+ *
537
+ * Nature alone is not always enough: `DOCUMENT` covers PDF *and* Office, and only
538
+ * PDF has a viewer — so the MIME decides when it is known. Extend this (and only
539
+ * this) when a new displayer ships; every guard tier reads it, so availability can
540
+ * never drift between the static and runtime answers.
541
+ */
542
+ export function fileNatureHasDisplayer(displayNature, mimeType) {
543
+ switch (displayNature) {
544
+ case FileDisplayNature.IMAGE:
545
+ case FileDisplayNature.VIDEO:
546
+ case FileDisplayNature.AUDIO:
547
+ return true;
548
+ case FileDisplayNature.DOCUMENT:
549
+ // PDF renders (PDF.js); Office documents have no viewer yet. With no MIME
550
+ // known (the static tier on a declared PDF nature) the answer is yes,
551
+ // because `FileNature.PDF` maps here only for PDFs.
552
+ return mimeType === undefined || mimeType === 'application/pdf';
553
+ case FileDisplayNature.GENERIC:
554
+ return false;
555
+ }
556
+ }
557
+ /**
558
+ * Whether a DECLARED schema nature can satisfy a display-requiring policy, decided
559
+ * WITHOUT a MIME type. This is the static (registry-build) tier of the guard.
560
+ *
561
+ * Returns `undefined` for `FileNature.ALL` — genuinely undecidable before the file
562
+ * exists, so the static tier must admit it and the runtime tier decides. Any other
563
+ * nature yields a definite answer, which is what lets a misauthored
564
+ * `ARCHIVE` + `FULL` fail at build instead of rendering nothing at runtime.
565
+ */
566
+ export function declaredFileNatureCanDisplay(schemaNature) {
567
+ if (schemaNature === FileNature.ALL)
568
+ return undefined;
569
+ return fileNatureHasDisplayer(FILE_NATURE_TO_DISPLAY_NATURE[schemaNature] ?? FileDisplayNature.GENERIC);
570
+ }
571
+ /**
572
+ * Resolve the effective file display policy — the RUNTIME tier of the guard.
573
+ *
574
+ * Defaults, when nothing is authored: `CARD` presentation, and an activation derived
575
+ * from the nature (`OVERLAY` when a displayer exists, `DOWNLOAD` otherwise) — so a
576
+ * file is always useful without any authoring, and a document does not mount a
577
+ * viewer just by being on the page.
578
+ *
579
+ * Degradation is deterministic, never a crash and never a dead control:
580
+ * `FULL`/`THUMBNAIL` → `CARD`, `OVERLAY` → `DOWNLOAD`. It only fires when the file's
581
+ * actual nature has no displayer — which is only reachable when the schema declared
582
+ * an open nature (`FileNature.ALL`), because a narrow declared nature that cannot
583
+ * display was already refused at registry build.
584
+ *
585
+ * `CUSTOM` is never degraded: it targets an operation, not a displayer, so displayer
586
+ * availability is irrelevant to it.
587
+ */
588
+ export function resolveFileDisplayPolicy(params) {
589
+ const { schemaNature, mimeType, authored } = params;
590
+ const displayNature = resolveFileDisplayNature(schemaNature, mimeType);
591
+ const hasDisplayer = fileNatureHasDisplayer(displayNature, mimeType);
592
+ const requestedPresentation = authored?.presentation ?? FileDisplayPresentation.CARD;
593
+ const requestedActivation = authored?.activation ?? {
594
+ policy: hasDisplayer ? FileActivationPolicy.OVERLAY : FileActivationPolicy.DOWNLOAD,
595
+ };
596
+ const presentationNeedsDisplayer = requestedPresentation !== FileDisplayPresentation.CARD;
597
+ const activationNeedsDisplayer = requestedActivation.policy === FileActivationPolicy.OVERLAY;
598
+ if (hasDisplayer || (!presentationNeedsDisplayer && !activationNeedsDisplayer)) {
599
+ return { presentation: requestedPresentation, activation: requestedActivation, displayNature, degraded: false };
600
+ }
601
+ return {
602
+ presentation: presentationNeedsDisplayer ? FileDisplayPresentation.CARD : requestedPresentation,
603
+ activation: activationNeedsDisplayer ? { policy: FileActivationPolicy.DOWNLOAD } : requestedActivation,
604
+ displayNature,
605
+ degraded: true,
606
+ degradationReason: `no displayer for ${displayNature}${mimeType ? ` (${mimeType})` : ''}: `
607
+ + `${presentationNeedsDisplayer ? `presentation ${requestedPresentation} → card` : ''}`
608
+ + `${presentationNeedsDisplayer && activationNeedsDisplayer ? ', ' : ''}`
609
+ + `${activationNeedsDisplayer ? 'activation overlay → download' : ''}`,
610
+ };
611
+ }
612
+ //# sourceMappingURL=zod-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zod-file.js","sourceRoot":"","sources":["../../src/zod-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zod-file.js","sourceRoot":"","sources":["../../../src/zod-file.ts"],"names":[],"mappings":"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","sourcesContent":["\n// ============================================================================\n// FILE SCHEMA HELPER\n// ============================================================================\n\n\nimport {\n DecoratorInput,\n SCHEMA_METADATA,\n CustomFieldMetadata,\n FileSchemaMetadata,\n FileSchemaOptions,\n FileMimeTypeGroups,\n FileMimeTypeGroup,\n FileNature,\n FileDisplayNature,\n FileDisplayPresentation,\n FileActivationPolicy,\n type FileActivationConfig,\n type FileUIDisplayParams,\n FileStorageAccepted,\n FileNatureConstraints_Image,\n FileNatureConstraints_Video,\n FileNatureConstraints_Audio,\n FileNatureConstraints_Document,\n FileGenerationConfig,\n FileGenerationSource,\n RagSourceConfiguration,\n ZodDecorator,\n ZodDecorator_ParamsType\n} from \"./zod-decorators.types\";\nimport { z } from \"zod\";\nimport { addChainableMethods, addDecorators } from \"./zod.module-override\";\nimport { UnifiedFileFormatRegistry } from \"./files/unified-registry\";\n\n// Minimal console declaration — avoids pulling in 'dom' or '@types/node' into this shared lib\ndeclare const console: { warn(...args: unknown[]): void };\n\n/**\n * Deduplicated warning tracker for unsupported storage providers.\n * Prevents console spam when the same schema is created multiple times (e.g., in tests or HMR).\n */\nconst _warnedStorageProviders = new Set<string>();\nconst _supportedProviders = new Set([FileStorageAccepted.WILDO_MANAGED, FileStorageAccepted.LOCAL_DIRECTORY]);\nconst GENERATED_PDF_MIME_TYPES = ['application/pdf'] as const;\nconst GENERATION_METADATA_KEYS = new Set(['source', 'templateId']);\n\n/**\n * Single file value type - represents a single file reference stored in the database.\n * The actual file is stored in a file storage system, this object references it.\n */\nexport interface SingleFileValue {\n /** File ID (foreign key to file storage) */\n fileId: string;\n /** Last update timestamp */\n updatedAt: Date;\n\n}\n\n/**\n * Multiple files value type - represents multiple file references stored in the database.\n */\nexport interface MultipleFileValue {\n /** File IDs (foreign keys to file storage) */\n fileIds: string[];\n /** Last update timestamp */\n updatedAt: Date;\n}\n\n/**\n * File value type - can be single or multiple depending on schema configuration.\n */\nexport type FileValue = SingleFileValue | MultipleFileValue;\n\n/**\n * Zod schema for SingleFileValue.\n */\nexport const SingleFileValueSchema: z.ZodObject<{ fileId: z.ZodString; updatedAt: z.ZodDate }> = z.object({\n fileId: z.string().min(1),\n updatedAt: z.date(),\n});\n\n/**\n * Zod schema for MultipleFileValue.\n */\nexport const MultipleFileValueSchema: z.ZodObject<{ fileIds: z.ZodArray<z.ZodString>; updatedAt: z.ZodDate }> = z.object({\n fileIds: z.array(z.string().min(1)),\n updatedAt: z.date(),\n});\n\n\n/**\n * Resolve MIME type groups to actual MIME types.\n * Handles both single group names and arrays of groups/MIME types.\n */\nexport function resolveMimeTypes(\n allowedMimeTypes: string[] | FileMimeTypeGroup | FileMimeTypeGroup[] | undefined\n): string[] | undefined {\n if (!allowedMimeTypes) return undefined;\n\n // If it's a single group name\n if (typeof allowedMimeTypes === 'string') {\n if (allowedMimeTypes in FileMimeTypeGroups) {\n return [...FileMimeTypeGroups[allowedMimeTypes as FileMimeTypeGroup]];\n }\n // Single MIME type\n return [allowedMimeTypes];\n }\n\n // If it's an array\n if (Array.isArray(allowedMimeTypes)) {\n const resolved: string[] = [];\n for (const item of allowedMimeTypes) {\n if (item in FileMimeTypeGroups) {\n // It's a group name\n resolved.push(...FileMimeTypeGroups[item as FileMimeTypeGroup]);\n } else {\n // It's a MIME type\n resolved.push(item);\n }\n }\n // Remove duplicates\n return [...new Set(resolved)];\n }\n\n return undefined;\n}\n\nfunction assertValidFileGenerationConfig(generation: FileGenerationConfig): void {\n const rawGeneration = generation as unknown as Record<string, unknown> | undefined;\n if (!rawGeneration || typeof rawGeneration !== 'object' || Array.isArray(rawGeneration)) {\n throw new Error('[z_file] generation must be an object.');\n }\n\n const extraKeys = Object.keys(rawGeneration).filter((key) => !GENERATION_METADATA_KEYS.has(key));\n if (extraKeys.length > 0) {\n throw new Error(\n `[z_file] generation contains unsupported key(s): ${extraKeys.join(', ')}. ` +\n 'Use only { source: FileGenerationSource.PDF_TEMPLATE, templateId }.'\n );\n }\n\n if (rawGeneration.source !== FileGenerationSource.PDF_TEMPLATE) {\n throw new Error('[z_file] generation.source must be FileGenerationSource.PDF_TEMPLATE.');\n }\n\n if (typeof rawGeneration.templateId !== 'string' || rawGeneration.templateId.trim().length === 0) {\n throw new Error('[z_file] generation.templateId must be a non-empty string.');\n }\n}\n\nfunction assertGeneratedPdfFileOptions(params: {\n generation?: FileGenerationConfig;\n multiple: boolean;\n resolvedMimeTypes?: string[];\n overridable: boolean;\n ragSource?: RagSourceConfiguration;\n scanPolicy?: unknown;\n}): void {\n if (!params.generation) return;\n\n assertValidFileGenerationConfig(params.generation);\n\n if (params.multiple) {\n throw new Error('[z_file] PDF template generation supports single-file fields only.');\n }\n\n if (params.overridable === false) {\n throw new Error('[z_file] PDF template generation requires overridable to remain true so framework REGENERATE can replace the generated file.');\n }\n\n // Re-expression of the pre-Phase-0 `rag` refusal against the shared decorator: a PDF-template\n // output is framework-RENDERED presentation of resource data the corpus can already reach at the\n // source fields — chunking the rendering would index the same facts twice, keyed to a file the\n // next REGENERATE silently replaces.\n if (params.ragSource) {\n throw new Error('[z_file] PDF template generation cannot be combined with RAG ingestion options.');\n }\n\n if (params.scanPolicy) {\n throw new Error('[z_file] PDF template generation cannot be combined with upload scanPolicy options.');\n }\n\n if (\n params.resolvedMimeTypes !== undefined &&\n (params.resolvedMimeTypes.length !== 1 || params.resolvedMimeTypes[0] !== GENERATED_PDF_MIME_TYPES[0])\n ) {\n throw new Error('[z_file] PDF template generation requires allowedMimeTypes to resolve exactly to application/pdf.');\n }\n}\n\n/**\n * z_file() - Creates file schemas for file uploads.\n *\n * File values are stored as: { fileId: string, updatedAt: Date }\n * - fileId: Reference to the file in storage (foreign key, indexed)\n * - updatedAt: When the file was last updated\n *\n * @example\n * ```typescript\n * import { z_file } from '@wildo-ai/zod-decorators';\n *\n * const avatar = z_file();\n * const document = z_file({ allowedMimeTypes: 'Documents' });\n * const images = z_file({\n * allowedMimeTypes: 'Images',\n * maxSize: 5 * 1024 * 1024, // 5MB\n * overridable: true\n * });\n *\n * // With decorators (chainable)\n * z_file().fileUI({ edit: { editMode: FileEditMode.DROPZONE } })\n * z_file({ allowedMimeTypes: ['Images', 'PDF'] }).isHidden({ edit: true })\n * ```\n */\n\n/**\n * @wildo_source:part:start zod.decorators.file-schema\n *\n * Creates a file schema with metadata for detection and form component rendering.\n *\n * @param options - Configuration options for file field\n * @returns A Zod object schema with metadata for file detection\n */\nexport function createFileSchema(\n options: FileSchemaOptions = {}\n): DecoratedFileSchema | DecoratedMultipleFileSchema {\n const {\n overridable = true,\n allowedMimeTypes,\n maxSize,\n minSize,\n multiple = false,\n maxFiles,\n nature,\n storageAccepted,\n filePathBinding,\n generation,\n imageConstraints,\n videoConstraints,\n audioConstraints,\n documentConstraints,\n ragSource,\n textExtraction,\n scanPolicy,\n onParentDelete = 'cascade',\n sharable,\n sharableDefaults,\n } = options;\n\n // Warn at schema creation if non-WILDO_MANAGED storage providers are configured (not yet supported)\n // Uses deduplication to avoid console spam during tests or HMR\n if (storageAccepted && storageAccepted.some(s => !_supportedProviders.has(s))) {\n const unsupported = storageAccepted.filter(s => !_supportedProviders.has(s));\n const warnKey = unsupported.sort().join(',');\n if (!_warnedStorageProviders.has(warnKey)) {\n _warnedStorageProviders.add(warnKey);\n console.warn(\n `[z_file] storageAccepted contains unsupported providers: ${unsupported.join(', ')}. ` +\n `Only '${FileStorageAccepted.WILDO_MANAGED}' and '${FileStorageAccepted.LOCAL_DIRECTORY}' are currently implemented. ` +\n `External storage providers (OneDrive, Google Drive, Dropbox) will be ignored until their integrations are available.`\n );\n }\n }\n\n if (filePathBinding) {\n if (filePathBinding.multipleFilePolicy && !multiple) {\n console.warn(\n '[z_file] filePathBinding.multipleFilePolicy is set but multiple is false — multipleFilePolicy will be ignored. ' +\n 'Either set multiple: true or remove multipleFilePolicy.'\n );\n }\n if (filePathBinding.fileName && multiple) {\n console.warn(\n '[z_file] filePathBinding.fileName is set on a multiple file field — fileName is ignored for multiple uploads. ' +\n 'Use filePathBinding.multipleFilePolicy.fileNameTemplate instead.'\n );\n }\n const implicitOrExplicitS3 = !storageAccepted || storageAccepted.includes(FileStorageAccepted.WILDO_MANAGED);\n const localIncluded = storageAccepted?.includes(FileStorageAccepted.LOCAL_DIRECTORY);\n if (filePathBinding.includeApplicationId === false && implicitOrExplicitS3 && !localIncluded) {\n console.warn(\n '[z_file] filePathBinding.includeApplicationId is false with WILDO_MANAGED storage. ' +\n 'S3 keys will not be scoped by applicationId — ensure cross-app collision is acceptable.'\n );\n }\n }\n\n // Resolve MIME type groups to actual MIME types\n const resolvedMimeTypes = resolveMimeTypes(allowedMimeTypes);\n assertGeneratedPdfFileOptions({ generation, multiple, resolvedMimeTypes, overridable, ragSource, scanPolicy });\n const effectiveMimeTypes = generation ? [...GENERATED_PDF_MIME_TYPES] : resolvedMimeTypes;\n\n // Create the file object schema based on single/multiple\n const fileSchema = multiple\n ? z.object({\n fileIds: z.array(z.string().min(1)),\n updatedAt: z.date(),\n })\n : z.object({\n fileId: z.string().min(1),\n updatedAt: z.date(),\n });\n\n // No longer stored in metadata — consumers derive accept from allowedMimeTypes via buildAcceptAttribute()\n\n // Store file metadata in SCHEMA_METADATA.fileConfig\n const fileMetadata: FileSchemaMetadata = {\n isFile: true,\n overridable,\n ...(effectiveMimeTypes !== undefined && { allowedMimeTypes: effectiveMimeTypes }),\n ...(maxSize !== undefined && { maxSize }),\n ...(minSize !== undefined && { minSize }),\n multiple,\n ...(maxFiles !== undefined && { maxFiles }),\n ...(nature !== undefined && { nature }),\n ...(storageAccepted !== undefined && { storageAccepted }),\n ...(filePathBinding !== undefined && { filePathBinding }),\n ...(generation !== undefined && { generation }),\n ...(imageConstraints !== undefined && { imageConstraints }),\n ...(videoConstraints !== undefined && { videoConstraints }),\n ...(audioConstraints !== undefined && { audioConstraints }),\n ...(documentConstraints !== undefined && { documentConstraints }),\n // Text-provider config only — the RAG declaration itself is NOT stored here (single source of\n // truth is the RAG_SOURCE decorator registered below; read it with `getRagSourceConfig`).\n ...(textExtraction !== undefined && { textExtraction }),\n ...(scanPolicy !== undefined && { scanPolicy }),\n onParentDelete,\n ...(sharable !== undefined && { sharable }),\n ...(sharableDefaults !== undefined && { sharableDefaults }),\n };\n\n // Initialize or extend SCHEMA_METADATA with file config\n const existingMetadata: CustomFieldMetadata = (fileSchema as any)[SCHEMA_METADATA] || {};\n (fileSchema as any)[SCHEMA_METADATA] = {\n ...existingMetadata,\n fileConfig: fileMetadata,\n };\n\n // Add chainable decorator methods to the file schema instance\n addChainableMethods(fileSchema);\n\n // Map the file-side `ragSource` option onto the SHARED RAG_SOURCE decorator — the same one\n // `z.string().ragSource()` registers — so `RagSourceFieldDetection` sees one uniform declaration\n // regardless of text provider. Registered through `addDecorators` (the escape-hatch door) because\n // the fluent `.ragSource()` is deliberately not installed on ZodObject; the shared chokepoint\n // still validates the config and enforces the refused companions identically.\n if (ragSource !== undefined) {\n addDecorators(fileSchema, [{ ref: ZodDecorator.RAG_SOURCE, params: ragSource }]);\n }\n\n if (multiple) {\n return fileSchema as unknown as DecoratedMultipleFileSchema;\n }\n return fileSchema as unknown as DecoratedFileSchema;\n}\n\n/**\n * File schemas declare NO decorator surface of their own.\n *\n * They used to, via a `FileSchemaDecoratorMethods<TSelf>` mixin that re-declared `isDBIndexed`,\n * `isHidden`, `isNotEditable` and `showWhen` with the return narrowed to the file schema — necessary\n * only because the `ZodObject` module augmentation did not carry them. It now does (2026-08-12), and\n * re-declaring them made both interfaces below fail TS2320: an interface may not extend two types\n * whose same-named member differs, and `TSelf` is not `DecoratedPrimitiveZodType<this>`.\n *\n * Removing the mixin costs nothing, because `DecoratedPrimitiveZodType<T>` is `T & { … }` — an\n * INTERSECTION. `z_file().isHidden()` still returns something assignable to `DecoratedFileSchema`,\n * and the full decorator surface is now available rather than the four this mixin listed.\n */\n\n/**\n * Return type for single file schemas - includes decorator methods.\n * IS_DB_INDEXED will index the fileId field for query optimization.\n *\n * Uses `interface` instead of `type` to allow self-referencing without circular alias errors.\n */\nexport interface DecoratedFileSchema extends z.ZodObject<{\n fileId: z.ZodString;\n updatedAt: z.ZodDate;\n}> {}\n\n/**\n * Return type for multiple file schemas - includes decorator methods.\n * IS_DB_INDEXED will index the fileIds array for query optimization.\n *\n * Uses `interface` instead of `type` to allow self-referencing without circular alias errors.\n */\nexport interface DecoratedMultipleFileSchema extends z.ZodObject<{\n fileIds: z.ZodArray<z.ZodString>;\n updatedAt: z.ZodDate;\n}> {}\n\n/**\n * Creates a file schema for file uploads with reference storage.\n * Named z_file to indicate it's a Zod helper function exported standalone.\n *\n * Single file values are stored as: { fileId: string, updatedAt: Date }\n * Multiple file values are stored as: { fileIds: string[], updatedAt: Date }\n *\n * @example\n * ```typescript\n * import { z_file } from '@wildo-ai/zod-decorators';\n *\n * // Simple usage - single file, any type\n * z_file()\n *\n * // With MIME type groups (shortcuts)\n * z_file({ allowedMimeTypes: 'Images' })\n * z_file({ allowedMimeTypes: 'PDF' })\n * z_file({ allowedMimeTypes: ['Images', 'Video'] })\n * z_file({ allowedMimeTypes: 'Documents' }) // PDF + Office\n *\n * // With specific MIME types\n * z_file({ allowedMimeTypes: ['image/png', 'image/jpeg'] })\n *\n * // With size constraints\n * z_file({ maxSize: 10 * 1024 * 1024 }) // 10MB max\n *\n * // Multiple files (uses fileIds instead of fileId)\n * z_file({ multiple: true, maxFiles: 5 })\n *\n * // Non-overridable (append-only)\n * z_file({ overridable: false })\n *\n * // RAG corpus source — registers the shared RAG_SOURCE decorator on the returned schema\n * // (chunking config), with the file-side text-provider knobs beside it (OCR opt-in).\n * z_file({ allowedMimeTypes: 'Documents', ragSource: {}, textExtraction: { ocr: true } })\n *\n * // With decorators\n * z_file().fileUI({ edit: { editMode: FileEditMode.DROPZONE } })\n * z_file().isHidden({ display: true })\n * ```\n */\nexport function z_file(options?: FileSchemaOptions): DecoratedFileSchema | DecoratedMultipleFileSchema {\n return createFileSchema(options);\n}\n/** @wildo_source:part:end zod.decorators.file-schema */\n\n// ============================================================================\n// UTILITY FUNCTIONS\n// ============================================================================\n\n/**\n * Format file size for display.\n */\nexport function formatFileSize(bytes: number): string {\n if (!Number.isFinite(bytes)) return '—';\n if (bytes === 0) return '0 B';\n if (bytes < 0) return '-' + formatFileSize(Math.abs(bytes));\n\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n const k = 1024;\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${units[i]}`;\n}\n\n/**\n * Build enhanced accept attribute string from MIME types.\n * Includes both MIME types and extensions for better browser compatibility.\n * Format: \"image/*,.jpg,.jpeg,.png\" or \"application/pdf,.pdf\"\n *\n * @param mimeTypes - Array of MIME type strings\n * @returns Accept attribute string with MIME types and extensions\n */\nexport function buildAcceptAttribute(mimeTypes: string[]): string {\n if (!mimeTypes || mimeTypes.length === 0) return '';\n\n const parts = new Set<string>();\n const extensions = new Set<string>();\n\n for (const mimeType of mimeTypes) {\n // Add MIME type\n parts.add(mimeType);\n\n // Get extensions for this MIME type\n const mimeExtensions = UnifiedFileFormatRegistry.getExtensions(mimeType);\n for (const ext of mimeExtensions) {\n if (ext) {\n extensions.add(`.${ext}`);\n }\n }\n\n // Also check if it's a wildcard MIME type (e.g., image/*)\n // In that case, get all extensions for that nature\n if (mimeType.endsWith('/*')) {\n const formatType = UnifiedFileFormatRegistry.getFormatTypeFromMimeType(mimeType);\n\n if (formatType && formatType.type === 'nature') {\n const natureExtensions = UnifiedFileFormatRegistry.getExtensionsForNature(formatType.nature);\n for (const ext of natureExtensions) {\n if (ext) {\n extensions.add(`.${ext}`);\n }\n }\n }\n }\n }\n\n // Combine MIME types and extensions\n const allParts = [...parts, ...extensions];\n return allParts.join(',');\n}\n\n/**\n * Get file extension from filename.\n * Uses UnifiedFileFormatRegistry for consistency.\n */\nexport function getFileExtension(filename: string): string {\n return UnifiedFileFormatRegistry.getFileExtension(filename);\n}\n\n/**\n * Check if a MIME type is allowed based on allowed types.\n */\nexport function isMimeTypeAllowed(mimeType: string, allowedMimeTypes?: string[]): boolean {\n if (!allowedMimeTypes || allowedMimeTypes.length === 0) return true;\n\n // Check exact match\n if (allowedMimeTypes.includes(mimeType)) return true;\n\n // Check wildcard match (e.g., \"image/*\")\n const [type] = mimeType.split('/');\n if (allowedMimeTypes.includes(`${type}/*`)) return true;\n\n return false;\n}\n\n/**\n * Get a human-readable description of allowed file types.\n * Uses UnifiedFileFormatRegistry for better format detection.\n */\nexport function getAcceptDescription(allowedMimeTypes?: string[]): string {\n if (!allowedMimeTypes || allowedMimeTypes.length === 0) return 'All files';\n\n const types = new Set<string>();\n\n for (const mime of allowedMimeTypes) {\n // Use registry to detect format type\n const formatType = UnifiedFileFormatRegistry.getFormatTypeFromMimeType(mime);\n\n if (formatType) {\n if (formatType.type === 'nature') {\n // Map FileNature to human-readable names\n const natureNames: Record<string, string> = {\n [FileNature.IMAGE]: 'Images',\n [FileNature.VIDEO]: 'Videos',\n [FileNature.AUDIO]: 'Audio files',\n [FileNature.PDF]: 'PDF',\n [FileNature.OFFICE]: 'Office documents',\n [FileNature.ARCHIVE]: 'Archives',\n };\n const name = natureNames[formatType.nature];\n if (name) {\n types.add(name);\n continue;\n }\n } else if (formatType.type === 'agent') {\n // Map agent formats to human-readable names\n const agentNames: Record<string, string> = {\n 'text': 'Text files',\n 'markdown': 'Markdown',\n 'json': 'JSON',\n 'typescript': 'TypeScript',\n 'typescript_react': 'TypeScript React',\n 'yaml': 'YAML',\n };\n const name = agentNames[formatType.format] || formatType.format.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase());\n types.add(name);\n continue;\n }\n }\n\n // Fallback: use MIME type patterns\n if (mime === 'application/pdf') {\n types.add('PDF');\n } else if (mime.startsWith('image/')) {\n types.add('Images');\n } else if (mime.startsWith('video/')) {\n types.add('Videos');\n } else if (mime.startsWith('audio/')) {\n types.add('Audio');\n } else if (mime.includes('document') || mime.includes('word') || mime.includes('excel') || mime.includes('powerpoint')) {\n types.add('Office documents');\n } else {\n // Get extension-like description\n const ext = mime.split('/').pop()?.toUpperCase();\n if (ext) types.add(ext);\n }\n }\n\n return Array.from(types).join(', ') || 'Selected file types';\n}\n\n/**\n * Get file nature from schema metadata.\n * @param schema - Zod schema (must be a file schema)\n * @returns FileNature or undefined if not set\n */\nexport function getFileNature(schema: z.ZodTypeAny): FileNature | undefined {\n const metadata = (schema as any)[SCHEMA_METADATA] as CustomFieldMetadata | undefined;\n return metadata?.fileConfig?.nature;\n}\n\n/**\n * Get storage accepted from schema metadata.\n * @param schema - Zod schema (must be a file schema)\n * @returns Array of FileStorageAccepted or undefined if not set\n */\nexport function getStorageAccepted(schema: z.ZodTypeAny): FileStorageAccepted[] | undefined {\n const metadata = (schema as any)[SCHEMA_METADATA] as CustomFieldMetadata | undefined;\n return metadata?.fileConfig?.storageAccepted;\n}\n\n/**\n * Get file constraints from schema metadata.\n * @param schema - Zod schema (must be a file schema)\n * @returns Object with all constraint properties or undefined if not set\n */\nexport function getFileConstraints(schema: z.ZodTypeAny): {\n imageConstraints?: FileNatureConstraints_Image;\n videoConstraints?: FileNatureConstraints_Video;\n audioConstraints?: FileNatureConstraints_Audio;\n documentConstraints?: FileNatureConstraints_Document;\n} | undefined {\n const metadata = (schema as any)[SCHEMA_METADATA] as CustomFieldMetadata | undefined;\n const fileConfig = metadata?.fileConfig;\n if (!fileConfig) return undefined;\n\n const hasConstraints =\n fileConfig.imageConstraints ||\n fileConfig.videoConstraints ||\n fileConfig.audioConstraints ||\n fileConfig.documentConstraints;\n\n if (!hasConstraints) return undefined;\n\n return {\n ...(fileConfig.imageConstraints && { imageConstraints: fileConfig.imageConstraints }),\n ...(fileConfig.videoConstraints && { videoConstraints: fileConfig.videoConstraints }),\n ...(fileConfig.audioConstraints && { audioConstraints: fileConfig.audioConstraints }),\n ...(fileConfig.documentConstraints && { documentConstraints: fileConfig.documentConstraints }),\n };\n}\n\n// ============================================================================\n// DISPLAY NATURE RESOLUTION\n// ============================================================================\n\n/**\n * Mapping from schema-level `FileNature` to rendering-level `FileDisplayNature`.\n *\n * PDF and OFFICE both render as DOCUMENT.\n * ARCHIVE and ALL are GENERIC (no specialized renderer).\n */\nconst FILE_NATURE_TO_DISPLAY_NATURE: Record<FileNature, FileDisplayNature> = {\n [FileNature.IMAGE]: FileDisplayNature.IMAGE,\n [FileNature.VIDEO]: FileDisplayNature.VIDEO,\n [FileNature.AUDIO]: FileDisplayNature.AUDIO,\n [FileNature.PDF]: FileDisplayNature.DOCUMENT,\n [FileNature.OFFICE]: FileDisplayNature.DOCUMENT,\n [FileNature.ARCHIVE]: FileDisplayNature.GENERIC,\n [FileNature.ALL]: FileDisplayNature.GENERIC,\n};\n\n/**\n * Detect `FileDisplayNature` from a MIME type string.\n *\n * Used as a fallback when no `FileNature` is declared in schema metadata.\n */\nfunction detectDisplayNatureFromMimeType(mimeType: string): FileDisplayNature {\n if (mimeType.startsWith('image/')) return FileDisplayNature.IMAGE;\n if (mimeType.startsWith('video/')) return FileDisplayNature.VIDEO;\n if (mimeType.startsWith('audio/')) return FileDisplayNature.AUDIO;\n if (\n mimeType === 'application/pdf' ||\n mimeType.includes('document') || mimeType.includes('word') ||\n mimeType.includes('spreadsheet') || mimeType.includes('excel') ||\n mimeType.includes('presentation') || mimeType.includes('powerpoint')\n ) return FileDisplayNature.DOCUMENT;\n return FileDisplayNature.GENERIC;\n}\n\n/**\n * Resolve the rendering-level display nature for a file.\n *\n * Resolution priority:\n * 1. `schemaNature` (from `z_file({ nature: ... })` metadata) → mapped via `FILE_NATURE_TO_DISPLAY_NATURE`\n * 2. `mimeType` (from file metadata or browser File object) → detected via MIME prefix matching\n * 3. `FileDisplayNature.GENERIC` (fallback)\n *\n * @param schemaNature - The `FileNature` declared in schema metadata (from `getFileMetadata(schema)?.nature`)\n * @param mimeType - The MIME type of the actual file\n * @returns The `FileDisplayNature` to use for rendering\n *\n * @example\n * ```typescript\n * const displayNature = resolveFileDisplayNature(fileSchemaMetadata?.nature, metadata.mimeType)\n * // FileDisplayNature.IMAGE | .VIDEO | .AUDIO | .DOCUMENT | .GENERIC\n * ```\n */\nexport function resolveFileDisplayNature(\n schemaNature?: FileNature,\n mimeType?: string,\n): FileDisplayNature {\n // Priority 1: Schema-declared nature\n if (schemaNature) {\n return FILE_NATURE_TO_DISPLAY_NATURE[schemaNature] ?? FileDisplayNature.GENERIC;\n }\n // Priority 2: MIME type detection\n if (mimeType) {\n return detectDisplayNatureFromMimeType(mimeType);\n }\n // Priority 3: Fallback\n return FileDisplayNature.GENERIC;\n}\n\n// ============================================================================\n// DISPLAY POLICY RESOLUTION (presentation × activation, + the availability guard)\n// ============================================================================\n\n/**\n * Whether the engine can RENDER a file of this nature/MIME (i.e. whether\n * `THUMBNAIL` / `FULL` presentation and `OVERLAY` activation are satisfiable).\n *\n * Nature alone is not always enough: `DOCUMENT` covers PDF *and* Office, and only\n * PDF has a viewer — so the MIME decides when it is known. Extend this (and only\n * this) when a new displayer ships; every guard tier reads it, so availability can\n * never drift between the static and runtime answers.\n */\nexport function fileNatureHasDisplayer(\n displayNature: FileDisplayNature,\n mimeType?: string,\n): boolean {\n switch (displayNature) {\n case FileDisplayNature.IMAGE:\n case FileDisplayNature.VIDEO:\n case FileDisplayNature.AUDIO:\n return true;\n case FileDisplayNature.DOCUMENT:\n // PDF renders (PDF.js); Office documents have no viewer yet. With no MIME\n // known (the static tier on a declared PDF nature) the answer is yes,\n // because `FileNature.PDF` maps here only for PDFs.\n return mimeType === undefined || mimeType === 'application/pdf';\n case FileDisplayNature.GENERIC:\n return false;\n }\n}\n\n/**\n * Whether a DECLARED schema nature can satisfy a display-requiring policy, decided\n * WITHOUT a MIME type. This is the static (registry-build) tier of the guard.\n *\n * Returns `undefined` for `FileNature.ALL` — genuinely undecidable before the file\n * exists, so the static tier must admit it and the runtime tier decides. Any other\n * nature yields a definite answer, which is what lets a misauthored\n * `ARCHIVE` + `FULL` fail at build instead of rendering nothing at runtime.\n */\nexport function declaredFileNatureCanDisplay(schemaNature: FileNature): boolean | undefined {\n if (schemaNature === FileNature.ALL) return undefined;\n return fileNatureHasDisplayer(FILE_NATURE_TO_DISPLAY_NATURE[schemaNature] ?? FileDisplayNature.GENERIC);\n}\n\n/** Outcome of {@link resolveFileDisplayPolicy}. */\nexport interface ResolvedFileDisplayPolicy {\n /** Effective resting presentation after the availability guard. */\n presentation: FileDisplayPresentation;\n /** Effective activation after the availability guard. */\n activation: FileActivationConfig;\n /** The nature the effective policy was resolved against. */\n displayNature: FileDisplayNature;\n /** True when the authored policy could not be satisfied and was degraded. */\n degraded: boolean;\n /** Human-readable cause, for the dev-only warning. Set iff `degraded`. */\n degradationReason?: string;\n}\n\n/**\n * Resolve the effective file display policy — the RUNTIME tier of the guard.\n *\n * Defaults, when nothing is authored: `CARD` presentation, and an activation derived\n * from the nature (`OVERLAY` when a displayer exists, `DOWNLOAD` otherwise) — so a\n * file is always useful without any authoring, and a document does not mount a\n * viewer just by being on the page.\n *\n * Degradation is deterministic, never a crash and never a dead control:\n * `FULL`/`THUMBNAIL` → `CARD`, `OVERLAY` → `DOWNLOAD`. It only fires when the file's\n * actual nature has no displayer — which is only reachable when the schema declared\n * an open nature (`FileNature.ALL`), because a narrow declared nature that cannot\n * display was already refused at registry build.\n *\n * `CUSTOM` is never degraded: it targets an operation, not a displayer, so displayer\n * availability is irrelevant to it.\n */\nexport function resolveFileDisplayPolicy(params: {\n schemaNature?: FileNature;\n mimeType?: string;\n authored?: FileUIDisplayParams;\n}): ResolvedFileDisplayPolicy {\n const { schemaNature, mimeType, authored } = params;\n const displayNature = resolveFileDisplayNature(schemaNature, mimeType);\n const hasDisplayer = fileNatureHasDisplayer(displayNature, mimeType);\n\n const requestedPresentation = authored?.presentation ?? FileDisplayPresentation.CARD;\n const requestedActivation: FileActivationConfig = authored?.activation ?? {\n policy: hasDisplayer ? FileActivationPolicy.OVERLAY : FileActivationPolicy.DOWNLOAD,\n };\n\n const presentationNeedsDisplayer = requestedPresentation !== FileDisplayPresentation.CARD;\n const activationNeedsDisplayer = requestedActivation.policy === FileActivationPolicy.OVERLAY;\n\n if (hasDisplayer || (!presentationNeedsDisplayer && !activationNeedsDisplayer)) {\n return { presentation: requestedPresentation, activation: requestedActivation, displayNature, degraded: false };\n }\n\n return {\n presentation: presentationNeedsDisplayer ? FileDisplayPresentation.CARD : requestedPresentation,\n activation: activationNeedsDisplayer ? { policy: FileActivationPolicy.DOWNLOAD } : requestedActivation,\n displayNature,\n degraded: true,\n degradationReason:\n `no displayer for ${displayNature}${mimeType ? ` (${mimeType})` : ''}: `\n + `${presentationNeedsDisplayer ? `presentation ${requestedPresentation} → card` : ''}`\n + `${presentationNeedsDisplayer && activationNeedsDisplayer ? ', ' : ''}`\n + `${activationNeedsDisplayer ? 'activation overlay → download' : ''}`,\n };\n}\n"]}