convex-cms 0.0.1

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 (379) hide show
  1. package/dist/cli/commands/admin.d.ts +16 -0
  2. package/dist/cli/commands/admin.d.ts.map +1 -0
  3. package/dist/cli/commands/admin.js +88 -0
  4. package/dist/cli/commands/admin.js.map +1 -0
  5. package/dist/cli/index.d.ts +3 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +18 -0
  8. package/dist/cli/index.js.map +1 -0
  9. package/dist/cli/utils/detectConvexUrl.d.ts +13 -0
  10. package/dist/cli/utils/detectConvexUrl.d.ts.map +1 -0
  11. package/dist/cli/utils/detectConvexUrl.js +48 -0
  12. package/dist/cli/utils/detectConvexUrl.js.map +1 -0
  13. package/dist/cli/utils/openBrowser.d.ts +7 -0
  14. package/dist/cli/utils/openBrowser.d.ts.map +1 -0
  15. package/dist/cli/utils/openBrowser.js +17 -0
  16. package/dist/cli/utils/openBrowser.js.map +1 -0
  17. package/dist/client/admin-config.d.ts +126 -0
  18. package/dist/client/admin-config.d.ts.map +1 -0
  19. package/dist/client/admin-config.js +117 -0
  20. package/dist/client/admin-config.js.map +1 -0
  21. package/dist/client/adminApi.d.ts +2273 -0
  22. package/dist/client/adminApi.d.ts.map +1 -0
  23. package/dist/client/adminApi.js +716 -0
  24. package/dist/client/adminApi.js.map +1 -0
  25. package/dist/client/agentTools.d.ts +933 -0
  26. package/dist/client/agentTools.d.ts.map +1 -0
  27. package/dist/client/agentTools.js +1004 -0
  28. package/dist/client/agentTools.js.map +1 -0
  29. package/dist/client/argTypes.d.ts +212 -0
  30. package/dist/client/argTypes.d.ts.map +1 -0
  31. package/dist/client/argTypes.js +5 -0
  32. package/dist/client/argTypes.js.map +1 -0
  33. package/dist/client/field-types.d.ts +55 -0
  34. package/dist/client/field-types.d.ts.map +1 -0
  35. package/dist/client/field-types.js +152 -0
  36. package/dist/client/field-types.js.map +1 -0
  37. package/dist/client/index.d.ts +189 -0
  38. package/dist/client/index.d.ts.map +1 -0
  39. package/dist/client/index.js +668 -0
  40. package/dist/client/index.js.map +1 -0
  41. package/dist/client/queryBuilder.d.ts +765 -0
  42. package/dist/client/queryBuilder.d.ts.map +1 -0
  43. package/dist/client/queryBuilder.js +970 -0
  44. package/dist/client/queryBuilder.js.map +1 -0
  45. package/dist/client/schema/codegen.d.ts +128 -0
  46. package/dist/client/schema/codegen.d.ts.map +1 -0
  47. package/dist/client/schema/codegen.js +318 -0
  48. package/dist/client/schema/codegen.js.map +1 -0
  49. package/dist/client/schema/defineContentType.d.ts +221 -0
  50. package/dist/client/schema/defineContentType.d.ts.map +1 -0
  51. package/dist/client/schema/defineContentType.js +380 -0
  52. package/dist/client/schema/defineContentType.js.map +1 -0
  53. package/dist/client/schema/index.d.ts +85 -0
  54. package/dist/client/schema/index.d.ts.map +1 -0
  55. package/dist/client/schema/index.js +92 -0
  56. package/dist/client/schema/index.js.map +1 -0
  57. package/dist/client/schema/schemaDrift.d.ts +199 -0
  58. package/dist/client/schema/schemaDrift.d.ts.map +1 -0
  59. package/dist/client/schema/schemaDrift.js +340 -0
  60. package/dist/client/schema/schemaDrift.js.map +1 -0
  61. package/dist/client/schema/typedClient.d.ts +401 -0
  62. package/dist/client/schema/typedClient.d.ts.map +1 -0
  63. package/dist/client/schema/typedClient.js +269 -0
  64. package/dist/client/schema/typedClient.js.map +1 -0
  65. package/dist/client/schema/types.d.ts +477 -0
  66. package/dist/client/schema/types.d.ts.map +1 -0
  67. package/dist/client/schema/types.js +39 -0
  68. package/dist/client/schema/types.js.map +1 -0
  69. package/dist/client/types.d.ts +449 -0
  70. package/dist/client/types.d.ts.map +1 -0
  71. package/dist/client/types.js +149 -0
  72. package/dist/client/types.js.map +1 -0
  73. package/dist/client/workflows.d.ts +51 -0
  74. package/dist/client/workflows.d.ts.map +1 -0
  75. package/dist/client/workflows.js +103 -0
  76. package/dist/client/workflows.js.map +1 -0
  77. package/dist/client/wrapper.d.ts +2198 -0
  78. package/dist/client/wrapper.d.ts.map +1 -0
  79. package/dist/client/wrapper.js +2651 -0
  80. package/dist/client/wrapper.js.map +1 -0
  81. package/dist/component/_generated/api.d.ts +124 -0
  82. package/dist/component/_generated/api.d.ts.map +1 -0
  83. package/dist/component/_generated/api.js +31 -0
  84. package/dist/component/_generated/api.js.map +1 -0
  85. package/dist/component/_generated/component.d.ts +4321 -0
  86. package/dist/component/_generated/component.d.ts.map +1 -0
  87. package/dist/component/_generated/component.js +11 -0
  88. package/dist/component/_generated/component.js.map +1 -0
  89. package/dist/component/_generated/dataModel.d.ts +46 -0
  90. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  91. package/dist/component/_generated/dataModel.js +11 -0
  92. package/dist/component/_generated/dataModel.js.map +1 -0
  93. package/dist/component/_generated/server.d.ts +121 -0
  94. package/dist/component/_generated/server.d.ts.map +1 -0
  95. package/dist/component/_generated/server.js +78 -0
  96. package/dist/component/_generated/server.js.map +1 -0
  97. package/dist/component/auditLog.d.ts +410 -0
  98. package/dist/component/auditLog.d.ts.map +1 -0
  99. package/dist/component/auditLog.js +607 -0
  100. package/dist/component/auditLog.js.map +1 -0
  101. package/dist/component/authorization.d.ts +323 -0
  102. package/dist/component/authorization.d.ts.map +1 -0
  103. package/dist/component/authorization.js +464 -0
  104. package/dist/component/authorization.js.map +1 -0
  105. package/dist/component/authorizationHooks.d.ts +184 -0
  106. package/dist/component/authorizationHooks.d.ts.map +1 -0
  107. package/dist/component/authorizationHooks.js +521 -0
  108. package/dist/component/authorizationHooks.js.map +1 -0
  109. package/dist/component/bulkOperations.d.ts +200 -0
  110. package/dist/component/bulkOperations.d.ts.map +1 -0
  111. package/dist/component/bulkOperations.js +568 -0
  112. package/dist/component/bulkOperations.js.map +1 -0
  113. package/dist/component/contentEntries.d.ts +719 -0
  114. package/dist/component/contentEntries.d.ts.map +1 -0
  115. package/dist/component/contentEntries.js +1617 -0
  116. package/dist/component/contentEntries.js.map +1 -0
  117. package/dist/component/contentEntryMutations.d.ts +505 -0
  118. package/dist/component/contentEntryMutations.d.ts.map +1 -0
  119. package/dist/component/contentEntryMutations.js +1009 -0
  120. package/dist/component/contentEntryMutations.js.map +1 -0
  121. package/dist/component/contentEntryValidation.d.ts +115 -0
  122. package/dist/component/contentEntryValidation.d.ts.map +1 -0
  123. package/dist/component/contentEntryValidation.js +546 -0
  124. package/dist/component/contentEntryValidation.js.map +1 -0
  125. package/dist/component/contentLock.d.ts +328 -0
  126. package/dist/component/contentLock.d.ts.map +1 -0
  127. package/dist/component/contentLock.js +471 -0
  128. package/dist/component/contentLock.js.map +1 -0
  129. package/dist/component/contentTypeMigration.d.ts +411 -0
  130. package/dist/component/contentTypeMigration.d.ts.map +1 -0
  131. package/dist/component/contentTypeMigration.js +805 -0
  132. package/dist/component/contentTypeMigration.js.map +1 -0
  133. package/dist/component/contentTypeMutations.d.ts +975 -0
  134. package/dist/component/contentTypeMutations.d.ts.map +1 -0
  135. package/dist/component/contentTypeMutations.js +768 -0
  136. package/dist/component/contentTypeMutations.js.map +1 -0
  137. package/dist/component/contentTypes.d.ts +538 -0
  138. package/dist/component/contentTypes.d.ts.map +1 -0
  139. package/dist/component/contentTypes.js +304 -0
  140. package/dist/component/contentTypes.js.map +1 -0
  141. package/dist/component/convex.config.d.ts +42 -0
  142. package/dist/component/convex.config.d.ts.map +1 -0
  143. package/dist/component/convex.config.js +43 -0
  144. package/dist/component/convex.config.js.map +1 -0
  145. package/dist/component/documentTypes.d.ts +186 -0
  146. package/dist/component/documentTypes.d.ts.map +1 -0
  147. package/dist/component/documentTypes.js +23 -0
  148. package/dist/component/documentTypes.js.map +1 -0
  149. package/dist/component/eventEmitter.d.ts +281 -0
  150. package/dist/component/eventEmitter.d.ts.map +1 -0
  151. package/dist/component/eventEmitter.js +300 -0
  152. package/dist/component/eventEmitter.js.map +1 -0
  153. package/dist/component/exportImport.d.ts +1120 -0
  154. package/dist/component/exportImport.d.ts.map +1 -0
  155. package/dist/component/exportImport.js +931 -0
  156. package/dist/component/exportImport.js.map +1 -0
  157. package/dist/component/index.d.ts +28 -0
  158. package/dist/component/index.d.ts.map +1 -0
  159. package/dist/component/index.js +142 -0
  160. package/dist/component/index.js.map +1 -0
  161. package/dist/component/lib/deepReferenceResolver.d.ts +252 -0
  162. package/dist/component/lib/deepReferenceResolver.d.ts.map +1 -0
  163. package/dist/component/lib/deepReferenceResolver.js +601 -0
  164. package/dist/component/lib/deepReferenceResolver.js.map +1 -0
  165. package/dist/component/lib/errors.d.ts +306 -0
  166. package/dist/component/lib/errors.d.ts.map +1 -0
  167. package/dist/component/lib/errors.js +407 -0
  168. package/dist/component/lib/errors.js.map +1 -0
  169. package/dist/component/lib/index.d.ts +10 -0
  170. package/dist/component/lib/index.d.ts.map +1 -0
  171. package/dist/component/lib/index.js +33 -0
  172. package/dist/component/lib/index.js.map +1 -0
  173. package/dist/component/lib/mediaReferenceResolver.d.ts +217 -0
  174. package/dist/component/lib/mediaReferenceResolver.d.ts.map +1 -0
  175. package/dist/component/lib/mediaReferenceResolver.js +326 -0
  176. package/dist/component/lib/mediaReferenceResolver.js.map +1 -0
  177. package/dist/component/lib/metadataExtractor.d.ts +245 -0
  178. package/dist/component/lib/metadataExtractor.d.ts.map +1 -0
  179. package/dist/component/lib/metadataExtractor.js +548 -0
  180. package/dist/component/lib/metadataExtractor.js.map +1 -0
  181. package/dist/component/lib/mutationAuth.d.ts +95 -0
  182. package/dist/component/lib/mutationAuth.d.ts.map +1 -0
  183. package/dist/component/lib/mutationAuth.js +146 -0
  184. package/dist/component/lib/mutationAuth.js.map +1 -0
  185. package/dist/component/lib/queries.d.ts +17 -0
  186. package/dist/component/lib/queries.d.ts.map +1 -0
  187. package/dist/component/lib/queries.js +49 -0
  188. package/dist/component/lib/queries.js.map +1 -0
  189. package/dist/component/lib/ragContentChunker.d.ts +423 -0
  190. package/dist/component/lib/ragContentChunker.d.ts.map +1 -0
  191. package/dist/component/lib/ragContentChunker.js +897 -0
  192. package/dist/component/lib/ragContentChunker.js.map +1 -0
  193. package/dist/component/lib/referenceResolver.d.ts +175 -0
  194. package/dist/component/lib/referenceResolver.d.ts.map +1 -0
  195. package/dist/component/lib/referenceResolver.js +293 -0
  196. package/dist/component/lib/referenceResolver.js.map +1 -0
  197. package/dist/component/lib/slugGenerator.d.ts +71 -0
  198. package/dist/component/lib/slugGenerator.d.ts.map +1 -0
  199. package/dist/component/lib/slugGenerator.js +207 -0
  200. package/dist/component/lib/slugGenerator.js.map +1 -0
  201. package/dist/component/lib/slugUniqueness.d.ts +131 -0
  202. package/dist/component/lib/slugUniqueness.d.ts.map +1 -0
  203. package/dist/component/lib/slugUniqueness.js +229 -0
  204. package/dist/component/lib/slugUniqueness.js.map +1 -0
  205. package/dist/component/lib/softDelete.d.ts +18 -0
  206. package/dist/component/lib/softDelete.d.ts.map +1 -0
  207. package/dist/component/lib/softDelete.js +29 -0
  208. package/dist/component/lib/softDelete.js.map +1 -0
  209. package/dist/component/localeFallbackChain.d.ts +410 -0
  210. package/dist/component/localeFallbackChain.d.ts.map +1 -0
  211. package/dist/component/localeFallbackChain.js +467 -0
  212. package/dist/component/localeFallbackChain.js.map +1 -0
  213. package/dist/component/localeFields.d.ts +508 -0
  214. package/dist/component/localeFields.d.ts.map +1 -0
  215. package/dist/component/localeFields.js +592 -0
  216. package/dist/component/localeFields.js.map +1 -0
  217. package/dist/component/mediaAssetMutations.d.ts +235 -0
  218. package/dist/component/mediaAssetMutations.d.ts.map +1 -0
  219. package/dist/component/mediaAssetMutations.js +558 -0
  220. package/dist/component/mediaAssetMutations.js.map +1 -0
  221. package/dist/component/mediaAssets.d.ts +168 -0
  222. package/dist/component/mediaAssets.d.ts.map +1 -0
  223. package/dist/component/mediaAssets.js +618 -0
  224. package/dist/component/mediaAssets.js.map +1 -0
  225. package/dist/component/mediaFolderMutations.d.ts +642 -0
  226. package/dist/component/mediaFolderMutations.d.ts.map +1 -0
  227. package/dist/component/mediaFolderMutations.js +849 -0
  228. package/dist/component/mediaFolderMutations.js.map +1 -0
  229. package/dist/component/mediaUploadMutations.d.ts +136 -0
  230. package/dist/component/mediaUploadMutations.d.ts.map +1 -0
  231. package/dist/component/mediaUploadMutations.js +205 -0
  232. package/dist/component/mediaUploadMutations.js.map +1 -0
  233. package/dist/component/mediaVariantMutations.d.ts +468 -0
  234. package/dist/component/mediaVariantMutations.d.ts.map +1 -0
  235. package/dist/component/mediaVariantMutations.js +737 -0
  236. package/dist/component/mediaVariantMutations.js.map +1 -0
  237. package/dist/component/mediaVariants.d.ts +525 -0
  238. package/dist/component/mediaVariants.d.ts.map +1 -0
  239. package/dist/component/mediaVariants.js +661 -0
  240. package/dist/component/mediaVariants.js.map +1 -0
  241. package/dist/component/ragContentIndexer.d.ts +595 -0
  242. package/dist/component/ragContentIndexer.d.ts.map +1 -0
  243. package/dist/component/ragContentIndexer.js +794 -0
  244. package/dist/component/ragContentIndexer.js.map +1 -0
  245. package/dist/component/rateLimitHooks.d.ts +266 -0
  246. package/dist/component/rateLimitHooks.d.ts.map +1 -0
  247. package/dist/component/rateLimitHooks.js +412 -0
  248. package/dist/component/rateLimitHooks.js.map +1 -0
  249. package/dist/component/roles.d.ts +649 -0
  250. package/dist/component/roles.d.ts.map +1 -0
  251. package/dist/component/roles.js +884 -0
  252. package/dist/component/roles.js.map +1 -0
  253. package/dist/component/scheduledPublish.d.ts +182 -0
  254. package/dist/component/scheduledPublish.d.ts.map +1 -0
  255. package/dist/component/scheduledPublish.js +304 -0
  256. package/dist/component/scheduledPublish.js.map +1 -0
  257. package/dist/component/schema.d.ts +4114 -0
  258. package/dist/component/schema.d.ts.map +1 -0
  259. package/dist/component/schema.js +469 -0
  260. package/dist/component/schema.js.map +1 -0
  261. package/dist/component/taxonomies.d.ts +476 -0
  262. package/dist/component/taxonomies.d.ts.map +1 -0
  263. package/dist/component/taxonomies.js +785 -0
  264. package/dist/component/taxonomies.js.map +1 -0
  265. package/dist/component/taxonomyMutations.d.ts +206 -0
  266. package/dist/component/taxonomyMutations.d.ts.map +1 -0
  267. package/dist/component/taxonomyMutations.js +1001 -0
  268. package/dist/component/taxonomyMutations.js.map +1 -0
  269. package/dist/component/trash.d.ts +265 -0
  270. package/dist/component/trash.d.ts.map +1 -0
  271. package/dist/component/trash.js +621 -0
  272. package/dist/component/trash.js.map +1 -0
  273. package/dist/component/types.d.ts +4 -0
  274. package/dist/component/types.d.ts.map +1 -0
  275. package/dist/component/types.js +2 -0
  276. package/dist/component/types.js.map +1 -0
  277. package/dist/component/userContext.d.ts +508 -0
  278. package/dist/component/userContext.d.ts.map +1 -0
  279. package/dist/component/userContext.js +615 -0
  280. package/dist/component/userContext.js.map +1 -0
  281. package/dist/component/validation.d.ts +387 -0
  282. package/dist/component/validation.d.ts.map +1 -0
  283. package/dist/component/validation.js +1052 -0
  284. package/dist/component/validation.js.map +1 -0
  285. package/dist/component/validators.d.ts +4645 -0
  286. package/dist/component/validators.d.ts.map +1 -0
  287. package/dist/component/validators.js +641 -0
  288. package/dist/component/validators.js.map +1 -0
  289. package/dist/component/versionMutations.d.ts +216 -0
  290. package/dist/component/versionMutations.d.ts.map +1 -0
  291. package/dist/component/versionMutations.js +321 -0
  292. package/dist/component/versionMutations.js.map +1 -0
  293. package/dist/component/webhookTrigger.d.ts +770 -0
  294. package/dist/component/webhookTrigger.d.ts.map +1 -0
  295. package/dist/component/webhookTrigger.js +1413 -0
  296. package/dist/component/webhookTrigger.js.map +1 -0
  297. package/dist/react/index.d.ts +316 -0
  298. package/dist/react/index.d.ts.map +1 -0
  299. package/dist/react/index.js +558 -0
  300. package/dist/react/index.js.map +1 -0
  301. package/dist/test.d.ts +2230 -0
  302. package/dist/test.d.ts.map +1 -0
  303. package/dist/test.js +1107 -0
  304. package/dist/test.js.map +1 -0
  305. package/package.json +95 -0
  306. package/src/cli/commands/admin.ts +104 -0
  307. package/src/cli/index.ts +21 -0
  308. package/src/cli/utils/detectConvexUrl.ts +54 -0
  309. package/src/cli/utils/openBrowser.ts +16 -0
  310. package/src/client/admin-config.ts +138 -0
  311. package/src/client/adminApi.ts +942 -0
  312. package/src/client/agentTools.ts +1311 -0
  313. package/src/client/argTypes.ts +316 -0
  314. package/src/client/field-types.ts +187 -0
  315. package/src/client/index.ts +1301 -0
  316. package/src/client/queryBuilder.ts +1100 -0
  317. package/src/client/schema/codegen.ts +500 -0
  318. package/src/client/schema/defineContentType.ts +501 -0
  319. package/src/client/schema/index.ts +169 -0
  320. package/src/client/schema/schemaDrift.ts +574 -0
  321. package/src/client/schema/typedClient.ts +688 -0
  322. package/src/client/schema/types.ts +666 -0
  323. package/src/client/types.ts +723 -0
  324. package/src/client/workflows.ts +141 -0
  325. package/src/client/wrapper.ts +4304 -0
  326. package/src/component/_generated/api.ts +140 -0
  327. package/src/component/_generated/component.ts +5029 -0
  328. package/src/component/_generated/dataModel.ts +60 -0
  329. package/src/component/_generated/server.ts +156 -0
  330. package/src/component/authorization.ts +647 -0
  331. package/src/component/authorizationHooks.ts +668 -0
  332. package/src/component/bulkOperations.ts +687 -0
  333. package/src/component/contentEntries.ts +1976 -0
  334. package/src/component/contentEntryMutations.ts +1223 -0
  335. package/src/component/contentEntryValidation.ts +707 -0
  336. package/src/component/contentLock.ts +550 -0
  337. package/src/component/contentTypeMigration.ts +1064 -0
  338. package/src/component/contentTypeMutations.ts +969 -0
  339. package/src/component/contentTypes.ts +346 -0
  340. package/src/component/convex.config.ts +44 -0
  341. package/src/component/documentTypes.ts +240 -0
  342. package/src/component/eventEmitter.ts +485 -0
  343. package/src/component/exportImport.ts +1169 -0
  344. package/src/component/index.ts +491 -0
  345. package/src/component/lib/deepReferenceResolver.ts +999 -0
  346. package/src/component/lib/errors.ts +816 -0
  347. package/src/component/lib/index.ts +145 -0
  348. package/src/component/lib/mediaReferenceResolver.ts +495 -0
  349. package/src/component/lib/metadataExtractor.ts +792 -0
  350. package/src/component/lib/mutationAuth.ts +199 -0
  351. package/src/component/lib/queries.ts +79 -0
  352. package/src/component/lib/ragContentChunker.ts +1371 -0
  353. package/src/component/lib/referenceResolver.ts +430 -0
  354. package/src/component/lib/slugGenerator.ts +262 -0
  355. package/src/component/lib/slugUniqueness.ts +333 -0
  356. package/src/component/lib/softDelete.ts +44 -0
  357. package/src/component/localeFallbackChain.ts +673 -0
  358. package/src/component/localeFields.ts +896 -0
  359. package/src/component/mediaAssetMutations.ts +725 -0
  360. package/src/component/mediaAssets.ts +932 -0
  361. package/src/component/mediaFolderMutations.ts +1046 -0
  362. package/src/component/mediaUploadMutations.ts +224 -0
  363. package/src/component/mediaVariantMutations.ts +900 -0
  364. package/src/component/mediaVariants.ts +793 -0
  365. package/src/component/ragContentIndexer.ts +1067 -0
  366. package/src/component/rateLimitHooks.ts +572 -0
  367. package/src/component/roles.ts +1360 -0
  368. package/src/component/scheduledPublish.ts +358 -0
  369. package/src/component/schema.ts +617 -0
  370. package/src/component/taxonomies.ts +949 -0
  371. package/src/component/taxonomyMutations.ts +1210 -0
  372. package/src/component/trash.ts +724 -0
  373. package/src/component/userContext.ts +898 -0
  374. package/src/component/validation.ts +1388 -0
  375. package/src/component/validators.ts +949 -0
  376. package/src/component/versionMutations.ts +392 -0
  377. package/src/component/webhookTrigger.ts +1922 -0
  378. package/src/react/index.ts +898 -0
  379. package/src/test.ts +1580 -0
