@classytic/mongokit 2.1.0 → 3.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 (38) hide show
  1. package/README.md +35 -4
  2. package/dist/actions/index.d.ts +2 -2
  3. package/dist/actions/index.js +0 -2
  4. package/dist/{index-CgOJ2pqz.d.ts → index-CKy3H2SY.d.ts} +1 -1
  5. package/dist/index.d.ts +10 -6
  6. package/dist/index.js +183 -6
  7. package/dist/{memory-cache-DG2oSSbx.d.ts → memory-cache-tn3v1xgG.d.ts} +1 -1
  8. package/dist/pagination/PaginationEngine.d.ts +1 -1
  9. package/dist/pagination/PaginationEngine.js +0 -2
  10. package/dist/plugins/index.d.ts +37 -2
  11. package/dist/plugins/index.js +173 -3
  12. package/dist/{types-Nxhmi1aI.d.cts → types-vDtcOhyx.d.ts} +19 -1
  13. package/dist/utils/index.d.ts +2 -2
  14. package/dist/utils/index.js +0 -2
  15. package/package.json +6 -12
  16. package/dist/actions/index.cjs +0 -479
  17. package/dist/actions/index.cjs.map +0 -1
  18. package/dist/actions/index.d.cts +0 -3
  19. package/dist/actions/index.js.map +0 -1
  20. package/dist/index-BfVJZF-3.d.cts +0 -337
  21. package/dist/index.cjs +0 -2142
  22. package/dist/index.cjs.map +0 -1
  23. package/dist/index.d.cts +0 -239
  24. package/dist/index.js.map +0 -1
  25. package/dist/memory-cache-DqfFfKes.d.cts +0 -142
  26. package/dist/pagination/PaginationEngine.cjs +0 -375
  27. package/dist/pagination/PaginationEngine.cjs.map +0 -1
  28. package/dist/pagination/PaginationEngine.d.cts +0 -117
  29. package/dist/pagination/PaginationEngine.js.map +0 -1
  30. package/dist/plugins/index.cjs +0 -874
  31. package/dist/plugins/index.cjs.map +0 -1
  32. package/dist/plugins/index.d.cts +0 -275
  33. package/dist/plugins/index.js.map +0 -1
  34. package/dist/types-Nxhmi1aI.d.ts +0 -510
  35. package/dist/utils/index.cjs +0 -667
  36. package/dist/utils/index.cjs.map +0 -1
  37. package/dist/utils/index.d.cts +0 -189
  38. package/dist/utils/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/actions/create.ts","../../src/actions/read.ts","../../src/utils/error.ts","../../src/actions/update.ts","../../src/actions/delete.ts","../../src/actions/aggregate.ts"],"names":["parsePopulate"],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * Create Actions\r\n * Pure functions for document creation\r\n */\r\n\r\nimport type { Model, ClientSession, SchemaType } from 'mongoose';\r\nimport type { CreateOptions, AnyDocument } from '../types.js';\r\n\r\n/**\r\n * Create single document\r\n */\r\nexport async function create<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n data: Record<string, unknown>,\r\n options: CreateOptions = {}\r\n): Promise<TDoc> {\r\n const document = new Model(data);\r\n await document.save({ session: options.session });\r\n return document as TDoc;\r\n}\r\n\r\n/**\r\n * Create multiple documents\r\n */\r\nexport async function createMany<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n dataArray: Record<string, unknown>[],\r\n options: CreateOptions = {}\r\n): Promise<TDoc[]> {\r\n return Model.insertMany(dataArray, {\r\n session: options.session,\r\n ordered: options.ordered !== false,\r\n }) as Promise<TDoc[]>;\r\n}\r\n\r\n/**\r\n * Create with defaults (useful for initialization)\r\n */\r\nexport async function createDefault<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n overrides: Record<string, unknown> = {},\r\n options: CreateOptions = {}\r\n): Promise<TDoc> {\r\n const defaults: Record<string, unknown> = {};\r\n\r\n // Extract defaults from schema\r\n Model.schema.eachPath((path: string, schemaType: SchemaType) => {\r\n const schemaOptions = schemaType.options as { default?: unknown };\r\n if (schemaOptions.default !== undefined && path !== '_id') {\r\n defaults[path] = typeof schemaOptions.default === 'function'\r\n ? schemaOptions.default()\r\n : schemaOptions.default;\r\n }\r\n });\r\n\r\n return create(Model, { ...defaults, ...overrides }, options);\r\n}\r\n\r\n/**\r\n * Upsert (create or update)\r\n */\r\nexport async function upsert<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n query: Record<string, unknown>,\r\n data: Record<string, unknown>,\r\n options: { session?: ClientSession; updatePipeline?: boolean } = {}\r\n): Promise<TDoc | null> {\r\n return Model.findOneAndUpdate(\r\n query,\r\n { $setOnInsert: data },\r\n {\r\n upsert: true,\r\n new: true,\r\n runValidators: true,\r\n session: options.session,\r\n ...(options.updatePipeline !== undefined ? { updatePipeline: options.updatePipeline } : {}),\r\n }\r\n );\r\n}\r\n","/**\r\n * Read Actions\r\n * Pure functions for document retrieval\r\n */\r\n\r\nimport type { Model, ClientSession, PopulateOptions } from 'mongoose';\r\nimport { createError } from '../utils/error.js';\r\nimport type { AnyDocument, SelectSpec, PopulateSpec, SortSpec, OperationOptions } from '../types.js';\r\n\r\n/**\r\n * Parse populate specification into consistent format\r\n */\r\nfunction parsePopulate(populate: PopulateSpec | undefined): (string | PopulateOptions)[] {\r\n if (!populate) return [];\r\n if (typeof populate === 'string') {\r\n return populate.split(',').map(p => p.trim());\r\n }\r\n if (Array.isArray(populate)) {\r\n return populate.map(p => typeof p === 'string' ? p.trim() : p);\r\n }\r\n return [populate];\r\n}\r\n\r\n/**\r\n * Get document by ID\r\n *\r\n * @param Model - Mongoose model\r\n * @param id - Document ID\r\n * @param options - Query options\r\n * @returns Document or null\r\n * @throws Error if document not found and throwOnNotFound is true\r\n */\r\nexport async function getById<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n id: string,\r\n options: OperationOptions = {}\r\n): Promise<TDoc | null> {\r\n // If additional query filters are provided (e.g., soft delete filter), use findOne\r\n const query = options.query\r\n ? Model.findOne({ _id: id, ...options.query })\r\n : Model.findById(id);\r\n\r\n if (options.select) query.select(options.select);\r\n if (options.populate) query.populate(parsePopulate(options.populate));\r\n if (options.lean) query.lean();\r\n if (options.session) query.session(options.session);\r\n\r\n const document = await query.exec();\r\n if (!document && options.throwOnNotFound !== false) {\r\n throw createError(404, 'Document not found');\r\n }\r\n\r\n return document;\r\n}\r\n\r\n/**\r\n * Get document by query\r\n *\r\n * @param Model - Mongoose model\r\n * @param query - MongoDB query\r\n * @param options - Query options\r\n * @returns Document or null\r\n * @throws Error if document not found and throwOnNotFound is true\r\n */\r\nexport async function getByQuery<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n query: Record<string, unknown>,\r\n options: OperationOptions = {}\r\n): Promise<TDoc | null> {\r\n const mongoQuery = Model.findOne(query);\r\n\r\n if (options.select) mongoQuery.select(options.select);\r\n if (options.populate) mongoQuery.populate(parsePopulate(options.populate));\r\n if (options.lean) mongoQuery.lean();\r\n if (options.session) mongoQuery.session(options.session);\r\n\r\n const document = await mongoQuery.exec();\r\n if (!document && options.throwOnNotFound !== false) {\r\n throw createError(404, 'Document not found');\r\n }\r\n\r\n return document;\r\n}\r\n\r\n/**\r\n * Get document by query without throwing (returns null if not found)\r\n */\r\nexport async function tryGetByQuery<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n query: Record<string, unknown>,\r\n options: Omit<OperationOptions, 'throwOnNotFound'> = {}\r\n): Promise<TDoc | null> {\r\n return getByQuery(Model, query, { ...options, throwOnNotFound: false });\r\n}\r\n\r\n/**\r\n * Get all documents (basic query without pagination)\r\n * For pagination, use Repository.paginate() or Repository.stream()\r\n */\r\nexport async function getAll<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n query: Record<string, unknown> = {},\r\n options: {\r\n select?: SelectSpec;\r\n populate?: PopulateSpec;\r\n sort?: SortSpec;\r\n limit?: number;\r\n skip?: number;\r\n lean?: boolean;\r\n session?: ClientSession;\r\n } = {}\r\n): Promise<TDoc[]> {\r\n let mongoQuery = Model.find(query);\r\n\r\n if (options.select) mongoQuery = mongoQuery.select(options.select);\r\n if (options.populate) mongoQuery = mongoQuery.populate(parsePopulate(options.populate));\r\n if (options.sort) mongoQuery = mongoQuery.sort(options.sort);\r\n if (options.limit) mongoQuery = mongoQuery.limit(options.limit);\r\n if (options.skip) mongoQuery = mongoQuery.skip(options.skip);\r\n\r\n mongoQuery = mongoQuery.lean(options.lean !== false);\r\n if (options.session) mongoQuery = mongoQuery.session(options.session);\r\n\r\n return mongoQuery.exec() as Promise<TDoc[]>;\r\n}\r\n\r\n/**\r\n * Get or create document (upsert)\r\n */\r\nexport async function getOrCreate<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n query: Record<string, unknown>,\r\n createData: Record<string, unknown>,\r\n options: { session?: ClientSession; updatePipeline?: boolean } = {}\r\n): Promise<TDoc | null> {\r\n return Model.findOneAndUpdate(\r\n query,\r\n { $setOnInsert: createData },\r\n {\r\n upsert: true,\r\n new: true,\r\n runValidators: true,\r\n session: options.session,\r\n ...(options.updatePipeline !== undefined ? { updatePipeline: options.updatePipeline } : {}),\r\n }\r\n );\r\n}\r\n\r\n/**\r\n * Count documents matching query\r\n */\r\nexport async function count(\r\n Model: Model<any>,\r\n query: Record<string, unknown> = {},\r\n options: { session?: ClientSession } = {}\r\n): Promise<number> {\r\n return Model.countDocuments(query).session(options.session ?? null);\r\n}\r\n\r\n/**\r\n * Check if document exists\r\n */\r\nexport async function exists(\r\n Model: Model<any>,\r\n query: Record<string, unknown>,\r\n options: { session?: ClientSession } = {}\r\n): Promise<{ _id: unknown } | null> {\r\n return Model.exists(query).session(options.session ?? null);\r\n}\r\n","/**\r\n * Error Utilities\r\n * \r\n * HTTP-compatible error creation for repository operations\r\n */\r\n\r\nimport type { HttpError } from '../types.js';\r\n\r\n/**\r\n * Creates an error with HTTP status code\r\n *\r\n * @param status - HTTP status code\r\n * @param message - Error message\r\n * @returns Error with status property\r\n * \r\n * @example\r\n * throw createError(404, 'Document not found');\r\n * throw createError(400, 'Invalid input');\r\n * throw createError(403, 'Access denied');\r\n */\r\nexport function createError(status: number, message: string): HttpError {\r\n const error = new Error(message) as HttpError;\r\n error.status = status;\r\n return error;\r\n}\r\n","/**\r\n * Update Actions\r\n * Pure functions for document updates with optimizations\r\n */\r\n\r\nimport type { Model, ClientSession, PopulateOptions } from 'mongoose';\r\nimport { createError } from '../utils/error.js';\r\nimport type { AnyDocument, UpdateOptions, UpdateManyResult, UpdateWithValidationResult } from '../types.js';\r\n\r\n/**\r\n * Parse populate specification into consistent format\r\n */\r\nfunction parsePopulate(populate: unknown): (string | PopulateOptions)[] {\r\n if (!populate) return [];\r\n if (typeof populate === 'string') {\r\n return populate.split(',').map(p => p.trim());\r\n }\r\n if (Array.isArray(populate)) {\r\n return populate.map(p => typeof p === 'string' ? p.trim() : p as PopulateOptions);\r\n }\r\n return [populate as PopulateOptions];\r\n}\r\n\r\n/**\r\n * Update by ID\r\n */\r\nexport async function update<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n id: string,\r\n data: Record<string, unknown>,\r\n options: UpdateOptions = {}\r\n): Promise<TDoc> {\r\n const document = await Model.findByIdAndUpdate(id, data, {\r\n new: true,\r\n runValidators: true,\r\n session: options.session,\r\n ...(options.updatePipeline !== undefined ? { updatePipeline: options.updatePipeline } : {}),\r\n })\r\n .select(options.select || '')\r\n .populate(parsePopulate(options.populate))\r\n .lean(options.lean ?? false);\r\n\r\n if (!document) {\r\n throw createError(404, 'Document not found');\r\n }\r\n\r\n return document as TDoc;\r\n}\r\n\r\n/**\r\n * Update with query constraints (optimized)\r\n * Returns null if constraints not met (not an error)\r\n */\r\nexport async function updateWithConstraints<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n id: string,\r\n data: Record<string, unknown>,\r\n constraints: Record<string, unknown> = {},\r\n options: UpdateOptions = {}\r\n): Promise<TDoc | null> {\r\n const query = { _id: id, ...constraints };\r\n\r\n const document = await Model.findOneAndUpdate(query, data, {\r\n new: true,\r\n runValidators: true,\r\n session: options.session,\r\n ...(options.updatePipeline !== undefined ? { updatePipeline: options.updatePipeline } : {}),\r\n })\r\n .select(options.select || '')\r\n .populate(parsePopulate(options.populate))\r\n .lean(options.lean ?? false);\r\n\r\n return document as TDoc | null;\r\n}\r\n\r\n/**\r\n * Validation options for smart update\r\n */\r\ninterface ValidationOptions {\r\n buildConstraints?: (data: Record<string, unknown>) => Record<string, unknown>;\r\n validateUpdate?: (\r\n existing: Record<string, unknown>,\r\n data: Record<string, unknown>\r\n ) => { valid: boolean; message?: string; violations?: Array<{ field: string; reason: string }> };\r\n}\r\n\r\n/**\r\n * Update with validation (smart optimization)\r\n * 1-query on success, 2-queries for detailed errors\r\n */\r\nexport async function updateWithValidation<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n id: string,\r\n data: Record<string, unknown>,\r\n validationOptions: ValidationOptions = {},\r\n options: UpdateOptions = {}\r\n): Promise<UpdateWithValidationResult<TDoc>> {\r\n const { buildConstraints, validateUpdate } = validationOptions;\r\n\r\n // Try optimized update with constraints\r\n if (buildConstraints) {\r\n const constraints = buildConstraints(data);\r\n const document = await updateWithConstraints(Model, id, data, constraints, options);\r\n\r\n if (document) {\r\n return { success: true, data: document };\r\n }\r\n }\r\n\r\n // Fetch for validation\r\n const existing = await Model.findById(id).select(options.select || '').lean();\r\n\r\n if (!existing) {\r\n return {\r\n success: false,\r\n error: {\r\n code: 404,\r\n message: 'Document not found',\r\n },\r\n };\r\n }\r\n\r\n // Run custom validation\r\n if (validateUpdate) {\r\n const validation = validateUpdate(existing as Record<string, unknown>, data);\r\n if (!validation.valid) {\r\n return {\r\n success: false,\r\n error: {\r\n code: 403,\r\n message: validation.message || 'Update not allowed',\r\n violations: validation.violations,\r\n },\r\n };\r\n }\r\n }\r\n\r\n // Validation passed - perform update\r\n const updated = await update(Model, id, data, options);\r\n return { success: true, data: updated };\r\n}\r\n\r\n/**\r\n * Update many documents\r\n */\r\nexport async function updateMany(\r\n Model: Model<unknown>,\r\n query: Record<string, unknown>,\r\n data: Record<string, unknown>,\r\n options: { session?: ClientSession; updatePipeline?: boolean } = {}\r\n): Promise<UpdateManyResult> {\r\n const result = await Model.updateMany(query, data, {\r\n runValidators: true,\r\n session: options.session,\r\n ...(options.updatePipeline !== undefined ? { updatePipeline: options.updatePipeline } : {}),\r\n });\r\n\r\n return {\r\n matchedCount: result.matchedCount,\r\n modifiedCount: result.modifiedCount,\r\n };\r\n}\r\n\r\n/**\r\n * Update by query\r\n */\r\nexport async function updateByQuery<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n query: Record<string, unknown>,\r\n data: Record<string, unknown>,\r\n options: UpdateOptions = {}\r\n): Promise<TDoc | null> {\r\n const document = await Model.findOneAndUpdate(query, data, {\r\n new: true,\r\n runValidators: true,\r\n session: options.session,\r\n ...(options.updatePipeline !== undefined ? { updatePipeline: options.updatePipeline } : {}),\r\n })\r\n .select(options.select || '')\r\n .populate(parsePopulate(options.populate))\r\n .lean(options.lean ?? false);\r\n\r\n if (!document && options.throwOnNotFound !== false) {\r\n throw createError(404, 'Document not found');\r\n }\r\n\r\n return document as TDoc | null;\r\n}\r\n\r\n/**\r\n * Increment field\r\n */\r\nexport async function increment<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n id: string,\r\n field: string,\r\n value: number = 1,\r\n options: UpdateOptions = {}\r\n): Promise<TDoc> {\r\n return update(Model, id, { $inc: { [field]: value } }, options);\r\n}\r\n\r\n/**\r\n * Push to array\r\n */\r\nexport async function pushToArray<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n id: string,\r\n field: string,\r\n value: unknown,\r\n options: UpdateOptions = {}\r\n): Promise<TDoc> {\r\n return update(Model, id, { $push: { [field]: value } }, options);\r\n}\r\n\r\n/**\r\n * Pull from array\r\n */\r\nexport async function pullFromArray<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n id: string,\r\n field: string,\r\n value: unknown,\r\n options: UpdateOptions = {}\r\n): Promise<TDoc> {\r\n return update(Model, id, { $pull: { [field]: value } }, options);\r\n}\r\n","/**\r\n * Delete Actions\r\n * Pure functions for document deletion\r\n */\r\n\r\nimport type { Model, ClientSession } from 'mongoose';\r\nimport { createError } from '../utils/error.js';\r\nimport type { DeleteResult, AnyDocument } from '../types.js';\r\n\r\n/**\r\n * Delete by ID\r\n */\r\nexport async function deleteById(\r\n Model: Model<any>,\r\n id: string,\r\n options: { session?: ClientSession } = {}\r\n): Promise<DeleteResult> {\r\n const document = await Model.findByIdAndDelete(id).session(options.session ?? null);\r\n\r\n if (!document) {\r\n throw createError(404, 'Document not found');\r\n }\r\n\r\n return { success: true, message: 'Deleted successfully' };\r\n}\r\n\r\n/**\r\n * Delete many documents\r\n */\r\nexport async function deleteMany(\r\n Model: Model<any>,\r\n query: Record<string, unknown>,\r\n options: { session?: ClientSession } = {}\r\n): Promise<DeleteResult> {\r\n const result = await Model.deleteMany(query).session(options.session ?? null);\r\n\r\n return {\r\n success: true,\r\n count: result.deletedCount,\r\n message: 'Deleted successfully',\r\n };\r\n}\r\n\r\n/**\r\n * Delete by query\r\n */\r\nexport async function deleteByQuery(\r\n Model: Model<any>,\r\n query: Record<string, unknown>,\r\n options: { session?: ClientSession; throwOnNotFound?: boolean } = {}\r\n): Promise<DeleteResult> {\r\n const document = await Model.findOneAndDelete(query).session(options.session ?? null);\r\n\r\n if (!document && options.throwOnNotFound !== false) {\r\n throw createError(404, 'Document not found');\r\n }\r\n\r\n return { success: true, message: 'Deleted successfully' };\r\n}\r\n\r\n/**\r\n * Soft delete (set deleted flag)\r\n */\r\nexport async function softDelete<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n id: string,\r\n options: { session?: ClientSession; userId?: string } = {}\r\n): Promise<DeleteResult> {\r\n const document = await Model.findByIdAndUpdate(\r\n id,\r\n {\r\n deleted: true,\r\n deletedAt: new Date(),\r\n deletedBy: options.userId,\r\n },\r\n { new: true, session: options.session }\r\n );\r\n\r\n if (!document) {\r\n throw createError(404, 'Document not found');\r\n }\r\n\r\n return { success: true, message: 'Soft deleted successfully' };\r\n}\r\n\r\n/**\r\n * Restore soft deleted document\r\n */\r\nexport async function restore<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n id: string,\r\n options: { session?: ClientSession } = {}\r\n): Promise<DeleteResult> {\r\n const document = await Model.findByIdAndUpdate(\r\n id,\r\n {\r\n deleted: false,\r\n deletedAt: null,\r\n deletedBy: null,\r\n },\r\n { new: true, session: options.session }\r\n );\r\n\r\n if (!document) {\r\n throw createError(404, 'Document not found');\r\n }\r\n\r\n return { success: true, message: 'Restored successfully' };\r\n}\r\n","/**\r\n * Aggregate Actions\r\n * MongoDB aggregation pipeline operations\r\n */\r\n\r\nimport type { Model, ClientSession, PipelineStage } from 'mongoose';\r\nimport type { AnyDocument, LookupOptions, GroupResult, MinMaxResult } from '../types.js';\r\n\r\n/**\r\n * Execute aggregation pipeline\r\n */\r\nexport async function aggregate<TResult = unknown>(\r\n Model: Model<any>,\r\n pipeline: PipelineStage[],\r\n options: { session?: ClientSession } = {}\r\n): Promise<TResult[]> {\r\n const aggregation = Model.aggregate(pipeline);\r\n\r\n if (options.session) {\r\n aggregation.session(options.session);\r\n }\r\n\r\n return aggregation.exec() as Promise<TResult[]>;\r\n}\r\n\r\n/**\r\n * Aggregate with pagination using native MongoDB $facet\r\n * WARNING: $facet results must be <16MB. For larger results (limit >1000),\r\n * consider using Repository.aggregatePaginate() or splitting into separate queries.\r\n */\r\nexport async function aggregatePaginate<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n pipeline: PipelineStage[],\r\n options: { page?: number; limit?: number; session?: ClientSession } = {}\r\n): Promise<{\r\n docs: TDoc[];\r\n total: number;\r\n page: number;\r\n limit: number;\r\n pages: number;\r\n hasNext: boolean;\r\n hasPrev: boolean;\r\n}> {\r\n const page = parseInt(String(options.page || 1), 10);\r\n const limit = parseInt(String(options.limit || 10), 10);\r\n const skip = (page - 1) * limit;\r\n\r\n // 16MB MongoDB document size limit safety check\r\n const SAFE_LIMIT = 1000;\r\n if (limit > SAFE_LIMIT) {\r\n console.warn(\r\n `[mongokit] Large aggregation limit (${limit}). $facet results must be <16MB. ` +\r\n `Consider using Repository.aggregatePaginate() for safer handling of large datasets.`\r\n );\r\n }\r\n\r\n const facetPipeline: PipelineStage[] = [\r\n ...pipeline,\r\n {\r\n $facet: {\r\n docs: [{ $skip: skip }, { $limit: limit }],\r\n total: [{ $count: 'count' }],\r\n },\r\n },\r\n ];\r\n\r\n const aggregation = Model.aggregate(facetPipeline);\r\n if (options.session) {\r\n aggregation.session(options.session);\r\n }\r\n\r\n const [result] = await aggregation.exec() as [{ docs: TDoc[]; total: { count: number }[] }];\r\n const docs = result.docs || [];\r\n const total = result.total[0]?.count || 0;\r\n const pages = Math.ceil(total / limit);\r\n\r\n return {\r\n docs,\r\n total,\r\n page,\r\n limit,\r\n pages,\r\n hasNext: page < pages,\r\n hasPrev: page > 1,\r\n };\r\n}\r\n\r\n/**\r\n * Group documents by field value\r\n */\r\nexport async function groupBy(\r\n Model: Model<any>,\r\n field: string,\r\n options: { limit?: number; session?: ClientSession } = {}\r\n): Promise<GroupResult[]> {\r\n const pipeline: PipelineStage[] = [\r\n { $group: { _id: `$${field}`, count: { $sum: 1 } } },\r\n { $sort: { count: -1 } },\r\n ];\r\n\r\n if (options.limit) {\r\n pipeline.push({ $limit: options.limit });\r\n }\r\n\r\n return aggregate(Model, pipeline, options);\r\n}\r\n\r\n/**\r\n * Count by field values\r\n */\r\nexport async function countBy(\r\n Model: Model<any>,\r\n field: string,\r\n query: Record<string, unknown> = {},\r\n options: { session?: ClientSession } = {}\r\n): Promise<GroupResult[]> {\r\n const pipeline: PipelineStage[] = [];\r\n\r\n if (Object.keys(query).length > 0) {\r\n pipeline.push({ $match: query });\r\n }\r\n\r\n pipeline.push(\r\n { $group: { _id: `$${field}`, count: { $sum: 1 } } },\r\n { $sort: { count: -1 } }\r\n );\r\n\r\n return aggregate(Model, pipeline, options);\r\n}\r\n\r\n/**\r\n * Lookup (join) with another collection\r\n */\r\nexport async function lookup<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n lookupOptions: LookupOptions\r\n): Promise<TDoc[]> {\r\n const { from, localField, foreignField, as, pipeline = [], query = {}, options = {} } = lookupOptions;\r\n\r\n const aggPipeline: PipelineStage[] = [];\r\n\r\n if (Object.keys(query).length > 0) {\r\n aggPipeline.push({ $match: query });\r\n }\r\n\r\n aggPipeline.push({\r\n $lookup: {\r\n from,\r\n localField,\r\n foreignField,\r\n as,\r\n ...(pipeline.length > 0 ? { pipeline: pipeline as any } : {}),\r\n },\r\n } as any);\r\n\r\n return aggregate(Model, aggPipeline, options);\r\n}\r\n\r\n/**\r\n * Unwind array field\r\n */\r\nexport async function unwind<TDoc = AnyDocument>(\r\n Model: Model<TDoc>,\r\n field: string,\r\n options: { preserveEmpty?: boolean; session?: ClientSession } = {}\r\n): Promise<TDoc[]> {\r\n const pipeline: PipelineStage[] = [\r\n {\r\n $unwind: {\r\n path: `$${field}`,\r\n preserveNullAndEmptyArrays: options.preserveEmpty !== false,\r\n },\r\n },\r\n ];\r\n\r\n return aggregate(Model, pipeline, { session: options.session });\r\n}\r\n\r\n/**\r\n * Facet search (multiple aggregations in one query)\r\n */\r\nexport async function facet<TResult = Record<string, unknown[]>>(\r\n Model: Model<any>,\r\n facets: Record<string, PipelineStage[]>,\r\n options: { session?: ClientSession } = {}\r\n): Promise<TResult[]> {\r\n const pipeline: PipelineStage[] = [{ $facet: facets as any } as any];\r\n\r\n return aggregate(Model, pipeline, options);\r\n}\r\n\r\n/**\r\n * Get distinct values\r\n */\r\nexport async function distinct<T = unknown>(\r\n Model: Model<any>,\r\n field: string,\r\n query: Record<string, unknown> = {},\r\n options: { session?: ClientSession } = {}\r\n): Promise<T[]> {\r\n return Model.distinct(field, query).session(options.session ?? null) as Promise<T[]>;\r\n}\r\n\r\n/**\r\n * Calculate sum\r\n */\r\nexport async function sum(\r\n Model: Model<any>,\r\n field: string,\r\n query: Record<string, unknown> = {},\r\n options: { session?: ClientSession } = {}\r\n): Promise<number> {\r\n const pipeline: PipelineStage[] = [];\r\n\r\n if (Object.keys(query).length > 0) {\r\n pipeline.push({ $match: query });\r\n }\r\n\r\n pipeline.push({\r\n $group: {\r\n _id: null,\r\n total: { $sum: `$${field}` },\r\n },\r\n });\r\n\r\n const result = await aggregate<{ total: number }>(Model, pipeline, options);\r\n return result[0]?.total || 0;\r\n}\r\n\r\n/**\r\n * Calculate average\r\n */\r\nexport async function average(\r\n Model: Model<any>,\r\n field: string,\r\n query: Record<string, unknown> = {},\r\n options: { session?: ClientSession } = {}\r\n): Promise<number> {\r\n const pipeline: PipelineStage[] = [];\r\n\r\n if (Object.keys(query).length > 0) {\r\n pipeline.push({ $match: query });\r\n }\r\n\r\n pipeline.push({\r\n $group: {\r\n _id: null,\r\n average: { $avg: `$${field}` },\r\n },\r\n });\r\n\r\n const result = await aggregate<{ average: number }>(Model, pipeline, options);\r\n return result[0]?.average || 0;\r\n}\r\n\r\n/**\r\n * Min/Max\r\n */\r\nexport async function minMax(\r\n Model: Model<any>,\r\n field: string,\r\n query: Record<string, unknown> = {},\r\n options: { session?: ClientSession } = {}\r\n): Promise<MinMaxResult> {\r\n const pipeline: PipelineStage[] = [];\r\n\r\n if (Object.keys(query).length > 0) {\r\n pipeline.push({ $match: query });\r\n }\r\n\r\n pipeline.push({\r\n $group: {\r\n _id: null,\r\n min: { $min: `$${field}` },\r\n max: { $max: `$${field}` },\r\n },\r\n });\r\n\r\n const result = await aggregate<MinMaxResult>(Model, pipeline, options);\r\n return result[0] || { min: null, max: null };\r\n}\r\n"]}
