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 @@
|
|
|
1
|
+
{"version":3,"file":"ragContentChunker.js","sourceRoot":"","sources":["../../../src/component/lib/ragContentChunker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference Resolution Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides functions for resolving and populating content references.
|
|
5
|
+
* These utilities help with fetching referenced content entries and
|
|
6
|
+
* validating reference constraints.
|
|
7
|
+
*/
|
|
8
|
+
import { QueryCtx } from "../_generated/server.js";
|
|
9
|
+
/**
|
|
10
|
+
* A single reference value (content entry ID as string)
|
|
11
|
+
*/
|
|
12
|
+
export type SingleReference = string;
|
|
13
|
+
/**
|
|
14
|
+
* Multiple reference values (array of content entry IDs)
|
|
15
|
+
*/
|
|
16
|
+
export type MultipleReferences = string[];
|
|
17
|
+
/**
|
|
18
|
+
* Reference field value - either single or multiple based on field configuration
|
|
19
|
+
*/
|
|
20
|
+
export type ReferenceValue = SingleReference | MultipleReferences;
|
|
21
|
+
/**
|
|
22
|
+
* A resolved reference with the full content entry data
|
|
23
|
+
*/
|
|
24
|
+
export interface ResolvedReference {
|
|
25
|
+
/** The content entry ID */
|
|
26
|
+
id: string;
|
|
27
|
+
/** The content type name */
|
|
28
|
+
contentTypeName: string;
|
|
29
|
+
/** The content type display name */
|
|
30
|
+
contentTypeDisplayName: string;
|
|
31
|
+
/** The entry's slug */
|
|
32
|
+
slug: string;
|
|
33
|
+
/** The entry's status (supports custom workflow states) */
|
|
34
|
+
status: string;
|
|
35
|
+
/** The entry's data (field values) */
|
|
36
|
+
data: Record<string, unknown>;
|
|
37
|
+
/** Whether the entry exists and is not deleted */
|
|
38
|
+
exists: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Options for resolving references
|
|
42
|
+
*/
|
|
43
|
+
export interface ResolveOptions {
|
|
44
|
+
/** Include soft-deleted entries (default: false) */
|
|
45
|
+
includeDeleted?: boolean;
|
|
46
|
+
/** Only return published entries (default: false) */
|
|
47
|
+
publishedOnly?: boolean;
|
|
48
|
+
/** Specific fields to include from the entry data (default: all) */
|
|
49
|
+
fields?: string[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Result of a reference resolution operation
|
|
53
|
+
*/
|
|
54
|
+
export interface ResolveResult {
|
|
55
|
+
/** Successfully resolved references */
|
|
56
|
+
resolved: ResolvedReference[];
|
|
57
|
+
/** IDs that could not be resolved (not found or deleted) */
|
|
58
|
+
unresolved: string[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolve a single reference to its full content entry.
|
|
62
|
+
*
|
|
63
|
+
* @param ctx - Convex query context
|
|
64
|
+
* @param referenceId - The content entry ID to resolve
|
|
65
|
+
* @param options - Resolution options
|
|
66
|
+
* @returns The resolved reference or null if not found
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* // In a query handler:
|
|
71
|
+
* const author = await resolveReference(ctx, entry.data.authorId);
|
|
72
|
+
* if (author) {
|
|
73
|
+
* console.log("Author:", author.data.name);
|
|
74
|
+
* }
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function resolveReference(ctx: QueryCtx, referenceId: string, options?: ResolveOptions): Promise<ResolvedReference | null>;
|
|
78
|
+
/**
|
|
79
|
+
* Resolve multiple references to their full content entries.
|
|
80
|
+
*
|
|
81
|
+
* @param ctx - Convex query context
|
|
82
|
+
* @param referenceIds - Array of content entry IDs to resolve
|
|
83
|
+
* @param options - Resolution options
|
|
84
|
+
* @returns Result with resolved references and unresolved IDs
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* // In a query handler:
|
|
89
|
+
* const result = await resolveReferences(ctx, entry.data.relatedPostIds, {
|
|
90
|
+
* publishedOnly: true,
|
|
91
|
+
* });
|
|
92
|
+
*
|
|
93
|
+
* console.log("Found:", result.resolved.length);
|
|
94
|
+
* console.log("Missing:", result.unresolved);
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function resolveReferences(ctx: QueryCtx, referenceIds: string[], options?: ResolveOptions): Promise<ResolveResult>;
|
|
98
|
+
/**
|
|
99
|
+
* Check if a reference ID points to a valid, existing content entry.
|
|
100
|
+
*
|
|
101
|
+
* @param ctx - Convex query context
|
|
102
|
+
* @param referenceId - The content entry ID to check
|
|
103
|
+
* @param allowedContentTypes - Optional array of allowed content type names
|
|
104
|
+
* @returns Object with validity status and optional error message
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* // Validate a reference before saving:
|
|
109
|
+
* const check = await isValidReference(ctx, authorId, ["user"]);
|
|
110
|
+
* if (!check.valid) {
|
|
111
|
+
* throw new Error(check.error);
|
|
112
|
+
* }
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
export declare function isValidReference(ctx: QueryCtx, referenceId: string, allowedContentTypes?: string[]): Promise<{
|
|
116
|
+
valid: boolean;
|
|
117
|
+
error?: string;
|
|
118
|
+
}>;
|
|
119
|
+
/**
|
|
120
|
+
* Validate all references in a content entry's data.
|
|
121
|
+
*
|
|
122
|
+
* Iterates through all reference fields and validates that each reference
|
|
123
|
+
* points to a valid, existing content entry of the allowed type.
|
|
124
|
+
*
|
|
125
|
+
* @param ctx - Convex query context
|
|
126
|
+
* @param data - The content entry data containing reference fields
|
|
127
|
+
* @param fields - Array of field definitions (to identify reference fields)
|
|
128
|
+
* @returns Object with overall validity and array of errors
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* // Validate all references before creating/updating an entry:
|
|
133
|
+
* const validation = await validateAllReferences(ctx, data, contentType.fields);
|
|
134
|
+
* if (!validation.valid) {
|
|
135
|
+
* throw new Error(validation.errors.join(", "));
|
|
136
|
+
* }
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
export declare function validateAllReferences(ctx: QueryCtx, data: Record<string, unknown>, fields: Array<{
|
|
140
|
+
name: string;
|
|
141
|
+
type: string;
|
|
142
|
+
options?: {
|
|
143
|
+
allowedContentTypes?: string[];
|
|
144
|
+
multiple?: boolean;
|
|
145
|
+
};
|
|
146
|
+
}>): Promise<{
|
|
147
|
+
valid: boolean;
|
|
148
|
+
errors: string[];
|
|
149
|
+
}>;
|
|
150
|
+
/**
|
|
151
|
+
* Extract all reference IDs from a content entry's data.
|
|
152
|
+
*
|
|
153
|
+
* @param data - The content entry data
|
|
154
|
+
* @param fields - Array of field definitions
|
|
155
|
+
* @returns Array of all reference IDs found in the data
|
|
156
|
+
*/
|
|
157
|
+
export declare function extractReferenceIds(data: Record<string, unknown>, fields: Array<{
|
|
158
|
+
name: string;
|
|
159
|
+
type: string;
|
|
160
|
+
options?: {
|
|
161
|
+
multiple?: boolean;
|
|
162
|
+
};
|
|
163
|
+
}>): string[];
|
|
164
|
+
/**
|
|
165
|
+
* Get the content type name for a content entry ID.
|
|
166
|
+
*
|
|
167
|
+
* This is a helper function for the `validateReferenceContentType` function
|
|
168
|
+
* in the validation module.
|
|
169
|
+
*
|
|
170
|
+
* @param ctx - Convex query context
|
|
171
|
+
* @param entryId - The content entry ID
|
|
172
|
+
* @returns The content type name or null if not found
|
|
173
|
+
*/
|
|
174
|
+
export declare function getContentTypeName(ctx: QueryCtx, entryId: string): Promise<string | null>;
|
|
175
|
+
//# sourceMappingURL=referenceResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referenceResolver.d.ts","sourceRoot":"","sources":["../../../src/component/lib/referenceResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference Resolution Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides functions for resolving and populating content references.
|
|
5
|
+
* These utilities help with fetching referenced content entries and
|
|
6
|
+
* validating reference constraints.
|
|
7
|
+
*/
|
|
8
|
+
import { isDeleted } from "./softDelete.js";
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// Core Resolution Functions
|
|
11
|
+
// =============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Resolve a single reference to its full content entry.
|
|
14
|
+
*
|
|
15
|
+
* @param ctx - Convex query context
|
|
16
|
+
* @param referenceId - The content entry ID to resolve
|
|
17
|
+
* @param options - Resolution options
|
|
18
|
+
* @returns The resolved reference or null if not found
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* // In a query handler:
|
|
23
|
+
* const author = await resolveReference(ctx, entry.data.authorId);
|
|
24
|
+
* if (author) {
|
|
25
|
+
* console.log("Author:", author.data.name);
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export async function resolveReference(ctx, referenceId, options = {}) {
|
|
30
|
+
const { includeDeleted = false, publishedOnly = false } = options;
|
|
31
|
+
try {
|
|
32
|
+
// Get the content entry
|
|
33
|
+
const entry = await ctx.db.get(referenceId);
|
|
34
|
+
if (!entry) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
// Check soft-delete status
|
|
38
|
+
if (!includeDeleted && isDeleted(entry)) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
// Check published status
|
|
42
|
+
if (publishedOnly && entry.status !== "published") {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
// Get the content type for this entry
|
|
46
|
+
const contentType = await ctx.db.get(entry.contentTypeId);
|
|
47
|
+
if (!contentType || isDeleted(contentType)) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
// Filter fields if specified
|
|
51
|
+
let data = entry.data;
|
|
52
|
+
if (options.fields && options.fields.length > 0) {
|
|
53
|
+
const filteredData = {};
|
|
54
|
+
for (const field of options.fields) {
|
|
55
|
+
if (field in data) {
|
|
56
|
+
filteredData[field] = data[field];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
data = filteredData;
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
id: referenceId,
|
|
63
|
+
contentTypeName: contentType.name,
|
|
64
|
+
contentTypeDisplayName: contentType.displayName,
|
|
65
|
+
slug: entry.slug,
|
|
66
|
+
status: entry.status,
|
|
67
|
+
data,
|
|
68
|
+
exists: true,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Invalid ID format or other error
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Resolve multiple references to their full content entries.
|
|
78
|
+
*
|
|
79
|
+
* @param ctx - Convex query context
|
|
80
|
+
* @param referenceIds - Array of content entry IDs to resolve
|
|
81
|
+
* @param options - Resolution options
|
|
82
|
+
* @returns Result with resolved references and unresolved IDs
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* // In a query handler:
|
|
87
|
+
* const result = await resolveReferences(ctx, entry.data.relatedPostIds, {
|
|
88
|
+
* publishedOnly: true,
|
|
89
|
+
* });
|
|
90
|
+
*
|
|
91
|
+
* console.log("Found:", result.resolved.length);
|
|
92
|
+
* console.log("Missing:", result.unresolved);
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export async function resolveReferences(ctx, referenceIds, options = {}) {
|
|
96
|
+
const resolved = [];
|
|
97
|
+
const unresolved = [];
|
|
98
|
+
// Resolve each reference in parallel for efficiency
|
|
99
|
+
const promises = referenceIds.map(async (id) => {
|
|
100
|
+
const result = await resolveReference(ctx, id, options);
|
|
101
|
+
return { id, result };
|
|
102
|
+
});
|
|
103
|
+
const results = await Promise.all(promises);
|
|
104
|
+
for (const { id, result } of results) {
|
|
105
|
+
if (result) {
|
|
106
|
+
resolved.push(result);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
unresolved.push(id);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return { resolved, unresolved };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if a reference ID points to a valid, existing content entry.
|
|
116
|
+
*
|
|
117
|
+
* @param ctx - Convex query context
|
|
118
|
+
* @param referenceId - The content entry ID to check
|
|
119
|
+
* @param allowedContentTypes - Optional array of allowed content type names
|
|
120
|
+
* @returns Object with validity status and optional error message
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```typescript
|
|
124
|
+
* // Validate a reference before saving:
|
|
125
|
+
* const check = await isValidReference(ctx, authorId, ["user"]);
|
|
126
|
+
* if (!check.valid) {
|
|
127
|
+
* throw new Error(check.error);
|
|
128
|
+
* }
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export async function isValidReference(ctx, referenceId, allowedContentTypes) {
|
|
132
|
+
try {
|
|
133
|
+
// Get the content entry
|
|
134
|
+
const entry = await ctx.db.get(referenceId);
|
|
135
|
+
if (!entry) {
|
|
136
|
+
return { valid: false, error: `Content entry not found: ${referenceId}` };
|
|
137
|
+
}
|
|
138
|
+
// Check soft-delete status
|
|
139
|
+
if (isDeleted(entry)) {
|
|
140
|
+
return {
|
|
141
|
+
valid: false,
|
|
142
|
+
error: `Content entry has been deleted: ${referenceId}`,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
// If content type constraints specified, check them
|
|
146
|
+
if (allowedContentTypes && allowedContentTypes.length > 0) {
|
|
147
|
+
const contentType = await ctx.db.get(entry.contentTypeId);
|
|
148
|
+
if (!contentType) {
|
|
149
|
+
return {
|
|
150
|
+
valid: false,
|
|
151
|
+
error: `Content type not found for entry: ${referenceId}`,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
if (!allowedContentTypes.includes(contentType.name)) {
|
|
155
|
+
return {
|
|
156
|
+
valid: false,
|
|
157
|
+
error: `Expected content type: ${allowedContentTypes.join(" or ")}. Got: ${contentType.name}`,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return { valid: true };
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return {
|
|
165
|
+
valid: false,
|
|
166
|
+
error: `Invalid reference ID format: ${referenceId}`,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Validate all references in a content entry's data.
|
|
172
|
+
*
|
|
173
|
+
* Iterates through all reference fields and validates that each reference
|
|
174
|
+
* points to a valid, existing content entry of the allowed type.
|
|
175
|
+
*
|
|
176
|
+
* @param ctx - Convex query context
|
|
177
|
+
* @param data - The content entry data containing reference fields
|
|
178
|
+
* @param fields - Array of field definitions (to identify reference fields)
|
|
179
|
+
* @returns Object with overall validity and array of errors
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* // Validate all references before creating/updating an entry:
|
|
184
|
+
* const validation = await validateAllReferences(ctx, data, contentType.fields);
|
|
185
|
+
* if (!validation.valid) {
|
|
186
|
+
* throw new Error(validation.errors.join(", "));
|
|
187
|
+
* }
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
export async function validateAllReferences(ctx, data, fields) {
|
|
191
|
+
const errors = [];
|
|
192
|
+
// Find all reference fields
|
|
193
|
+
const referenceFields = fields.filter((f) => f.type === "reference");
|
|
194
|
+
for (const field of referenceFields) {
|
|
195
|
+
const value = data[field.name];
|
|
196
|
+
if (value === null || value === undefined) {
|
|
197
|
+
continue; // Skip empty values (required validation is separate)
|
|
198
|
+
}
|
|
199
|
+
const allowedTypes = field.options?.allowedContentTypes;
|
|
200
|
+
const multiple = field.options?.multiple ?? false;
|
|
201
|
+
if (multiple) {
|
|
202
|
+
// Validate array of references
|
|
203
|
+
if (!Array.isArray(value)) {
|
|
204
|
+
errors.push(`${field.name}: Expected array of references`);
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
for (const refId of value) {
|
|
208
|
+
if (typeof refId !== "string") {
|
|
209
|
+
errors.push(`${field.name}: Invalid reference ID type`);
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const check = await isValidReference(ctx, refId, allowedTypes);
|
|
213
|
+
if (!check.valid) {
|
|
214
|
+
errors.push(`${field.name}: ${check.error}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
// Validate single reference
|
|
220
|
+
if (typeof value !== "string") {
|
|
221
|
+
errors.push(`${field.name}: Expected string reference ID`);
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const check = await isValidReference(ctx, value, allowedTypes);
|
|
225
|
+
if (!check.valid) {
|
|
226
|
+
errors.push(`${field.name}: ${check.error}`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
valid: errors.length === 0,
|
|
232
|
+
errors,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
// =============================================================================
|
|
236
|
+
// Utility Functions
|
|
237
|
+
// =============================================================================
|
|
238
|
+
/**
|
|
239
|
+
* Extract all reference IDs from a content entry's data.
|
|
240
|
+
*
|
|
241
|
+
* @param data - The content entry data
|
|
242
|
+
* @param fields - Array of field definitions
|
|
243
|
+
* @returns Array of all reference IDs found in the data
|
|
244
|
+
*/
|
|
245
|
+
export function extractReferenceIds(data, fields) {
|
|
246
|
+
const ids = [];
|
|
247
|
+
const referenceFields = fields.filter((f) => f.type === "reference");
|
|
248
|
+
for (const field of referenceFields) {
|
|
249
|
+
const value = data[field.name];
|
|
250
|
+
if (value === null || value === undefined) {
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
const multiple = field.options?.multiple ?? false;
|
|
254
|
+
if (multiple && Array.isArray(value)) {
|
|
255
|
+
for (const id of value) {
|
|
256
|
+
if (typeof id === "string") {
|
|
257
|
+
ids.push(id);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
else if (typeof value === "string") {
|
|
262
|
+
ids.push(value);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return ids;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get the content type name for a content entry ID.
|
|
269
|
+
*
|
|
270
|
+
* This is a helper function for the `validateReferenceContentType` function
|
|
271
|
+
* in the validation module.
|
|
272
|
+
*
|
|
273
|
+
* @param ctx - Convex query context
|
|
274
|
+
* @param entryId - The content entry ID
|
|
275
|
+
* @returns The content type name or null if not found
|
|
276
|
+
*/
|
|
277
|
+
export async function getContentTypeName(ctx, entryId) {
|
|
278
|
+
try {
|
|
279
|
+
const entry = await ctx.db.get(entryId);
|
|
280
|
+
if (!entry || isDeleted(entry)) {
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
const contentType = await ctx.db.get(entry.contentTypeId);
|
|
284
|
+
if (!contentType || isDeleted(contentType)) {
|
|
285
|
+
return null;
|
|
286
|
+
}
|
|
287
|
+
return contentType.name;
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=referenceResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referenceResolver.js","sourceRoot":"","sources":["../../../src/component/lib/referenceResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slug Generator Utility
|
|
3
|
+
*
|
|
4
|
+
* Generates URL-friendly slugs from content titles.
|
|
5
|
+
* Handles special characters, unicode, and ensures slug format consistency.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Options for slug generation
|
|
9
|
+
*/
|
|
10
|
+
export interface SlugOptions {
|
|
11
|
+
/** Maximum length of the generated slug (default: 100) */
|
|
12
|
+
maxLength?: number;
|
|
13
|
+
/** Separator character to use (default: '-') */
|
|
14
|
+
separator?: string;
|
|
15
|
+
/** Whether to lowercase the slug (default: true) */
|
|
16
|
+
lowercase?: boolean;
|
|
17
|
+
/** Custom replacements for specific characters */
|
|
18
|
+
customReplacements?: Record<string, string>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Generates a URL-friendly slug from a given title string.
|
|
22
|
+
*
|
|
23
|
+
* @param title - The input string to convert to a slug
|
|
24
|
+
* @param options - Optional configuration for slug generation
|
|
25
|
+
* @returns A URL-friendly slug string
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* generateSlug("Hello World!") // "hello-world"
|
|
30
|
+
* generateSlug("Café & Restaurant") // "cafe-and-restaurant"
|
|
31
|
+
* generateSlug("日本語タイトル") // "ri-ben-yu-taitoru"
|
|
32
|
+
* generateSlug(" Multiple Spaces ") // "multiple-spaces"
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function generateSlug(title: string, options?: SlugOptions): string;
|
|
36
|
+
/**
|
|
37
|
+
* Validates if a string is a valid slug format
|
|
38
|
+
*
|
|
39
|
+
* @param slug - The string to validate
|
|
40
|
+
* @param separator - The separator character (default: '-')
|
|
41
|
+
* @returns True if the string is a valid slug
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* isValidSlug("hello-world") // true
|
|
46
|
+
* isValidSlug("Hello World") // false
|
|
47
|
+
* isValidSlug("hello--world") // false
|
|
48
|
+
* isValidSlug("-hello-world") // false
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function isValidSlug(slug: string, separator?: string): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Generates a unique slug by appending a numeric suffix if needed.
|
|
54
|
+
* This is a helper that can be used with a uniqueness check function.
|
|
55
|
+
*
|
|
56
|
+
* @param baseSlug - The base slug to make unique
|
|
57
|
+
* @param isUnique - Async function that checks if a slug is unique
|
|
58
|
+
* @param maxAttempts - Maximum number of suffix attempts (default: 100)
|
|
59
|
+
* @returns A unique slug
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* const checkUnique = async (slug: string) => {
|
|
64
|
+
* return !(await db.query("entries").withSlug(slug).first());
|
|
65
|
+
* };
|
|
66
|
+
* const uniqueSlug = await generateUniqueSlug("hello-world", checkUnique);
|
|
67
|
+
* // Returns "hello-world" if unique, or "hello-world-1", "hello-world-2", etc.
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare function generateUniqueSlug(baseSlug: string, isUnique: (slug: string) => Promise<boolean>, maxAttempts?: number): Promise<string>;
|
|
71
|
+
//# sourceMappingURL=slugGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slugGenerator.d.ts","sourceRoot":"","sources":["../../../src/component/lib/slugGenerator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C;AA2ED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAoD7E;AAiCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAY,GAAG,OAAO,CAW1E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAC5C,WAAW,GAAE,MAAY,GACxB,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
|