@@ -0,0 +1,467 @@
1
+ /**
2
+ * Locale Fallback Chain Configuration and Utilities
3
+ *
4
+ * This module provides configuration and utility functions for locale fallback chains.
5
+ * When content isn't available in a requested locale, the system falls back through
6
+ * a configured chain until content is found.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // Configure fallback chains
11
+ * const config: LocaleFallbackConfig = {
12
+ * defaultLocale: "en-US",
13
+ * fallbackChains: {
14
+ * "es-MX": ["es-ES", "en-US"], // Mexican Spanish -> Spain Spanish -> US English
15
+ * "es-ES": ["en-US"], // Spain Spanish -> US English
16
+ * "fr-CA": ["fr-FR", "en-US"], // Canadian French -> France French -> US English
17
+ * "zh-Hans-CN": ["zh-Hans", "en-US"], // Simplified Chinese (China) -> Simplified Chinese -> US English
18
+ * },
19
+ * };
20
+ *
21
+ * // Resolve fallback chain for a locale
22
+ * const chain = resolveFallbackChain("es-MX", config);
23
+ * // Returns: ["es-ES", "en-US", "en-US"] -> deduplicated to ["es-ES", "en-US"]
24
+ * ```
25
+ *
26
+ * @module localeFallbackChain
27
+ */
28
+ // =============================================================================
29
+ // Constants
30
+ // =============================================================================
31
+ /**
32
+ * Default fallback configuration.
33
+ */
34
+ export const DEFAULT_FALLBACK_CONFIG = {
35
+ defaultLocale: "en",
36
+ fallbackChains: {},
37
+ autoGenerateFallbacks: true,
38
+ supportedLocales: [],
39
+ };
40
+ /**
41
+ * Parses a BCP 47 locale code into its components.
42
+ *
43
+ * Supports the following formats:
44
+ * - "en" (language only)
45
+ * - "en-US" (language + region)
46
+ * - "zh-Hans" (language + script)
47
+ * - "zh-Hans-CN" (language + script + region)
48
+ *
49
+ * @param locale - The locale code to parse
50
+ * @returns The parsed locale components, or null if invalid
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * parseLocale("en-US");
55
+ * // Returns: { language: "en", region: "US" }
56
+ *
57
+ * parseLocale("zh-Hans-CN");
58
+ * // Returns: { language: "zh", script: "Hans", region: "CN" }
59
+ *
60
+ * parseLocale("invalid");
61
+ * // Returns: null
62
+ * ```
63
+ */
64
+ export function parseLocale(locale) {
65
+ if (!locale || typeof locale !== "string") {
66
+ return null;
67
+ }
68
+ // Pattern: language[-Script][-REGION]
69
+ // Language: 2-3 lowercase letters
70
+ // Script: 4 letters, title case (optional)
71
+ // Region: 2 uppercase letters (optional)
72
+ const pattern = /^([a-z]{2,3})(?:-([A-Z][a-z]{3}))?(?:-([A-Z]{2}))?$/;
73
+ const match = locale.match(pattern);
74
+ if (!match) {
75
+ // Try simpler patterns
76
+ // Just language
77
+ if (/^[a-z]{2,3}$/.test(locale)) {
78
+ return { language: locale };
79
+ }
80
+ return null;
81
+ }
82
+ const [, language, script, region] = match;
83
+ const result = { language };
84
+ if (script)
85
+ result.script = script;
86
+ if (region)
87
+ result.region = region;
88
+ return result;
89
+ }
90
+ /**
91
+ * Formats parsed locale components back into a BCP 47 locale code.
92
+ *
93
+ * @param parsed - The parsed locale components
94
+ * @returns The formatted locale code
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * formatLocale({ language: "en", region: "US" });
99
+ * // Returns: "en-US"
100
+ *
101
+ * formatLocale({ language: "zh", script: "Hans", region: "CN" });
102
+ * // Returns: "zh-Hans-CN"
103
+ * ```
104
+ */
105
+ export function formatLocale(parsed) {
106
+ let result = parsed.language;
107
+ if (parsed.script)
108
+ result += `-${parsed.script}`;
109
+ if (parsed.region)
110
+ result += `-${parsed.region}`;
111
+ return result;
112
+ }
113
+ /**
114
+ * Generates the locale hierarchy (parent locales) for a given locale.
115
+ *
116
+ * @param locale - The locale to get hierarchy for
117
+ * @returns Array of parent locales from most specific to least specific
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * getLocaleHierarchy("zh-Hans-CN");
122
+ * // Returns: ["zh-Hans", "zh"]
123
+ *
124
+ * getLocaleHierarchy("en-US");
125
+ * // Returns: ["en"]
126
+ *
127
+ * getLocaleHierarchy("en");
128
+ * // Returns: []
129
+ * ```
130
+ */
131
+ export function getLocaleHierarchy(locale) {
132
+ const parsed = parseLocale(locale);
133
+ if (!parsed)
134
+ return [];
135
+ const hierarchy = [];
136
+ // If we have region, add without region
137
+ if (parsed.region) {
138
+ if (parsed.script) {
139
+ // zh-Hans-CN -> zh-Hans
140
+ hierarchy.push(formatLocale({ language: parsed.language, script: parsed.script }));
141
+ }
142
+ // zh-Hans-CN -> zh, or en-US -> en
143
+ hierarchy.push(parsed.language);
144
+ }
145
+ else if (parsed.script) {
146
+ // zh-Hans -> zh
147
+ hierarchy.push(parsed.language);
148
+ }
149
+ return hierarchy;
150
+ }
151
+ // =============================================================================
152
+ // Fallback Chain Resolution
153
+ // =============================================================================
154
+ /**
155
+ * Resolves the complete fallback chain for a locale.
156
+ *
157
+ * The resolution order is:
158
+ * 1. Explicit fallback chain from configuration (if defined)
159
+ * 2. Auto-generated hierarchy-based chain (if enabled)
160
+ * 3. Default locale as final fallback
161
+ *
162
+ * @param locale - The locale to resolve the fallback chain for
163
+ * @param config - The fallback configuration
164
+ * @param options - Options for building the chain
165
+ * @returns The resolved fallback chain
166
+ *
167
+ * @example
168
+ * ```typescript
169
+ * const config: LocaleFallbackConfig = {
170
+ * defaultLocale: "en-US",
171
+ * fallbackChains: {
172
+ * "es-MX": ["es-ES"],
173
+ * },
174
+ * };
175
+ *
176
+ * // Explicit chain
177
+ * resolveFallbackChain("es-MX", config);
178
+ * // Returns: { requestedLocale: "es-MX", fallbackChain: ["es-ES", "en-US"], ... }
179
+ *
180
+ * // Auto-generated chain
181
+ * resolveFallbackChain("fr-CA", config);
182
+ * // Returns: { requestedLocale: "fr-CA", fallbackChain: ["fr", "en-US"], ... }
183
+ * ```
184
+ */
185
+ export function resolveFallbackChain(locale, config = DEFAULT_FALLBACK_CONFIG, options = {}) {
186
+ const { includeDefault = true, deduplicate = true, maxLength = 10, } = options;
187
+ const { defaultLocale = DEFAULT_FALLBACK_CONFIG.defaultLocale, fallbackChains = {}, autoGenerateFallbacks = true, supportedLocales = [], } = config;
188
+ let chain = [];
189
+ let isAutoGenerated = false;
190
+ // Check for explicit fallback chain
191
+ if (fallbackChains[locale]) {
192
+ chain = [...fallbackChains[locale]];
193
+ }
194
+ else if (autoGenerateFallbacks) {
195
+ // Auto-generate based on locale hierarchy
196
+ chain = getLocaleHierarchy(locale);
197
+ isAutoGenerated = true;
198
+ }
199
+ // Add default locale if not already in chain
200
+ if (includeDefault && !chain.includes(defaultLocale)) {
201
+ chain.push(defaultLocale);
202
+ }
203
+ // Filter to supported locales if specified
204
+ if (supportedLocales.length > 0) {
205
+ chain = chain.filter((l) => supportedLocales.includes(l));
206
+ }
207
+ // Deduplicate
208
+ if (deduplicate) {
209
+ chain = [...new Set(chain)];
210
+ }
211
+ // Remove the requested locale itself if present
212
+ chain = chain.filter((l) => l !== locale);
213
+ // Limit length
214
+ if (chain.length > maxLength) {
215
+ chain = chain.slice(0, maxLength);
216
+ }
217
+ return {
218
+ requestedLocale: locale,
219
+ fallbackChain: chain,
220
+ defaultLocale,
221
+ isAutoGenerated,
222
+ };
223
+ }
224
+ /**
225
+ * Gets the fallback chain as a simple array of locale codes.
226
+ *
227
+ * This is a convenience function for use with `getLocalizedValue`.
228
+ *
229
+ * @param locale - The locale to get fallback chain for
230
+ * @param config - The fallback configuration
231
+ * @returns Array of fallback locale codes
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * const chain = getFallbackChain("es-MX", config);
236
+ * // Returns: ["es-ES", "en-US"]
237
+ *
238
+ * // Use with getLocalizedValue
239
+ * const result = getLocalizedValue(value, {
240
+ * locale: "es-MX",
241
+ * fallbackChain: chain,
242
+ * });
243
+ * ```
244
+ */
245
+ export function getFallbackChain(locale, config = DEFAULT_FALLBACK_CONFIG) {
246
+ return resolveFallbackChain(locale, config).fallbackChain;
247
+ }
248
+ // =============================================================================
249
+ // Configuration Utilities
250
+ // =============================================================================
251
+ /**
252
+ * Creates a LocaleFallbackConfig with defaults applied.
253
+ *
254
+ * @param config - Partial configuration to merge with defaults
255
+ * @returns Complete configuration with defaults
256
+ *
257
+ * @example
258
+ * ```typescript
259
+ * const config = createFallbackConfig({
260
+ * defaultLocale: "en-US",
261
+ * fallbackChains: {
262
+ * "es-MX": ["es-ES"],
263
+ * },
264
+ * });
265
+ * ```
266
+ */
267
+ export function createFallbackConfig(config = {}) {
268
+ return {
269
+ defaultLocale: config.defaultLocale ?? DEFAULT_FALLBACK_CONFIG.defaultLocale,
270
+ fallbackChains: config.fallbackChains ?? DEFAULT_FALLBACK_CONFIG.fallbackChains,
271
+ autoGenerateFallbacks: config.autoGenerateFallbacks ?? DEFAULT_FALLBACK_CONFIG.autoGenerateFallbacks,
272
+ supportedLocales: config.supportedLocales ?? DEFAULT_FALLBACK_CONFIG.supportedLocales,
273
+ };
274
+ }
275
+ /**
276
+ * Validates a LocaleFallbackConfig for common issues.
277
+ *
278
+ * @param config - The configuration to validate
279
+ * @returns Array of validation errors (empty if valid)
280
+ *
281
+ * @example
282
+ * ```typescript
283
+ * const errors = validateFallbackConfig({
284
+ * defaultLocale: "en-US",
285
+ * fallbackChains: {
286
+ * "es-MX": ["invalid-locale"],
287
+ * },
288
+ * supportedLocales: ["en-US", "es-ES"],
289
+ * });
290
+ * // Returns: ["Fallback chain for 'es-MX' contains unsupported locale: 'invalid-locale'"]
291
+ * ```
292
+ */
293
+ export function validateFallbackConfig(config) {
294
+ const errors = [];
295
+ const { defaultLocale, fallbackChains = {}, supportedLocales = [] } = config;
296
+ // Check default locale
297
+ if (!defaultLocale) {
298
+ errors.push("defaultLocale is required");
299
+ }
300
+ else if (!parseLocale(defaultLocale)) {
301
+ errors.push(`Invalid defaultLocale format: '${defaultLocale}'`);
302
+ }
303
+ // Check supported locales include default
304
+ if (supportedLocales.length > 0 && defaultLocale && !supportedLocales.includes(defaultLocale)) {
305
+ errors.push(`defaultLocale '${defaultLocale}' is not in supportedLocales`);
306
+ }
307
+ // Validate fallback chains
308
+ for (const [locale, chain] of Object.entries(fallbackChains)) {
309
+ // Check locale format
310
+ if (!parseLocale(locale)) {
311
+ errors.push(`Invalid locale format in fallbackChains: '${locale}'`);
312
+ }
313
+ // Check chain items
314
+ for (const fallback of chain) {
315
+ if (!parseLocale(fallback)) {
316
+ errors.push(`Invalid fallback locale format for '${locale}': '${fallback}'`);
317
+ }
318
+ // Check against supported locales
319
+ if (supportedLocales.length > 0 && !supportedLocales.includes(fallback)) {
320
+ errors.push(`Fallback chain for '${locale}' contains unsupported locale: '${fallback}'`);
321
+ }
322
+ }
323
+ // Check for circular references
324
+ if (chain.includes(locale)) {
325
+ errors.push(`Fallback chain for '${locale}' contains self-reference`);
326
+ }
327
+ }
328
+ // Validate supported locales formats
329
+ for (const locale of supportedLocales) {
330
+ if (!parseLocale(locale)) {
331
+ errors.push(`Invalid locale format in supportedLocales: '${locale}'`);
332
+ }
333
+ }
334
+ return errors;
335
+ }
336
+ // =============================================================================
337
+ // Integration with LocaleResolutionOptions
338
+ // =============================================================================
339
+ /**
340
+ * Builds LocaleResolutionOptions from a locale and fallback configuration.
341
+ *
342
+ * This function creates the options object needed by `getLocalizedValue` and
343
+ * `resolveContentData` from the locale fallback configuration.
344
+ *
345
+ * @param locale - The requested locale
346
+ * @param config - The fallback configuration
347
+ * @returns LocaleResolutionOptions for use with locale resolution functions
348
+ *
349
+ * @example
350
+ * ```typescript
351
+ * const config: LocaleFallbackConfig = {
352
+ * defaultLocale: "en-US",
353
+ * fallbackChains: {
354
+ * "es-MX": ["es-ES"],
355
+ * },
356
+ * };
357
+ *
358
+ * const options = buildLocaleResolutionOptions("es-MX", config);
359
+ * // Returns: {
360
+ * // locale: "es-MX",
361
+ * // fallbackChain: ["es-ES", "en-US"],
362
+ * // defaultLocale: "en-US"
363
+ * // }
364
+ *
365
+ * // Use with getLocalizedValue
366
+ * const result = getLocalizedValue(value, options);
367
+ * ```
368
+ */
369
+ export function buildLocaleResolutionOptions(locale, config = DEFAULT_FALLBACK_CONFIG) {
370
+ const resolved = resolveFallbackChain(locale, config);
371
+ return {
372
+ locale,
373
+ fallbackChain: resolved.fallbackChain,
374
+ defaultLocale: resolved.defaultLocale,
375
+ };
376
+ }
377
+ // =============================================================================
378
+ // Common Fallback Chain Presets
379
+ // =============================================================================
380
+ /**
381
+ * Preset fallback configurations for common localization scenarios.
382
+ */
383
+ export const FALLBACK_PRESETS = {
384
+ /**
385
+ * Spanish locale family fallback chain.
386
+ * Regional Spanish variants fall back to Spain Spanish, then English.
387
+ */
388
+ spanish: {
389
+ "es-MX": ["es-ES", "en"], // Mexican Spanish
390
+ "es-AR": ["es-ES", "en"], // Argentine Spanish
391
+ "es-CO": ["es-ES", "en"], // Colombian Spanish
392
+ "es-CL": ["es-ES", "en"], // Chilean Spanish
393
+ "es-PE": ["es-ES", "en"], // Peruvian Spanish
394
+ "es-VE": ["es-ES", "en"], // Venezuelan Spanish
395
+ "es-ES": ["en"], // Spain Spanish
396
+ },
397
+ /**
398
+ * Portuguese locale family fallback chain.
399
+ * Brazilian Portuguese falls back to Portugal Portuguese, then English.
400
+ */
401
+ portuguese: {
402
+ "pt-BR": ["pt-PT", "en"], // Brazilian Portuguese
403
+ "pt-PT": ["en"], // Portugal Portuguese
404
+ },
405
+ /**
406
+ * Chinese locale family fallback chain.
407
+ * Simplified and Traditional Chinese with regional variants.
408
+ */
409
+ chinese: {
410
+ "zh-Hans-CN": ["zh-Hans", "zh", "en"], // Simplified Chinese (China)
411
+ "zh-Hans-SG": ["zh-Hans", "zh", "en"], // Simplified Chinese (Singapore)
412
+ "zh-Hant-TW": ["zh-Hant", "zh", "en"], // Traditional Chinese (Taiwan)
413
+ "zh-Hant-HK": ["zh-Hant", "zh", "en"], // Traditional Chinese (Hong Kong)
414
+ "zh-Hans": ["zh", "en"], // Simplified Chinese
415
+ "zh-Hant": ["zh", "en"], // Traditional Chinese
416
+ },
417
+ /**
418
+ * French locale family fallback chain.
419
+ */
420
+ french: {
421
+ "fr-CA": ["fr-FR", "en"], // Canadian French
422
+ "fr-BE": ["fr-FR", "en"], // Belgian French
423
+ "fr-CH": ["fr-FR", "en"], // Swiss French
424
+ "fr-FR": ["en"], // France French
425
+ },
426
+ /**
427
+ * German locale family fallback chain.
428
+ */
429
+ german: {
430
+ "de-AT": ["de-DE", "en"], // Austrian German
431
+ "de-CH": ["de-DE", "en"], // Swiss German
432
+ "de-DE": ["en"], // Germany German
433
+ },
434
+ /**
435
+ * English locale family fallback chain.
436
+ */
437
+ english: {
438
+ "en-GB": ["en-US", "en"], // British English
439
+ "en-AU": ["en-GB", "en-US", "en"], // Australian English
440
+ "en-CA": ["en-US", "en"], // Canadian English
441
+ "en-NZ": ["en-AU", "en-GB", "en"], // New Zealand English
442
+ "en-US": ["en"], // US English
443
+ },
444
+ };
445
+ /**
446
+ * Merges multiple fallback chain presets into a single configuration.
447
+ *
448
+ * @param presets - Array of preset names to merge
449
+ * @returns Combined fallback chains
450
+ *
451
+ * @example
452
+ * ```typescript
453
+ * const chains = mergeFallbackPresets(["spanish", "portuguese"]);
454
+ * // Returns merged chains for both Spanish and Portuguese locales
455
+ * ```
456
+ */
457
+ export function mergeFallbackPresets(presets) {
458
+ const merged = {};
459
+ for (const presetName of presets) {
460
+ const preset = FALLBACK_PRESETS[presetName];
461
+ if (preset) {
462
+ Object.assign(merged, preset);
463
+ }
464
+ }
465
+ return merged;
466
+ }
467
+ //# sourceMappingURL=localeFallbackChain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localeFallbackChain.js","sourceRoot":"","sources":["../../src/component/localeFallbackChain.ts"],"names":[],"mappings":"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"}