UNPKG

@dollhousemcp/mcp-server

Version:

DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.

77 lines 9.04 kB
/** * Element Query Services - Barrel exports * * This module provides a complete query system for element collections, * including pagination, filtering, sorting, and orchestration. * * SERVICES: * - PaginationService: Paginate any array with metadata * - FilterService: Filter elements by metadata criteria * - SortService: Sort elements by various fields * - ElementQueryService: Orchestrate all three services * * USAGE: * For most use cases, use createElementQueryService() factory: * * ```typescript * import { createElementQueryService } from './services/query/index.js'; * * const queryService = createElementQueryService<MyElement>(); * const result = queryService.query(items, { * filters: { status: 'active' }, * sort: { sortBy: 'modified', sortOrder: 'desc' }, * pagination: { page: 1, pageSize: 20 } * }); * ``` * * For custom DI or testing, use individual services: * * ```typescript * import { PaginationService, FilterService, SortService } from './services/query/index.js'; * * const mockFilter = new MockFilterService(); * const queryService = new ElementQueryService( * new PaginationService(), * mockFilter, * new SortService() * ); * ``` * * @module services/query */ // Export helper functions export { hasFilterableMetadata, hasMetadataField, getMetadataField, extractSortValue } from './types.js'; // ============================================================================ // Service Exports // ============================================================================ // PaginationService export { PaginationService, createPaginationService, paginationService } from './PaginationService.js'; // FilterService import { FilterService as FilterServiceClass } from './FilterService.js'; export { FilterService } from './FilterService.js'; /** * Factory function to create a new FilterService instance * * @template T - Element type extending IElement * @returns New FilterService instance */ export function createFilterService() { return new FilterServiceClass(); } // SortService import { SortService as SortServiceClass } from './SortService.js'; export { SortService } from './SortService.js'; /** * Factory function to create a new SortService instance * * @template T - Element type extending IElement * @returns New SortService instance */ export function createSortService() { return new SortServiceClass(); } // ElementQueryService (orchestrator) export { ElementQueryService, createElementQueryService, elementQueryService, } from './ElementQueryService.js'; // AggregationService (Issue #309) export { aggregateElements, validateAggregationOptions, getAllowedGroupByFields, } from './AggregationService.js'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvcXVlcnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Q0c7QUE2QkgsMEJBQTBCO0FBQzFCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUt6RywrRUFBK0U7QUFDL0Usa0JBQWtCO0FBQ2xCLCtFQUErRTtBQUUvRSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkcsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFBRSxhQUFhLElBQUksa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE9BQU8sSUFBSSxrQkFBa0IsRUFBSyxDQUFDO0FBQ3JDLENBQUM7QUFFRCxjQUFjO0FBQ2QsT0FBTyxFQUFFLFdBQVcsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsT0FBTyxJQUFJLGdCQUFnQixFQUFLLENBQUM7QUFDbkMsQ0FBQztBQUVELHFDQUFxQztBQUNyQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixtQkFBbUIsR0FDcEIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxrQ0FBa0M7QUFDbEMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQiwwQkFBMEIsRUFDMUIsdUJBQXVCLEdBQ3hCLE1BQU0seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVsZW1lbnQgUXVlcnkgU2VydmljZXMgLSBCYXJyZWwgZXhwb3J0c1xuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgY29tcGxldGUgcXVlcnkgc3lzdGVtIGZvciBlbGVtZW50IGNvbGxlY3Rpb25zLFxuICogaW5jbHVkaW5nIHBhZ2luYXRpb24sIGZpbHRlcmluZywgc29ydGluZywgYW5kIG9yY2hlc3RyYXRpb24uXG4gKlxuICogU0VSVklDRVM6XG4gKiAtIFBhZ2luYXRpb25TZXJ2aWNlOiBQYWdpbmF0ZSBhbnkgYXJyYXkgd2l0aCBtZXRhZGF0YVxuICogLSBGaWx0ZXJTZXJ2aWNlOiBGaWx0ZXIgZWxlbWVudHMgYnkgbWV0YWRhdGEgY3JpdGVyaWFcbiAqIC0gU29ydFNlcnZpY2U6IFNvcnQgZWxlbWVudHMgYnkgdmFyaW91cyBmaWVsZHNcbiAqIC0gRWxlbWVudFF1ZXJ5U2VydmljZTogT3JjaGVzdHJhdGUgYWxsIHRocmVlIHNlcnZpY2VzXG4gKlxuICogVVNBR0U6XG4gKiBGb3IgbW9zdCB1c2UgY2FzZXMsIHVzZSBjcmVhdGVFbGVtZW50UXVlcnlTZXJ2aWNlKCkgZmFjdG9yeTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBjcmVhdGVFbGVtZW50UXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9xdWVyeS9pbmRleC5qcyc7XG4gKlxuICogY29uc3QgcXVlcnlTZXJ2aWNlID0gY3JlYXRlRWxlbWVudFF1ZXJ5U2VydmljZTxNeUVsZW1lbnQ+KCk7XG4gKiBjb25zdCByZXN1bHQgPSBxdWVyeVNlcnZpY2UucXVlcnkoaXRlbXMsIHtcbiAqICAgZmlsdGVyczogeyBzdGF0dXM6ICdhY3RpdmUnIH0sXG4gKiAgIHNvcnQ6IHsgc29ydEJ5OiAnbW9kaWZpZWQnLCBzb3J0T3JkZXI6ICdkZXNjJyB9LFxuICogICBwYWdpbmF0aW9uOiB7IHBhZ2U6IDEsIHBhZ2VTaXplOiAyMCB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEZvciBjdXN0b20gREkgb3IgdGVzdGluZywgdXNlIGluZGl2aWR1YWwgc2VydmljZXM6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UsIEZpbHRlclNlcnZpY2UsIFNvcnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9xdWVyeS9pbmRleC5qcyc7XG4gKlxuICogY29uc3QgbW9ja0ZpbHRlciA9IG5ldyBNb2NrRmlsdGVyU2VydmljZSgpO1xuICogY29uc3QgcXVlcnlTZXJ2aWNlID0gbmV3IEVsZW1lbnRRdWVyeVNlcnZpY2UoXG4gKiAgIG5ldyBQYWdpbmF0aW9uU2VydmljZSgpLFxuICogICBtb2NrRmlsdGVyLFxuICogICBuZXcgU29ydFNlcnZpY2UoKVxuICogKTtcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGUgc2VydmljZXMvcXVlcnlcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUeXBlIEV4cG9ydHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICAvLyBQYWdpbmF0aW9uIHR5cGVzXG4gIFBhZ2luYXRpb25PcHRpb25zLFxuICBQYWdpbmF0aW9uTWV0YWRhdGEsXG4gIFBhZ2luYXRlZFJlc3VsdCxcbiAgLy8gRmlsdGVyaW5nIHR5cGVzXG4gIEZpbHRlckNyaXRlcmlhLFxuICBBcHBsaWVkRmlsdGVycyxcbiAgLy8gU29ydGluZyB0eXBlc1xuICBTb3J0T3JkZXIsXG4gIFNvcnRhYmxlRmllbGQsXG4gIFNvcnRPcHRpb25zLFxuICBBcHBsaWVkU29ydGluZyxcbiAgLy8gQ29tYmluZWQgcXVlcnkgdHlwZXNcbiAgUXVlcnlPcHRpb25zLFxuICBRdWVyeVJlc3VsdCxcbiAgLy8gU2VydmljZSBpbnRlcmZhY2VzXG4gIElQYWdpbmF0aW9uU2VydmljZSxcbiAgSUZpbHRlclNlcnZpY2UsXG4gIElTb3J0U2VydmljZSxcbiAgSUVsZW1lbnRRdWVyeVNlcnZpY2UsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vLyBFeHBvcnQgaGVscGVyIGZ1bmN0aW9uc1xuZXhwb3J0IHsgaGFzRmlsdGVyYWJsZU1ldGFkYXRhLCBoYXNNZXRhZGF0YUZpZWxkLCBnZXRNZXRhZGF0YUZpZWxkLCBleHRyYWN0U29ydFZhbHVlIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8vIEV4cG9ydCBhZ2dyZWdhdGlvbiB0eXBlcyBhbmQgb3B0aW9uc1xuZXhwb3J0IHR5cGUgeyBBZ2dyZWdhdGlvbk9wdGlvbnMgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VydmljZSBFeHBvcnRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFBhZ2luYXRpb25TZXJ2aWNlXG5leHBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSwgY3JlYXRlUGFnaW5hdGlvblNlcnZpY2UsIHBhZ2luYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9QYWdpbmF0aW9uU2VydmljZS5qcyc7XG5cbi8vIEZpbHRlclNlcnZpY2VcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgYXMgRmlsdGVyU2VydmljZUNsYXNzIH0gZnJvbSAnLi9GaWx0ZXJTZXJ2aWNlLmpzJztcbmV4cG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuL0ZpbHRlclNlcnZpY2UuanMnO1xuXG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IEZpbHRlclNlcnZpY2UgaW5zdGFuY2VcbiAqXG4gKiBAdGVtcGxhdGUgVCAtIEVsZW1lbnQgdHlwZSBleHRlbmRpbmcgSUVsZW1lbnRcbiAqIEByZXR1cm5zIE5ldyBGaWx0ZXJTZXJ2aWNlIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGaWx0ZXJTZXJ2aWNlPFQgZXh0ZW5kcyBpbXBvcnQoJy4uLy4uL3R5cGVzL2VsZW1lbnRzL0lFbGVtZW50LmpzJykuSUVsZW1lbnQ+KCkge1xuICByZXR1cm4gbmV3IEZpbHRlclNlcnZpY2VDbGFzczxUPigpO1xufVxuXG4vLyBTb3J0U2VydmljZVxuaW1wb3J0IHsgU29ydFNlcnZpY2UgYXMgU29ydFNlcnZpY2VDbGFzcyB9IGZyb20gJy4vU29ydFNlcnZpY2UuanMnO1xuZXhwb3J0IHsgU29ydFNlcnZpY2UgfSBmcm9tICcuL1NvcnRTZXJ2aWNlLmpzJztcblxuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBTb3J0U2VydmljZSBpbnN0YW5jZVxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gRWxlbWVudCB0eXBlIGV4dGVuZGluZyBJRWxlbWVudFxuICogQHJldHVybnMgTmV3IFNvcnRTZXJ2aWNlIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTb3J0U2VydmljZTxUIGV4dGVuZHMgaW1wb3J0KCcuLi8uLi90eXBlcy9lbGVtZW50cy9JRWxlbWVudC5qcycpLklFbGVtZW50PigpIHtcbiAgcmV0dXJuIG5ldyBTb3J0U2VydmljZUNsYXNzPFQ+KCk7XG59XG5cbi8vIEVsZW1lbnRRdWVyeVNlcnZpY2UgKG9yY2hlc3RyYXRvcilcbmV4cG9ydCB7XG4gIEVsZW1lbnRRdWVyeVNlcnZpY2UsXG4gIGNyZWF0ZUVsZW1lbnRRdWVyeVNlcnZpY2UsXG4gIGVsZW1lbnRRdWVyeVNlcnZpY2UsXG59IGZyb20gJy4vRWxlbWVudFF1ZXJ5U2VydmljZS5qcyc7XG5cbi8vIEFnZ3JlZ2F0aW9uU2VydmljZSAoSXNzdWUgIzMwOSlcbmV4cG9ydCB7XG4gIGFnZ3JlZ2F0ZUVsZW1lbnRzLFxuICB2YWxpZGF0ZUFnZ3JlZ2F0aW9uT3B0aW9ucyxcbiAgZ2V0QWxsb3dlZEdyb3VwQnlGaWVsZHMsXG59IGZyb20gJy4vQWdncmVnYXRpb25TZXJ2aWNlLmpzJztcbmV4cG9ydCB0eXBlIHsgQWdncmVnYXRpb25SZXN1bHQgfSBmcm9tICcuL0FnZ3JlZ2F0aW9uU2VydmljZS5qcyc7XG4iXX0=