@@ -1,337 +0,0 @@
1
- import { Model, ClientSession, PipelineStage } from 'mongoose';
2
- import { A as AnyDocument, C as CreateOptions, l as OperationOptions, S as SelectSpec, f as PopulateSpec, g as SortSpec, U as UpdateOptions, n as UpdateWithValidationResult, m as UpdateManyResult, D as DeleteResult, I as GroupResult, G as LookupOptions, M as MinMaxResult } from './types-Nxhmi1aI.cjs';
3
-
4
- /**
5
- * Create Actions
6
- * Pure functions for document creation
7
- */
8
-
9
- /**
10
- * Create single document
11
- */
12
- declare function create<TDoc = AnyDocument>(Model: Model<TDoc>, data: Record<string, unknown>, options?: CreateOptions): Promise<TDoc>;
13
- /**
14
- * Create multiple documents
15
- */
16
- declare function createMany<TDoc = AnyDocument>(Model: Model<TDoc>, dataArray: Record<string, unknown>[], options?: CreateOptions): Promise<TDoc[]>;
17
- /**
18
- * Create with defaults (useful for initialization)
19
- */
20
- declare function createDefault<TDoc = AnyDocument>(Model: Model<TDoc>, overrides?: Record<string, unknown>, options?: CreateOptions): Promise<TDoc>;
21
- /**
22
- * Upsert (create or update)
23
- */
24
- declare function upsert<TDoc = AnyDocument>(Model: Model<TDoc>, query: Record<string, unknown>, data: Record<string, unknown>, options?: {
25
- session?: ClientSession;
26
- updatePipeline?: boolean;
27
- }): Promise<TDoc | null>;
28
-
29
- declare const create$1_create: typeof create;
30
- declare const create$1_createDefault: typeof createDefault;
31
- declare const create$1_createMany: typeof createMany;
32
- declare const create$1_upsert: typeof upsert;
33
- declare namespace create$1 {
34
- export { create$1_create as create, create$1_createDefault as createDefault, create$1_createMany as createMany, create$1_upsert as upsert };
35
- }
36
-
37
- /**
38
- * Read Actions
39
- * Pure functions for document retrieval
40
- */
41
-
42
- /**
43
- * Get document by ID
44
- *
45
- * @param Model - Mongoose model
46
- * @param id - Document ID
47
- * @param options - Query options
48
- * @returns Document or null
49
- * @throws Error if document not found and throwOnNotFound is true
50
- */
51
- declare function getById<TDoc = AnyDocument>(Model: Model<TDoc>, id: string, options?: OperationOptions): Promise<TDoc | null>;
52
- /**
53
- * Get document by query
54
- *
55
- * @param Model - Mongoose model
56
- * @param query - MongoDB query
57
- * @param options - Query options
58
- * @returns Document or null
59
- * @throws Error if document not found and throwOnNotFound is true
60
- */
61
- declare function getByQuery<TDoc = AnyDocument>(Model: Model<TDoc>, query: Record<string, unknown>, options?: OperationOptions): Promise<TDoc | null>;
62
- /**
63
- * Get document by query without throwing (returns null if not found)
64
- */
65
- declare function tryGetByQuery<TDoc = AnyDocument>(Model: Model<TDoc>, query: Record<string, unknown>, options?: Omit<OperationOptions, 'throwOnNotFound'>): Promise<TDoc | null>;
66
- /**
67
- * Get all documents (basic query without pagination)
68
- * For pagination, use Repository.paginate() or Repository.stream()
69
- */
70
- declare function getAll<TDoc = AnyDocument>(Model: Model<TDoc>, query?: Record<string, unknown>, options?: {
71
- select?: SelectSpec;
72
- populate?: PopulateSpec;
73
- sort?: SortSpec;
74
- limit?: number;
75
- skip?: number;
76
- lean?: boolean;
77
- session?: ClientSession;
78
- }): Promise<TDoc[]>;
79
- /**
80
- * Get or create document (upsert)
81
- */
82
- declare function getOrCreate<TDoc = AnyDocument>(Model: Model<TDoc>, query: Record<string, unknown>, createData: Record<string, unknown>, options?: {
83
- session?: ClientSession;
84
- updatePipeline?: boolean;
85
- }): Promise<TDoc | null>;
86
- /**
87
- * Count documents matching query
88
- */
89
- declare function count(Model: Model<any>, query?: Record<string, unknown>, options?: {
90
- session?: ClientSession;
91
- }): Promise<number>;
92
- /**
93
- * Check if document exists
94
- */
95
- declare function exists(Model: Model<any>, query: Record<string, unknown>, options?: {
96
- session?: ClientSession;
97
- }): Promise<{
98
- _id: unknown;
99
- } | null>;
100
-
101
- declare const read_count: typeof count;
102
- declare const read_exists: typeof exists;
103
- declare const read_getAll: typeof getAll;
104
- declare const read_getById: typeof getById;
105
- declare const read_getByQuery: typeof getByQuery;
106
- declare const read_getOrCreate: typeof getOrCreate;
107
- declare const read_tryGetByQuery: typeof tryGetByQuery;
108
- declare namespace read {
109
- export { read_count as count, read_exists as exists, read_getAll as getAll, read_getById as getById, read_getByQuery as getByQuery, read_getOrCreate as getOrCreate, read_tryGetByQuery as tryGetByQuery };
110
- }
111
-
112
- /**
113
- * Update Actions
114
- * Pure functions for document updates with optimizations
115
- */
116
-
117
- /**
118
- * Update by ID
119
- */
120
- declare function update<TDoc = AnyDocument>(Model: Model<TDoc>, id: string, data: Record<string, unknown>, options?: UpdateOptions): Promise<TDoc>;
121
- /**
122
- * Update with query constraints (optimized)
123
- * Returns null if constraints not met (not an error)
124
- */
125
- declare function updateWithConstraints<TDoc = AnyDocument>(Model: Model<TDoc>, id: string, data: Record<string, unknown>, constraints?: Record<string, unknown>, options?: UpdateOptions): Promise<TDoc | null>;
126
- /**
127
- * Validation options for smart update
128
- */
129
- interface ValidationOptions {
130
- buildConstraints?: (data: Record<string, unknown>) => Record<string, unknown>;
131
- validateUpdate?: (existing: Record<string, unknown>, data: Record<string, unknown>) => {
132
- valid: boolean;
133
- message?: string;
134
- violations?: Array<{
135
- field: string;
136
- reason: string;
137
- }>;
138
- };
139
- }
140
- /**
141
- * Update with validation (smart optimization)
142
- * 1-query on success, 2-queries for detailed errors
143
- */
144
- declare function updateWithValidation<TDoc = AnyDocument>(Model: Model<TDoc>, id: string, data: Record<string, unknown>, validationOptions?: ValidationOptions, options?: UpdateOptions): Promise<UpdateWithValidationResult<TDoc>>;
145
- /**
146
- * Update many documents
147
- */
148
- declare function updateMany(Model: Model<unknown>, query: Record<string, unknown>, data: Record<string, unknown>, options?: {
149
- session?: ClientSession;
150
- updatePipeline?: boolean;
151
- }): Promise<UpdateManyResult>;
152
- /**
153
- * Update by query
154
- */
155
- declare function updateByQuery<TDoc = AnyDocument>(Model: Model<TDoc>, query: Record<string, unknown>, data: Record<string, unknown>, options?: UpdateOptions): Promise<TDoc | null>;
156
- /**
157
- * Increment field
158
- */
159
- declare function increment<TDoc = AnyDocument>(Model: Model<TDoc>, id: string, field: string, value?: number, options?: UpdateOptions): Promise<TDoc>;
160
- /**
161
- * Push to array
162
- */
163
- declare function pushToArray<TDoc = AnyDocument>(Model: Model<TDoc>, id: string, field: string, value: unknown, options?: UpdateOptions): Promise<TDoc>;
164
- /**
165
- * Pull from array
166
- */
167
- declare function pullFromArray<TDoc = AnyDocument>(Model: Model<TDoc>, id: string, field: string, value: unknown, options?: UpdateOptions): Promise<TDoc>;
168
-
169
- declare const update$1_increment: typeof increment;
170
- declare const update$1_pullFromArray: typeof pullFromArray;
171
- declare const update$1_pushToArray: typeof pushToArray;
172
- declare const update$1_update: typeof update;
173
- declare const update$1_updateByQuery: typeof updateByQuery;
174
- declare const update$1_updateMany: typeof updateMany;
175
- declare const update$1_updateWithConstraints: typeof updateWithConstraints;
176
- declare const update$1_updateWithValidation: typeof updateWithValidation;
177
- declare namespace update$1 {
178
- export { update$1_increment as increment, update$1_pullFromArray as pullFromArray, update$1_pushToArray as pushToArray, update$1_update as update, update$1_updateByQuery as updateByQuery, update$1_updateMany as updateMany, update$1_updateWithConstraints as updateWithConstraints, update$1_updateWithValidation as updateWithValidation };
179
- }
180
-
181
- /**
182
- * Delete Actions
183
- * Pure functions for document deletion
184
- */
185
-
186
- /**
187
- * Delete by ID
188
- */
189
- declare function deleteById(Model: Model<any>, id: string, options?: {
190
- session?: ClientSession;
191
- }): Promise<DeleteResult>;
192
- /**
193
- * Delete many documents
194
- */
195
- declare function deleteMany(Model: Model<any>, query: Record<string, unknown>, options?: {
196
- session?: ClientSession;
197
- }): Promise<DeleteResult>;
198
- /**
199
- * Delete by query
200
- */
201
- declare function deleteByQuery(Model: Model<any>, query: Record<string, unknown>, options?: {
202
- session?: ClientSession;
203
- throwOnNotFound?: boolean;
204
- }): Promise<DeleteResult>;
205
- /**
206
- * Soft delete (set deleted flag)
207
- */
208
- declare function softDelete<TDoc = AnyDocument>(Model: Model<TDoc>, id: string, options?: {
209
- session?: ClientSession;
210
- userId?: string;
211
- }): Promise<DeleteResult>;
212
- /**
213
- * Restore soft deleted document
214
- */
215
- declare function restore<TDoc = AnyDocument>(Model: Model<TDoc>, id: string, options?: {
216
- session?: ClientSession;
217
- }): Promise<DeleteResult>;
218
-
219
- declare const _delete_deleteById: typeof deleteById;
220
- declare const _delete_deleteByQuery: typeof deleteByQuery;
221
- declare const _delete_deleteMany: typeof deleteMany;
222
- declare const _delete_restore: typeof restore;
223
- declare const _delete_softDelete: typeof softDelete;
224
- declare namespace _delete {
225
- export { _delete_deleteById as deleteById, _delete_deleteByQuery as deleteByQuery, _delete_deleteMany as deleteMany, _delete_restore as restore, _delete_softDelete as softDelete };
226
- }
227
-
228
- /**
229
- * Aggregate Actions
230
- * MongoDB aggregation pipeline operations
231
- */
232
-
233
- /**
234
- * Execute aggregation pipeline
235
- */
236
- declare function aggregate<TResult = unknown>(Model: Model<any>, pipeline: PipelineStage[], options?: {
237
- session?: ClientSession;
238
- }): Promise<TResult[]>;
239
- /**
240
- * Aggregate with pagination using native MongoDB $facet
241
- * WARNING: $facet results must be <16MB. For larger results (limit >1000),
242
- * consider using Repository.aggregatePaginate() or splitting into separate queries.
243
- */
244
- declare function aggregatePaginate<TDoc = AnyDocument>(Model: Model<TDoc>, pipeline: PipelineStage[], options?: {
245
- page?: number;
246
- limit?: number;
247
- session?: ClientSession;
248
- }): Promise<{
249
- docs: TDoc[];
250
- total: number;
251
- page: number;
252
- limit: number;
253
- pages: number;
254
- hasNext: boolean;
255
- hasPrev: boolean;
256
- }>;
257
- /**
258
- * Group documents by field value
259
- */
260
- declare function groupBy(Model: Model<any>, field: string, options?: {
261
- limit?: number;
262
- session?: ClientSession;
263
- }): Promise<GroupResult[]>;
264
- /**
265
- * Count by field values
266
- */
267
- declare function countBy(Model: Model<any>, field: string, query?: Record<string, unknown>, options?: {
268
- session?: ClientSession;
269
- }): Promise<GroupResult[]>;
270
- /**
271
- * Lookup (join) with another collection
272
- */
273
- declare function lookup<TDoc = AnyDocument>(Model: Model<TDoc>, lookupOptions: LookupOptions): Promise<TDoc[]>;
274
- /**
275
- * Unwind array field
276
- */
277
- declare function unwind<TDoc = AnyDocument>(Model: Model<TDoc>, field: string, options?: {
278
- preserveEmpty?: boolean;
279
- session?: ClientSession;
280
- }): Promise<TDoc[]>;
281
- /**
282
- * Facet search (multiple aggregations in one query)
283
- */
284
- declare function facet<TResult = Record<string, unknown[]>>(Model: Model<any>, facets: Record<string, PipelineStage[]>, options?: {
285
- session?: ClientSession;
286
- }): Promise<TResult[]>;
287
- /**
288
- * Get distinct values
289
- */
290
- declare function distinct<T = unknown>(Model: Model<any>, field: string, query?: Record<string, unknown>, options?: {
291
- session?: ClientSession;
292
- }): Promise<T[]>;
293
- /**
294
- * Calculate sum
295
- */
296
- declare function sum(Model: Model<any>, field: string, query?: Record<string, unknown>, options?: {
297
- session?: ClientSession;
298
- }): Promise<number>;
299
- /**
300
- * Calculate average
301
- */
302
- declare function average(Model: Model<any>, field: string, query?: Record<string, unknown>, options?: {
303
- session?: ClientSession;
304
- }): Promise<number>;
305
- /**
306
- * Min/Max
307
- */
308
- declare function minMax(Model: Model<any>, field: string, query?: Record<string, unknown>, options?: {
309
- session?: ClientSession;
310
- }): Promise<MinMaxResult>;
311
-
312
- declare const aggregate$1_aggregate: typeof aggregate;
313
- declare const aggregate$1_aggregatePaginate: typeof aggregatePaginate;
314
- declare const aggregate$1_average: typeof average;
315
- declare const aggregate$1_countBy: typeof countBy;
316
- declare const aggregate$1_distinct: typeof distinct;
317
- declare const aggregate$1_facet: typeof facet;
318
- declare const aggregate$1_groupBy: typeof groupBy;
319
- declare const aggregate$1_lookup: typeof lookup;
320
- declare const aggregate$1_minMax: typeof minMax;
321
- declare const aggregate$1_sum: typeof sum;
322
- declare const aggregate$1_unwind: typeof unwind;
323
- declare namespace aggregate$1 {
324
- export { aggregate$1_aggregate as aggregate, aggregate$1_aggregatePaginate as aggregatePaginate, aggregate$1_average as average, aggregate$1_countBy as countBy, aggregate$1_distinct as distinct, aggregate$1_facet as facet, aggregate$1_groupBy as groupBy, aggregate$1_lookup as lookup, aggregate$1_minMax as minMax, aggregate$1_sum as sum, aggregate$1_unwind as unwind };
325
- }
326
-
327
- /**
328
- * Repository Actions
329
- * Modular, composable data access operations
330
- */
331
-
332
- declare const index_read: typeof read;
333
- declare namespace index {
334
- export { aggregate$1 as aggregate, create$1 as create, _delete as deleteActions, index_read as read, update$1 as update };
335
- }
336
-
337
- export { _delete as _, aggregate$1 as a, create$1 as c, index as i, read as r, update$1 as u };