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.
- package/dist/cli/commands/admin.d.ts +16 -0
- package/dist/cli/commands/admin.d.ts.map +1 -0
- package/dist/cli/commands/admin.js +88 -0
- package/dist/cli/commands/admin.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +18 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/detectConvexUrl.d.ts +13 -0
- package/dist/cli/utils/detectConvexUrl.d.ts.map +1 -0
- package/dist/cli/utils/detectConvexUrl.js +48 -0
- package/dist/cli/utils/detectConvexUrl.js.map +1 -0
- package/dist/cli/utils/openBrowser.d.ts +7 -0
- package/dist/cli/utils/openBrowser.d.ts.map +1 -0
- package/dist/cli/utils/openBrowser.js +17 -0
- package/dist/cli/utils/openBrowser.js.map +1 -0
- package/dist/client/admin-config.d.ts +126 -0
- package/dist/client/admin-config.d.ts.map +1 -0
- package/dist/client/admin-config.js +117 -0
- package/dist/client/admin-config.js.map +1 -0
- package/dist/client/adminApi.d.ts +2273 -0
- package/dist/client/adminApi.d.ts.map +1 -0
- package/dist/client/adminApi.js +716 -0
- package/dist/client/adminApi.js.map +1 -0
- package/dist/client/agentTools.d.ts +933 -0
- package/dist/client/agentTools.d.ts.map +1 -0
- package/dist/client/agentTools.js +1004 -0
- package/dist/client/agentTools.js.map +1 -0
- package/dist/client/argTypes.d.ts +212 -0
- package/dist/client/argTypes.d.ts.map +1 -0
- package/dist/client/argTypes.js +5 -0
- package/dist/client/argTypes.js.map +1 -0
- package/dist/client/field-types.d.ts +55 -0
- package/dist/client/field-types.d.ts.map +1 -0
- package/dist/client/field-types.js +152 -0
- package/dist/client/field-types.js.map +1 -0
- package/dist/client/index.d.ts +189 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +668 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/queryBuilder.d.ts +765 -0
- package/dist/client/queryBuilder.d.ts.map +1 -0
- package/dist/client/queryBuilder.js +970 -0
- package/dist/client/queryBuilder.js.map +1 -0
- package/dist/client/schema/codegen.d.ts +128 -0
- package/dist/client/schema/codegen.d.ts.map +1 -0
- package/dist/client/schema/codegen.js +318 -0
- package/dist/client/schema/codegen.js.map +1 -0
- package/dist/client/schema/defineContentType.d.ts +221 -0
- package/dist/client/schema/defineContentType.d.ts.map +1 -0
- package/dist/client/schema/defineContentType.js +380 -0
- package/dist/client/schema/defineContentType.js.map +1 -0
- package/dist/client/schema/index.d.ts +85 -0
- package/dist/client/schema/index.d.ts.map +1 -0
- package/dist/client/schema/index.js +92 -0
- package/dist/client/schema/index.js.map +1 -0
- package/dist/client/schema/schemaDrift.d.ts +199 -0
- package/dist/client/schema/schemaDrift.d.ts.map +1 -0
- package/dist/client/schema/schemaDrift.js +340 -0
- package/dist/client/schema/schemaDrift.js.map +1 -0
- package/dist/client/schema/typedClient.d.ts +401 -0
- package/dist/client/schema/typedClient.d.ts.map +1 -0
- package/dist/client/schema/typedClient.js +269 -0
- package/dist/client/schema/typedClient.js.map +1 -0
- package/dist/client/schema/types.d.ts +477 -0
- package/dist/client/schema/types.d.ts.map +1 -0
- package/dist/client/schema/types.js +39 -0
- package/dist/client/schema/types.js.map +1 -0
- package/dist/client/types.d.ts +449 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +149 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/workflows.d.ts +51 -0
- package/dist/client/workflows.d.ts.map +1 -0
- package/dist/client/workflows.js +103 -0
- package/dist/client/workflows.js.map +1 -0
- package/dist/client/wrapper.d.ts +2198 -0
- package/dist/client/wrapper.d.ts.map +1 -0
- package/dist/client/wrapper.js +2651 -0
- package/dist/client/wrapper.js.map +1 -0
- package/dist/component/_generated/api.d.ts +124 -0
- package/dist/component/_generated/api.d.ts.map +1 -0
- package/dist/component/_generated/api.js +31 -0
- package/dist/component/_generated/api.js.map +1 -0
- package/dist/component/_generated/component.d.ts +4321 -0
- package/dist/component/_generated/component.d.ts.map +1 -0
- package/dist/component/_generated/component.js +11 -0
- package/dist/component/_generated/component.js.map +1 -0
- package/dist/component/_generated/dataModel.d.ts +46 -0
- package/dist/component/_generated/dataModel.d.ts.map +1 -0
- package/dist/component/_generated/dataModel.js +11 -0
- package/dist/component/_generated/dataModel.js.map +1 -0
- package/dist/component/_generated/server.d.ts +121 -0
- package/dist/component/_generated/server.d.ts.map +1 -0
- package/dist/component/_generated/server.js +78 -0
- package/dist/component/_generated/server.js.map +1 -0
- package/dist/component/auditLog.d.ts +410 -0
- package/dist/component/auditLog.d.ts.map +1 -0
- package/dist/component/auditLog.js +607 -0
- package/dist/component/auditLog.js.map +1 -0
- package/dist/component/authorization.d.ts +323 -0
- package/dist/component/authorization.d.ts.map +1 -0
- package/dist/component/authorization.js +464 -0
- package/dist/component/authorization.js.map +1 -0
- package/dist/component/authorizationHooks.d.ts +184 -0
- package/dist/component/authorizationHooks.d.ts.map +1 -0
- package/dist/component/authorizationHooks.js +521 -0
- package/dist/component/authorizationHooks.js.map +1 -0
- package/dist/component/bulkOperations.d.ts +200 -0
- package/dist/component/bulkOperations.d.ts.map +1 -0
- package/dist/component/bulkOperations.js +568 -0
- package/dist/component/bulkOperations.js.map +1 -0
- package/dist/component/contentEntries.d.ts +719 -0
- package/dist/component/contentEntries.d.ts.map +1 -0
- package/dist/component/contentEntries.js +1617 -0
- package/dist/component/contentEntries.js.map +1 -0
- package/dist/component/contentEntryMutations.d.ts +505 -0
- package/dist/component/contentEntryMutations.d.ts.map +1 -0
- package/dist/component/contentEntryMutations.js +1009 -0
- package/dist/component/contentEntryMutations.js.map +1 -0
- package/dist/component/contentEntryValidation.d.ts +115 -0
- package/dist/component/contentEntryValidation.d.ts.map +1 -0
- package/dist/component/contentEntryValidation.js +546 -0
- package/dist/component/contentEntryValidation.js.map +1 -0
- package/dist/component/contentLock.d.ts +328 -0
- package/dist/component/contentLock.d.ts.map +1 -0
- package/dist/component/contentLock.js +471 -0
- package/dist/component/contentLock.js.map +1 -0
- package/dist/component/contentTypeMigration.d.ts +411 -0
- package/dist/component/contentTypeMigration.d.ts.map +1 -0
- package/dist/component/contentTypeMigration.js +805 -0
- package/dist/component/contentTypeMigration.js.map +1 -0
- package/dist/component/contentTypeMutations.d.ts +975 -0
- package/dist/component/contentTypeMutations.d.ts.map +1 -0
- package/dist/component/contentTypeMutations.js +768 -0
- package/dist/component/contentTypeMutations.js.map +1 -0
- package/dist/component/contentTypes.d.ts +538 -0
- package/dist/component/contentTypes.d.ts.map +1 -0
- package/dist/component/contentTypes.js +304 -0
- package/dist/component/contentTypes.js.map +1 -0
- package/dist/component/convex.config.d.ts +42 -0
- package/dist/component/convex.config.d.ts.map +1 -0
- package/dist/component/convex.config.js +43 -0
- package/dist/component/convex.config.js.map +1 -0
- package/dist/component/documentTypes.d.ts +186 -0
- package/dist/component/documentTypes.d.ts.map +1 -0
- package/dist/component/documentTypes.js +23 -0
- package/dist/component/documentTypes.js.map +1 -0
- package/dist/component/eventEmitter.d.ts +281 -0
- package/dist/component/eventEmitter.d.ts.map +1 -0
- package/dist/component/eventEmitter.js +300 -0
- package/dist/component/eventEmitter.js.map +1 -0
- package/dist/component/exportImport.d.ts +1120 -0
- package/dist/component/exportImport.d.ts.map +1 -0
- package/dist/component/exportImport.js +931 -0
- package/dist/component/exportImport.js.map +1 -0
- package/dist/component/index.d.ts +28 -0
- package/dist/component/index.d.ts.map +1 -0
- package/dist/component/index.js +142 -0
- package/dist/component/index.js.map +1 -0
- package/dist/component/lib/deepReferenceResolver.d.ts +252 -0
- package/dist/component/lib/deepReferenceResolver.d.ts.map +1 -0
- package/dist/component/lib/deepReferenceResolver.js +601 -0
- package/dist/component/lib/deepReferenceResolver.js.map +1 -0
- package/dist/component/lib/errors.d.ts +306 -0
- package/dist/component/lib/errors.d.ts.map +1 -0
- package/dist/component/lib/errors.js +407 -0
- package/dist/component/lib/errors.js.map +1 -0
- package/dist/component/lib/index.d.ts +10 -0
- package/dist/component/lib/index.d.ts.map +1 -0
- package/dist/component/lib/index.js +33 -0
- package/dist/component/lib/index.js.map +1 -0
- package/dist/component/lib/mediaReferenceResolver.d.ts +217 -0
- package/dist/component/lib/mediaReferenceResolver.d.ts.map +1 -0
- package/dist/component/lib/mediaReferenceResolver.js +326 -0
- package/dist/component/lib/mediaReferenceResolver.js.map +1 -0
- package/dist/component/lib/metadataExtractor.d.ts +245 -0
- package/dist/component/lib/metadataExtractor.d.ts.map +1 -0
- package/dist/component/lib/metadataExtractor.js +548 -0
- package/dist/component/lib/metadataExtractor.js.map +1 -0
- package/dist/component/lib/mutationAuth.d.ts +95 -0
- package/dist/component/lib/mutationAuth.d.ts.map +1 -0
- package/dist/component/lib/mutationAuth.js +146 -0
- package/dist/component/lib/mutationAuth.js.map +1 -0
- package/dist/component/lib/queries.d.ts +17 -0
- package/dist/component/lib/queries.d.ts.map +1 -0
- package/dist/component/lib/queries.js +49 -0
- package/dist/component/lib/queries.js.map +1 -0
- package/dist/component/lib/ragContentChunker.d.ts +423 -0
- package/dist/component/lib/ragContentChunker.d.ts.map +1 -0
- package/dist/component/lib/ragContentChunker.js +897 -0
- package/dist/component/lib/ragContentChunker.js.map +1 -0
- package/dist/component/lib/referenceResolver.d.ts +175 -0
- package/dist/component/lib/referenceResolver.d.ts.map +1 -0
- package/dist/component/lib/referenceResolver.js +293 -0
- package/dist/component/lib/referenceResolver.js.map +1 -0
- package/dist/component/lib/slugGenerator.d.ts +71 -0
- package/dist/component/lib/slugGenerator.d.ts.map +1 -0
- package/dist/component/lib/slugGenerator.js +207 -0
- package/dist/component/lib/slugGenerator.js.map +1 -0
- package/dist/component/lib/slugUniqueness.d.ts +131 -0
- package/dist/component/lib/slugUniqueness.d.ts.map +1 -0
- package/dist/component/lib/slugUniqueness.js +229 -0
- package/dist/component/lib/slugUniqueness.js.map +1 -0
- package/dist/component/lib/softDelete.d.ts +18 -0
- package/dist/component/lib/softDelete.d.ts.map +1 -0
- package/dist/component/lib/softDelete.js +29 -0
- package/dist/component/lib/softDelete.js.map +1 -0
- package/dist/component/localeFallbackChain.d.ts +410 -0
- package/dist/component/localeFallbackChain.d.ts.map +1 -0
- package/dist/component/localeFallbackChain.js +467 -0
- package/dist/component/localeFallbackChain.js.map +1 -0
- package/dist/component/localeFields.d.ts +508 -0
- package/dist/component/localeFields.d.ts.map +1 -0
- package/dist/component/localeFields.js +592 -0
- package/dist/component/localeFields.js.map +1 -0
- package/dist/component/mediaAssetMutations.d.ts +235 -0
- package/dist/component/mediaAssetMutations.d.ts.map +1 -0
- package/dist/component/mediaAssetMutations.js +558 -0
- package/dist/component/mediaAssetMutations.js.map +1 -0
- package/dist/component/mediaAssets.d.ts +168 -0
- package/dist/component/mediaAssets.d.ts.map +1 -0
- package/dist/component/mediaAssets.js +618 -0
- package/dist/component/mediaAssets.js.map +1 -0
- package/dist/component/mediaFolderMutations.d.ts +642 -0
- package/dist/component/mediaFolderMutations.d.ts.map +1 -0
- package/dist/component/mediaFolderMutations.js +849 -0
- package/dist/component/mediaFolderMutations.js.map +1 -0
- package/dist/component/mediaUploadMutations.d.ts +136 -0
- package/dist/component/mediaUploadMutations.d.ts.map +1 -0
- package/dist/component/mediaUploadMutations.js +205 -0
- package/dist/component/mediaUploadMutations.js.map +1 -0
- package/dist/component/mediaVariantMutations.d.ts +468 -0
- package/dist/component/mediaVariantMutations.d.ts.map +1 -0
- package/dist/component/mediaVariantMutations.js +737 -0
- package/dist/component/mediaVariantMutations.js.map +1 -0
- package/dist/component/mediaVariants.d.ts +525 -0
- package/dist/component/mediaVariants.d.ts.map +1 -0
- package/dist/component/mediaVariants.js +661 -0
- package/dist/component/mediaVariants.js.map +1 -0
- package/dist/component/ragContentIndexer.d.ts +595 -0
- package/dist/component/ragContentIndexer.d.ts.map +1 -0
- package/dist/component/ragContentIndexer.js +794 -0
- package/dist/component/ragContentIndexer.js.map +1 -0
- package/dist/component/rateLimitHooks.d.ts +266 -0
- package/dist/component/rateLimitHooks.d.ts.map +1 -0
- package/dist/component/rateLimitHooks.js +412 -0
- package/dist/component/rateLimitHooks.js.map +1 -0
- package/dist/component/roles.d.ts +649 -0
- package/dist/component/roles.d.ts.map +1 -0
- package/dist/component/roles.js +884 -0
- package/dist/component/roles.js.map +1 -0
- package/dist/component/scheduledPublish.d.ts +182 -0
- package/dist/component/scheduledPublish.d.ts.map +1 -0
- package/dist/component/scheduledPublish.js +304 -0
- package/dist/component/scheduledPublish.js.map +1 -0
- package/dist/component/schema.d.ts +4114 -0
- package/dist/component/schema.d.ts.map +1 -0
- package/dist/component/schema.js +469 -0
- package/dist/component/schema.js.map +1 -0
- package/dist/component/taxonomies.d.ts +476 -0
- package/dist/component/taxonomies.d.ts.map +1 -0
- package/dist/component/taxonomies.js +785 -0
- package/dist/component/taxonomies.js.map +1 -0
- package/dist/component/taxonomyMutations.d.ts +206 -0
- package/dist/component/taxonomyMutations.d.ts.map +1 -0
- package/dist/component/taxonomyMutations.js +1001 -0
- package/dist/component/taxonomyMutations.js.map +1 -0
- package/dist/component/trash.d.ts +265 -0
- package/dist/component/trash.d.ts.map +1 -0
- package/dist/component/trash.js +621 -0
- package/dist/component/trash.js.map +1 -0
- package/dist/component/types.d.ts +4 -0
- package/dist/component/types.d.ts.map +1 -0
- package/dist/component/types.js +2 -0
- package/dist/component/types.js.map +1 -0
- package/dist/component/userContext.d.ts +508 -0
- package/dist/component/userContext.d.ts.map +1 -0
- package/dist/component/userContext.js +615 -0
- package/dist/component/userContext.js.map +1 -0
- package/dist/component/validation.d.ts +387 -0
- package/dist/component/validation.d.ts.map +1 -0
- package/dist/component/validation.js +1052 -0
- package/dist/component/validation.js.map +1 -0
- package/dist/component/validators.d.ts +4645 -0
- package/dist/component/validators.d.ts.map +1 -0
- package/dist/component/validators.js +641 -0
- package/dist/component/validators.js.map +1 -0
- package/dist/component/versionMutations.d.ts +216 -0
- package/dist/component/versionMutations.d.ts.map +1 -0
- package/dist/component/versionMutations.js +321 -0
- package/dist/component/versionMutations.js.map +1 -0
- package/dist/component/webhookTrigger.d.ts +770 -0
- package/dist/component/webhookTrigger.d.ts.map +1 -0
- package/dist/component/webhookTrigger.js +1413 -0
- package/dist/component/webhookTrigger.js.map +1 -0
- package/dist/react/index.d.ts +316 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +558 -0
- package/dist/react/index.js.map +1 -0
- package/dist/test.d.ts +2230 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +1107 -0
- package/dist/test.js.map +1 -0
- package/package.json +95 -0
- package/src/cli/commands/admin.ts +104 -0
- package/src/cli/index.ts +21 -0
- package/src/cli/utils/detectConvexUrl.ts +54 -0
- package/src/cli/utils/openBrowser.ts +16 -0
- package/src/client/admin-config.ts +138 -0
- package/src/client/adminApi.ts +942 -0
- package/src/client/agentTools.ts +1311 -0
- package/src/client/argTypes.ts +316 -0
- package/src/client/field-types.ts +187 -0
- package/src/client/index.ts +1301 -0
- package/src/client/queryBuilder.ts +1100 -0
- package/src/client/schema/codegen.ts +500 -0
- package/src/client/schema/defineContentType.ts +501 -0
- package/src/client/schema/index.ts +169 -0
- package/src/client/schema/schemaDrift.ts +574 -0
- package/src/client/schema/typedClient.ts +688 -0
- package/src/client/schema/types.ts +666 -0
- package/src/client/types.ts +723 -0
- package/src/client/workflows.ts +141 -0
- package/src/client/wrapper.ts +4304 -0
- package/src/component/_generated/api.ts +140 -0
- package/src/component/_generated/component.ts +5029 -0
- package/src/component/_generated/dataModel.ts +60 -0
- package/src/component/_generated/server.ts +156 -0
- package/src/component/authorization.ts +647 -0
- package/src/component/authorizationHooks.ts +668 -0
- package/src/component/bulkOperations.ts +687 -0
- package/src/component/contentEntries.ts +1976 -0
- package/src/component/contentEntryMutations.ts +1223 -0
- package/src/component/contentEntryValidation.ts +707 -0
- package/src/component/contentLock.ts +550 -0
- package/src/component/contentTypeMigration.ts +1064 -0
- package/src/component/contentTypeMutations.ts +969 -0
- package/src/component/contentTypes.ts +346 -0
- package/src/component/convex.config.ts +44 -0
- package/src/component/documentTypes.ts +240 -0
- package/src/component/eventEmitter.ts +485 -0
- package/src/component/exportImport.ts +1169 -0
- package/src/component/index.ts +491 -0
- package/src/component/lib/deepReferenceResolver.ts +999 -0
- package/src/component/lib/errors.ts +816 -0
- package/src/component/lib/index.ts +145 -0
- package/src/component/lib/mediaReferenceResolver.ts +495 -0
- package/src/component/lib/metadataExtractor.ts +792 -0
- package/src/component/lib/mutationAuth.ts +199 -0
- package/src/component/lib/queries.ts +79 -0
- package/src/component/lib/ragContentChunker.ts +1371 -0
- package/src/component/lib/referenceResolver.ts +430 -0
- package/src/component/lib/slugGenerator.ts +262 -0
- package/src/component/lib/slugUniqueness.ts +333 -0
- package/src/component/lib/softDelete.ts +44 -0
- package/src/component/localeFallbackChain.ts +673 -0
- package/src/component/localeFields.ts +896 -0
- package/src/component/mediaAssetMutations.ts +725 -0
- package/src/component/mediaAssets.ts +932 -0
- package/src/component/mediaFolderMutations.ts +1046 -0
- package/src/component/mediaUploadMutations.ts +224 -0
- package/src/component/mediaVariantMutations.ts +900 -0
- package/src/component/mediaVariants.ts +793 -0
- package/src/component/ragContentIndexer.ts +1067 -0
- package/src/component/rateLimitHooks.ts +572 -0
- package/src/component/roles.ts +1360 -0
- package/src/component/scheduledPublish.ts +358 -0
- package/src/component/schema.ts +617 -0
- package/src/component/taxonomies.ts +949 -0
- package/src/component/taxonomyMutations.ts +1210 -0
- package/src/component/trash.ts +724 -0
- package/src/component/userContext.ts +898 -0
- package/src/component/validation.ts +1388 -0
- package/src/component/validators.ts +949 -0
- package/src/component/versionMutations.ts +392 -0
- package/src/component/webhookTrigger.ts +1922 -0
- package/src/react/index.ts +898 -0
- 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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"}
|