@devisfuture/mega-collection 1.3.0 → 1.3.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/README.md CHANGED
@@ -125,8 +125,8 @@ engine.data([
125
125
  engine.clearIndexes("search").clearIndexes("sort").clearIndexes("filter");
126
126
  engine.clearData("search").clearData("sort").clearData("filter");
127
127
 
128
- // get original dataset from a specific module
129
- engine.getOriginData("search"); // "search" | "sort" | "filter"
128
+ // get shared original dataset
129
+ engine.getOriginData();
130
130
  ```
131
131
 
132
132
  ---
@@ -271,7 +271,7 @@ Unified facade that composes all three engines around a shared dataset.
271
271
  | `sort(data, descriptors, inPlace?)` | Sort with an explicit dataset |
272
272
  | `filter(criteria)` | Filter using stored dataset |
273
273
  | `filter(data, criteria)` | Filter with an explicit dataset |
274
- | `getOriginData(module)` | Get the original dataset from one module (`"search"`, `"sort"`, `"filter"`) |
274
+ | `getOriginData()` | Get the shared original dataset |
275
275
  | `data(data)` | Replace stored dataset for all imported modules, rebuilding configured indexes and resetting filter state where applicable |
276
276
  | `clearIndexes(module)` | Clear indexes for one module (`"search"`, `"sort"`, `"filter"`) |
277
277
  | `clearData(module)` | Clear stored data for one module (`"search"`, `"sort"`, `"filter"`) |
@@ -0,0 +1 @@
1
+ var M=class{constructor(e){let{imports:t,data:n,...r}=e,a=new Set(t),s={},l={},c={},d={},u=null;for(let T of a){let f=T.prototype,g=this.getMethodNames(f);if(g.length===0)continue;let p=this.getModuleInitOptions(T.name,g,r),i=new T({data:n,...p}),o=this.getModuleName(g);o&&this.hasMethod(i,"clearIndexes")&&!l[o]&&(l[o]=i.clearIndexes.bind(i)),o&&this.hasMethod(i,"clearData")&&!c[o]&&(c[o]=i.clearData.bind(i)),o&&this.hasMethod(i,"data")&&!d[o]&&(d[o]=i.data.bind(i)),!u&&this.hasMethod(i,"getOriginData")&&(u=i.getOriginData.bind(i));for(let h of g)s[h]||this.hasMethod(i,h)&&(s[h]=i[h].bind(i));}this.engine=Object.keys(s).length>0?s:null,this.clearIndexMethods=l,this.clearDataMethods=c,this.setDataMethods=d,this.getOriginDataMethod=u;}getModuleName(e){return e.includes("search")?"search":e.includes("sort")?"sort":e.includes("filter")?"filter":null}getModuleInitOptions(e,t,n){let r={},a=n[e];this.isRecord(a)&&Object.assign(r,a);for(let s of t){let l=n[s];this.isRecord(l)&&Object.assign(r,l);}return r}getMethodNames(e){let t=e;return Object.getOwnPropertyNames(t).filter(n=>n==="constructor"?false:typeof t[n]=="function")}hasMethod(e,t){return typeof e=="object"&&e!==null&&typeof e[t]=="function"}isRecord(e){return typeof e=="object"&&e!==null}callEngineMethod(e,t){let n=this.engine?.[e];if(!n)throw new Error(`MergeEngines: Method "${e}" is not available. Add module with method "${e}" to the \`imports\` array.`);return n(...t)}search(e,t){if(!this.engine?.search)throw new Error("MergeEngines: TextSearchEngine is not available. Add TextSearchEngine to the `imports` array.");return t===void 0?this.withChain(this.callEngineMethod("search",[e])):this.withChain(this.callEngineMethod("search",[e,t]))}sort(e,t,n){if(!this.engine?.sort)throw new Error("MergeEngines: SortEngine is not available. Add SortEngine to the `imports` array.");return t===void 0?this.withChain(this.callEngineMethod("sort",[e])):this.withChain(this.callEngineMethod("sort",[e,t,n]))}filter(e,t){if(!this.engine?.filter)throw new Error("MergeEngines: FilterEngine is not available. Add FilterEngine to the `imports` array.");return t===void 0?this.withChain(this.callEngineMethod("filter",[e])):this.withChain(this.callEngineMethod("filter",[e,t]))}withChain(e){let t=e;return Object.defineProperty(t,"search",{value:(n,r)=>r===void 0?this.search(n):this.search(n,r),enumerable:false,configurable:true,writable:true}),Object.defineProperty(t,"sort",{value:(n,r,a)=>r===void 0?this.sort(e,n,a):this.sort(n,r,a),enumerable:false,configurable:true,writable:true}),Object.defineProperty(t,"filter",{value:(n,r)=>r===void 0?this.filter(e,n):this.filter(n,r),enumerable:false,configurable:true,writable:true}),Object.defineProperty(t,"clearIndexes",{value:n=>(this.clearIndexes(n),this.withChain(e)),enumerable:false,configurable:true,writable:true}),Object.defineProperty(t,"clearData",{value:n=>(this.clearData(n),this.withChain(e)),enumerable:false,configurable:true,writable:true}),Object.defineProperty(t,"data",{value:n=>this.data(n),enumerable:false,configurable:true,writable:true}),Object.defineProperty(t,"getOriginData",{value:()=>this.getOriginData(),enumerable:false,configurable:true,writable:true}),t}getOriginData(){if(this.getOriginDataMethod)return this.getOriginDataMethod();throw new Error("MergeEngines: getOriginData is not available. Add TextSearchEngine, SortEngine, or FilterEngine to the `imports` array.")}clearIndexes(e){let t=this.clearIndexMethods[e];if(t)return t(),this;let n={search:"TextSearchEngine",sort:"SortEngine",filter:"FilterEngine"};throw new Error(`MergeEngines: ${n[e]} is not available. Add ${n[e]} to the \`imports\` array.`)}data(e){let t=["search","sort","filter"];for(let n of t){let r=this.setDataMethods[n];r&&r(e);}return this}clearData(e){let t=this.clearDataMethods[e];if(t)return t(),this;let n={search:"TextSearchEngine",sort:"SortEngine",filter:"FilterEngine"};throw new Error(`MergeEngines: ${n[e]} is not available. Add ${n[e]} to the \`imports\` array.`)}};export{M as a};
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- export{a as TextSearchEngine}from'./chunk-574GKMWM.mjs';export{a as FilterEngine}from'./chunk-VJ4JZMHD.mjs';export{a as SortEngine}from'./chunk-FZVBLKAD.mjs';export{a as MergeEngines}from'./chunk-A5FBM5K3.mjs';
1
+ export{a as TextSearchEngine}from'./chunk-574GKMWM.mjs';export{a as FilterEngine}from'./chunk-VJ4JZMHD.mjs';export{a as SortEngine}from'./chunk-FZVBLKAD.mjs';export{a as MergeEngines}from'./chunk-B5H435OG.mjs';
@@ -27,7 +27,7 @@ interface MergeEnginesChain<T extends CollectionItem> {
27
27
  sort(data: T[], descriptors: SortDescriptor<T>[], inPlace?: boolean): T[] & MergeEnginesChain<T>;
28
28
  filter(criteria: FilterCriterion<T>[]): T[] & MergeEnginesChain<T>;
29
29
  filter(data: T[], criteria: FilterCriterion<T>[]): T[] & MergeEnginesChain<T>;
30
- getOriginData(module: MergeModuleName): T[];
30
+ getOriginData(): T[];
31
31
  data(data: T[]): MergeEngines<T>;
32
32
  clearIndexes(module: MergeModuleName): T[] & MergeEnginesChain<T>;
33
33
  clearData(module: MergeModuleName): T[] & MergeEnginesChain<T>;
@@ -37,7 +37,7 @@ declare class MergeEngines<T extends CollectionItem> {
37
37
  private readonly clearIndexMethods;
38
38
  private readonly clearDataMethods;
39
39
  private readonly setDataMethods;
40
- private readonly getOriginDataMethods;
40
+ private readonly getOriginDataMethod;
41
41
  /**
42
42
  * Creates a new MergeEngines instance with the given options.
43
43
  * Collects all modules from imports.
@@ -68,7 +68,7 @@ declare class MergeEngines<T extends CollectionItem> {
68
68
  filter(criteria: FilterCriterion<T>[]): T[] & MergeEnginesChain<T>;
69
69
  filter(data: T[], criteria: FilterCriterion<T>[]): T[] & MergeEnginesChain<T>;
70
70
  private withChain;
71
- getOriginData(module: MergeModuleName): T[];
71
+ getOriginData(): T[];
72
72
  clearIndexes(module: MergeModuleName): this;
73
73
  data(data: T[]): this;
74
74
  clearData(module: MergeModuleName): this;
@@ -1 +1 @@
1
- export{a as MergeEngines}from'../chunk-A5FBM5K3.mjs';
1
+ export{a as MergeEngines}from'../chunk-B5H435OG.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devisfuture/mega-collection",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "High-performance search, filter & sort engine for 100K+ item collections in JavaScript/TypeScript",
5
5
  "exports": {
6
6
  ".": {
@@ -1 +0,0 @@
1
- var T=class{constructor(e){let{imports:n,data:t,...r}=e,a=new Set(n),s={},l={},c={},d={},u={};for(let M of a){let f=M.prototype,g=this.getMethodNames(f);if(g.length===0)continue;let p=this.getModuleInitOptions(M.name,g,r),i=new M({data:t,...p}),o=this.getModuleName(g);o&&this.hasMethod(i,"clearIndexes")&&!l[o]&&(l[o]=i.clearIndexes.bind(i)),o&&this.hasMethod(i,"clearData")&&!c[o]&&(c[o]=i.clearData.bind(i)),o&&this.hasMethod(i,"data")&&!d[o]&&(d[o]=i.data.bind(i)),o&&this.hasMethod(i,"getOriginData")&&!u[o]&&(u[o]=i.getOriginData.bind(i));for(let h of g)s[h]||this.hasMethod(i,h)&&(s[h]=i[h].bind(i));}this.engine=Object.keys(s).length>0?s:null,this.clearIndexMethods=l,this.clearDataMethods=c,this.setDataMethods=d,this.getOriginDataMethods=u;}getModuleName(e){return e.includes("search")?"search":e.includes("sort")?"sort":e.includes("filter")?"filter":null}getModuleInitOptions(e,n,t){let r={},a=t[e];this.isRecord(a)&&Object.assign(r,a);for(let s of n){let l=t[s];this.isRecord(l)&&Object.assign(r,l);}return r}getMethodNames(e){let n=e;return Object.getOwnPropertyNames(n).filter(t=>t==="constructor"?false:typeof n[t]=="function")}hasMethod(e,n){return typeof e=="object"&&e!==null&&typeof e[n]=="function"}isRecord(e){return typeof e=="object"&&e!==null}callEngineMethod(e,n){let t=this.engine?.[e];if(!t)throw new Error(`MergeEngines: Method "${e}" is not available. Add module with method "${e}" to the \`imports\` array.`);return t(...n)}search(e,n){if(!this.engine?.search)throw new Error("MergeEngines: TextSearchEngine is not available. Add TextSearchEngine to the `imports` array.");return n===void 0?this.withChain(this.callEngineMethod("search",[e])):this.withChain(this.callEngineMethod("search",[e,n]))}sort(e,n,t){if(!this.engine?.sort)throw new Error("MergeEngines: SortEngine is not available. Add SortEngine to the `imports` array.");return n===void 0?this.withChain(this.callEngineMethod("sort",[e])):this.withChain(this.callEngineMethod("sort",[e,n,t]))}filter(e,n){if(!this.engine?.filter)throw new Error("MergeEngines: FilterEngine is not available. Add FilterEngine to the `imports` array.");return n===void 0?this.withChain(this.callEngineMethod("filter",[e])):this.withChain(this.callEngineMethod("filter",[e,n]))}withChain(e){let n=e;return Object.defineProperty(n,"search",{value:(t,r)=>r===void 0?this.search(t):this.search(t,r),enumerable:false,configurable:true,writable:true}),Object.defineProperty(n,"sort",{value:(t,r,a)=>r===void 0?this.sort(e,t,a):this.sort(t,r,a),enumerable:false,configurable:true,writable:true}),Object.defineProperty(n,"filter",{value:(t,r)=>r===void 0?this.filter(e,t):this.filter(t,r),enumerable:false,configurable:true,writable:true}),Object.defineProperty(n,"clearIndexes",{value:t=>(this.clearIndexes(t),this.withChain(e)),enumerable:false,configurable:true,writable:true}),Object.defineProperty(n,"clearData",{value:t=>(this.clearData(t),this.withChain(e)),enumerable:false,configurable:true,writable:true}),Object.defineProperty(n,"data",{value:t=>this.data(t),enumerable:false,configurable:true,writable:true}),Object.defineProperty(n,"getOriginData",{value:t=>this.getOriginData(t),enumerable:false,configurable:true,writable:true}),n}getOriginData(e){let n=this.getOriginDataMethods[e];if(n)return n();let t={search:"TextSearchEngine",sort:"SortEngine",filter:"FilterEngine"};throw new Error(`MergeEngines: ${t[e]} is not available. Add ${t[e]} to the \`imports\` array.`)}clearIndexes(e){let n=this.clearIndexMethods[e];if(n)return n(),this;let t={search:"TextSearchEngine",sort:"SortEngine",filter:"FilterEngine"};throw new Error(`MergeEngines: ${t[e]} is not available. Add ${t[e]} to the \`imports\` array.`)}data(e){let n=["search","sort","filter"];for(let t of n){let r=this.setDataMethods[t];r&&r(e);}return this}clearData(e){let n=this.clearDataMethods[e];if(n)return n(),this;let t={search:"TextSearchEngine",sort:"SortEngine",filter:"FilterEngine"};throw new Error(`MergeEngines: ${t[e]} is not available. Add ${t[e]} to the \`imports\` array.`)}};export{T as a};