@wildo-ai/zod-decorators 1.1.11 → 1.1.12

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 (78) hide show
  1. package/dist/esm/commons.d.ts.map +1 -1
  2. package/dist/esm/commons.js.map +1 -1
  3. package/dist/esm/currencies.shared.schemas.d.ts.map +1 -1
  4. package/dist/esm/currencies.shared.schemas.js.map +1 -1
  5. package/dist/esm/files/agent-file-formats.d.ts.map +1 -1
  6. package/dist/esm/files/agent-file-formats.js.map +1 -1
  7. package/dist/esm/files/extension-nature-map.d.ts.map +1 -1
  8. package/dist/esm/files/extension-nature-map.js.map +1 -1
  9. package/dist/esm/files/file-extensions.enum.d.ts.map +1 -1
  10. package/dist/esm/files/file-extensions.enum.js.map +1 -1
  11. package/dist/esm/files/mime-registry.d.ts.map +1 -1
  12. package/dist/esm/files/mime-registry.js.map +1 -1
  13. package/dist/esm/files/unified-registry.d.ts.map +1 -1
  14. package/dist/esm/files/unified-registry.js.map +1 -1
  15. package/dist/esm/index.d.ts +2 -0
  16. package/dist/esm/index.d.ts.map +1 -1
  17. package/dist/esm/index.js +2 -0
  18. package/dist/esm/index.js.map +1 -1
  19. package/dist/esm/install-bigint-json-encoding.d.ts +1 -1
  20. package/dist/esm/install-bigint-json-encoding.d.ts.map +1 -1
  21. package/dist/esm/install-bigint-json-encoding.js +1 -1
  22. package/dist/esm/install-bigint-json-encoding.js.map +1 -1
  23. package/dist/esm/testing/decorated-test-schemas.d.ts +7 -7
  24. package/dist/esm/testing/decorated-test-schemas.d.ts.map +1 -1
  25. package/dist/esm/testing/decorated-test-schemas.js.map +1 -1
  26. package/dist/esm/testing.d.ts.map +1 -1
  27. package/dist/esm/testing.js.map +1 -1
  28. package/dist/esm/zod-address.d.ts.map +1 -1
  29. package/dist/esm/zod-address.js.map +1 -1
  30. package/dist/esm/zod-bigdecimal.d.ts +4 -4
  31. package/dist/esm/zod-bigdecimal.d.ts.map +1 -1
  32. package/dist/esm/zod-bigdecimal.js.map +1 -1
  33. package/dist/esm/zod-code.d.ts +4 -4
  34. package/dist/esm/zod-code.d.ts.map +1 -1
  35. package/dist/esm/zod-code.js.map +1 -1
  36. package/dist/esm/zod-color.d.ts.map +1 -1
  37. package/dist/esm/zod-color.js.map +1 -1
  38. package/dist/esm/zod-decorators.types.d.ts +116 -9
  39. package/dist/esm/zod-decorators.types.d.ts.map +1 -1
  40. package/dist/esm/zod-decorators.types.js +40 -1
  41. package/dist/esm/zod-decorators.types.js.map +1 -1
  42. package/dist/esm/zod-document-sequence.d.ts.map +1 -1
  43. package/dist/esm/zod-document-sequence.js.map +1 -1
  44. package/dist/esm/zod-duration.d.ts +6 -6
  45. package/dist/esm/zod-duration.d.ts.map +1 -1
  46. package/dist/esm/zod-duration.js.map +1 -1
  47. package/dist/esm/zod-file.d.ts +5 -4
  48. package/dist/esm/zod-file.d.ts.map +1 -1
  49. package/dist/esm/zod-file.js +1 -1
  50. package/dist/esm/zod-file.js.map +1 -1
  51. package/dist/esm/zod-money.d.ts +4 -4
  52. package/dist/esm/zod-money.d.ts.map +1 -1
  53. package/dist/esm/zod-money.js.map +1 -1
  54. package/dist/esm/zod-phone.d.ts +4 -4
  55. package/dist/esm/zod-phone.d.ts.map +1 -1
  56. package/dist/esm/zod-phone.js.map +1 -1
  57. package/dist/esm/zod-range.d.ts.map +1 -1
  58. package/dist/esm/zod-range.js.map +1 -1
  59. package/dist/esm/zod-utils.shared.d.ts +47 -12
  60. package/dist/esm/zod-utils.shared.d.ts.map +1 -1
  61. package/dist/esm/zod-utils.shared.js +143 -40
  62. package/dist/esm/zod-utils.shared.js.map +1 -1
  63. package/dist/esm/zod-versioned.d.ts.map +1 -1
  64. package/dist/esm/zod-versioned.js.map +1 -1
  65. package/dist/esm/zod-wire-date.d.ts +107 -0
  66. package/dist/esm/zod-wire-date.d.ts.map +1 -0
  67. package/dist/esm/zod-wire-date.js +162 -0
  68. package/dist/esm/zod-wire-date.js.map +1 -0
  69. package/dist/esm/zod-year-month.d.ts +76 -0
  70. package/dist/esm/zod-year-month.d.ts.map +1 -0
  71. package/dist/esm/zod-year-month.js +115 -0
  72. package/dist/esm/zod-year-month.js.map +1 -0
  73. package/dist/esm/zod.module-override.d.ts +139 -156
  74. package/dist/esm/zod.module-override.d.ts.map +1 -1
  75. package/dist/esm/zod.module-override.js +176 -6
  76. package/dist/esm/zod.module-override.js.map +1 -1
  77. package/dist/tsconfig.build.tsbuildinfo +1 -1
  78. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"commons.d.ts","sourceRoot":"","sources":["../../../src/commons.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;CAMpB,CAAC;AAGX,oBAAY,UAAU;IACpB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,GAAG,QAAQ;CACZ;AAMD,gEAAgE;AAChE,oBAAY,kBAAkB;IAC5B,MAAM,QAAQ,CAAgB,mBAAmB;IACjD,WAAW,QAAQ,CAAW,+BAA+B;IAC7D,OAAO,SAAS;CACjB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAQvE"}
1
+ {"version":3,"file":"commons.d.ts","sourceRoot":"","sources":["../../src/commons.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;CAMpB,CAAC;AAGX,oBAAY,UAAU;IACpB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,GAAG,QAAQ;CACZ;AAMD,gEAAgE;AAChE,oBAAY,kBAAkB;IAC5B,MAAM,QAAQ,CAAgB,mBAAmB;IACjD,WAAW,QAAQ,CAAW,+BAA+B;IAC7D,OAAO,SAAS;CACjB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAQvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/commons.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,IAAI;CACD,CAAC;AAGX,MAAM,CAAN,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,yBAAW,CAAA;AACb,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB;AAED,mCAAmC;AACnC,uBAAuB;AACvB,mCAAmC;AAEnC,gEAAgE;AAChE,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,oCAAc,CAAA;IACd,yCAAmB,CAAA;IACnB,sCAAgB,CAAA;AAClB,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC;QACjC,OAAO,kBAAkB,CAAC,MAAM,CAAC;IACnC,CAAC;SAAM,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC;QACxC,OAAO,kBAAkB,CAAC,WAAW,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,kBAAkB,CAAC,OAAO,CAAC;IACpC,CAAC;AACH,CAAC","sourcesContent":["export const BREAKPOINT_VALUES = {\n SM: 640,\n MD: 768,\n LG: 1024,\n XL: 1280,\n XXL: 1536,\n} as const;\n\n\nexport enum Breakpoint {\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n XXL = '2xl',\n}\n\n// ================================\n// Viewport Breakpoints\n// ================================\n\n/** Viewport breakpoint groupings — mobile / tablet / desktop */\nexport enum ViewportBreakpoint {\n MOBILE = '<md', // Mobile (< 768px)\n VERT_TABLET = '<lg', // Vertical tablet (768–1023px)\n DESKTOP = '>=lg', // Desktop (>= 1024px)\n}\n\n/**\n * Determine ViewportBreakpoint from pixel width.\n * Uses BREAKPOINT_VALUES as single source of truth.\n */\nexport function getViewportBreakpoint(width: number): ViewportBreakpoint {\n if (width < BREAKPOINT_VALUES.MD) {\n return ViewportBreakpoint.MOBILE;\n } else if (width < BREAKPOINT_VALUES.LG) {\n return ViewportBreakpoint.VERT_TABLET;\n } else {\n return ViewportBreakpoint.DESKTOP;\n }\n}"]}
1
+ {"version":3,"file":"commons.js","sourceRoot":"","sources":["../../src/commons.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,IAAI;CACD,CAAC;AAGX,MAAM,CAAN,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,yBAAW,CAAA;AACb,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB;AAED,mCAAmC;AACnC,uBAAuB;AACvB,mCAAmC;AAEnC,gEAAgE;AAChE,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,oCAAc,CAAA;IACd,yCAAmB,CAAA;IACnB,sCAAgB,CAAA;AAClB,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC;QACjC,OAAO,kBAAkB,CAAC,MAAM,CAAC;IACnC,CAAC;SAAM,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC;QACxC,OAAO,kBAAkB,CAAC,WAAW,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,kBAAkB,CAAC,OAAO,CAAC;IACpC,CAAC;AACH,CAAC","sourcesContent":["export const BREAKPOINT_VALUES = {\n SM: 640,\n MD: 768,\n LG: 1024,\n XL: 1280,\n XXL: 1536,\n} as const;\n\n\nexport enum Breakpoint {\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n XXL = '2xl',\n}\n\n// ================================\n// Viewport Breakpoints\n// ================================\n\n/** Viewport breakpoint groupings — mobile / tablet / desktop */\nexport enum ViewportBreakpoint {\n MOBILE = '<md', // Mobile (< 768px)\n VERT_TABLET = '<lg', // Vertical tablet (768–1023px)\n DESKTOP = '>=lg', // Desktop (>= 1024px)\n}\n\n/**\n * Determine ViewportBreakpoint from pixel width.\n * Uses BREAKPOINT_VALUES as single source of truth.\n */\nexport function getViewportBreakpoint(width: number): ViewportBreakpoint {\n if (width < BREAKPOINT_VALUES.MD) {\n return ViewportBreakpoint.MOBILE;\n } else if (width < BREAKPOINT_VALUES.LG) {\n return ViewportBreakpoint.VERT_TABLET;\n } else {\n return ViewportBreakpoint.DESKTOP;\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"currencies.shared.schemas.d.ts","sourceRoot":"","sources":["../../../src/currencies.shared.schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"currencies.shared.schemas.d.ts","sourceRoot":"","sources":["../../src/currencies.shared.schemas.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"currencies.shared.schemas.js","sourceRoot":"","sources":["../../../src/currencies.shared.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["\n/**\n * Currencies Shared Schemas\n * \n * Common currency enums for the SaaS platform\n * Based on ISO 4217 standard (2025-05-12)\n */\n\nimport { z } from 'zod';\n\n/**\n * Available Currencies Enum\n * \n * Most commonly used currencies worldwide (ISO 4217 codes)\n */\nexport enum AvailableCurrency {\n // Major Currencies\n USD = 'USD', // US Dollar\n EUR = 'EUR', // Euro\n GBP = 'GBP', // British Pound\n JPY = 'JPY', // Japanese Yen\n CAD = 'CAD', // Canadian Dollar\n AUD = 'AUD', // Australian Dollar\n CHF = 'CHF', // Swiss Franc\n CNY = 'CNY', // Chinese Yuan\n \n // Other Major Currencies\n INR = 'INR', // Indian Rupee\n BRL = 'BRL', // Brazilian Real\n MXN = 'MXN', // Mexican Peso\n KRW = 'KRW', // South Korean Won\n RUB = 'RUB', // Russian Ruble\n ZAR = 'ZAR', // South African Rand\n \n // European Currencies (Non-Euro)\n SEK = 'SEK', // Swedish Krona\n NOK = 'NOK', // Norwegian Krone\n DKK = 'DKK', // Danish Krone\n PLN = 'PLN', // Polish Zloty\n CZK = 'CZK', // Czech Koruna\n HUF = 'HUF', // Hungarian Forint\n RON = 'RON', // Romanian Leu\n BGN = 'BGN', // Bulgarian Lev\n HRK = 'HRK', // Croatian Kuna (historical, replaced by EUR)\n ISK = 'ISK', // Icelandic Krona\n UAH = 'UAH', // Ukrainian Hryvnia\n BYN = 'BYN', // Belarusian Ruble\n RSD = 'RSD', // Serbian Dinar\n BAM = 'BAM', // Bosnia and Herzegovina Convertible Mark\n MDL = 'MDL', // Moldovan Leu\n ALL = 'ALL', // Albanian Lek\n MKD = 'MKD', // Macedonian Denar\n \n // Asia-Pacific\n SGD = 'SGD', // Singapore Dollar\n HKD = 'HKD', // Hong Kong Dollar\n TWD = 'TWD', // New Taiwan Dollar\n THB = 'THB', // Thai Baht\n MYR = 'MYR', // Malaysian Ringgit\n IDR = 'IDR', // Indonesian Rupiah\n PHP = 'PHP', // Philippine Peso\n VND = 'VND', // Vietnamese Dong\n NZD = 'NZD', // New Zealand Dollar\n BND = 'BND', // Brunei Dollar\n FJD = 'FJD', // Fiji Dollar\n PGK = 'PGK', // Papua New Guinean Kina\n WST = 'WST', // Samoan Tala\n SBD = 'SBD', // Solomon Islands Dollar\n VUV = 'VUV', // Vanuatu Vatu\n TOP = 'TOP', // Tongan Pa'anga\n MVR = 'MVR', // Maldivian Rufiyaa\n BTN = 'BTN', // Bhutanese Ngultrum\n MOP = 'MOP', // Macanese Pataca\n \n // Middle East\n AED = 'AED', // UAE Dirham\n SAR = 'SAR', // Saudi Riyal\n QAR = 'QAR', // Qatari Riyal\n KWD = 'KWD', // Kuwaiti Dinar\n BHD = 'BHD', // Bahraini Dinar\n OMR = 'OMR', // Omani Rial\n JOD = 'JOD', // Jordanian Dinar\n ILS = 'ILS', // Israeli Shekel\n TRY = 'TRY', // Turkish Lira\n IQD = 'IQD', // Iraqi Dinar\n IRR = 'IRR', // Iranian Rial\n LBP = 'LBP', // Lebanese Pound\n SYP = 'SYP', // Syrian Pound\n YER = 'YER', // Yemeni Rial\n \n // North Africa\n EGP = 'EGP', // Egyptian Pound\n MAD = 'MAD', // Moroccan Dirham\n TND = 'TND', // Tunisian Dinar\n DZD = 'DZD', // Algerian Dinar\n LYD = 'LYD', // Libyan Dinar\n SDG = 'SDG', // Sudanese Pound\n \n // Sub-Saharan Africa\n NGN = 'NGN', // Nigerian Naira\n KES = 'KES', // Kenyan Shilling\n GHS = 'GHS', // Ghanaian Cedi\n XOF = 'XOF', // West African CFA Franc\n XAF = 'XAF', // Central African CFA Franc\n ETB = 'ETB', // Ethiopian Birr\n UGX = 'UGX', // Ugandan Shilling\n TZS = 'TZS', // Tanzanian Shilling\n RWF = 'RWF', // Rwandan Franc\n MWK = 'MWK', // Malawian Kwacha\n ZMW = 'ZMW', // Zambian Kwacha\n BWP = 'BWP', // Botswana Pula\n NAD = 'NAD', // Namibian Dollar\n SZL = 'SZL', // Swazi Lilangeni\n LSL = 'LSL', // Lesotho Loti\n MZN = 'MZN', // Mozambican Metical\n AOA = 'AOA', // Angolan Kwanza\n MUR = 'MUR', // Mauritian Rupee\n SCR = 'SCR', // Seychelles Rupee\n MGA = 'MGA', // Malagasy Ariary\n SSP = 'SSP', // South Sudanese Pound\n SOS = 'SOS', // Somali Shilling\n DJF = 'DJF', // Djibouti Franc\n KMF = 'KMF', // Comorian Franc\n CVE = 'CVE', // Cabo Verde Escudo\n ERN = 'ERN', // Eritrean Nakfa\n GMD = 'GMD', // Gambian Dalasi\n GNF = 'GNF', // Guinean Franc\n LRD = 'LRD', // Liberian Dollar\n SLE = 'SLE', // Sierra Leonean Leone\n MRU = 'MRU', // Mauritanian Ouguiya\n STN = 'STN', // São Tomé and Príncipe Dobra\n BIF = 'BIF', // Burundi Franc\n CDF = 'CDF', // Congolese Franc\n \n // South America\n ARS = 'ARS', // Argentine Peso\n CLP = 'CLP', // Chilean Peso\n COP = 'COP', // Colombian Peso\n PEN = 'PEN', // Peruvian Sol\n UYU = 'UYU', // Uruguayan Peso\n PYG = 'PYG', // Paraguayan Guarani\n BOB = 'BOB', // Bolivian Boliviano\n VES = 'VES', // Venezuelan Bolívar Soberano\n GYD = 'GYD', // Guyanese Dollar\n SRD = 'SRD', // Surinamese Dollar\n \n // Central America & Caribbean\n CRC = 'CRC', // Costa Rican Colon\n GTQ = 'GTQ', // Guatemalan Quetzal\n HNL = 'HNL', // Honduran Lempira\n NIO = 'NIO', // Nicaraguan Cordoba\n PAB = 'PAB', // Panamanian Balboa\n DOP = 'DOP', // Dominican Peso\n JMD = 'JMD', // Jamaican Dollar\n TTD = 'TTD', // Trinidad and Tobago Dollar\n XCD = 'XCD', // East Caribbean Dollar\n BBD = 'BBD', // Barbados Dollar\n BSD = 'BSD', // Bahamian Dollar\n HTG = 'HTG', // Haitian Gourde\n BZD = 'BZD', // Belize Dollar\n CUP = 'CUP', // Cuban Peso\n AWG = 'AWG', // Aruban Florin\n KYD = 'KYD', // Cayman Islands Dollar\n BMD = 'BMD', // Bermudian Dollar\n \n // Pacific Territories\n XPF = 'XPF', // CFP Franc\n \n // Central Asia\n AFN = 'AFN', // Afghan Afghani\n PKR = 'PKR', // Pakistani Rupee\n BDT = 'BDT', // Bangladeshi Taka\n LKR = 'LKR', // Sri Lankan Rupee\n NPR = 'NPR', // Nepalese Rupee\n MMK = 'MMK', // Myanmar Kyat\n LAK = 'LAK', // Lao Kip\n KHR = 'KHR', // Cambodian Riel\n MNT = 'MNT', // Mongolian Tugrik\n UZS = 'UZS', // Uzbekistani Som\n KZT = 'KZT', // Kazakhstani Tenge\n KGS = 'KGS', // Kyrgyzstani Som\n TJS = 'TJS', // Tajikistani Somoni\n TMT = 'TMT', // Turkmenistani Manat\n GEL = 'GEL', // Georgian Lari\n AMD = 'AMD', // Armenian Dram\n AZN = 'AZN', // Azerbaijani Manat\n \n // Special\n XDR = 'XDR', // Special Drawing Rights (IMF)\n XXX = 'XXX', // No currency\n \n // Cryptocurrencies - Core Majors\n BTC = 'BTC', // Bitcoin\n ETH = 'ETH', // Ethereum\n \n // Cryptocurrencies - Major Stablecoins\n USDT = 'USDT', // Tether\n USDC = 'USDC', // USD Coin\n DAI = 'DAI', // Dai\n PYUSD = 'PYUSD', // PayPal USD\n USDe = 'USDe', // Ethena USDe\n \n // Cryptocurrencies - Large L1/L0 Networks\n BNB = 'BNB', // Binance Coin\n XRP = 'XRP', // Ripple\n SOL = 'SOL', // Solana\n TRX = 'TRX', // TRON\n ADA = 'ADA', // Cardano\n AVAX = 'AVAX', // Avalanche\n SUI = 'SUI', // Sui\n HBAR = 'HBAR', // Hedera\n TON = 'TON', // Toncoin\n DOT = 'DOT', // Polkadot\n XLM = 'XLM', // Stellar\n \n // Cryptocurrencies - Other Big Names\n DOGE = 'DOGE', // Dogecoin\n BCH = 'BCH', // Bitcoin Cash\n LINK = 'LINK', // Chainlink\n LTC = 'LTC', // Litecoin\n XMR = 'XMR', // Monero\n UNI = 'UNI', // Uniswap\n AAVE = 'AAVE', // Aave\n }\n \n/** Canonical Zod schema for AvailableCurrency. Clone via `z_clone()` for independent metadata. */\nexport const AvailableCurrencySchema: z.ZodEnum<typeof AvailableCurrency> =\n z.enum(AvailableCurrency).systemEnum('AvailableCurrency');\n\n/**\n * Currency Schema allowing both common currencies and any valid ISO 4217 code\n */\nexport const CurrencySchema: z.ZodUnion<[z.ZodEnum<typeof AvailableCurrency>, z.ZodString]> = z.union([\n z.enum(AvailableCurrency),\n z.string().length(3).regex(/^[A-Z]{3}$/, { error: 'Invalid currency code format' }) // Any valid ISO 4217 code\n]);\n\nexport type CurrencyType = z.infer<typeof CurrencySchema>; \n\n/**\n * Currencies whose smallest unit is NOT a hundredth — the ISO 4217 exponent exceptions, plus the\n * cryptocurrency conventions.\n *\n * A currency's minor unit is what a payment provider's amount field means: Stripe's `unit_amount` is\n * in cents for USD, in whole yen for JPY, and in thousandths for KWD. Assuming 2 everywhere is not a\n * display bug — it charges and records money at the wrong magnitude, by a factor of 100 or 1000.\n *\n * Only exceptions are listed; every other member of {@link AvailableCurrency} is 2. That is\n * deliberate: an exhaustive 150-row table would have to be re-checked in full whenever a currency is\n * added, while this one is checked against the ISO exponent list, which is short and stable.\n *\n * **The crypto rows are a different kind of claim and are marked as such.** ISO 4217 does not govern\n * them; these are protocol conventions (a bitcoin has 8 decimal places because the protocol says so).\n * They are correct for arithmetic within Wildo — converting a stored amount to a display value — and\n * they are NOT a minor unit any fiat billing provider accepts. A boundary that hands one of these to\n * a provider must refuse rather than convert; see `convertMoneyToCurrencyMinorUnit`.\n */\nconst CURRENCY_MINOR_UNIT_EXCEPTIONS: Partial<Record<AvailableCurrency, number>> = {\n // ── ISO 4217 exponent 0 — no minor unit; the amount IS whole units ──\n [AvailableCurrency.BIF]: 0,\n [AvailableCurrency.CLP]: 0,\n [AvailableCurrency.DJF]: 0,\n [AvailableCurrency.GNF]: 0,\n [AvailableCurrency.ISK]: 0,\n [AvailableCurrency.JPY]: 0,\n [AvailableCurrency.KMF]: 0,\n [AvailableCurrency.KRW]: 0,\n [AvailableCurrency.PYG]: 0,\n [AvailableCurrency.RWF]: 0,\n [AvailableCurrency.UGX]: 0,\n [AvailableCurrency.VND]: 0,\n [AvailableCurrency.VUV]: 0,\n [AvailableCurrency.XAF]: 0,\n [AvailableCurrency.XOF]: 0,\n [AvailableCurrency.XPF]: 0,\n\n // ── ISO 4217 exponent 3 — thousandths (the Gulf and Maghreb dinars) ──\n [AvailableCurrency.BHD]: 3,\n [AvailableCurrency.IQD]: 3,\n [AvailableCurrency.JOD]: 3,\n [AvailableCurrency.KWD]: 3,\n [AvailableCurrency.LYD]: 3,\n [AvailableCurrency.OMR]: 3,\n [AvailableCurrency.TND]: 3,\n\n // ── Cryptocurrency protocol conventions — NOT ISO, NOT a provider minor unit ──\n [AvailableCurrency.BTC]: 8,\n [AvailableCurrency.BCH]: 8,\n [AvailableCurrency.LTC]: 8,\n [AvailableCurrency.ETH]: 18,\n [AvailableCurrency.DAI]: 18,\n [AvailableCurrency.BNB]: 18,\n [AvailableCurrency.UNI]: 18,\n [AvailableCurrency.XMR]: 12,\n [AvailableCurrency.DOT]: 10,\n [AvailableCurrency.SOL]: 9,\n [AvailableCurrency.SUI]: 9,\n [AvailableCurrency.TON]: 9,\n [AvailableCurrency.XLM]: 7,\n [AvailableCurrency.XRP]: 6,\n [AvailableCurrency.TRX]: 6,\n [AvailableCurrency.ADA]: 6,\n};\n\n/**\n * Currencies that have NO minor unit at all, and for which an amount scale is therefore not a\n * question with an answer.\n *\n * `XDR` is the IMF's Special Drawing Right, a basket unit rather than a spendable currency; `XXX` is\n * ISO 4217's explicit \"no currency\". Both are legitimately in the vocabulary — a value can be\n * DENOMINATED in them — and neither can be handed to a payment provider. They resolve to `undefined`\n * rather than to a number, so a boundary refuses instead of inventing a scale.\n */\nconst CURRENCIES_WITHOUT_MINOR_UNIT: ReadonlySet<string> = new Set<string>([\n AvailableCurrency.XDR,\n AvailableCurrency.XXX,\n]);\n\n/**\n * The number of decimal places in a currency's smallest unit — what a payment provider's amount\n * field is denominated in.\n *\n * @returns the exponent, or `undefined` when the currency has no minor unit (`XDR`, `XXX`) or is not\n * a currency this vocabulary knows.\n *\n * **`undefined` rather than a default of 2, and that is the whole point of this function.** Assuming\n * 2 for an unknown code is exactly the defect it exists to remove: it produces a plausible number and\n * charges the wrong amount, silently. A caller that cannot resolve a scale must refuse.\n *\n * `CurrencySchema` admits any three-letter uppercase code, not just the enum, so an application may\n * legitimately hold a currency this function does not know. That is not an error in the application —\n * it is a currency Wildo cannot convert for a provider, and saying so is the honest answer.\n */\nexport function currencyMinorUnitDecimals(currency: string): number | undefined {\n if (CURRENCIES_WITHOUT_MINOR_UNIT.has(currency)) return undefined;\n const exception = CURRENCY_MINOR_UNIT_EXCEPTIONS[currency as AvailableCurrency];\n if (exception !== undefined) return exception;\n // Known currency with no exception: the ISO default.\n return (Object.values(AvailableCurrency) as string[]).includes(currency) ? 2 : undefined;\n}\n\n/**\n * Currency type filter for z_money() `currenciesAllowed` option.\n * Replaces the old showCrypto/majorOnly/fiatOnly boolean flags with a composable enum array.\n */\nexport enum CurrencyAllowed {\n FIAT = 'FIAT',\n FIAT_MAJOR = 'FIAT_MAJOR',\n CRYPTO = 'CRYPTO',\n CRYPTO_MAJOR = 'CRYPTO_MAJOR',\n}\n"]}
1
+ {"version":3,"file":"currencies.shared.schemas.js","sourceRoot":"","sources":["../../src/currencies.shared.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["\n/**\n * Currencies Shared Schemas\n * \n * Common currency enums for the SaaS platform\n * Based on ISO 4217 standard (2025-05-12)\n */\n\nimport { z } from 'zod';\n\n/**\n * Available Currencies Enum\n * \n * Most commonly used currencies worldwide (ISO 4217 codes)\n */\nexport enum AvailableCurrency {\n // Major Currencies\n USD = 'USD', // US Dollar\n EUR = 'EUR', // Euro\n GBP = 'GBP', // British Pound\n JPY = 'JPY', // Japanese Yen\n CAD = 'CAD', // Canadian Dollar\n AUD = 'AUD', // Australian Dollar\n CHF = 'CHF', // Swiss Franc\n CNY = 'CNY', // Chinese Yuan\n \n // Other Major Currencies\n INR = 'INR', // Indian Rupee\n BRL = 'BRL', // Brazilian Real\n MXN = 'MXN', // Mexican Peso\n KRW = 'KRW', // South Korean Won\n RUB = 'RUB', // Russian Ruble\n ZAR = 'ZAR', // South African Rand\n \n // European Currencies (Non-Euro)\n SEK = 'SEK', // Swedish Krona\n NOK = 'NOK', // Norwegian Krone\n DKK = 'DKK', // Danish Krone\n PLN = 'PLN', // Polish Zloty\n CZK = 'CZK', // Czech Koruna\n HUF = 'HUF', // Hungarian Forint\n RON = 'RON', // Romanian Leu\n BGN = 'BGN', // Bulgarian Lev\n HRK = 'HRK', // Croatian Kuna (historical, replaced by EUR)\n ISK = 'ISK', // Icelandic Krona\n UAH = 'UAH', // Ukrainian Hryvnia\n BYN = 'BYN', // Belarusian Ruble\n RSD = 'RSD', // Serbian Dinar\n BAM = 'BAM', // Bosnia and Herzegovina Convertible Mark\n MDL = 'MDL', // Moldovan Leu\n ALL = 'ALL', // Albanian Lek\n MKD = 'MKD', // Macedonian Denar\n \n // Asia-Pacific\n SGD = 'SGD', // Singapore Dollar\n HKD = 'HKD', // Hong Kong Dollar\n TWD = 'TWD', // New Taiwan Dollar\n THB = 'THB', // Thai Baht\n MYR = 'MYR', // Malaysian Ringgit\n IDR = 'IDR', // Indonesian Rupiah\n PHP = 'PHP', // Philippine Peso\n VND = 'VND', // Vietnamese Dong\n NZD = 'NZD', // New Zealand Dollar\n BND = 'BND', // Brunei Dollar\n FJD = 'FJD', // Fiji Dollar\n PGK = 'PGK', // Papua New Guinean Kina\n WST = 'WST', // Samoan Tala\n SBD = 'SBD', // Solomon Islands Dollar\n VUV = 'VUV', // Vanuatu Vatu\n TOP = 'TOP', // Tongan Pa'anga\n MVR = 'MVR', // Maldivian Rufiyaa\n BTN = 'BTN', // Bhutanese Ngultrum\n MOP = 'MOP', // Macanese Pataca\n \n // Middle East\n AED = 'AED', // UAE Dirham\n SAR = 'SAR', // Saudi Riyal\n QAR = 'QAR', // Qatari Riyal\n KWD = 'KWD', // Kuwaiti Dinar\n BHD = 'BHD', // Bahraini Dinar\n OMR = 'OMR', // Omani Rial\n JOD = 'JOD', // Jordanian Dinar\n ILS = 'ILS', // Israeli Shekel\n TRY = 'TRY', // Turkish Lira\n IQD = 'IQD', // Iraqi Dinar\n IRR = 'IRR', // Iranian Rial\n LBP = 'LBP', // Lebanese Pound\n SYP = 'SYP', // Syrian Pound\n YER = 'YER', // Yemeni Rial\n \n // North Africa\n EGP = 'EGP', // Egyptian Pound\n MAD = 'MAD', // Moroccan Dirham\n TND = 'TND', // Tunisian Dinar\n DZD = 'DZD', // Algerian Dinar\n LYD = 'LYD', // Libyan Dinar\n SDG = 'SDG', // Sudanese Pound\n \n // Sub-Saharan Africa\n NGN = 'NGN', // Nigerian Naira\n KES = 'KES', // Kenyan Shilling\n GHS = 'GHS', // Ghanaian Cedi\n XOF = 'XOF', // West African CFA Franc\n XAF = 'XAF', // Central African CFA Franc\n ETB = 'ETB', // Ethiopian Birr\n UGX = 'UGX', // Ugandan Shilling\n TZS = 'TZS', // Tanzanian Shilling\n RWF = 'RWF', // Rwandan Franc\n MWK = 'MWK', // Malawian Kwacha\n ZMW = 'ZMW', // Zambian Kwacha\n BWP = 'BWP', // Botswana Pula\n NAD = 'NAD', // Namibian Dollar\n SZL = 'SZL', // Swazi Lilangeni\n LSL = 'LSL', // Lesotho Loti\n MZN = 'MZN', // Mozambican Metical\n AOA = 'AOA', // Angolan Kwanza\n MUR = 'MUR', // Mauritian Rupee\n SCR = 'SCR', // Seychelles Rupee\n MGA = 'MGA', // Malagasy Ariary\n SSP = 'SSP', // South Sudanese Pound\n SOS = 'SOS', // Somali Shilling\n DJF = 'DJF', // Djibouti Franc\n KMF = 'KMF', // Comorian Franc\n CVE = 'CVE', // Cabo Verde Escudo\n ERN = 'ERN', // Eritrean Nakfa\n GMD = 'GMD', // Gambian Dalasi\n GNF = 'GNF', // Guinean Franc\n LRD = 'LRD', // Liberian Dollar\n SLE = 'SLE', // Sierra Leonean Leone\n MRU = 'MRU', // Mauritanian Ouguiya\n STN = 'STN', // São Tomé and Príncipe Dobra\n BIF = 'BIF', // Burundi Franc\n CDF = 'CDF', // Congolese Franc\n \n // South America\n ARS = 'ARS', // Argentine Peso\n CLP = 'CLP', // Chilean Peso\n COP = 'COP', // Colombian Peso\n PEN = 'PEN', // Peruvian Sol\n UYU = 'UYU', // Uruguayan Peso\n PYG = 'PYG', // Paraguayan Guarani\n BOB = 'BOB', // Bolivian Boliviano\n VES = 'VES', // Venezuelan Bolívar Soberano\n GYD = 'GYD', // Guyanese Dollar\n SRD = 'SRD', // Surinamese Dollar\n \n // Central America & Caribbean\n CRC = 'CRC', // Costa Rican Colon\n GTQ = 'GTQ', // Guatemalan Quetzal\n HNL = 'HNL', // Honduran Lempira\n NIO = 'NIO', // Nicaraguan Cordoba\n PAB = 'PAB', // Panamanian Balboa\n DOP = 'DOP', // Dominican Peso\n JMD = 'JMD', // Jamaican Dollar\n TTD = 'TTD', // Trinidad and Tobago Dollar\n XCD = 'XCD', // East Caribbean Dollar\n BBD = 'BBD', // Barbados Dollar\n BSD = 'BSD', // Bahamian Dollar\n HTG = 'HTG', // Haitian Gourde\n BZD = 'BZD', // Belize Dollar\n CUP = 'CUP', // Cuban Peso\n AWG = 'AWG', // Aruban Florin\n KYD = 'KYD', // Cayman Islands Dollar\n BMD = 'BMD', // Bermudian Dollar\n \n // Pacific Territories\n XPF = 'XPF', // CFP Franc\n \n // Central Asia\n AFN = 'AFN', // Afghan Afghani\n PKR = 'PKR', // Pakistani Rupee\n BDT = 'BDT', // Bangladeshi Taka\n LKR = 'LKR', // Sri Lankan Rupee\n NPR = 'NPR', // Nepalese Rupee\n MMK = 'MMK', // Myanmar Kyat\n LAK = 'LAK', // Lao Kip\n KHR = 'KHR', // Cambodian Riel\n MNT = 'MNT', // Mongolian Tugrik\n UZS = 'UZS', // Uzbekistani Som\n KZT = 'KZT', // Kazakhstani Tenge\n KGS = 'KGS', // Kyrgyzstani Som\n TJS = 'TJS', // Tajikistani Somoni\n TMT = 'TMT', // Turkmenistani Manat\n GEL = 'GEL', // Georgian Lari\n AMD = 'AMD', // Armenian Dram\n AZN = 'AZN', // Azerbaijani Manat\n \n // Special\n XDR = 'XDR', // Special Drawing Rights (IMF)\n XXX = 'XXX', // No currency\n \n // Cryptocurrencies - Core Majors\n BTC = 'BTC', // Bitcoin\n ETH = 'ETH', // Ethereum\n \n // Cryptocurrencies - Major Stablecoins\n USDT = 'USDT', // Tether\n USDC = 'USDC', // USD Coin\n DAI = 'DAI', // Dai\n PYUSD = 'PYUSD', // PayPal USD\n USDe = 'USDe', // Ethena USDe\n \n // Cryptocurrencies - Large L1/L0 Networks\n BNB = 'BNB', // Binance Coin\n XRP = 'XRP', // Ripple\n SOL = 'SOL', // Solana\n TRX = 'TRX', // TRON\n ADA = 'ADA', // Cardano\n AVAX = 'AVAX', // Avalanche\n SUI = 'SUI', // Sui\n HBAR = 'HBAR', // Hedera\n TON = 'TON', // Toncoin\n DOT = 'DOT', // Polkadot\n XLM = 'XLM', // Stellar\n \n // Cryptocurrencies - Other Big Names\n DOGE = 'DOGE', // Dogecoin\n BCH = 'BCH', // Bitcoin Cash\n LINK = 'LINK', // Chainlink\n LTC = 'LTC', // Litecoin\n XMR = 'XMR', // Monero\n UNI = 'UNI', // Uniswap\n AAVE = 'AAVE', // Aave\n }\n \n/** Canonical Zod schema for AvailableCurrency. Clone via `z_clone()` for independent metadata. */\nexport const AvailableCurrencySchema: z.ZodEnum<typeof AvailableCurrency> =\n z.enum(AvailableCurrency).systemEnum('AvailableCurrency');\n\n/**\n * Currency Schema allowing both common currencies and any valid ISO 4217 code\n */\nexport const CurrencySchema: z.ZodUnion<[z.ZodEnum<typeof AvailableCurrency>, z.ZodString]> = z.union([\n z.enum(AvailableCurrency),\n z.string().length(3).regex(/^[A-Z]{3}$/, { error: 'Invalid currency code format' }) // Any valid ISO 4217 code\n]);\n\nexport type CurrencyType = z.infer<typeof CurrencySchema>; \n\n/**\n * Currencies whose smallest unit is NOT a hundredth — the ISO 4217 exponent exceptions, plus the\n * cryptocurrency conventions.\n *\n * A currency's minor unit is what a payment provider's amount field means: Stripe's `unit_amount` is\n * in cents for USD, in whole yen for JPY, and in thousandths for KWD. Assuming 2 everywhere is not a\n * display bug — it charges and records money at the wrong magnitude, by a factor of 100 or 1000.\n *\n * Only exceptions are listed; every other member of {@link AvailableCurrency} is 2. That is\n * deliberate: an exhaustive 150-row table would have to be re-checked in full whenever a currency is\n * added, while this one is checked against the ISO exponent list, which is short and stable.\n *\n * **The crypto rows are a different kind of claim and are marked as such.** ISO 4217 does not govern\n * them; these are protocol conventions (a bitcoin has 8 decimal places because the protocol says so).\n * They are correct for arithmetic within Wildo — converting a stored amount to a display value — and\n * they are NOT a minor unit any fiat billing provider accepts. A boundary that hands one of these to\n * a provider must refuse rather than convert; see `convertMoneyToCurrencyMinorUnit`.\n */\nconst CURRENCY_MINOR_UNIT_EXCEPTIONS: Partial<Record<AvailableCurrency, number>> = {\n // ── ISO 4217 exponent 0 — no minor unit; the amount IS whole units ──\n [AvailableCurrency.BIF]: 0,\n [AvailableCurrency.CLP]: 0,\n [AvailableCurrency.DJF]: 0,\n [AvailableCurrency.GNF]: 0,\n [AvailableCurrency.ISK]: 0,\n [AvailableCurrency.JPY]: 0,\n [AvailableCurrency.KMF]: 0,\n [AvailableCurrency.KRW]: 0,\n [AvailableCurrency.PYG]: 0,\n [AvailableCurrency.RWF]: 0,\n [AvailableCurrency.UGX]: 0,\n [AvailableCurrency.VND]: 0,\n [AvailableCurrency.VUV]: 0,\n [AvailableCurrency.XAF]: 0,\n [AvailableCurrency.XOF]: 0,\n [AvailableCurrency.XPF]: 0,\n\n // ── ISO 4217 exponent 3 — thousandths (the Gulf and Maghreb dinars) ──\n [AvailableCurrency.BHD]: 3,\n [AvailableCurrency.IQD]: 3,\n [AvailableCurrency.JOD]: 3,\n [AvailableCurrency.KWD]: 3,\n [AvailableCurrency.LYD]: 3,\n [AvailableCurrency.OMR]: 3,\n [AvailableCurrency.TND]: 3,\n\n // ── Cryptocurrency protocol conventions — NOT ISO, NOT a provider minor unit ──\n [AvailableCurrency.BTC]: 8,\n [AvailableCurrency.BCH]: 8,\n [AvailableCurrency.LTC]: 8,\n [AvailableCurrency.ETH]: 18,\n [AvailableCurrency.DAI]: 18,\n [AvailableCurrency.BNB]: 18,\n [AvailableCurrency.UNI]: 18,\n [AvailableCurrency.XMR]: 12,\n [AvailableCurrency.DOT]: 10,\n [AvailableCurrency.SOL]: 9,\n [AvailableCurrency.SUI]: 9,\n [AvailableCurrency.TON]: 9,\n [AvailableCurrency.XLM]: 7,\n [AvailableCurrency.XRP]: 6,\n [AvailableCurrency.TRX]: 6,\n [AvailableCurrency.ADA]: 6,\n};\n\n/**\n * Currencies that have NO minor unit at all, and for which an amount scale is therefore not a\n * question with an answer.\n *\n * `XDR` is the IMF's Special Drawing Right, a basket unit rather than a spendable currency; `XXX` is\n * ISO 4217's explicit \"no currency\". Both are legitimately in the vocabulary — a value can be\n * DENOMINATED in them — and neither can be handed to a payment provider. They resolve to `undefined`\n * rather than to a number, so a boundary refuses instead of inventing a scale.\n */\nconst CURRENCIES_WITHOUT_MINOR_UNIT: ReadonlySet<string> = new Set<string>([\n AvailableCurrency.XDR,\n AvailableCurrency.XXX,\n]);\n\n/**\n * The number of decimal places in a currency's smallest unit — what a payment provider's amount\n * field is denominated in.\n *\n * @returns the exponent, or `undefined` when the currency has no minor unit (`XDR`, `XXX`) or is not\n * a currency this vocabulary knows.\n *\n * **`undefined` rather than a default of 2, and that is the whole point of this function.** Assuming\n * 2 for an unknown code is exactly the defect it exists to remove: it produces a plausible number and\n * charges the wrong amount, silently. A caller that cannot resolve a scale must refuse.\n *\n * `CurrencySchema` admits any three-letter uppercase code, not just the enum, so an application may\n * legitimately hold a currency this function does not know. That is not an error in the application —\n * it is a currency Wildo cannot convert for a provider, and saying so is the honest answer.\n */\nexport function currencyMinorUnitDecimals(currency: string): number | undefined {\n if (CURRENCIES_WITHOUT_MINOR_UNIT.has(currency)) return undefined;\n const exception = CURRENCY_MINOR_UNIT_EXCEPTIONS[currency as AvailableCurrency];\n if (exception !== undefined) return exception;\n // Known currency with no exception: the ISO default.\n return (Object.values(AvailableCurrency) as string[]).includes(currency) ? 2 : undefined;\n}\n\n/**\n * Currency type filter for z_money() `currenciesAllowed` option.\n * Replaces the old showCrypto/majorOnly/fiatOnly boolean flags with a composable enum array.\n */\nexport enum CurrencyAllowed {\n FIAT = 'FIAT',\n FIAT_MAJOR = 'FIAT_MAJOR',\n CRYPTO = 'CRYPTO',\n CRYPTO_MAJOR = 'CRYPTO_MAJOR',\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-file-formats.d.ts","sourceRoot":"","sources":["../../../../src/files/agent-file-formats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;GAIG;AACH,oBAAY,eAAe;IACzB,kEAAkE;IAClE,IAAI,SAAS;IACb,sEAAsE;IACtE,UAAU,eAAe;IACzB,0JAA0J;IAC1J,cAAc,qBAAqB;IACnC,sFAAsF;IACtF,QAAQ,aAAa;IACrB,0DAA0D;IAC1D,IAAI,SAAS;IACb,gFAAgF;IAChF,IAAI,SAAS;CACd;AAED;;;;;GAKG;AACH,oBAAY,aAAa;IACvB,UAAU,eAAe;IACzB,QAAQ,kBAAkB;IAC1B,IAAI,qBAAqB;IACzB,UAAU,2BAA2B;IACrC,cAAc,+BAA+B;IAC7C,IAAI,qBAAqB;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,GAAG,eAAe,EAAE,CAAC;AA4CvD;;GAEG;AACH,qBAAa,uBAAuB;IAClC;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI1C;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI3C;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOpE;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOlE;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIhD;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIjD;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM,EAAE;IAInC;;;;OAIG;IACH,MAAM,CAAC,eAAe,IAAI,MAAM,EAAE;CAGnC"}
1
+ {"version":3,"file":"agent-file-formats.d.ts","sourceRoot":"","sources":["../../../src/files/agent-file-formats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;GAIG;AACH,oBAAY,eAAe;IACzB,kEAAkE;IAClE,IAAI,SAAS;IACb,sEAAsE;IACtE,UAAU,eAAe;IACzB,0JAA0J;IAC1J,cAAc,qBAAqB;IACnC,sFAAsF;IACtF,QAAQ,aAAa;IACrB,0DAA0D;IAC1D,IAAI,SAAS;IACb,gFAAgF;IAChF,IAAI,SAAS;CACd;AAED;;;;;GAKG;AACH,oBAAY,aAAa;IACvB,UAAU,eAAe;IACzB,QAAQ,kBAAkB;IAC1B,IAAI,qBAAqB;IACzB,UAAU,2BAA2B;IACrC,cAAc,+BAA+B;IAC7C,IAAI,qBAAqB;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,GAAG,eAAe,EAAE,CAAC;AA4CvD;;GAEG;AACH,qBAAa,uBAAuB;IAClC;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI1C;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI3C;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOpE;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOlE;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIhD;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIjD;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM,EAAE;IAInC;;;;OAIG;IACH,MAAM,CAAC,eAAe,IAAI,MAAM,EAAE;CAGnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-file-formats.js","sourceRoot":"","sources":["../../../../src/files/agent-file-formats.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent file-format registry — the ONE named source for the formats an agent reads or writes.\n *\n * This vocabulary used to exist twice: as `AppsBlueprint_FileFormat` / `AppsBlueprint_FileMimes` in\n * `@wildo-ai/saas-models`, and as string literals here that a comment said were kept in step \"to\n * avoid circular dependencies\". The duplication was the tell that the enum sat in the wrong\n * package: `saas-models` depends on `zod-decorators`, never the reverse, so the lower layer is the\n * only placement that can serve both without a cycle.\n *\n * The `saas-models` copy was deleted on 2026-09-19 with the rest of the `apps-blueprint` tree, and\n * `FlowsActors_Agent_OutputSpecSchema` now reaches this enum directly. Nothing about a file format\n * was ever app-creation-specific; the name was.\n *\n * @see `.claude/rules/design-philosophy.md` — one named runtime source per closed vocabulary.\n */\n\nimport mime from 'mime';\n\n/**\n * Formats an agent may be asked to emit, and that the framework can map to an extension and a MIME\n * type. Closed on purpose: a format belongs here only once the registry below can answer both\n * mappings for it.\n */\nexport enum AgentFileFormat {\n /** Unstructured prose. The default when no format is declared. */\n TEXT = 'text',\n /** TypeScript source. `.ts` — module code, schemas, configuration. */\n TYPESCRIPT = 'typescript',\n /** TypeScript with JSX. `.tsx` — a component; distinct from TYPESCRIPT because the extension differs and a `.ts` file containing JSX does not compile. */\n TYPESCRIPT_JSX = 'typescript_react',\n /** Markdown. Documentation, prompts, authored prose an agent produces for a human. */\n MARKDOWN = 'markdown',\n /** JSON. Structured data an agent emits for a machine. */\n JSON = 'json',\n /** YAML. Configuration and manifests, where comments and readability matter. */\n YAML = 'yaml',\n}\n\n/**\n * The MIME type each {@link AgentFileFormat} is served and recognised as.\n *\n * Kept as a separate vocabulary rather than derived, because the reverse map below accepts\n * ALTERNATIVES this enum deliberately does not name as canonical (`text/yaml` for YAML).\n */\nexport enum AgentFileMime {\n TEXT_PLAIN = 'text/plain',\n MARKDOWN = 'text/markdown',\n JSON = 'application/json',\n TYPESCRIPT = 'application/typescript',\n TYPESCRIPT_JSX = 'application/typescript-jsx',\n YAML = 'application/yaml',\n}\n\n/**\n * The format union, kept as a named alias because callers that hold a plain `string` from a\n * registry lookup need something to widen to.\n */\nexport type AgentFileFormatType = `${AgentFileFormat}`;\n\n/** Canonical MIME type per format. */\nconst FORMAT_TO_MIME: Record<string, string> = {\n [AgentFileFormat.TEXT]: AgentFileMime.TEXT_PLAIN,\n [AgentFileFormat.MARKDOWN]: AgentFileMime.MARKDOWN,\n [AgentFileFormat.JSON]: AgentFileMime.JSON,\n [AgentFileFormat.TYPESCRIPT]: AgentFileMime.TYPESCRIPT,\n [AgentFileFormat.TYPESCRIPT_JSX]: AgentFileMime.TYPESCRIPT_JSX,\n [AgentFileFormat.YAML]: AgentFileMime.YAML,\n};\n\n/** Canonical file extension per format. */\nconst FORMAT_TO_EXTENSION: Record<string, string> = {\n [AgentFileFormat.TEXT]: 'txt',\n [AgentFileFormat.MARKDOWN]: 'md',\n [AgentFileFormat.JSON]: 'json',\n [AgentFileFormat.TYPESCRIPT]: 'ts',\n [AgentFileFormat.TYPESCRIPT_JSX]: 'tsx',\n [AgentFileFormat.YAML]: 'yaml',\n};\n\n/** Extension to format, including accepted alternatives. */\nconst EXTENSION_TO_FORMAT: Record<string, string> = {\n 'txt': AgentFileFormat.TEXT,\n 'md': AgentFileFormat.MARKDOWN,\n 'json': AgentFileFormat.JSON,\n 'ts': AgentFileFormat.TYPESCRIPT,\n 'tsx': AgentFileFormat.TYPESCRIPT_JSX,\n 'yaml': AgentFileFormat.YAML,\n 'yml': AgentFileFormat.YAML, // Alternative extension for YAML\n};\n\n/** MIME type to format, including accepted alternatives. */\nconst MIME_TO_FORMAT: Record<string, string> = {\n 'text/plain': AgentFileFormat.TEXT,\n 'text/markdown': AgentFileFormat.MARKDOWN,\n 'application/json': AgentFileFormat.JSON,\n 'application/typescript': AgentFileFormat.TYPESCRIPT,\n 'application/typescript-jsx': AgentFileFormat.TYPESCRIPT_JSX,\n 'application/yaml': AgentFileFormat.YAML,\n 'text/yaml': AgentFileFormat.YAML, // Alternative MIME type\n};\n\n/**\n * Registry for agent/blueprint file formats.\n */\nexport class AgentFileFormatRegistry {\n /**\n * Get the MIME type for a format.\n * \n * @param format - an `AgentFileFormat` value (or a compatible string)\n * @returns MIME type string\n */\n static getMimeType(format: string): string {\n return FORMAT_TO_MIME[format] || '';\n }\n \n /**\n * Get the file extension for a format.\n * \n * @param format - an `AgentFileFormat` value (or a compatible string)\n * @returns Extension string (without dot)\n */\n static getExtension(format: string): string {\n return FORMAT_TO_EXTENSION[format] || '';\n }\n \n /**\n * Get the format for a file extension.\n * \n * @param extension - File extension (without dot)\n * @returns an `AgentFileFormat` value as a string, or undefined\n */\n static getFormatFromExtension(extension: string): string | undefined {\n if (!extension) return undefined;\n \n const normalizedExt = extension.toLowerCase().trim();\n return EXTENSION_TO_FORMAT[normalizedExt];\n }\n \n /**\n * Get the format for a MIME type.\n * \n * @param mimeType - MIME type string\n * @returns an `AgentFileFormat` value as a string, or undefined\n */\n static getFormatFromMimeType(mimeType: string): string | undefined {\n if (!mimeType) return undefined;\n \n const normalizedMime = mimeType.toLowerCase().trim();\n return MIME_TO_FORMAT[normalizedMime];\n }\n \n /**\n * Check if extension is an agent file format.\n * \n * @param extension - File extension (without dot)\n * @returns true if extension is an agent format\n */\n static isAgentFormat(extension: string): boolean {\n return this.getFormatFromExtension(extension) !== undefined;\n }\n \n /**\n * Check if MIME type is an agent file format.\n * \n * @param mimeType - MIME type string\n * @returns true if MIME type is an agent format\n */\n static isAgentMimeType(mimeType: string): boolean {\n return this.getFormatFromMimeType(mimeType) !== undefined;\n }\n \n /**\n * Get all agent format extensions.\n * \n * @returns Array of extension strings\n */\n static getAllExtensions(): string[] {\n return Object.values(FORMAT_TO_EXTENSION);\n }\n \n /**\n * Get all agent format MIME types.\n * \n * @returns Array of MIME type strings\n */\n static getAllMimeTypes(): string[] {\n return Object.values(FORMAT_TO_MIME);\n }\n}\n"]}
1
+ {"version":3,"file":"agent-file-formats.js","sourceRoot":"","sources":["../../../src/files/agent-file-formats.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent file-format registry — the ONE named source for the formats an agent reads or writes.\n *\n * This vocabulary used to exist twice: as `AppsBlueprint_FileFormat` / `AppsBlueprint_FileMimes` in\n * `@wildo-ai/saas-models`, and as string literals here that a comment said were kept in step \"to\n * avoid circular dependencies\". The duplication was the tell that the enum sat in the wrong\n * package: `saas-models` depends on `zod-decorators`, never the reverse, so the lower layer is the\n * only placement that can serve both without a cycle.\n *\n * The `saas-models` copy was deleted on 2026-09-19 with the rest of the `apps-blueprint` tree, and\n * `FlowsActors_Agent_OutputSpecSchema` now reaches this enum directly. Nothing about a file format\n * was ever app-creation-specific; the name was.\n *\n * @see `.claude/rules/design-philosophy.md` — one named runtime source per closed vocabulary.\n */\n\nimport mime from 'mime';\n\n/**\n * Formats an agent may be asked to emit, and that the framework can map to an extension and a MIME\n * type. Closed on purpose: a format belongs here only once the registry below can answer both\n * mappings for it.\n */\nexport enum AgentFileFormat {\n /** Unstructured prose. The default when no format is declared. */\n TEXT = 'text',\n /** TypeScript source. `.ts` — module code, schemas, configuration. */\n TYPESCRIPT = 'typescript',\n /** TypeScript with JSX. `.tsx` — a component; distinct from TYPESCRIPT because the extension differs and a `.ts` file containing JSX does not compile. */\n TYPESCRIPT_JSX = 'typescript_react',\n /** Markdown. Documentation, prompts, authored prose an agent produces for a human. */\n MARKDOWN = 'markdown',\n /** JSON. Structured data an agent emits for a machine. */\n JSON = 'json',\n /** YAML. Configuration and manifests, where comments and readability matter. */\n YAML = 'yaml',\n}\n\n/**\n * The MIME type each {@link AgentFileFormat} is served and recognised as.\n *\n * Kept as a separate vocabulary rather than derived, because the reverse map below accepts\n * ALTERNATIVES this enum deliberately does not name as canonical (`text/yaml` for YAML).\n */\nexport enum AgentFileMime {\n TEXT_PLAIN = 'text/plain',\n MARKDOWN = 'text/markdown',\n JSON = 'application/json',\n TYPESCRIPT = 'application/typescript',\n TYPESCRIPT_JSX = 'application/typescript-jsx',\n YAML = 'application/yaml',\n}\n\n/**\n * The format union, kept as a named alias because callers that hold a plain `string` from a\n * registry lookup need something to widen to.\n */\nexport type AgentFileFormatType = `${AgentFileFormat}`;\n\n/** Canonical MIME type per format. */\nconst FORMAT_TO_MIME: Record<string, string> = {\n [AgentFileFormat.TEXT]: AgentFileMime.TEXT_PLAIN,\n [AgentFileFormat.MARKDOWN]: AgentFileMime.MARKDOWN,\n [AgentFileFormat.JSON]: AgentFileMime.JSON,\n [AgentFileFormat.TYPESCRIPT]: AgentFileMime.TYPESCRIPT,\n [AgentFileFormat.TYPESCRIPT_JSX]: AgentFileMime.TYPESCRIPT_JSX,\n [AgentFileFormat.YAML]: AgentFileMime.YAML,\n};\n\n/** Canonical file extension per format. */\nconst FORMAT_TO_EXTENSION: Record<string, string> = {\n [AgentFileFormat.TEXT]: 'txt',\n [AgentFileFormat.MARKDOWN]: 'md',\n [AgentFileFormat.JSON]: 'json',\n [AgentFileFormat.TYPESCRIPT]: 'ts',\n [AgentFileFormat.TYPESCRIPT_JSX]: 'tsx',\n [AgentFileFormat.YAML]: 'yaml',\n};\n\n/** Extension to format, including accepted alternatives. */\nconst EXTENSION_TO_FORMAT: Record<string, string> = {\n 'txt': AgentFileFormat.TEXT,\n 'md': AgentFileFormat.MARKDOWN,\n 'json': AgentFileFormat.JSON,\n 'ts': AgentFileFormat.TYPESCRIPT,\n 'tsx': AgentFileFormat.TYPESCRIPT_JSX,\n 'yaml': AgentFileFormat.YAML,\n 'yml': AgentFileFormat.YAML, // Alternative extension for YAML\n};\n\n/** MIME type to format, including accepted alternatives. */\nconst MIME_TO_FORMAT: Record<string, string> = {\n 'text/plain': AgentFileFormat.TEXT,\n 'text/markdown': AgentFileFormat.MARKDOWN,\n 'application/json': AgentFileFormat.JSON,\n 'application/typescript': AgentFileFormat.TYPESCRIPT,\n 'application/typescript-jsx': AgentFileFormat.TYPESCRIPT_JSX,\n 'application/yaml': AgentFileFormat.YAML,\n 'text/yaml': AgentFileFormat.YAML, // Alternative MIME type\n};\n\n/**\n * Registry for agent/blueprint file formats.\n */\nexport class AgentFileFormatRegistry {\n /**\n * Get the MIME type for a format.\n * \n * @param format - an `AgentFileFormat` value (or a compatible string)\n * @returns MIME type string\n */\n static getMimeType(format: string): string {\n return FORMAT_TO_MIME[format] || '';\n }\n \n /**\n * Get the file extension for a format.\n * \n * @param format - an `AgentFileFormat` value (or a compatible string)\n * @returns Extension string (without dot)\n */\n static getExtension(format: string): string {\n return FORMAT_TO_EXTENSION[format] || '';\n }\n \n /**\n * Get the format for a file extension.\n * \n * @param extension - File extension (without dot)\n * @returns an `AgentFileFormat` value as a string, or undefined\n */\n static getFormatFromExtension(extension: string): string | undefined {\n if (!extension) return undefined;\n \n const normalizedExt = extension.toLowerCase().trim();\n return EXTENSION_TO_FORMAT[normalizedExt];\n }\n \n /**\n * Get the format for a MIME type.\n * \n * @param mimeType - MIME type string\n * @returns an `AgentFileFormat` value as a string, or undefined\n */\n static getFormatFromMimeType(mimeType: string): string | undefined {\n if (!mimeType) return undefined;\n \n const normalizedMime = mimeType.toLowerCase().trim();\n return MIME_TO_FORMAT[normalizedMime];\n }\n \n /**\n * Check if extension is an agent file format.\n * \n * @param extension - File extension (without dot)\n * @returns true if extension is an agent format\n */\n static isAgentFormat(extension: string): boolean {\n return this.getFormatFromExtension(extension) !== undefined;\n }\n \n /**\n * Check if MIME type is an agent file format.\n * \n * @param mimeType - MIME type string\n * @returns true if MIME type is an agent format\n */\n static isAgentMimeType(mimeType: string): boolean {\n return this.getFormatFromMimeType(mimeType) !== undefined;\n }\n \n /**\n * Get all agent format extensions.\n * \n * @returns Array of extension strings\n */\n static getAllExtensions(): string[] {\n return Object.values(FORMAT_TO_EXTENSION);\n }\n \n /**\n * Get all agent format MIME types.\n * \n * @returns Array of MIME type strings\n */\n static getAllMimeTypes(): string[] {\n return Object.values(FORMAT_TO_MIME);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extension-nature-map.d.ts","sourceRoot":"","sources":["../../../../src/files/extension-nature-map.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAwD3D,CAAC"}
1
+ {"version":3,"file":"extension-nature-map.d.ts","sourceRoot":"","sources":["../../../src/files/extension-nature-map.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAwD3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"extension-nature-map.js","sourceRoot":"","sources":["../../../../src/files/extension-nature-map.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA+B;IAC9D,SAAS;IACT,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,MAAM,EAAE,UAAU,CAAC,KAAK;IAExB,SAAS;IACT,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IAExB,QAAQ;IACR,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IAEvB,MAAM;IACN,KAAK,EAAE,UAAU,CAAC,GAAG;IAErB,mBAAmB;IACnB,KAAK,EAAE,UAAU,CAAC,MAAM;IACxB,MAAM,EAAE,UAAU,CAAC,MAAM;IACzB,KAAK,EAAE,UAAU,CAAC,MAAM;IACxB,MAAM,EAAE,UAAU,CAAC,MAAM;IACzB,KAAK,EAAE,UAAU,CAAC,MAAM;IACxB,MAAM,EAAE,UAAU,CAAC,MAAM;IACzB,KAAK,EAAE,UAAU,CAAC,MAAM;IACxB,KAAK,EAAE,UAAU,CAAC,MAAM;IACxB,KAAK,EAAE,UAAU,CAAC,MAAM;IAExB,WAAW;IACX,KAAK,EAAE,UAAU,CAAC,OAAO;IACzB,KAAK,EAAE,UAAU,CAAC,OAAO;IACzB,IAAI,EAAE,UAAU,CAAC,OAAO;IACxB,IAAI,EAAE,UAAU,CAAC,OAAO;IACxB,KAAK,EAAE,UAAU,CAAC,OAAO;CAC1B,CAAC","sourcesContent":["/**\n * Extension to FileNature Mapping\n * \n * Maps file extensions to their FileNature classification.\n * Used for automatic nature detection from file extensions.\n */\n\nimport { FileNature } from '../zod-decorators.types';\n\n/**\n * Maps file extensions (lowercase, without dot) to FileNature.\n */\nexport const ExtensionToNatureMap: Record<string, FileNature> = {\n // Images\n 'jpeg': FileNature.IMAGE,\n 'jpg': FileNature.IMAGE,\n 'jfif': FileNature.IMAGE,\n 'png': FileNature.IMAGE,\n 'gif': FileNature.IMAGE,\n 'webp': FileNature.IMAGE,\n 'svg': FileNature.IMAGE,\n 'bmp': FileNature.IMAGE,\n 'tiff': FileNature.IMAGE,\n 'tif': FileNature.IMAGE,\n 'ico': FileNature.IMAGE,\n 'heic': FileNature.IMAGE,\n 'heif': FileNature.IMAGE,\n \n // Videos\n 'mp4': FileNature.VIDEO,\n 'webm': FileNature.VIDEO,\n 'ogg': FileNature.VIDEO,\n 'avi': FileNature.VIDEO,\n 'mov': FileNature.VIDEO,\n 'wmv': FileNature.VIDEO,\n 'mpeg': FileNature.VIDEO,\n 'mpg': FileNature.VIDEO,\n '3gp': FileNature.VIDEO,\n '3gpp': FileNature.VIDEO,\n \n // Audio\n 'mp3': FileNature.AUDIO,\n 'wav': FileNature.AUDIO,\n 'aac': FileNature.AUDIO,\n 'flac': FileNature.AUDIO,\n 'm4a': FileNature.AUDIO,\n 'm4b': FileNature.AUDIO,\n \n // PDF\n 'pdf': FileNature.PDF,\n \n // Office documents\n 'doc': FileNature.OFFICE,\n 'docx': FileNature.OFFICE,\n 'xls': FileNature.OFFICE,\n 'xlsx': FileNature.OFFICE,\n 'ppt': FileNature.OFFICE,\n 'pptx': FileNature.OFFICE,\n 'odt': FileNature.OFFICE,\n 'ods': FileNature.OFFICE,\n 'odp': FileNature.OFFICE,\n \n // Archives\n 'zip': FileNature.ARCHIVE,\n 'rar': FileNature.ARCHIVE,\n '7z': FileNature.ARCHIVE,\n 'gz': FileNature.ARCHIVE,\n 'tar': FileNature.ARCHIVE,\n};\n"]}
1
+ {"version":3,"file":"extension-nature-map.js","sourceRoot":"","sources":["../../../src/files/extension-nature-map.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA+B;IAC9D,SAAS;IACT,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,MAAM,EAAE,UAAU,CAAC,KAAK;IAExB,SAAS;IACT,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IAExB,QAAQ;IACR,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK;IACxB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,KAAK,EAAE,UAAU,CAAC,KAAK;IAEvB,MAAM;IACN,KAAK,EAAE,UAAU,CAAC,GAAG;IAErB,mBAAmB;IACnB,KAAK,EAAE,UAAU,CAAC,MAAM;IACxB,MAAM,EAAE,UAAU,CAAC,MAAM;IACzB,KAAK,EAAE,UAAU,CAAC,MAAM;IACxB,MAAM,EAAE,UAAU,CAAC,MAAM;IACzB,KAAK,EAAE,UAAU,CAAC,MAAM;IACxB,MAAM,EAAE,UAAU,CAAC,MAAM;IACzB,KAAK,EAAE,UAAU,CAAC,MAAM;IACxB,KAAK,EAAE,UAAU,CAAC,MAAM;IACxB,KAAK,EAAE,UAAU,CAAC,MAAM;IAExB,WAAW;IACX,KAAK,EAAE,UAAU,CAAC,OAAO;IACzB,KAAK,EAAE,UAAU,CAAC,OAAO;IACzB,IAAI,EAAE,UAAU,CAAC,OAAO;IACxB,IAAI,EAAE,UAAU,CAAC,OAAO;IACxB,KAAK,EAAE,UAAU,CAAC,OAAO;CAC1B,CAAC","sourcesContent":["/**\n * Extension to FileNature Mapping\n * \n * Maps file extensions to their FileNature classification.\n * Used for automatic nature detection from file extensions.\n */\n\nimport { FileNature } from '../zod-decorators.types';\n\n/**\n * Maps file extensions (lowercase, without dot) to FileNature.\n */\nexport const ExtensionToNatureMap: Record<string, FileNature> = {\n // Images\n 'jpeg': FileNature.IMAGE,\n 'jpg': FileNature.IMAGE,\n 'jfif': FileNature.IMAGE,\n 'png': FileNature.IMAGE,\n 'gif': FileNature.IMAGE,\n 'webp': FileNature.IMAGE,\n 'svg': FileNature.IMAGE,\n 'bmp': FileNature.IMAGE,\n 'tiff': FileNature.IMAGE,\n 'tif': FileNature.IMAGE,\n 'ico': FileNature.IMAGE,\n 'heic': FileNature.IMAGE,\n 'heif': FileNature.IMAGE,\n \n // Videos\n 'mp4': FileNature.VIDEO,\n 'webm': FileNature.VIDEO,\n 'ogg': FileNature.VIDEO,\n 'avi': FileNature.VIDEO,\n 'mov': FileNature.VIDEO,\n 'wmv': FileNature.VIDEO,\n 'mpeg': FileNature.VIDEO,\n 'mpg': FileNature.VIDEO,\n '3gp': FileNature.VIDEO,\n '3gpp': FileNature.VIDEO,\n \n // Audio\n 'mp3': FileNature.AUDIO,\n 'wav': FileNature.AUDIO,\n 'aac': FileNature.AUDIO,\n 'flac': FileNature.AUDIO,\n 'm4a': FileNature.AUDIO,\n 'm4b': FileNature.AUDIO,\n \n // PDF\n 'pdf': FileNature.PDF,\n \n // Office documents\n 'doc': FileNature.OFFICE,\n 'docx': FileNature.OFFICE,\n 'xls': FileNature.OFFICE,\n 'xlsx': FileNature.OFFICE,\n 'ppt': FileNature.OFFICE,\n 'pptx': FileNature.OFFICE,\n 'odt': FileNature.OFFICE,\n 'ods': FileNature.OFFICE,\n 'odp': FileNature.OFFICE,\n \n // Archives\n 'zip': FileNature.ARCHIVE,\n 'rar': FileNature.ARCHIVE,\n '7z': FileNature.ARCHIVE,\n 'gz': FileNature.ARCHIVE,\n 'tar': FileNature.ARCHIVE,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"file-extensions.enum.d.ts","sourceRoot":"","sources":["../../../../src/files/file-extensions.enum.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oBAAY,aAAa;IAEvB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IAGb,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,SAAS,QAAQ;IACjB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,QAAQ,QAAQ;IAGhB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,SAAS,QAAQ;IACjB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IAGX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IAGX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,OAAO,OAAO;IACd,EAAE,OAAO;IACT,GAAG,QAAQ;IAGX,GAAG,QAAQ;IACX,EAAE,OAAO;IACT,IAAI,SAAS;IACb,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ"}
1
+ {"version":3,"file":"file-extensions.enum.d.ts","sourceRoot":"","sources":["../../../src/files/file-extensions.enum.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oBAAY,aAAa;IAEvB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IAGb,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,SAAS,QAAQ;IACjB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,QAAQ,QAAQ;IAGhB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,SAAS,QAAQ;IACjB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IAGX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IAGX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,OAAO,OAAO;IACd,EAAE,OAAO;IACT,GAAG,QAAQ;IAGX,GAAG,QAAQ;IACX,EAAE,OAAO;IACT,IAAI,SAAS;IACb,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-extensions.enum.js","sourceRoot":"","sources":["../../../../src/files/file-extensions.enum.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAN,IAAY,aA6DX;AA7DD,WAAY,aAAa;IACvB,SAAS;IACT,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,8BAAa,CAAA;IAEb,SAAS;IACT,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,iCAAgB,CAAA;IAEhB,QAAQ;IACR,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,kCAAiB,CAAA;IACjB,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,4BAAW,CAAA;IAEX,YAAY;IACZ,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,4BAAW,CAAA;IAEX,WAAW;IACX,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,+BAAc,CAAA;IACd,0BAAS,CAAA;IACT,4BAAW,CAAA;IAEX,uCAAuC;IACvC,4BAAW,CAAA;IACX,0BAAS,CAAA;IACT,8BAAa,CAAA;IACb,0BAAS,CAAA;IACT,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;AACb,CAAC,EA7DW,aAAa,KAAb,aAAa,QA6DxB","sourcesContent":["/**\n * File Extension Enum\n * \n * Common file extensions grouped by category.\n * Used for type-safe extension handling and validation.\n */\n\nexport enum FileExtension {\n // Images\n JPEG = 'jpeg',\n JPG = 'jpg',\n PNG = 'png',\n GIF = 'gif',\n WEBP = 'webp',\n SVG = 'svg',\n BMP = 'bmp',\n TIFF = 'tiff',\n ICO = 'ico',\n HEIC = 'heic',\n HEIF = 'heif',\n JFIF = 'jfif',\n \n // Videos\n MP4 = 'mp4',\n WEBM = 'webm',\n OGG_VIDEO = 'ogg',\n AVI = 'avi',\n MOV = 'mov',\n WMV = 'wmv',\n MPEG = 'mpeg',\n THREE_GP = '3gp',\n \n // Audio\n MP3 = 'mp3',\n WAV = 'wav',\n OGG_AUDIO = 'ogg',\n AAC = 'aac',\n FLAC = 'flac',\n M4A = 'm4a',\n M4B = 'm4b',\n \n // Documents\n PDF = 'pdf',\n DOC = 'doc',\n DOCX = 'docx',\n XLS = 'xls',\n XLSX = 'xlsx',\n PPT = 'ppt',\n PPTX = 'pptx',\n ODT = 'odt',\n ODS = 'ods',\n ODP = 'odp',\n \n // Archives\n ZIP = 'zip',\n RAR = 'rar',\n SEVEN_Z = '7z',\n GZ = 'gz',\n TAR = 'tar',\n \n // Agent/Blueprint formats (text-based)\n TXT = 'txt',\n MD = 'md',\n JSON = 'json',\n TS = 'ts',\n TSX = 'tsx',\n YAML = 'yaml',\n YML = 'yml',\n}\n"]}
1
+ {"version":3,"file":"file-extensions.enum.js","sourceRoot":"","sources":["../../../src/files/file-extensions.enum.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAN,IAAY,aA6DX;AA7DD,WAAY,aAAa;IACvB,SAAS;IACT,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,8BAAa,CAAA;IAEb,SAAS;IACT,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,iCAAgB,CAAA;IAEhB,QAAQ;IACR,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,kCAAiB,CAAA;IACjB,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,4BAAW,CAAA;IAEX,YAAY;IACZ,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,4BAAW,CAAA;IAEX,WAAW;IACX,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,+BAAc,CAAA;IACd,0BAAS,CAAA;IACT,4BAAW,CAAA;IAEX,uCAAuC;IACvC,4BAAW,CAAA;IACX,0BAAS,CAAA;IACT,8BAAa,CAAA;IACb,0BAAS,CAAA;IACT,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;AACb,CAAC,EA7DW,aAAa,KAAb,aAAa,QA6DxB","sourcesContent":["/**\n * File Extension Enum\n * \n * Common file extensions grouped by category.\n * Used for type-safe extension handling and validation.\n */\n\nexport enum FileExtension {\n // Images\n JPEG = 'jpeg',\n JPG = 'jpg',\n PNG = 'png',\n GIF = 'gif',\n WEBP = 'webp',\n SVG = 'svg',\n BMP = 'bmp',\n TIFF = 'tiff',\n ICO = 'ico',\n HEIC = 'heic',\n HEIF = 'heif',\n JFIF = 'jfif',\n \n // Videos\n MP4 = 'mp4',\n WEBM = 'webm',\n OGG_VIDEO = 'ogg',\n AVI = 'avi',\n MOV = 'mov',\n WMV = 'wmv',\n MPEG = 'mpeg',\n THREE_GP = '3gp',\n \n // Audio\n MP3 = 'mp3',\n WAV = 'wav',\n OGG_AUDIO = 'ogg',\n AAC = 'aac',\n FLAC = 'flac',\n M4A = 'm4a',\n M4B = 'm4b',\n \n // Documents\n PDF = 'pdf',\n DOC = 'doc',\n DOCX = 'docx',\n XLS = 'xls',\n XLSX = 'xlsx',\n PPT = 'ppt',\n PPTX = 'pptx',\n ODT = 'odt',\n ODS = 'ods',\n ODP = 'odp',\n \n // Archives\n ZIP = 'zip',\n RAR = 'rar',\n SEVEN_Z = '7z',\n GZ = 'gz',\n TAR = 'tar',\n \n // Agent/Blueprint formats (text-based)\n TXT = 'txt',\n MD = 'md',\n JSON = 'json',\n TS = 'ts',\n TSX = 'tsx',\n YAML = 'yaml',\n YML = 'yml',\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mime-registry.d.ts","sourceRoot":"","sources":["../../../../src/files/mime-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAsCrD;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAezD;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAWhD;;;;;;;OAOG;IACH,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAOpD;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAOxE;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAUtE;;;;;;OAMG;IACH,MAAM,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAoB/E;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE;IAM3D;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE;CAa3D"}
1
+ {"version":3,"file":"mime-registry.d.ts","sourceRoot":"","sources":["../../../src/files/mime-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAsCrD;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAezD;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAWhD;;;;;;;OAOG;IACH,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAOpD;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAOxE;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAUtE;;;;;;OAMG;IACH,MAAM,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAoB/E;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE;IAM3D;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE;CAa3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"mime-registry.js","sourceRoot":"","sources":["../../../../src/files/mime-registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * File MIME Type Registry\n * \n * Core registry for general file types (images, videos, documents, etc.).\n * Uses the `mime` library for authoritative extension ↔ MIME type mapping.\n */\n\nimport mime from 'mime';\nimport { FileNature } from '../zod-decorators.types';\nimport { ExtensionToNatureMap } from './extension-nature-map';\n\n/**\n * Extension normalization map.\n * Maps common extension variations to canonical format names.\n * Examples: 'jpg' → 'jpeg', 'jfif' → 'jpeg', 'm4a' → 'aac'\n */\nconst EXTENSION_NORMALIZATION_MAP: Record<string, string> = {\n // Image formats\n 'jpg': 'jpeg',\n 'jpeg': 'jpeg',\n 'jfif': 'jpeg',\n 'png': 'png',\n 'gif': 'gif',\n 'webp': 'webp',\n 'svg': 'svg',\n // Video formats\n 'mp4': 'mp4',\n 'webm': 'webm',\n 'mov': 'mov',\n // Audio formats\n 'mp3': 'mp3',\n 'wav': 'wav',\n 'ogg': 'ogg',\n 'aac': 'aac',\n 'm4a': 'aac',\n 'm4b': 'aac',\n};\n\n/**\n * Custom MIME type mappings for formats not well-supported by mime library.\n */\nconst CUSTOM_MIME_MAPPINGS: Record<string, string> = {\n // Add custom mappings here if needed\n // Example: 'custom': 'application/x-custom',\n};\n\n/**\n * Core registry for general file types.\n */\nexport class FileMimeTypeRegistry {\n /**\n * Get MIME type from extension (using mime library + custom mappings).\n * \n * @param extension - File extension (without dot, case-insensitive)\n * @returns MIME type string or undefined if not found\n */\n static getMimeType(extension: string): string | undefined {\n if (!extension) return undefined;\n \n const normalizedExt = extension.toLowerCase().trim();\n \n // Check custom mappings first\n if (CUSTOM_MIME_MAPPINGS[normalizedExt]) {\n return CUSTOM_MIME_MAPPINGS[normalizedExt];\n }\n \n // Use mime library\n const mimeType = mime.getType(normalizedExt);\n return mimeType || undefined;\n }\n \n /**\n * Get all extensions for a MIME type.\n * \n * @param mimeType - MIME type string\n * @returns Array of extensions (without dots)\n */\n static getExtensions(mimeType: string): string[] {\n if (!mimeType) return [];\n \n const extensions = mime.getExtension(mimeType);\n if (!extensions) return [];\n \n // mime.getExtension returns a single extension, but we want all possible extensions\n // For now, return the primary extension. Full reverse mapping would require mime-db\n return [extensions];\n }\n \n /**\n * Normalize extension to canonical format name.\n * Maps common extension variations to standard format names.\n * Examples: 'jpg' → 'jpeg', 'jfif' → 'jpeg', 'm4a' → 'aac'\n * \n * @param extension - File extension (without dot)\n * @returns Normalized format name\n */\n static normalizeExtension(extension: string): string {\n if (!extension) return extension;\n \n const normalizedExt = extension.toLowerCase().trim();\n return EXTENSION_NORMALIZATION_MAP[normalizedExt] || normalizedExt;\n }\n \n /**\n * Get FileNature from extension.\n * \n * @param extension - File extension (without dot)\n * @returns FileNature or undefined if not found\n */\n static getNatureFromExtension(extension: string): FileNature | undefined {\n if (!extension) return undefined;\n \n const normalizedExt = extension.toLowerCase().trim();\n return ExtensionToNatureMap[normalizedExt];\n }\n \n /**\n * Get FileNature from MIME type.\n * \n * @param mimeType - MIME type string\n * @returns FileNature or undefined if not found\n */\n static getNatureFromMimeType(mimeType: string): FileNature | undefined {\n if (!mimeType) return undefined;\n \n // Get primary extension from MIME type\n const extension = mime.getExtension(mimeType);\n if (!extension) return undefined;\n \n return this.getNatureFromExtension(extension);\n }\n \n /**\n * Validate that extension matches MIME type.\n * \n * @param extension - File extension (without dot)\n * @param mimeType - MIME type string\n * @returns true if extension matches MIME type, false otherwise\n */\n static validateExtensionMimeMatch(extension: string, mimeType: string): boolean {\n if (!extension || !mimeType) return false;\n \n const expectedMimeType = this.getMimeType(extension);\n if (!expectedMimeType) return false;\n \n // Exact match\n if (expectedMimeType === mimeType) return true;\n \n // Check for wildcard match (e.g., image/*)\n const [expectedType] = expectedMimeType.split('/');\n const [actualType] = mimeType.split('/');\n \n if (expectedType === actualType && mimeType.endsWith('/*')) {\n return true;\n }\n \n return false;\n }\n \n /**\n * Get extensions for a FileNature.\n * \n * @param nature - FileNature enum value\n * @returns Array of extensions (without dots)\n */\n static getExtensionsForNature(nature: FileNature): string[] {\n return Object.entries(ExtensionToNatureMap)\n .filter(([_, n]) => n === nature)\n .map(([ext]) => ext);\n }\n \n /**\n * Get MIME types for a FileNature.\n * \n * @param nature - FileNature enum value\n * @returns Array of MIME type strings\n */\n static getMimeTypesForNature(nature: FileNature): string[] {\n const extensions = this.getExtensionsForNature(nature);\n const mimeTypes = new Set<string>();\n \n for (const ext of extensions) {\n const mimeType = this.getMimeType(ext);\n if (mimeType) {\n mimeTypes.add(mimeType);\n }\n }\n \n return Array.from(mimeTypes);\n }\n}\n"]}
1
+ {"version":3,"file":"mime-registry.js","sourceRoot":"","sources":["../../../src/files/mime-registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * File MIME Type Registry\n * \n * Core registry for general file types (images, videos, documents, etc.).\n * Uses the `mime` library for authoritative extension ↔ MIME type mapping.\n */\n\nimport mime from 'mime';\nimport { FileNature } from '../zod-decorators.types';\nimport { ExtensionToNatureMap } from './extension-nature-map';\n\n/**\n * Extension normalization map.\n * Maps common extension variations to canonical format names.\n * Examples: 'jpg' → 'jpeg', 'jfif' → 'jpeg', 'm4a' → 'aac'\n */\nconst EXTENSION_NORMALIZATION_MAP: Record<string, string> = {\n // Image formats\n 'jpg': 'jpeg',\n 'jpeg': 'jpeg',\n 'jfif': 'jpeg',\n 'png': 'png',\n 'gif': 'gif',\n 'webp': 'webp',\n 'svg': 'svg',\n // Video formats\n 'mp4': 'mp4',\n 'webm': 'webm',\n 'mov': 'mov',\n // Audio formats\n 'mp3': 'mp3',\n 'wav': 'wav',\n 'ogg': 'ogg',\n 'aac': 'aac',\n 'm4a': 'aac',\n 'm4b': 'aac',\n};\n\n/**\n * Custom MIME type mappings for formats not well-supported by mime library.\n */\nconst CUSTOM_MIME_MAPPINGS: Record<string, string> = {\n // Add custom mappings here if needed\n // Example: 'custom': 'application/x-custom',\n};\n\n/**\n * Core registry for general file types.\n */\nexport class FileMimeTypeRegistry {\n /**\n * Get MIME type from extension (using mime library + custom mappings).\n * \n * @param extension - File extension (without dot, case-insensitive)\n * @returns MIME type string or undefined if not found\n */\n static getMimeType(extension: string): string | undefined {\n if (!extension) return undefined;\n \n const normalizedExt = extension.toLowerCase().trim();\n \n // Check custom mappings first\n if (CUSTOM_MIME_MAPPINGS[normalizedExt]) {\n return CUSTOM_MIME_MAPPINGS[normalizedExt];\n }\n \n // Use mime library\n const mimeType = mime.getType(normalizedExt);\n return mimeType || undefined;\n }\n \n /**\n * Get all extensions for a MIME type.\n * \n * @param mimeType - MIME type string\n * @returns Array of extensions (without dots)\n */\n static getExtensions(mimeType: string): string[] {\n if (!mimeType) return [];\n \n const extensions = mime.getExtension(mimeType);\n if (!extensions) return [];\n \n // mime.getExtension returns a single extension, but we want all possible extensions\n // For now, return the primary extension. Full reverse mapping would require mime-db\n return [extensions];\n }\n \n /**\n * Normalize extension to canonical format name.\n * Maps common extension variations to standard format names.\n * Examples: 'jpg' → 'jpeg', 'jfif' → 'jpeg', 'm4a' → 'aac'\n * \n * @param extension - File extension (without dot)\n * @returns Normalized format name\n */\n static normalizeExtension(extension: string): string {\n if (!extension) return extension;\n \n const normalizedExt = extension.toLowerCase().trim();\n return EXTENSION_NORMALIZATION_MAP[normalizedExt] || normalizedExt;\n }\n \n /**\n * Get FileNature from extension.\n * \n * @param extension - File extension (without dot)\n * @returns FileNature or undefined if not found\n */\n static getNatureFromExtension(extension: string): FileNature | undefined {\n if (!extension) return undefined;\n \n const normalizedExt = extension.toLowerCase().trim();\n return ExtensionToNatureMap[normalizedExt];\n }\n \n /**\n * Get FileNature from MIME type.\n * \n * @param mimeType - MIME type string\n * @returns FileNature or undefined if not found\n */\n static getNatureFromMimeType(mimeType: string): FileNature | undefined {\n if (!mimeType) return undefined;\n \n // Get primary extension from MIME type\n const extension = mime.getExtension(mimeType);\n if (!extension) return undefined;\n \n return this.getNatureFromExtension(extension);\n }\n \n /**\n * Validate that extension matches MIME type.\n * \n * @param extension - File extension (without dot)\n * @param mimeType - MIME type string\n * @returns true if extension matches MIME type, false otherwise\n */\n static validateExtensionMimeMatch(extension: string, mimeType: string): boolean {\n if (!extension || !mimeType) return false;\n \n const expectedMimeType = this.getMimeType(extension);\n if (!expectedMimeType) return false;\n \n // Exact match\n if (expectedMimeType === mimeType) return true;\n \n // Check for wildcard match (e.g., image/*)\n const [expectedType] = expectedMimeType.split('/');\n const [actualType] = mimeType.split('/');\n \n if (expectedType === actualType && mimeType.endsWith('/*')) {\n return true;\n }\n \n return false;\n }\n \n /**\n * Get extensions for a FileNature.\n * \n * @param nature - FileNature enum value\n * @returns Array of extensions (without dots)\n */\n static getExtensionsForNature(nature: FileNature): string[] {\n return Object.entries(ExtensionToNatureMap)\n .filter(([_, n]) => n === nature)\n .map(([ext]) => ext);\n }\n \n /**\n * Get MIME types for a FileNature.\n * \n * @param nature - FileNature enum value\n * @returns Array of MIME type strings\n */\n static getMimeTypesForNature(nature: FileNature): string[] {\n const extensions = this.getExtensionsForNature(nature);\n const mimeTypes = new Set<string>();\n \n for (const ext of extensions) {\n const mimeType = this.getMimeType(ext);\n if (mimeType) {\n mimeTypes.add(mimeType);\n }\n }\n \n return Array.from(mimeTypes);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"unified-registry.d.ts","sourceRoot":"","sources":["../../../../src/files/unified-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjC,SAAS,CAAC;AAEd;;GAEG;AACH,qBAAa,yBAAyB;IACpC;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAOjD;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAazD;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAchD;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAkBzD;;;;;OAKG;IACH,MAAM,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAItE;;;;;OAKG;IACH,MAAM,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB;IAkBpE;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIhD;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIjD;;;;;;;OAOG;IACH,MAAM,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAc/E;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAcpD;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE;IAI3D;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE;CAG3D"}
1
+ {"version":3,"file":"unified-registry.d.ts","sourceRoot":"","sources":["../../../src/files/unified-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjC,SAAS,CAAC;AAEd;;GAEG;AACH,qBAAa,yBAAyB;IACpC;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAOjD;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAazD;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAchD;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAkBzD;;;;;OAKG;IACH,MAAM,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAItE;;;;;OAKG;IACH,MAAM,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB;IAkBpE;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIhD;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIjD;;;;;;;OAOG;IACH,MAAM,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAc/E;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAcpD;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE;IAI3D;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE;CAG3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"unified-registry.js","sourceRoot":"","sources":["../../../../src/files/unified-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAW/D;;GAEG;AACH,MAAM,OAAO,yBAAyB;IACpC;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAgB;QACtC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QACjE,OAAO,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,SAAiB;QAClC,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QAEjC,4CAA4C;QAC5C,MAAM,WAAW,GAAG,uBAAuB,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,uBAAuB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC1D,CAAC;QAED,qCAAqC;QACrC,OAAO,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,QAAgB;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,4BAA4B;QAC5B,MAAM,WAAW,GAAG,uBAAuB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC5E,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,uBAAuB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAC9D,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,CAAC;QAED,qCAAqC;QACrC,OAAO,oBAAoB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,SAAiB;QACpC,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QAEjC,4CAA4C;QAC5C,MAAM,WAAW,GAAG,uBAAuB,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAChD,CAAC;QAED,4BAA4B;QAC5B,MAAM,MAAM,GAAG,oBAAoB,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,0BAA0B,CAAC,SAAiB;QACjD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,yBAAyB,CAAC,QAAgB;QAC/C,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAEhC,4CAA4C;QAC5C,MAAM,WAAW,GAAG,uBAAuB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC5E,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAChD,CAAC;QAED,4BAA4B;QAC5B,MAAM,MAAM,GAAG,oBAAoB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACpE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,SAAiB;QACpC,OAAO,uBAAuB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,QAAgB;QACrC,OAAO,uBAAuB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,0BAA0B,CAAC,SAAiB,EAAE,QAAgB;QACnE,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAE1C,4BAA4B;QAC5B,MAAM,WAAW,GAAG,uBAAuB,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,YAAY,GAAG,uBAAuB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YACtE,OAAO,YAAY,KAAK,QAAQ,CAAC;QACnC,CAAC;QAED,uCAAuC;QACvC,OAAO,oBAAoB,CAAC,0BAA0B,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,SAAiB;QACzC,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QAEjC,gCAAgC;QAChC,MAAM,WAAW,GAAG,uBAAuB,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,WAAW,EAAE,CAAC;YAChB,qDAAqD;YACrD,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,iCAAiC;QACjC,OAAO,oBAAoB,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,MAAkB;QAC9C,OAAO,oBAAoB,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,MAAkB;QAC7C,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;CACF","sourcesContent":["/**\n * Unified File Format Registry\n * \n * Unified registry that handles both general files and agent/blueprint formats.\n * Provides a single API for all file format operations.\n */\n\nimport { FileNature } from '../zod-decorators.types';\nimport { FileMimeTypeRegistry } from './mime-registry';\nimport { AgentFileFormatRegistry } from './agent-file-formats';\n\n/**\n * Result type for format type detection.\n * format is a string compatible with the `AgentFileFormat` enum.\n */\nexport type FormatTypeResult =\n | { type: 'nature'; nature: FileNature }\n | { type: 'agent'; format: string } // Compatible with `AgentFileFormat`\n | undefined;\n\n/**\n * Unified registry for all file formats (general + agent).\n */\nexport class UnifiedFileFormatRegistry {\n /**\n * Extract file extension from filename (without dot, lowercase).\n * \n * @param filename - Full filename or path\n * @returns File extension (without dot) or empty string if not found\n */\n static getFileExtension(filename: string): string {\n if (!filename) return '';\n const lastDot = filename.lastIndexOf('.');\n if (lastDot === -1 || lastDot === filename.length - 1) return '';\n return filename.substring(lastDot + 1).toLowerCase();\n }\n\n /**\n * Get MIME type from extension (works for both general files and agent formats).\n * \n * @param extension - File extension (without dot)\n * @returns MIME type string or undefined if not found\n */\n static getMimeType(extension: string): string | undefined {\n if (!extension) return undefined;\n \n // Check agent formats first (more specific)\n const agentFormat = AgentFileFormatRegistry.getFormatFromExtension(extension);\n if (agentFormat) {\n return AgentFileFormatRegistry.getMimeType(agentFormat);\n }\n \n // Fall back to general file registry\n return FileMimeTypeRegistry.getMimeType(extension);\n }\n \n /**\n * Get all extensions for a MIME type.\n * Works for both general files and agent formats.\n * \n * @param mimeType - MIME type string\n * @returns Array of extensions (without dots)\n */\n static getExtensions(mimeType: string): string[] {\n if (!mimeType) return [];\n \n // Check agent formats first\n const agentFormat = AgentFileFormatRegistry.getFormatFromMimeType(mimeType);\n if (agentFormat) {\n const ext = AgentFileFormatRegistry.getExtension(agentFormat);\n return ext ? [ext] : [];\n }\n \n // Fall back to general file registry\n return FileMimeTypeRegistry.getExtensions(mimeType);\n }\n\n /**\n * Get format type (FileNature or `AgentFileFormat`) from extension.\n * \n * @param extension - File extension (without dot)\n * @returns FormatTypeResult indicating whether it's a nature or agent format\n */\n static getFormatType(extension: string): FormatTypeResult {\n if (!extension) return undefined;\n \n // Check agent formats first (more specific)\n const agentFormat = AgentFileFormatRegistry.getFormatFromExtension(extension);\n if (agentFormat) {\n return { type: 'agent', format: agentFormat };\n }\n \n // Check general file nature\n const nature = FileMimeTypeRegistry.getNatureFromExtension(extension);\n if (nature) {\n return { type: 'nature', nature };\n }\n \n return undefined;\n }\n \n /**\n * Get format type from extension (alias for getFormatType for consistency).\n * \n * @param extension - File extension (without dot)\n * @returns FormatTypeResult indicating whether it's a nature or agent format\n */\n static getFormatTypeFromExtension(extension: string): FormatTypeResult {\n return this.getFormatType(extension);\n }\n\n /**\n * Get format type from MIME type.\n * \n * @param mimeType - MIME type string\n * @returns FormatTypeResult indicating whether it's a nature or agent format\n */\n static getFormatTypeFromMimeType(mimeType: string): FormatTypeResult {\n if (!mimeType) return undefined;\n \n // Check agent formats first (more specific)\n const agentFormat = AgentFileFormatRegistry.getFormatFromMimeType(mimeType);\n if (agentFormat) {\n return { type: 'agent', format: agentFormat };\n }\n \n // Check general file nature\n const nature = FileMimeTypeRegistry.getNatureFromMimeType(mimeType);\n if (nature) {\n return { type: 'nature', nature };\n }\n \n return undefined;\n }\n \n /**\n * Check if file is an agent/blueprint format.\n * \n * @param extension - File extension (without dot)\n * @returns true if extension is an agent format\n */\n static isAgentFormat(extension: string): boolean {\n return AgentFileFormatRegistry.isAgentFormat(extension);\n }\n \n /**\n * Check if MIME type is an agent/blueprint format.\n * \n * @param mimeType - MIME type string\n * @returns true if MIME type is an agent format\n */\n static isAgentMimeType(mimeType: string): boolean {\n return AgentFileFormatRegistry.isAgentMimeType(mimeType);\n }\n \n /**\n * Validate that extension matches MIME type.\n * Works for both general files and agent formats.\n * \n * @param extension - File extension (without dot)\n * @param mimeType - MIME type string\n * @returns true if extension matches MIME type\n */\n static validateExtensionMimeMatch(extension: string, mimeType: string): boolean {\n if (!extension || !mimeType) return false;\n \n // Check agent formats first\n const agentFormat = AgentFileFormatRegistry.getFormatFromExtension(extension);\n if (agentFormat) {\n const expectedMime = AgentFileFormatRegistry.getMimeType(agentFormat);\n return expectedMime === mimeType;\n }\n \n // Fall back to general file validation\n return FileMimeTypeRegistry.validateExtensionMimeMatch(extension, mimeType);\n }\n \n /**\n * Normalize extension to canonical format name.\n * Works for both general files and agent formats.\n * \n * @param extension - File extension (without dot)\n * @returns Normalized format name\n */\n static normalizeExtension(extension: string): string {\n if (!extension) return extension;\n \n // Check if it's an agent format\n const agentFormat = AgentFileFormatRegistry.getFormatFromExtension(extension);\n if (agentFormat) {\n // For agent formats, return the format name directly\n return agentFormat;\n }\n \n // Use general file normalization\n return FileMimeTypeRegistry.normalizeExtension(extension);\n }\n \n /**\n * Get all extensions for a FileNature.\n * \n * @param nature - FileNature enum value\n * @returns Array of extensions (without dots)\n */\n static getExtensionsForNature(nature: FileNature): string[] {\n return FileMimeTypeRegistry.getExtensionsForNature(nature);\n }\n \n /**\n * Get all MIME types for a FileNature.\n * \n * @param nature - FileNature enum value\n * @returns Array of MIME type strings\n */\n static getMimeTypesForNature(nature: FileNature): string[] {\n return FileMimeTypeRegistry.getMimeTypesForNature(nature);\n }\n}\n"]}
1
+ {"version":3,"file":"unified-registry.js","sourceRoot":"","sources":["../../../src/files/unified-registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Unified File Format Registry\n * \n * Unified registry that handles both general files and agent/blueprint formats.\n * Provides a single API for all file format operations.\n */\n\nimport { FileNature } from '../zod-decorators.types';\nimport { FileMimeTypeRegistry } from './mime-registry';\nimport { AgentFileFormatRegistry } from './agent-file-formats';\n\n/**\n * Result type for format type detection.\n * format is a string compatible with the `AgentFileFormat` enum.\n */\nexport type FormatTypeResult =\n | { type: 'nature'; nature: FileNature }\n | { type: 'agent'; format: string } // Compatible with `AgentFileFormat`\n | undefined;\n\n/**\n * Unified registry for all file formats (general + agent).\n */\nexport class UnifiedFileFormatRegistry {\n /**\n * Extract file extension from filename (without dot, lowercase).\n * \n * @param filename - Full filename or path\n * @returns File extension (without dot) or empty string if not found\n */\n static getFileExtension(filename: string): string {\n if (!filename) return '';\n const lastDot = filename.lastIndexOf('.');\n if (lastDot === -1 || lastDot === filename.length - 1) return '';\n return filename.substring(lastDot + 1).toLowerCase();\n }\n\n /**\n * Get MIME type from extension (works for both general files and agent formats).\n * \n * @param extension - File extension (without dot)\n * @returns MIME type string or undefined if not found\n */\n static getMimeType(extension: string): string | undefined {\n if (!extension) return undefined;\n \n // Check agent formats first (more specific)\n const agentFormat = AgentFileFormatRegistry.getFormatFromExtension(extension);\n if (agentFormat) {\n return AgentFileFormatRegistry.getMimeType(agentFormat);\n }\n \n // Fall back to general file registry\n return FileMimeTypeRegistry.getMimeType(extension);\n }\n \n /**\n * Get all extensions for a MIME type.\n * Works for both general files and agent formats.\n * \n * @param mimeType - MIME type string\n * @returns Array of extensions (without dots)\n */\n static getExtensions(mimeType: string): string[] {\n if (!mimeType) return [];\n \n // Check agent formats first\n const agentFormat = AgentFileFormatRegistry.getFormatFromMimeType(mimeType);\n if (agentFormat) {\n const ext = AgentFileFormatRegistry.getExtension(agentFormat);\n return ext ? [ext] : [];\n }\n \n // Fall back to general file registry\n return FileMimeTypeRegistry.getExtensions(mimeType);\n }\n\n /**\n * Get format type (FileNature or `AgentFileFormat`) from extension.\n * \n * @param extension - File extension (without dot)\n * @returns FormatTypeResult indicating whether it's a nature or agent format\n */\n static getFormatType(extension: string): FormatTypeResult {\n if (!extension) return undefined;\n \n // Check agent formats first (more specific)\n const agentFormat = AgentFileFormatRegistry.getFormatFromExtension(extension);\n if (agentFormat) {\n return { type: 'agent', format: agentFormat };\n }\n \n // Check general file nature\n const nature = FileMimeTypeRegistry.getNatureFromExtension(extension);\n if (nature) {\n return { type: 'nature', nature };\n }\n \n return undefined;\n }\n \n /**\n * Get format type from extension (alias for getFormatType for consistency).\n * \n * @param extension - File extension (without dot)\n * @returns FormatTypeResult indicating whether it's a nature or agent format\n */\n static getFormatTypeFromExtension(extension: string): FormatTypeResult {\n return this.getFormatType(extension);\n }\n\n /**\n * Get format type from MIME type.\n * \n * @param mimeType - MIME type string\n * @returns FormatTypeResult indicating whether it's a nature or agent format\n */\n static getFormatTypeFromMimeType(mimeType: string): FormatTypeResult {\n if (!mimeType) return undefined;\n \n // Check agent formats first (more specific)\n const agentFormat = AgentFileFormatRegistry.getFormatFromMimeType(mimeType);\n if (agentFormat) {\n return { type: 'agent', format: agentFormat };\n }\n \n // Check general file nature\n const nature = FileMimeTypeRegistry.getNatureFromMimeType(mimeType);\n if (nature) {\n return { type: 'nature', nature };\n }\n \n return undefined;\n }\n \n /**\n * Check if file is an agent/blueprint format.\n * \n * @param extension - File extension (without dot)\n * @returns true if extension is an agent format\n */\n static isAgentFormat(extension: string): boolean {\n return AgentFileFormatRegistry.isAgentFormat(extension);\n }\n \n /**\n * Check if MIME type is an agent/blueprint format.\n * \n * @param mimeType - MIME type string\n * @returns true if MIME type is an agent format\n */\n static isAgentMimeType(mimeType: string): boolean {\n return AgentFileFormatRegistry.isAgentMimeType(mimeType);\n }\n \n /**\n * Validate that extension matches MIME type.\n * Works for both general files and agent formats.\n * \n * @param extension - File extension (without dot)\n * @param mimeType - MIME type string\n * @returns true if extension matches MIME type\n */\n static validateExtensionMimeMatch(extension: string, mimeType: string): boolean {\n if (!extension || !mimeType) return false;\n \n // Check agent formats first\n const agentFormat = AgentFileFormatRegistry.getFormatFromExtension(extension);\n if (agentFormat) {\n const expectedMime = AgentFileFormatRegistry.getMimeType(agentFormat);\n return expectedMime === mimeType;\n }\n \n // Fall back to general file validation\n return FileMimeTypeRegistry.validateExtensionMimeMatch(extension, mimeType);\n }\n \n /**\n * Normalize extension to canonical format name.\n * Works for both general files and agent formats.\n * \n * @param extension - File extension (without dot)\n * @returns Normalized format name\n */\n static normalizeExtension(extension: string): string {\n if (!extension) return extension;\n \n // Check if it's an agent format\n const agentFormat = AgentFileFormatRegistry.getFormatFromExtension(extension);\n if (agentFormat) {\n // For agent formats, return the format name directly\n return agentFormat;\n }\n \n // Use general file normalization\n return FileMimeTypeRegistry.normalizeExtension(extension);\n }\n \n /**\n * Get all extensions for a FileNature.\n * \n * @param nature - FileNature enum value\n * @returns Array of extensions (without dots)\n */\n static getExtensionsForNature(nature: FileNature): string[] {\n return FileMimeTypeRegistry.getExtensionsForNature(nature);\n }\n \n /**\n * Get all MIME types for a FileNature.\n * \n * @param nature - FileNature enum value\n * @returns Array of MIME type strings\n */\n static getMimeTypesForNature(nature: FileNature): string[] {\n return FileMimeTypeRegistry.getMimeTypesForNature(nature);\n }\n}\n"]}
@@ -3,8 +3,10 @@ export declare function initZodDecorators(zodInstance?: typeof z): typeof z;
3
3
  export * from './commons';
4
4
  export * from './install-bigint-json-encoding';
5
5
  export * from './zod-color';
6
+ export * from './zod-year-month';
6
7
  export * from './zod-range';
7
8
  export * from './zod-money';
9
+ export * from './zod-wire-date';
8
10
  export * from './zod-bigdecimal';
9
11
  export * from './zod-duration';
10
12
  export * from './zod-phone';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,wBAAgB,iBAAiB,CAAC,WAAW,GAAE,OAAO,CAAK,GAAG,OAAO,CAAC,CAErE;AAED,cAAc,WAAW,CAAC;AAE1B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AAIzC;;;;;;GAMG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,wBAAgB,iBAAiB,CAAC,WAAW,GAAE,OAAO,CAAK,GAAG,OAAO,CAAC,CAErE;AAED,cAAc,WAAW,CAAC;AAE1B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AAIzC;;;;;;GAMG"}
package/dist/esm/index.js CHANGED
@@ -18,8 +18,10 @@ export function initZodDecorators(zodInstance = z) {
18
18
  export * from './commons.js';
19
19
  export * from './install-bigint-json-encoding.js';
20
20
  export * from './zod-color.js';
21
+ export * from './zod-year-month.js';
21
22
  export * from './zod-range.js';
22
23
  export * from './zod-money.js';
24
+ export * from './zod-wire-date.js';
23
25
  export * from './zod-bigdecimal.js';
24
26
  export * from './zod-duration.js';
25
27
  export * from './zod-phone.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,uEAAuE;AACvE,4FAA4F;AAC5F,0FAA0F;AAC1F,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAE7B,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,kFAAkF;AAClF,mFAAmF;AACnF,kFAAkF;AAClF,yBAAyB,EAAE,CAAC;AAE5B,MAAM,UAAU,iBAAiB,CAAC,cAAwB,CAAC;IACzD,OAAO,yBAAyB,CAAC,WAAW,CAAC,CAAC;AAChD,CAAC;AAED,cAAc,WAAW,CAAC;AAE1B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AAIzC;;;;;;GAMG","sourcesContent":["import { z } from 'zod';\nimport { ensureZodDecoratorsLoaded } from './zod.module-override';\nimport { installBigIntJsonEncoding } from './install-bigint-json-encoding';\n\n// CRITICAL: Apply decorators immediately when this module is imported.\n// This ensures z.string().isUnique() etc. work without needing to call initZodDecorators().\n// The bundler may tree-shake the call in zod.module-override.ts, so we duplicate it here.\nensureZodDecoratorsLoaded(z);\n\n// Install the type-level `bigint → decimal string` JSON encoding at the SAME\n// bootstrap. `z_money` (owned by this package) stores `amount` as a `bigint`,\n// which `JSON.stringify` cannot serialize (it has no `toJSON`, unlike `Date`).\n// Installing it here — the earliest point, before any schema or serializer runs —\n// makes every JSON boundary (res.json, socket.io, queue, redis, HMAC, third-party)\n// bigint-safe with no per-boundary opt-in. See `install-bigint-json-encoding.ts`.\ninstallBigIntJsonEncoding();\n\nexport function initZodDecorators(zodInstance: typeof z = z): typeof z {\n return ensureZodDecoratorsLoaded(zodInstance);\n}\n\nexport * from './commons';\n\nexport * from './install-bigint-json-encoding';\nexport * from './zod-color';\nexport * from './zod-range';\nexport * from './zod-money';\nexport * from './zod-bigdecimal';\nexport * from './zod-duration';\nexport * from './zod-phone';\nexport * from './zod-address';\nexport * from './zod-code';\nexport * from './zod-file';\nexport * from './zod-versioned';\nexport * from './zod-document-sequence';\nexport * from './currencies.shared.schemas';\nexport * from './zod-utils.shared';\nexport * from './zod-decorators.types';\nexport * from './zod.module-override';\nexport * from './files/file-extensions.enum';\nexport * from './files/extension-nature-map';\nexport * from './files/mime-registry';\nexport * from './files/agent-file-formats';\nexport * from './files/unified-registry';\n\n\n\n/**\n * Initialize Zod decorators for the current Zod instance.\n * Safe to call multiple times - will only apply decorators once.\n *\n * This function should be called early in your application startup,\n * especially when using custom-shared-lib or custom-backend-lib packages.\n */\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,uEAAuE;AACvE,4FAA4F;AAC5F,0FAA0F;AAC1F,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAE7B,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,kFAAkF;AAClF,mFAAmF;AACnF,kFAAkF;AAClF,yBAAyB,EAAE,CAAC;AAE5B,MAAM,UAAU,iBAAiB,CAAC,cAAwB,CAAC;IACzD,OAAO,yBAAyB,CAAC,WAAW,CAAC,CAAC;AAChD,CAAC;AAED,cAAc,WAAW,CAAC;AAE1B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AAIzC;;;;;;GAMG","sourcesContent":["import { z } from 'zod';\nimport { ensureZodDecoratorsLoaded } from './zod.module-override';\nimport { installBigIntJsonEncoding } from './install-bigint-json-encoding';\n\n// CRITICAL: Apply decorators immediately when this module is imported.\n// This ensures z.string().isUnique() etc. work without needing to call initZodDecorators().\n// The bundler may tree-shake the call in zod.module-override.ts, so we duplicate it here.\nensureZodDecoratorsLoaded(z);\n\n// Install the type-level `bigint → decimal string` JSON encoding at the SAME\n// bootstrap. `z_money` (owned by this package) stores `amount` as a `bigint`,\n// which `JSON.stringify` cannot serialize (it has no `toJSON`, unlike `Date`).\n// Installing it here — the earliest point, before any schema or serializer runs —\n// makes every JSON boundary (res.json, socket.io, queue, redis, HMAC, third-party)\n// bigint-safe with no per-boundary opt-in. See `install-bigint-json-encoding.ts`.\ninstallBigIntJsonEncoding();\n\nexport function initZodDecorators(zodInstance: typeof z = z): typeof z {\n return ensureZodDecoratorsLoaded(zodInstance);\n}\n\nexport * from './commons';\n\nexport * from './install-bigint-json-encoding';\nexport * from './zod-color';\nexport * from './zod-year-month';\nexport * from './zod-range';\nexport * from './zod-money';\nexport * from './zod-wire-date';\nexport * from './zod-bigdecimal';\nexport * from './zod-duration';\nexport * from './zod-phone';\nexport * from './zod-address';\nexport * from './zod-code';\nexport * from './zod-file';\nexport * from './zod-versioned';\nexport * from './zod-document-sequence';\nexport * from './currencies.shared.schemas';\nexport * from './zod-utils.shared';\nexport * from './zod-decorators.types';\nexport * from './zod.module-override';\nexport * from './files/file-extensions.enum';\nexport * from './files/extension-nature-map';\nexport * from './files/mime-registry';\nexport * from './files/agent-file-formats';\nexport * from './files/unified-registry';\n\n\n\n/**\n * Initialize Zod decorators for the current Zod instance.\n * Safe to call multiple times - will only apply decorators once.\n *\n * This function should be called early in your application startup,\n * especially when using custom-shared-lib or custom-backend-lib packages.\n */\n"]}
@@ -58,7 +58,7 @@
58
58
  * | Concern | `Date` | money `bigint` |
59
59
  * |---|---|---|
60
60
  * | SERIALIZE (runtime type → wire string) — PRIMARY | `Date.prototype.toJSON` (built-in) | **this module** (`installBigIntJsonEncoding`) |
61
- * | COERCE (wire string → runtime type, on receive) | `z.date()` → `z.coerce.date()` | `z.bigint()` → string-accepting `z.preprocess` |
61
+ * | COERCE (wire string → runtime type, on receive) | `z.date()` → `z_wireDate()` | `z.bigint()` → string-accepting `z.preprocess` |
62
62
  * | — both coerce leaves rewritten by | `ResourcesConfigOperationsDtosBuilderUtils.applyNetworkBoundaryCoercion` (`@wildo-ai/saas-models`) — used by the SHARED `responseDto`/`requestDto`, so backend serialize-parse, frontend receive-parse, and worker re-hydration all coerce identically | (same) |
63
63
  * | In-BODY pre-serialize normalization (backend) | `transformResponseDates` (Date→ISO string in the body) | **none by design** — bigint stays bigint in the body and relies on the SERIALIZE half above (a `transformResponseBigints` twin would be redundant with this `toJSON`) |
64
64
  * | DEFENSE-IN-DEPTH serialize (belt-and-suspenders) | (n/a — `toJSON` is built-in) | `ResourceSerializationUtils.bigIntSafeJsonReplacer` / `stringifyWithBigInt` (queue, webhook), and the Express app-level `json replacer` (`http-server.backend.service`) |
@@ -1 +1 @@
1
- {"version":3,"file":"install-bigint-json-encoding.d.ts","sourceRoot":"","sources":["../../../src/install-bigint-json-encoding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAEH,OAAO,CAAC,MAAM,CAAC;IAGb,UAAU,MAAM;QACd,+EAA+E;QAC/E,MAAM,IAAI,MAAM,CAAC;KAClB;CACF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAUhD"}
1
+ {"version":3,"file":"install-bigint-json-encoding.d.ts","sourceRoot":"","sources":["../../src/install-bigint-json-encoding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAEH,OAAO,CAAC,MAAM,CAAC;IAGb,UAAU,MAAM;QACd,+EAA+E;QAC/E,MAAM,IAAI,MAAM,CAAC;KAClB;CACF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAUhD"}
@@ -58,7 +58,7 @@
58
58
  * | Concern | `Date` | money `bigint` |
59
59
  * |---|---|---|
60
60
  * | SERIALIZE (runtime type → wire string) — PRIMARY | `Date.prototype.toJSON` (built-in) | **this module** (`installBigIntJsonEncoding`) |
61
- * | COERCE (wire string → runtime type, on receive) | `z.date()` → `z.coerce.date()` | `z.bigint()` → string-accepting `z.preprocess` |
61
+ * | COERCE (wire string → runtime type, on receive) | `z.date()` → `z_wireDate()` | `z.bigint()` → string-accepting `z.preprocess` |
62
62
  * | — both coerce leaves rewritten by | `ResourcesConfigOperationsDtosBuilderUtils.applyNetworkBoundaryCoercion` (`@wildo-ai/saas-models`) — used by the SHARED `responseDto`/`requestDto`, so backend serialize-parse, frontend receive-parse, and worker re-hydration all coerce identically | (same) |
63
63
  * | In-BODY pre-serialize normalization (backend) | `transformResponseDates` (Date→ISO string in the body) | **none by design** — bigint stays bigint in the body and relies on the SERIALIZE half above (a `transformResponseBigints` twin would be redundant with this `toJSON`) |
64
64
  * | DEFENSE-IN-DEPTH serialize (belt-and-suspenders) | (n/a — `toJSON` is built-in) | `ResourceSerializationUtils.bigIntSafeJsonReplacer` / `stringifyWithBigInt` (queue, webhook), and the Express app-level `json replacer` (`http-server.backend.service`) |
@@ -1 +1 @@
1
- {"version":3,"file":"install-bigint-json-encoding.js","sourceRoot":"","sources":["../../../src/install-bigint-json-encoding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAWH;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IAC1D,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE;QAChD,KAAK,EAAE,SAAS,MAAM;YACpB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QACD,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;AACL,CAAC","sourcesContent":["/**\n * Process-wide JSON encoding for `bigint` — the type-level counterpart of\n * `Date.prototype.toJSON`.\n *\n * ## Why this exists\n *\n * `z_money` (`MoneyValue`) stores its `amount` as a `bigint` — deliberately, to\n * avoid the >2^53 precision loss `number` would introduce for monetary amounts.\n * But `bigint` is the one runtime type in the resource pipeline that has **no\n * JSON representation**: `JSON.stringify(1999n)` throws\n * `TypeError: Do not know how to serialize a BigInt`. `Date` never has this\n * problem because `Date.prototype.toJSON` exists, so *every* serializer — Express\n * `res.json`, `socket.io` emit, queue encoders, `redis` cache writes, HMAC\n * integrity hashes, any third-party lib — inherits date→ISO-string encoding for\n * free. `bigint` had no such method, so each of those boundaries had to opt in\n * to a bigint-safe stringify individually — a treadmill where the next bare\n * `JSON.stringify(payload)` silently reintroduces a 500 (and, worse, the\n * `socket.io` encoder is a separate serialization path an Express `json replacer`\n * can never reach).\n *\n * Installing `BigInt.prototype.toJSON` supplies the missing type-level encoding\n * once, so bigint round-trips through *every* JSON boundary exactly as `Date`\n * does — no per-boundary opt-in.\n *\n * ## Encoding choice: decimal STRING, not number\n *\n * `1999n → \"1999\"`. A string round-trips losslessly (`BigInt(\"1999\")`), whereas\n * `Number(1999n)` would reintroduce precisely the precision risk `bigint` exists\n * to prevent. This matches the framework's documented money wire-contract: the\n * response-parsing schema coerces the decimal-string form back to `bigint` on\n * receive (`applyNetworkBoundaryCoercion` rewrites `z.bigint()` leaves to accept\n * it). The provider-boundary `Number()` narrowing (e.g. Stripe's numeric amount\n * API) stays a deliberate, explicit, local conversion in provider code and is\n * unaffected by this default.\n *\n * ## Why a global built-in augmentation (and why it is safe)\n *\n * This mutates a built-in prototype — normally an anti-pattern. It is the\n * correct choice here for the same reason `Date.prototype.toJSON` is: the JSON\n * form of a value is a property of its *type*, not of each call site. It is\n * additive (no method is being replaced — `BigInt.prototype.toJSON` does not\n * otherwise exist), non-enumerable (invisible to `for...in` / `Object.keys`),\n * and idempotent. No known library relies on `JSON.stringify(bigint)` throwing.\n *\n * Installed as a top-level side effect of `@wildo-ai/zod-decorators` (the package\n * that owns `z_money` and therefore introduces bigint into resource payloads in\n * the first place), so the encoding is guaranteed present wherever money can be —\n * every backend/companion/worker/minion runtime AND the browser (which protects\n * the frontend request-submit path too).\n *\n * ## Network-boundary mechanism map (the canonical trace)\n *\n * `bigint` (money) and `Date` are the two runtime types that do NOT survive a JSON\n * round-trip as themselves. The framework handles BOTH with a symmetric two-half\n * contract. This module is the OUTBOUND (serialize) half for `bigint`; the entries\n * below are its counterparts. When editing any one, keep the pair coherent.\n *\n * | Concern | `Date` | money `bigint` |\n * |---|---|---|\n * | SERIALIZE (runtime type → wire string) — PRIMARY | `Date.prototype.toJSON` (built-in) | **this module** (`installBigIntJsonEncoding`) |\n * | COERCE (wire string → runtime type, on receive) | `z.date()` → `z.coerce.date()` | `z.bigint()` → string-accepting `z.preprocess` |\n * | — both coerce leaves rewritten by | `ResourcesConfigOperationsDtosBuilderUtils.applyNetworkBoundaryCoercion` (`@wildo-ai/saas-models`) — used by the SHARED `responseDto`/`requestDto`, so backend serialize-parse, frontend receive-parse, and worker re-hydration all coerce identically | (same) |\n * | In-BODY pre-serialize normalization (backend) | `transformResponseDates` (Date→ISO string in the body) | **none by design** — bigint stays bigint in the body and relies on the SERIALIZE half above (a `transformResponseBigints` twin would be redundant with this `toJSON`) |\n * | DEFENSE-IN-DEPTH serialize (belt-and-suspenders) | (n/a — `toJSON` is built-in) | `ResourceSerializationUtils.bigIntSafeJsonReplacer` / `stringifyWithBigInt` (queue, webhook), and the Express app-level `json replacer` (`http-server.backend.service`) |\n *\n * Type origin: `MoneyValue.amount` (`z_money`) in this package's `zod-money.ts`.\n */\n\ndeclare global {\n // The type-level encoding installed by `installBigIntJsonEncoding`. Declared so\n // `BigInt.prototype.toJSON` is typed rather than accessed through `any`.\n interface BigInt {\n /** JSON representation of this bigint — its decimal string form (lossless). */\n toJSON(): string;\n }\n}\n\n/**\n * Install `BigInt.prototype.toJSON` (bigint → decimal string) if not already\n * present. Idempotent and safe to call from multiple bootstraps / duplicate\n * package instances — the first install wins and later calls are no-ops.\n */\nexport function installBigIntJsonEncoding(): void {\n if (typeof BigInt.prototype.toJSON === 'function') return;\n Object.defineProperty(BigInt.prototype, 'toJSON', {\n value: function toJSON(this: bigint): string {\n return this.toString();\n },\n writable: true,\n configurable: true,\n enumerable: false,\n });\n}\n"]}
1
+ {"version":3,"file":"install-bigint-json-encoding.js","sourceRoot":"","sources":["../../src/install-bigint-json-encoding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAWH;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IAC1D,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE;QAChD,KAAK,EAAE,SAAS,MAAM;YACpB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QACD,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;AACL,CAAC","sourcesContent":["/**\n * Process-wide JSON encoding for `bigint` — the type-level counterpart of\n * `Date.prototype.toJSON`.\n *\n * ## Why this exists\n *\n * `z_money` (`MoneyValue`) stores its `amount` as a `bigint` — deliberately, to\n * avoid the >2^53 precision loss `number` would introduce for monetary amounts.\n * But `bigint` is the one runtime type in the resource pipeline that has **no\n * JSON representation**: `JSON.stringify(1999n)` throws\n * `TypeError: Do not know how to serialize a BigInt`. `Date` never has this\n * problem because `Date.prototype.toJSON` exists, so *every* serializer — Express\n * `res.json`, `socket.io` emit, queue encoders, `redis` cache writes, HMAC\n * integrity hashes, any third-party lib — inherits date→ISO-string encoding for\n * free. `bigint` had no such method, so each of those boundaries had to opt in\n * to a bigint-safe stringify individually — a treadmill where the next bare\n * `JSON.stringify(payload)` silently reintroduces a 500 (and, worse, the\n * `socket.io` encoder is a separate serialization path an Express `json replacer`\n * can never reach).\n *\n * Installing `BigInt.prototype.toJSON` supplies the missing type-level encoding\n * once, so bigint round-trips through *every* JSON boundary exactly as `Date`\n * does — no per-boundary opt-in.\n *\n * ## Encoding choice: decimal STRING, not number\n *\n * `1999n → \"1999\"`. A string round-trips losslessly (`BigInt(\"1999\")`), whereas\n * `Number(1999n)` would reintroduce precisely the precision risk `bigint` exists\n * to prevent. This matches the framework's documented money wire-contract: the\n * response-parsing schema coerces the decimal-string form back to `bigint` on\n * receive (`applyNetworkBoundaryCoercion` rewrites `z.bigint()` leaves to accept\n * it). The provider-boundary `Number()` narrowing (e.g. Stripe's numeric amount\n * API) stays a deliberate, explicit, local conversion in provider code and is\n * unaffected by this default.\n *\n * ## Why a global built-in augmentation (and why it is safe)\n *\n * This mutates a built-in prototype — normally an anti-pattern. It is the\n * correct choice here for the same reason `Date.prototype.toJSON` is: the JSON\n * form of a value is a property of its *type*, not of each call site. It is\n * additive (no method is being replaced — `BigInt.prototype.toJSON` does not\n * otherwise exist), non-enumerable (invisible to `for...in` / `Object.keys`),\n * and idempotent. No known library relies on `JSON.stringify(bigint)` throwing.\n *\n * Installed as a top-level side effect of `@wildo-ai/zod-decorators` (the package\n * that owns `z_money` and therefore introduces bigint into resource payloads in\n * the first place), so the encoding is guaranteed present wherever money can be —\n * every backend/companion/worker/minion runtime AND the browser (which protects\n * the frontend request-submit path too).\n *\n * ## Network-boundary mechanism map (the canonical trace)\n *\n * `bigint` (money) and `Date` are the two runtime types that do NOT survive a JSON\n * round-trip as themselves. The framework handles BOTH with a symmetric two-half\n * contract. This module is the OUTBOUND (serialize) half for `bigint`; the entries\n * below are its counterparts. When editing any one, keep the pair coherent.\n *\n * | Concern | `Date` | money `bigint` |\n * |---|---|---|\n * | SERIALIZE (runtime type → wire string) — PRIMARY | `Date.prototype.toJSON` (built-in) | **this module** (`installBigIntJsonEncoding`) |\n * | COERCE (wire string → runtime type, on receive) | `z.date()` → `z_wireDate()` | `z.bigint()` → string-accepting `z.preprocess` |\n * | — both coerce leaves rewritten by | `ResourcesConfigOperationsDtosBuilderUtils.applyNetworkBoundaryCoercion` (`@wildo-ai/saas-models`) — used by the SHARED `responseDto`/`requestDto`, so backend serialize-parse, frontend receive-parse, and worker re-hydration all coerce identically | (same) |\n * | In-BODY pre-serialize normalization (backend) | `transformResponseDates` (Date→ISO string in the body) | **none by design** — bigint stays bigint in the body and relies on the SERIALIZE half above (a `transformResponseBigints` twin would be redundant with this `toJSON`) |\n * | DEFENSE-IN-DEPTH serialize (belt-and-suspenders) | (n/a — `toJSON` is built-in) | `ResourceSerializationUtils.bigIntSafeJsonReplacer` / `stringifyWithBigInt` (queue, webhook), and the Express app-level `json replacer` (`http-server.backend.service`) |\n *\n * Type origin: `MoneyValue.amount` (`z_money`) in this package's `zod-money.ts`.\n */\n\ndeclare global {\n // The type-level encoding installed by `installBigIntJsonEncoding`. Declared so\n // `BigInt.prototype.toJSON` is typed rather than accessed through `any`.\n interface BigInt {\n /** JSON representation of this bigint — its decimal string form (lossless). */\n toJSON(): string;\n }\n}\n\n/**\n * Install `BigInt.prototype.toJSON` (bigint → decimal string) if not already\n * present. Idempotent and safe to call from multiple bootstraps / duplicate\n * package instances — the first install wins and later calls are no-ops.\n */\nexport function installBigIntJsonEncoding(): void {\n if (typeof BigInt.prototype.toJSON === 'function') return;\n Object.defineProperty(BigInt.prototype, 'toJSON', {\n value: function toJSON(this: bigint): string {\n return this.toString();\n },\n writable: true,\n configurable: true,\n enumerable: false,\n });\n}\n"]}
@@ -9,19 +9,19 @@ import { z } from 'zod';
9
9
  * Minimal “resource row” with primary key, summary, FK, and backend-only fields.
10
10
  */
11
11
  export declare const decoratedTestEntitySchema: z.ZodObject<{
12
- _id: import("..").DecoratedPrimitiveZodType<z.ZodString>;
13
- title: import("..").DecoratedPrimitiveZodType<z.ZodString>;
14
- ownerId: import("..").DecoratedPrimitiveZodType<z.ZodString>;
15
- internalNote: import("..").DecoratedPrimitiveZodType<z.ZodString>;
12
+ _id: z.ZodString;
13
+ title: z.ZodString;
14
+ ownerId: z.ZodString;
15
+ internalNote: z.ZodString;
16
16
  }, z.core.$strip>;
17
17
  /**
18
18
  * Variant-style row with a discriminator enum + summary field.
19
19
  */
20
20
  export declare const decoratedTestVariantSchema: z.ZodObject<{
21
- kind: import("..").DecoratedPrimitiveZodType<z.ZodEnum<{
21
+ kind: z.ZodEnum<{
22
22
  A: "A";
23
23
  B: "B";
24
- }>>;
25
- label: import("..").DecoratedPrimitiveZodType<z.ZodString>;
24
+ }>;
25
+ label: z.ZodString;
26
26
  }, z.core.$strip>;
27
27
  //# sourceMappingURL=decorated-test-schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorated-test-schemas.d.ts","sourceRoot":"","sources":["../../../../src/testing/decorated-test-schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;iBAKpC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;iBAGrC,CAAC"}
1
+ {"version":3,"file":"decorated-test-schemas.d.ts","sourceRoot":"","sources":["../../../src/testing/decorated-test-schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;iBAKpC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;iBAGrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"decorated-test-schemas.js","sourceRoot":"","sources":["../../../../src/testing/decorated-test-schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAE7B;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE;CACzC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE;CACnC,CAAC,CAAC","sourcesContent":["/**\n * Canonical decorated Zod shapes for cross-layer tests (engine packages, apps).\n *\n * Importing this file runs `ensureZodDecoratorsLoaded(z)` for the current `zod` instance,\n * then builds schemas using chainable decorators (same pattern as package tests).\n */\nimport { z } from 'zod';\nimport { ensureZodDecoratorsLoaded } from '../zod.module-override';\n\nensureZodDecoratorsLoaded(z);\n\n/**\n * Minimal “resource row” with primary key, summary, FK, and backend-only fields.\n */\nexport const decoratedTestEntitySchema = z.object({\n _id: z.string().isPrimaryKey(),\n title: z.string().isSummaryField(),\n ownerId: z.string().isForeignKey(),\n internalNote: z.string().isBackendOnly(),\n});\n\n/**\n * Variant-style row with a discriminator enum + summary field.\n */\nexport const decoratedTestVariantSchema = z.object({\n kind: z.enum(['A', 'B']).isDiscriminator(),\n label: z.string().isSummaryField(),\n});\n"]}
1
+ {"version":3,"file":"decorated-test-schemas.js","sourceRoot":"","sources":["../../../src/testing/decorated-test-schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAE7B;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE;CACzC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE;CACnC,CAAC,CAAC","sourcesContent":["/**\n * Canonical decorated Zod shapes for cross-layer tests (engine packages, apps).\n *\n * Importing this file runs `ensureZodDecoratorsLoaded(z)` for the current `zod` instance,\n * then builds schemas using chainable decorators (same pattern as package tests).\n */\nimport { z } from 'zod';\nimport { ensureZodDecoratorsLoaded } from '../zod.module-override';\n\nensureZodDecoratorsLoaded(z);\n\n/**\n * Minimal “resource row” with primary key, summary, FK, and backend-only fields.\n */\nexport const decoratedTestEntitySchema = z.object({\n _id: z.string().isPrimaryKey(),\n title: z.string().isSummaryField(),\n ownerId: z.string().isForeignKey(),\n internalNote: z.string().isBackendOnly(),\n});\n\n/**\n * Variant-style row with a discriminator enum + summary field.\n */\nexport const decoratedTestVariantSchema = z.object({\n kind: z.enum(['A', 'B']).isDiscriminator(),\n label: z.string().isSummaryField(),\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,cAAc,kCAAkC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,cAAc,kCAAkC,CAAC","sourcesContent":["/**\n * Public testing surface for @wildo-ai/zod-decorators.\n * Import from `@wildo-ai/zod-decorators/testing`.\n *\n * entrypoint-waiver: an AUDIENCE boundary, not a file alias. Folding these fixtures into the root\n * barrel would put them in the production graph of every consumer — the root is `sideEffects`-marked\n * and reaches every frontend bundle — so the subpath is what keeps a test-only surface out of it.\n * Rule 3 counts re-exported FILES and cannot see that distinction; the sibling `/testing` surfaces on\n * `saas-models` and `saas-frontend-lib` are the same shape. Growing a second file purely to satisfy\n * the count was rejected: it would invent surface nobody asked for.\n *\n * The waiver also suppresses rule 1 (`root-barrel-overlap`) for this barrel, which is a real loss.\n * `published-testing-surface.contract.test.ts` restores it: it asserts the root barrel publishes\n * none of the symbols below, which is the overlap rule 1 would have caught.\n */\nexport * from './testing/decorated-test-schemas';\n"]}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,cAAc,kCAAkC,CAAC","sourcesContent":["/**\n * Public testing surface for @wildo-ai/zod-decorators.\n * Import from `@wildo-ai/zod-decorators/testing`.\n *\n * entrypoint-waiver: an AUDIENCE boundary, not a file alias. Folding these fixtures into the root\n * barrel would put them in the production graph of every consumer — the root is `sideEffects`-marked\n * and reaches every frontend bundle — so the subpath is what keeps a test-only surface out of it.\n * Rule 3 counts re-exported FILES and cannot see that distinction; the sibling `/testing` surfaces on\n * `saas-models` and `saas-frontend-lib` are the same shape. Growing a second file purely to satisfy\n * the count was rejected: it would invent surface nobody asked for.\n *\n * The waiver also suppresses rule 1 (`root-barrel-overlap`) for this barrel, which is a real loss.\n * `published-testing-surface.contract.test.ts` restores it: it asserts the root barrel publishes\n * none of the symbols below, which is the overlap rule 1 would have caught.\n */\nexport * from './testing/decorated-test-schemas';\n"]}