@thisisagile/easy-mongo 15.8.6 → 15.8.7
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/AtlasSearchGateway.d.ts +12 -0
- package/dist/AtlasSearchGateway.js +70 -0
- package/dist/AtlasSearchGateway.js.map +1 -0
- package/dist/AtlasSearchGateway.mjs +45 -0
- package/dist/AtlasSearchGateway.mjs.map +1 -0
- package/dist/Collection.d.ts +27 -0
- package/dist/Collection.js +65 -0
- package/dist/Collection.js.map +1 -0
- package/dist/Collection.mjs +51 -0
- package/dist/Collection.mjs.map +1 -0
- package/dist/Lucene.d.ts +87 -0
- package/dist/Lucene.js +116 -0
- package/dist/Lucene.js.map +1 -0
- package/dist/Lucene.mjs +101 -0
- package/dist/Lucene.mjs.map +1 -0
- package/dist/MongoGateway.d.ts +22 -0
- package/dist/MongoGateway.js +78 -0
- package/dist/MongoGateway.js.map +1 -0
- package/dist/MongoGateway.mjs +60 -0
- package/dist/MongoGateway.mjs.map +1 -0
- package/dist/MongoProvider.d.ts +51 -0
- package/dist/MongoProvider.js +132 -0
- package/dist/MongoProvider.js.map +1 -0
- package/dist/MongoProvider.mjs +128 -0
- package/dist/MongoProvider.mjs.map +1 -0
- package/dist/Stages.d.ts +167 -0
- package/dist/Stages.js +148 -0
- package/dist/Stages.js.map +1 -0
- package/dist/Stages.mjs +132 -0
- package/dist/Stages.mjs.map +1 -0
- package/dist/Utils.d.ts +2 -0
- package/dist/Utils.js +35 -0
- package/dist/Utils.js.map +1 -0
- package/dist/Utils.mjs +20 -0
- package/dist/Utils.mjs.map +1 -0
- package/dist/index.d.ts +7 -361
- package/dist/index.js +35 -1
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +8 -1
- package/dist/index.mjs.map +1 -0
- package/package.json +4 -4
- package/dist/index.d.mts +0 -361
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MongoGateway } from './MongoGateway';
|
|
2
|
+
import { Collection } from './Collection';
|
|
3
|
+
import { MongoProvider } from './MongoProvider';
|
|
4
|
+
import { SearchDefinition } from './Lucene';
|
|
5
|
+
import { Filter, Json, PageList } from '@thisisagile/easy';
|
|
6
|
+
export declare const toFilters: (facets: unknown) => Filter[];
|
|
7
|
+
export declare class AtlasSearchGateway extends MongoGateway {
|
|
8
|
+
readonly searchDef: SearchDefinition;
|
|
9
|
+
readonly sortDef: Record<string, Record<string, 1 | -1>>;
|
|
10
|
+
constructor(collection: Collection, searchDef: SearchDefinition, sortDef?: Record<string, Record<string, 1 | -1>>, provider?: MongoProvider);
|
|
11
|
+
query: (query: Record<keyof typeof this.searchDef, string | number>) => Promise<PageList<Json>>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var AtlasSearchGateway_exports = {};
|
|
20
|
+
__export(AtlasSearchGateway_exports, {
|
|
21
|
+
AtlasSearchGateway: () => AtlasSearchGateway,
|
|
22
|
+
toFilters: () => toFilters
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(AtlasSearchGateway_exports);
|
|
25
|
+
var import_Stages = require("./Stages");
|
|
26
|
+
var import_MongoGateway = require("./MongoGateway");
|
|
27
|
+
var import_Lucene = require("./Lucene");
|
|
28
|
+
var import_easy = require("@thisisagile/easy");
|
|
29
|
+
const { skip, take } = import_Stages.stages.skip;
|
|
30
|
+
const { replaceWith } = import_Stages.stages.replaceWith;
|
|
31
|
+
const { searchWithDef, searchMeta, facets } = import_Lucene.lucene;
|
|
32
|
+
const toFilters = (facets2) => (0, import_easy.entries)(facets2).map(([k, fs]) => ({
|
|
33
|
+
label: (0, import_easy.text)(k).title.toString(),
|
|
34
|
+
field: k,
|
|
35
|
+
values: fs.map((f) => toValue(f))
|
|
36
|
+
}));
|
|
37
|
+
const toValue = (f) => ({ label: f._id ?? "unknown", value: f._id ?? "unknown", count: f.count });
|
|
38
|
+
class AtlasSearchGateway extends import_MongoGateway.MongoGateway {
|
|
39
|
+
constructor(collection, searchDef, sortDef = {}, provider = collection.provider) {
|
|
40
|
+
super(collection, provider);
|
|
41
|
+
this.searchDef = searchDef;
|
|
42
|
+
this.sortDef = sortDef;
|
|
43
|
+
}
|
|
44
|
+
query = async (query) => {
|
|
45
|
+
return (0, import_easy.tuple2)(
|
|
46
|
+
this.aggregate(searchWithDef(query, this.searchDef), skip({ skip: query?.skip ?? 0 }), take({ take: query?.take ?? 250 })),
|
|
47
|
+
this.aggregate(
|
|
48
|
+
searchMeta(query, this.searchDef),
|
|
49
|
+
replaceWith({
|
|
50
|
+
total: "$count.lowerBound",
|
|
51
|
+
facets: Object.keys(facets(this.searchDef)).reduce((acc, k) => ({ ...acc, [k]: `$facet.${k}.buckets` }), {})
|
|
52
|
+
})
|
|
53
|
+
)
|
|
54
|
+
).then(([data, meta]) => ({ data, meta: meta.first() })).then(
|
|
55
|
+
({ data, meta }) => (0, import_easy.toPageList)(data, {
|
|
56
|
+
total: meta?.total ?? 0,
|
|
57
|
+
skip: query?.skip ?? 0,
|
|
58
|
+
take: query?.take ?? 250,
|
|
59
|
+
sorts: Object.keys(this.sortDef),
|
|
60
|
+
filters: toFilters(meta.facets)
|
|
61
|
+
})
|
|
62
|
+
);
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
66
|
+
0 && (module.exports = {
|
|
67
|
+
AtlasSearchGateway,
|
|
68
|
+
toFilters
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=AtlasSearchGateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/AtlasSearchGateway.ts"],"sourcesContent":["import { stages } from './Stages';\nimport { MongoGateway } from './MongoGateway';\nimport { Collection } from './Collection';\nimport { MongoProvider } from './MongoProvider';\nimport { lucene, SearchDefinition } from './Lucene';\nimport { entries, Filter, Json, PageList, text, toPageList, tuple2 } from '@thisisagile/easy';\n\nconst { skip, take } = stages.skip;\nconst { replaceWith } = stages.replaceWith;\nconst { searchWithDef, searchMeta, facets } = lucene;\n\ntype FacetResult = { _id: string; count: number };\ntype Value = { label: string; value: string; count: number };\nexport const toFilters = (facets: unknown): Filter[] =>\n entries(facets as Record<string, unknown>).map(([k, fs]) => ({\n label: text(k).title.toString(),\n field: k,\n values: (fs as []).map((f: FacetResult) => toValue(f)),\n }));\n\nconst toValue = (f: FacetResult): Value => ({ label: f._id ?? 'unknown', value: f._id ?? 'unknown', count: f.count });\n\nexport class AtlasSearchGateway extends MongoGateway {\n constructor(\n collection: Collection,\n readonly searchDef: SearchDefinition,\n readonly sortDef: Record<string, Record<string, 1 | -1>> = {},\n provider: MongoProvider = collection.provider\n ) {\n super(collection, provider);\n }\n\n query = async (query: Record<keyof typeof this.searchDef, string | number>): Promise<PageList<Json>> => {\n return tuple2(\n this.aggregate(searchWithDef(query, this.searchDef), skip({ skip: (query?.skip as number) ?? 0 }), take({ take: (query?.take as number) ?? 250 })),\n this.aggregate(\n searchMeta(query, this.searchDef),\n replaceWith({\n total: '$count.lowerBound',\n facets: Object.keys(facets(this.searchDef)).reduce((acc, k) => ({ ...acc, [k]: `$facet.${k}.buckets` }), {}),\n })\n )\n )\n .then(([data, meta]) => ({ data, meta: meta.first() as any }))\n .then(({ data, meta }) =>\n toPageList<Json>(data, {\n total: meta?.total ?? 0,\n skip: (query?.skip as number) ?? 0,\n take: (query?.take as number) ?? 250,\n sorts: Object.keys(this.sortDef),\n filters: toFilters(meta.facets),\n })\n );\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB;AACvB,0BAA6B;AAG7B,oBAAyC;AACzC,kBAA0E;AAE1E,MAAM,EAAE,MAAM,KAAK,IAAI,qBAAO;AAC9B,MAAM,EAAE,YAAY,IAAI,qBAAO;AAC/B,MAAM,EAAE,eAAe,YAAY,OAAO,IAAI;AAIvC,MAAM,YAAY,CAACA,gBACxB,qBAAQA,OAAiC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO;AAAA,EAC3D,WAAO,kBAAK,CAAC,EAAE,MAAM,SAAS;AAAA,EAC9B,OAAO;AAAA,EACP,QAAS,GAAU,IAAI,CAAC,MAAmB,QAAQ,CAAC,CAAC;AACvD,EAAE;AAEJ,MAAM,UAAU,CAAC,OAA2B,EAAE,OAAO,EAAE,OAAO,WAAW,OAAO,EAAE,OAAO,WAAW,OAAO,EAAE,MAAM;AAE5G,MAAM,2BAA2B,iCAAa;AAAA,EACnD,YACE,YACS,WACA,UAAkD,CAAC,GAC5D,WAA0B,WAAW,UACrC;AACA,UAAM,YAAY,QAAQ;AAJjB;AACA;AAAA,EAIX;AAAA,EAEA,QAAQ,OAAO,UAAyF;AACtG,eAAO;AAAA,MACL,KAAK,UAAU,cAAc,OAAO,KAAK,SAAS,GAAG,KAAK,EAAE,MAAO,OAAO,QAAmB,EAAE,CAAC,GAAG,KAAK,EAAE,MAAO,OAAO,QAAmB,IAAI,CAAC,CAAC;AAAA,MACjJ,KAAK;AAAA,QACH,WAAW,OAAO,KAAK,SAAS;AAAA,QAChC,YAAY;AAAA,UACV,OAAO;AAAA,UACP,QAAQ,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC,EAAE,OAAO,CAAC,KAAK,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC;AAAA,QAC7G,CAAC;AAAA,MACH;AAAA,IACF,EACG,KAAK,CAAC,CAAC,MAAM,IAAI,OAAO,EAAE,MAAM,MAAM,KAAK,MAAM,EAAS,EAAE,EAC5D;AAAA,MAAK,CAAC,EAAE,MAAM,KAAK,UAClB,wBAAiB,MAAM;AAAA,QACrB,OAAO,MAAM,SAAS;AAAA,QACtB,MAAO,OAAO,QAAmB;AAAA,QACjC,MAAO,OAAO,QAAmB;AAAA,QACjC,OAAO,OAAO,KAAK,KAAK,OAAO;AAAA,QAC/B,SAAS,UAAU,KAAK,MAAM;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,EACJ;AACF;","names":["facets"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { stages } from "./Stages";
|
|
2
|
+
import { MongoGateway } from "./MongoGateway";
|
|
3
|
+
import { lucene } from "./Lucene";
|
|
4
|
+
import { entries, text, toPageList, tuple2 } from "@thisisagile/easy";
|
|
5
|
+
const { skip, take } = stages.skip;
|
|
6
|
+
const { replaceWith } = stages.replaceWith;
|
|
7
|
+
const { searchWithDef, searchMeta, facets } = lucene;
|
|
8
|
+
const toFilters = (facets2) => entries(facets2).map(([k, fs]) => ({
|
|
9
|
+
label: text(k).title.toString(),
|
|
10
|
+
field: k,
|
|
11
|
+
values: fs.map((f) => toValue(f))
|
|
12
|
+
}));
|
|
13
|
+
const toValue = (f) => ({ label: f._id ?? "unknown", value: f._id ?? "unknown", count: f.count });
|
|
14
|
+
class AtlasSearchGateway extends MongoGateway {
|
|
15
|
+
constructor(collection, searchDef, sortDef = {}, provider = collection.provider) {
|
|
16
|
+
super(collection, provider);
|
|
17
|
+
this.searchDef = searchDef;
|
|
18
|
+
this.sortDef = sortDef;
|
|
19
|
+
}
|
|
20
|
+
query = async (query) => {
|
|
21
|
+
return tuple2(
|
|
22
|
+
this.aggregate(searchWithDef(query, this.searchDef), skip({ skip: query?.skip ?? 0 }), take({ take: query?.take ?? 250 })),
|
|
23
|
+
this.aggregate(
|
|
24
|
+
searchMeta(query, this.searchDef),
|
|
25
|
+
replaceWith({
|
|
26
|
+
total: "$count.lowerBound",
|
|
27
|
+
facets: Object.keys(facets(this.searchDef)).reduce((acc, k) => ({ ...acc, [k]: `$facet.${k}.buckets` }), {})
|
|
28
|
+
})
|
|
29
|
+
)
|
|
30
|
+
).then(([data, meta]) => ({ data, meta: meta.first() })).then(
|
|
31
|
+
({ data, meta }) => toPageList(data, {
|
|
32
|
+
total: meta?.total ?? 0,
|
|
33
|
+
skip: query?.skip ?? 0,
|
|
34
|
+
take: query?.take ?? 250,
|
|
35
|
+
sorts: Object.keys(this.sortDef),
|
|
36
|
+
filters: toFilters(meta.facets)
|
|
37
|
+
})
|
|
38
|
+
);
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
AtlasSearchGateway,
|
|
43
|
+
toFilters
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=AtlasSearchGateway.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/AtlasSearchGateway.ts"],"sourcesContent":["import { stages } from './Stages';\nimport { MongoGateway } from './MongoGateway';\nimport { Collection } from './Collection';\nimport { MongoProvider } from './MongoProvider';\nimport { lucene, SearchDefinition } from './Lucene';\nimport { entries, Filter, Json, PageList, text, toPageList, tuple2 } from '@thisisagile/easy';\n\nconst { skip, take } = stages.skip;\nconst { replaceWith } = stages.replaceWith;\nconst { searchWithDef, searchMeta, facets } = lucene;\n\ntype FacetResult = { _id: string; count: number };\ntype Value = { label: string; value: string; count: number };\nexport const toFilters = (facets: unknown): Filter[] =>\n entries(facets as Record<string, unknown>).map(([k, fs]) => ({\n label: text(k).title.toString(),\n field: k,\n values: (fs as []).map((f: FacetResult) => toValue(f)),\n }));\n\nconst toValue = (f: FacetResult): Value => ({ label: f._id ?? 'unknown', value: f._id ?? 'unknown', count: f.count });\n\nexport class AtlasSearchGateway extends MongoGateway {\n constructor(\n collection: Collection,\n readonly searchDef: SearchDefinition,\n readonly sortDef: Record<string, Record<string, 1 | -1>> = {},\n provider: MongoProvider = collection.provider\n ) {\n super(collection, provider);\n }\n\n query = async (query: Record<keyof typeof this.searchDef, string | number>): Promise<PageList<Json>> => {\n return tuple2(\n this.aggregate(searchWithDef(query, this.searchDef), skip({ skip: (query?.skip as number) ?? 0 }), take({ take: (query?.take as number) ?? 250 })),\n this.aggregate(\n searchMeta(query, this.searchDef),\n replaceWith({\n total: '$count.lowerBound',\n facets: Object.keys(facets(this.searchDef)).reduce((acc, k) => ({ ...acc, [k]: `$facet.${k}.buckets` }), {}),\n })\n )\n )\n .then(([data, meta]) => ({ data, meta: meta.first() as any }))\n .then(({ data, meta }) =>\n toPageList<Json>(data, {\n total: meta?.total ?? 0,\n skip: (query?.skip as number) ?? 0,\n take: (query?.take as number) ?? 250,\n sorts: Object.keys(this.sortDef),\n filters: toFilters(meta.facets),\n })\n );\n };\n}\n"],"mappings":"AAAA,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAG7B,SAAS,cAAgC;AACzC,SAAS,SAAiC,MAAM,YAAY,cAAc;AAE1E,MAAM,EAAE,MAAM,KAAK,IAAI,OAAO;AAC9B,MAAM,EAAE,YAAY,IAAI,OAAO;AAC/B,MAAM,EAAE,eAAe,YAAY,OAAO,IAAI;AAIvC,MAAM,YAAY,CAACA,YACxB,QAAQA,OAAiC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO;AAAA,EAC3D,OAAO,KAAK,CAAC,EAAE,MAAM,SAAS;AAAA,EAC9B,OAAO;AAAA,EACP,QAAS,GAAU,IAAI,CAAC,MAAmB,QAAQ,CAAC,CAAC;AACvD,EAAE;AAEJ,MAAM,UAAU,CAAC,OAA2B,EAAE,OAAO,EAAE,OAAO,WAAW,OAAO,EAAE,OAAO,WAAW,OAAO,EAAE,MAAM;AAE5G,MAAM,2BAA2B,aAAa;AAAA,EACnD,YACE,YACS,WACA,UAAkD,CAAC,GAC5D,WAA0B,WAAW,UACrC;AACA,UAAM,YAAY,QAAQ;AAJjB;AACA;AAAA,EAIX;AAAA,EAEA,QAAQ,OAAO,UAAyF;AACtG,WAAO;AAAA,MACL,KAAK,UAAU,cAAc,OAAO,KAAK,SAAS,GAAG,KAAK,EAAE,MAAO,OAAO,QAAmB,EAAE,CAAC,GAAG,KAAK,EAAE,MAAO,OAAO,QAAmB,IAAI,CAAC,CAAC;AAAA,MACjJ,KAAK;AAAA,QACH,WAAW,OAAO,KAAK,SAAS;AAAA,QAChC,YAAY;AAAA,UACV,OAAO;AAAA,UACP,QAAQ,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC,EAAE,OAAO,CAAC,KAAK,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC;AAAA,QAC7G,CAAC;AAAA,MACH;AAAA,IACF,EACG,KAAK,CAAC,CAAC,MAAM,IAAI,OAAO,EAAE,MAAM,MAAM,KAAK,MAAM,EAAS,EAAE,EAC5D;AAAA,MAAK,CAAC,EAAE,MAAM,KAAK,MAClB,WAAiB,MAAM;AAAA,QACrB,OAAO,MAAM,SAAS;AAAA,QACtB,MAAO,OAAO,QAAmB;AAAA,QACjC,MAAO,OAAO,QAAmB;AAAA,QACjC,OAAO,OAAO,KAAK,KAAK,OAAO;AAAA,QAC/B,SAAS,UAAU,KAAK,MAAM;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,EACJ;AACF;","names":["facets"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Condition, Database, Field, Get, Json, LogicalCondition, MapOptions, Mapper, PropertyOptions, Sort, SortDirection, Text } from '@thisisagile/easy';
|
|
2
|
+
import { MongoProvider } from './MongoProvider';
|
|
3
|
+
export declare class Collection extends Mapper {
|
|
4
|
+
protected readonly map: {
|
|
5
|
+
field: <T = unknown>(name: string, options?: PropertyOptions<T> | undefined) => Field;
|
|
6
|
+
item: (property: string, options?: PropertyOptions | undefined) => import("@thisisagile/easy").Property<unknown>;
|
|
7
|
+
ignore: (property?: string | undefined) => import("@thisisagile/easy").Mapping;
|
|
8
|
+
skipIn: (property: string) => import("@thisisagile/easy").Mapping;
|
|
9
|
+
skipOut: (property: string) => import("@thisisagile/easy").Mapping;
|
|
10
|
+
func: (property: string, funcIn: Get<import("@thisisagile/easy").Optional<import("@thisisagile/easy").JsonValue>, Json>, funcOut: Get<import("@thisisagile/easy").Optional<import("@thisisagile/easy").JsonValue>, Json>) => import("@thisisagile/easy").Mapping;
|
|
11
|
+
add: (funcIn: Get<import("@thisisagile/easy").JsonValue, Json>) => import("@thisisagile/easy").Mapping;
|
|
12
|
+
map: (mapper: import("@thisisagile/easy").Construct<Mapper>, property?: string | undefined) => import("@thisisagile/easy").Mapping;
|
|
13
|
+
propsToList: (...maps: import("@thisisagile/easy").Mapping[]) => import("@thisisagile/easy").Mapping;
|
|
14
|
+
list: (mapper: import("@thisisagile/easy").Mapping, property: string) => import("@thisisagile/easy").Mapping;
|
|
15
|
+
};
|
|
16
|
+
readonly id: Field;
|
|
17
|
+
constructor(options?: MapOptions);
|
|
18
|
+
get db(): Database;
|
|
19
|
+
get provider(): MongoProvider;
|
|
20
|
+
where: (...conditions: Get<Condition, this>[]) => Json;
|
|
21
|
+
match: (condition: Get<Condition | LogicalCondition, this>) => Json;
|
|
22
|
+
group: (...conditions: Get<Condition, this>[]) => Json;
|
|
23
|
+
google: (value: unknown) => Condition;
|
|
24
|
+
search: (key: Text) => Field;
|
|
25
|
+
sort: (...conditions: Sort[]) => Record<string, SortDirection>;
|
|
26
|
+
out(to?: Json): Json;
|
|
27
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var Collection_exports = {};
|
|
20
|
+
__export(Collection_exports, {
|
|
21
|
+
Collection: () => Collection
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(Collection_exports);
|
|
24
|
+
var import_easy = require("@thisisagile/easy");
|
|
25
|
+
var import_Utils = require("./Utils");
|
|
26
|
+
var import_MongoProvider = require("./MongoProvider");
|
|
27
|
+
class Collection extends import_easy.Mapper {
|
|
28
|
+
map = {
|
|
29
|
+
...import_easy.mappings,
|
|
30
|
+
field: (name, options) => new import_easy.Field(name, options)
|
|
31
|
+
};
|
|
32
|
+
id = this.map.field("id", { dflt: import_easy.toUuid });
|
|
33
|
+
constructor(options = { startFrom: "source" }) {
|
|
34
|
+
super(options);
|
|
35
|
+
}
|
|
36
|
+
get db() {
|
|
37
|
+
return import_easy.Database.Default;
|
|
38
|
+
}
|
|
39
|
+
get provider() {
|
|
40
|
+
return new import_MongoProvider.MongoProvider(this);
|
|
41
|
+
}
|
|
42
|
+
where = (...conditions) => new import_easy.LogicalCondition(
|
|
43
|
+
"and",
|
|
44
|
+
conditions.map((c) => (0, import_easy.ofGet)(c, this))
|
|
45
|
+
).toJSON();
|
|
46
|
+
match = (condition) => ({ $match: (0, import_easy.ofGet)(condition, this).toJSON() });
|
|
47
|
+
group = (...conditions) => new import_easy.LogicalCondition(
|
|
48
|
+
"group",
|
|
49
|
+
conditions.map((c) => (0, import_easy.ofGet)(c, this))
|
|
50
|
+
).toJSON();
|
|
51
|
+
google = (value) => (0, import_easy.toCondition)("$text", "search", value);
|
|
52
|
+
search = (key) => this.map.field((0, import_easy.asString)(key));
|
|
53
|
+
sort = (...conditions) => conditions.reduce((cs, c) => {
|
|
54
|
+
cs[c.key] = c.value;
|
|
55
|
+
return cs;
|
|
56
|
+
}, {});
|
|
57
|
+
out(to = {}) {
|
|
58
|
+
return (0, import_Utils.toMongoType)(super.out(to));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
62
|
+
0 && (module.exports = {
|
|
63
|
+
Collection
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=Collection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Collection.ts"],"sourcesContent":["import {\n asString,\n Condition,\n Database,\n Field,\n Get,\n Json,\n LogicalCondition,\n MapOptions,\n Mapper,\n mappings,\n ofGet,\n PropertyOptions,\n Sort,\n SortDirection,\n Text,\n toCondition,\n toUuid,\n} from '@thisisagile/easy';\nimport { toMongoType } from './Utils';\nimport { MongoProvider } from './MongoProvider';\n\nexport class Collection extends Mapper {\n protected readonly map = {\n ...mappings,\n field: <T = unknown>(name: string, options?: PropertyOptions<T>): Field => new Field(name, options),\n };\n readonly id = this.map.field('id', { dflt: toUuid });\n\n constructor(options: MapOptions = { startFrom: 'source' }) {\n super(options);\n }\n\n get db(): Database {\n return Database.Default;\n }\n\n get provider(): MongoProvider {\n return new MongoProvider(this);\n }\n\n where = (...conditions: Get<Condition, this>[]): Json =>\n new LogicalCondition(\n 'and',\n conditions.map(c => ofGet(c, this))\n ).toJSON();\n\n match = (condition: Get<Condition | LogicalCondition, this>): Json => ({ $match: ofGet(condition, this).toJSON() });\n\n group = (...conditions: Get<Condition, this>[]): Json =>\n new LogicalCondition(\n 'group',\n conditions.map(c => ofGet(c, this))\n ).toJSON();\n\n google = (value: unknown): Condition => toCondition('$text', 'search', value);\n\n search = (key: Text): Field => this.map.field(asString(key));\n\n sort = (...conditions: Sort[]): Record<string, SortDirection> =>\n conditions.reduce((cs: any, c) => {\n cs[c.key] = c.value;\n return cs;\n }, {});\n\n out(to: Json = {}): Json {\n return toMongoType(super.out(to));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAkBO;AACP,mBAA4B;AAC5B,2BAA8B;AAEvB,MAAM,mBAAmB,mBAAO;AAAA,EAClB,MAAM;AAAA,IACvB,GAAG;AAAA,IACH,OAAO,CAAc,MAAc,YAAwC,IAAI,kBAAM,MAAM,OAAO;AAAA,EACpG;AAAA,EACS,KAAK,KAAK,IAAI,MAAM,MAAM,EAAE,MAAM,mBAAO,CAAC;AAAA,EAEnD,YAAY,UAAsB,EAAE,WAAW,SAAS,GAAG;AACzD,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,IAAI,KAAe;AACjB,WAAO,qBAAS;AAAA,EAClB;AAAA,EAEA,IAAI,WAA0B;AAC5B,WAAO,IAAI,mCAAc,IAAI;AAAA,EAC/B;AAAA,EAEA,QAAQ,IAAI,eACV,IAAI;AAAA,IACF;AAAA,IACA,WAAW,IAAI,WAAK,mBAAM,GAAG,IAAI,CAAC;AAAA,EACpC,EAAE,OAAO;AAAA,EAEX,QAAQ,CAAC,eAA8D,EAAE,YAAQ,mBAAM,WAAW,IAAI,EAAE,OAAO,EAAE;AAAA,EAEjH,QAAQ,IAAI,eACV,IAAI;AAAA,IACF;AAAA,IACA,WAAW,IAAI,WAAK,mBAAM,GAAG,IAAI,CAAC;AAAA,EACpC,EAAE,OAAO;AAAA,EAEX,SAAS,CAAC,cAA8B,yBAAY,SAAS,UAAU,KAAK;AAAA,EAE5E,SAAS,CAAC,QAAqB,KAAK,IAAI,UAAM,sBAAS,GAAG,CAAC;AAAA,EAE3D,OAAO,IAAI,eACT,WAAW,OAAO,CAAC,IAAS,MAAM;AAChC,OAAG,EAAE,GAAG,IAAI,EAAE;AACd,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAAA,EAEP,IAAI,KAAW,CAAC,GAAS;AACvB,eAAO,0BAAY,MAAM,IAAI,EAAE,CAAC;AAAA,EAClC;AACF;","names":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {
|
|
2
|
+
asString,
|
|
3
|
+
Database,
|
|
4
|
+
Field,
|
|
5
|
+
LogicalCondition,
|
|
6
|
+
Mapper,
|
|
7
|
+
mappings,
|
|
8
|
+
ofGet,
|
|
9
|
+
toCondition,
|
|
10
|
+
toUuid
|
|
11
|
+
} from "@thisisagile/easy";
|
|
12
|
+
import { toMongoType } from "./Utils";
|
|
13
|
+
import { MongoProvider } from "./MongoProvider";
|
|
14
|
+
class Collection extends Mapper {
|
|
15
|
+
map = {
|
|
16
|
+
...mappings,
|
|
17
|
+
field: (name, options) => new Field(name, options)
|
|
18
|
+
};
|
|
19
|
+
id = this.map.field("id", { dflt: toUuid });
|
|
20
|
+
constructor(options = { startFrom: "source" }) {
|
|
21
|
+
super(options);
|
|
22
|
+
}
|
|
23
|
+
get db() {
|
|
24
|
+
return Database.Default;
|
|
25
|
+
}
|
|
26
|
+
get provider() {
|
|
27
|
+
return new MongoProvider(this);
|
|
28
|
+
}
|
|
29
|
+
where = (...conditions) => new LogicalCondition(
|
|
30
|
+
"and",
|
|
31
|
+
conditions.map((c) => ofGet(c, this))
|
|
32
|
+
).toJSON();
|
|
33
|
+
match = (condition) => ({ $match: ofGet(condition, this).toJSON() });
|
|
34
|
+
group = (...conditions) => new LogicalCondition(
|
|
35
|
+
"group",
|
|
36
|
+
conditions.map((c) => ofGet(c, this))
|
|
37
|
+
).toJSON();
|
|
38
|
+
google = (value) => toCondition("$text", "search", value);
|
|
39
|
+
search = (key) => this.map.field(asString(key));
|
|
40
|
+
sort = (...conditions) => conditions.reduce((cs, c) => {
|
|
41
|
+
cs[c.key] = c.value;
|
|
42
|
+
return cs;
|
|
43
|
+
}, {});
|
|
44
|
+
out(to = {}) {
|
|
45
|
+
return toMongoType(super.out(to));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export {
|
|
49
|
+
Collection
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=Collection.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Collection.ts"],"sourcesContent":["import {\n asString,\n Condition,\n Database,\n Field,\n Get,\n Json,\n LogicalCondition,\n MapOptions,\n Mapper,\n mappings,\n ofGet,\n PropertyOptions,\n Sort,\n SortDirection,\n Text,\n toCondition,\n toUuid,\n} from '@thisisagile/easy';\nimport { toMongoType } from './Utils';\nimport { MongoProvider } from './MongoProvider';\n\nexport class Collection extends Mapper {\n protected readonly map = {\n ...mappings,\n field: <T = unknown>(name: string, options?: PropertyOptions<T>): Field => new Field(name, options),\n };\n readonly id = this.map.field('id', { dflt: toUuid });\n\n constructor(options: MapOptions = { startFrom: 'source' }) {\n super(options);\n }\n\n get db(): Database {\n return Database.Default;\n }\n\n get provider(): MongoProvider {\n return new MongoProvider(this);\n }\n\n where = (...conditions: Get<Condition, this>[]): Json =>\n new LogicalCondition(\n 'and',\n conditions.map(c => ofGet(c, this))\n ).toJSON();\n\n match = (condition: Get<Condition | LogicalCondition, this>): Json => ({ $match: ofGet(condition, this).toJSON() });\n\n group = (...conditions: Get<Condition, this>[]): Json =>\n new LogicalCondition(\n 'group',\n conditions.map(c => ofGet(c, this))\n ).toJSON();\n\n google = (value: unknown): Condition => toCondition('$text', 'search', value);\n\n search = (key: Text): Field => this.map.field(asString(key));\n\n sort = (...conditions: Sort[]): Record<string, SortDirection> =>\n conditions.reduce((cs: any, c) => {\n cs[c.key] = c.value;\n return cs;\n }, {});\n\n out(to: Json = {}): Json {\n return toMongoType(super.out(to));\n }\n}\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,EAGA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EAKA;AAAA,EACA;AAAA,OACK;AACP,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAEvB,MAAM,mBAAmB,OAAO;AAAA,EAClB,MAAM;AAAA,IACvB,GAAG;AAAA,IACH,OAAO,CAAc,MAAc,YAAwC,IAAI,MAAM,MAAM,OAAO;AAAA,EACpG;AAAA,EACS,KAAK,KAAK,IAAI,MAAM,MAAM,EAAE,MAAM,OAAO,CAAC;AAAA,EAEnD,YAAY,UAAsB,EAAE,WAAW,SAAS,GAAG;AACzD,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,IAAI,KAAe;AACjB,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,IAAI,WAA0B;AAC5B,WAAO,IAAI,cAAc,IAAI;AAAA,EAC/B;AAAA,EAEA,QAAQ,IAAI,eACV,IAAI;AAAA,IACF;AAAA,IACA,WAAW,IAAI,OAAK,MAAM,GAAG,IAAI,CAAC;AAAA,EACpC,EAAE,OAAO;AAAA,EAEX,QAAQ,CAAC,eAA8D,EAAE,QAAQ,MAAM,WAAW,IAAI,EAAE,OAAO,EAAE;AAAA,EAEjH,QAAQ,IAAI,eACV,IAAI;AAAA,IACF;AAAA,IACA,WAAW,IAAI,OAAK,MAAM,GAAG,IAAI,CAAC;AAAA,EACpC,EAAE,OAAO;AAAA,EAEX,SAAS,CAAC,UAA8B,YAAY,SAAS,UAAU,KAAK;AAAA,EAE5E,SAAS,CAAC,QAAqB,KAAK,IAAI,MAAM,SAAS,GAAG,CAAC;AAAA,EAE3D,OAAO,IAAI,eACT,WAAW,OAAO,CAAC,IAAS,MAAM;AAChC,OAAG,EAAE,GAAG,IAAI,EAAE;AACd,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAAA,EAEP,IAAI,KAAW,CAAC,GAAS;AACvB,WAAO,YAAY,MAAM,IAAI,EAAE,CAAC;AAAA,EAClC;AACF;","names":[]}
|
package/dist/Lucene.d.ts
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { DateTime, Func, List, OneOrMore, Optional, RequireAtLeastOne } from '@thisisagile/easy';
|
|
2
|
+
type FuzzyOptions = {
|
|
3
|
+
maxEdits: number;
|
|
4
|
+
prefixLength: number;
|
|
5
|
+
maxExpansions: number;
|
|
6
|
+
};
|
|
7
|
+
export type Facet = {
|
|
8
|
+
path: string;
|
|
9
|
+
type: 'string';
|
|
10
|
+
numBuckets: number;
|
|
11
|
+
} | {
|
|
12
|
+
path: string;
|
|
13
|
+
type: 'number';
|
|
14
|
+
boundaries: number[];
|
|
15
|
+
default?: string;
|
|
16
|
+
} | {
|
|
17
|
+
path: string;
|
|
18
|
+
type: 'date';
|
|
19
|
+
boundaries: Date[];
|
|
20
|
+
default?: string;
|
|
21
|
+
};
|
|
22
|
+
export type Operator = Func<Optional<object>, string>;
|
|
23
|
+
export type Clause = object | Operator;
|
|
24
|
+
export type Clauses = Record<string, Clause>;
|
|
25
|
+
export type SearchDefinition = Record<string, (v: string | number) => RequireAtLeastOne<{
|
|
26
|
+
should?: Clauses;
|
|
27
|
+
filter?: Clauses;
|
|
28
|
+
must?: Clauses;
|
|
29
|
+
mustNot?: Clauses;
|
|
30
|
+
sort?: Record<string, 1 | -1>;
|
|
31
|
+
facet?: Facet;
|
|
32
|
+
}>>;
|
|
33
|
+
type Compound = {
|
|
34
|
+
must: OneOrMore<Clauses>;
|
|
35
|
+
should: OneOrMore<Clauses>;
|
|
36
|
+
mustNot: OneOrMore<Clauses>;
|
|
37
|
+
filter: OneOrMore<Clauses>;
|
|
38
|
+
};
|
|
39
|
+
export declare const lucene: {
|
|
40
|
+
clause: (c: Clauses) => List<unknown>;
|
|
41
|
+
clauses: (cs: OneOrMore<Clauses>) => unknown[];
|
|
42
|
+
search: (c: Partial<Compound>, index?: string) => {
|
|
43
|
+
$search: {
|
|
44
|
+
compound: any;
|
|
45
|
+
index?: string | undefined;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
searchWithDef: (query: Record<string, string | number>, options: SearchDefinition, index?: string) => {
|
|
49
|
+
$search: {
|
|
50
|
+
sort?: Record<string, 1 | -1> | undefined;
|
|
51
|
+
compound: Partial<Compound>;
|
|
52
|
+
index?: string | undefined;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
searchMeta: (query: Record<string, string | number>, def: SearchDefinition, index?: string) => {
|
|
56
|
+
$searchMeta: {
|
|
57
|
+
facet: {
|
|
58
|
+
operator: {
|
|
59
|
+
compound: Partial<Compound>;
|
|
60
|
+
};
|
|
61
|
+
facets: {
|
|
62
|
+
[x: string]: Facet | undefined;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
index?: string | undefined;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
exists: () => Operator;
|
|
69
|
+
text: (value?: OneOrMore<unknown>, fuzzy?: Partial<FuzzyOptions>) => Operator;
|
|
70
|
+
wildcard: (value?: OneOrMore<unknown>) => Operator;
|
|
71
|
+
lt: (value: unknown) => Operator;
|
|
72
|
+
lte: (value: unknown) => Operator;
|
|
73
|
+
gt: (value: unknown) => Operator;
|
|
74
|
+
gte: (value: unknown) => Operator;
|
|
75
|
+
after: (date: unknown) => Operator;
|
|
76
|
+
before: (date: unknown) => Operator;
|
|
77
|
+
between: (after: unknown, before: unknown) => Operator;
|
|
78
|
+
facets: (def: SearchDefinition) => {
|
|
79
|
+
[x: string]: Facet | undefined;
|
|
80
|
+
};
|
|
81
|
+
facet: {
|
|
82
|
+
string: (path: string, numBuckets?: number) => Facet;
|
|
83
|
+
number: (path: string, boundaries: List<number>, alt?: string) => Facet;
|
|
84
|
+
date: (path: string, boundaries: List<DateTime>, alt?: string) => Facet;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
export {};
|
package/dist/Lucene.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var Lucene_exports = {};
|
|
20
|
+
__export(Lucene_exports, {
|
|
21
|
+
lucene: () => lucene
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(Lucene_exports);
|
|
24
|
+
var import_easy = require("@thisisagile/easy");
|
|
25
|
+
var import_Utils = require("./Utils");
|
|
26
|
+
const should = (query, def) => (0, import_easy.entries)(query).mapDefined(([k, v]) => def[k]?.(v)?.should);
|
|
27
|
+
const must = (query, def) => (0, import_easy.entries)(query).mapDefined(([k, v]) => def[k]?.(v)?.must);
|
|
28
|
+
const mustNot = (query, def) => (0, import_easy.entries)(query).mapDefined(([k, v]) => def[k]?.(v)?.mustNot);
|
|
29
|
+
const filter = (query, def) => (0, import_easy.entries)(query).mapDefined(([k, v]) => def[k]?.(v)?.filter);
|
|
30
|
+
const compound = (query, def) => (0, import_easy.entries)({
|
|
31
|
+
should: (0, import_easy.ifNotEmpty)(should(query, def).concat(filter(query, def), must(query, def), mustNot(query, def)), should(query, def), [
|
|
32
|
+
{ wildcard: lucene.wildcard() }
|
|
33
|
+
]),
|
|
34
|
+
...(0, import_easy.ifNotEmpty)(filter(query, def), (f) => ({ filter: f })),
|
|
35
|
+
...(0, import_easy.ifNotEmpty)(mustNot(query, def), (m) => ({ mustNot: m })),
|
|
36
|
+
...(0, import_easy.ifNotEmpty)(must(query, def), (m) => ({ must: m }))
|
|
37
|
+
}).reduce((res, [k, v]) => (0, import_easy.on)(res, (r) => r[k] = lucene.clauses(v)), {});
|
|
38
|
+
const lucene = {
|
|
39
|
+
clause: (c) => (0, import_easy.entries)(c).reduce((res, [k, v]) => res.add((0, import_easy.isFunction)(v) ? v(k) : v), (0, import_easy.toList)()),
|
|
40
|
+
clauses: (cs) => (0, import_easy.toArray)(cs).flatMap((c) => lucene.clause(c)),
|
|
41
|
+
search: (c, index) => ({
|
|
42
|
+
$search: {
|
|
43
|
+
...(0, import_easy.ifDefined)(index, { index }),
|
|
44
|
+
compound: (0, import_easy.entries)(c).reduce((res, [k, v]) => (0, import_easy.on)(res, (r) => r[k] = lucene.clauses(v)), {})
|
|
45
|
+
}
|
|
46
|
+
}),
|
|
47
|
+
searchWithDef: (query, options, index) => {
|
|
48
|
+
const sort = (0, import_easy.entries)(query).mapDefined(([k, v]) => options[k]?.(v)?.sort).first();
|
|
49
|
+
return {
|
|
50
|
+
$search: { ...(0, import_easy.ifDefined)(index, { index }), compound: compound(query, options), ...(0, import_easy.ifDefined)(sort, { sort }) }
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
searchMeta: (query, def, index) => ({
|
|
54
|
+
$searchMeta: {
|
|
55
|
+
...(0, import_easy.ifDefined)(index, { index }),
|
|
56
|
+
facet: {
|
|
57
|
+
operator: {
|
|
58
|
+
compound: compound(query, def)
|
|
59
|
+
},
|
|
60
|
+
facets: lucene.facets(def)
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}),
|
|
64
|
+
exists: () => (path) => ({ exists: { path } }),
|
|
65
|
+
text: (value, fuzzy) => (path) => (0, import_easy.ifDefined)(value, (v) => ({
|
|
66
|
+
text: {
|
|
67
|
+
path: path === "wildcard" ? { wildcard: "*" } : path,
|
|
68
|
+
query: v,
|
|
69
|
+
...(0, import_easy.ifDefined)(fuzzy, { fuzzy })
|
|
70
|
+
}
|
|
71
|
+
})),
|
|
72
|
+
wildcard: (value) => (path) => ({
|
|
73
|
+
wildcard: {
|
|
74
|
+
path: path === "wildcard" ? { wildcard: "*" } : path,
|
|
75
|
+
query: (0, import_easy.ifDefined)(value, value, "*")
|
|
76
|
+
}
|
|
77
|
+
}),
|
|
78
|
+
lt: (value) => (path) => (0, import_easy.ifDefined)(value, (lt) => ({ range: { path, lt } })),
|
|
79
|
+
lte: (value) => (path) => (0, import_easy.ifDefined)(value, (lte) => ({ range: { path, lte } })),
|
|
80
|
+
gt: (value) => (path) => (0, import_easy.ifDefined)(value, (gt) => ({ range: { path, gt } })),
|
|
81
|
+
gte: (value) => (path) => (0, import_easy.ifDefined)(value, (gte) => ({ range: { path, gte } })),
|
|
82
|
+
after: (date) => lucene.gte((0, import_Utils.toMongoType)(date)),
|
|
83
|
+
before: (date) => lucene.lt((0, import_Utils.toMongoType)(date)),
|
|
84
|
+
between: (after, before) => (path) => ({
|
|
85
|
+
range: {
|
|
86
|
+
path,
|
|
87
|
+
gte: (0, import_Utils.toMongoType)(after),
|
|
88
|
+
lt: (0, import_Utils.toMongoType)(before)
|
|
89
|
+
}
|
|
90
|
+
}),
|
|
91
|
+
facets: (def) => (0, import_easy.entries)(def).filter(([k, v]) => (0, import_easy.isDefined)(v(k)?.facet)).map(([k, v]) => ({ [k]: v(k)?.facet })).reduce((acc, v) => ({ ...acc, ...v }), {}),
|
|
92
|
+
facet: {
|
|
93
|
+
string: (path, numBuckets = 1e3) => ({
|
|
94
|
+
type: "string",
|
|
95
|
+
path,
|
|
96
|
+
numBuckets
|
|
97
|
+
}),
|
|
98
|
+
number: (path, boundaries, alt) => ({
|
|
99
|
+
type: "number",
|
|
100
|
+
path,
|
|
101
|
+
boundaries,
|
|
102
|
+
...(0, import_easy.ifDefined)(alt, (a) => ({ default: a }))
|
|
103
|
+
}),
|
|
104
|
+
date: (path, boundaries, alt) => ({
|
|
105
|
+
type: "date",
|
|
106
|
+
path,
|
|
107
|
+
boundaries: boundaries.mapDefined((b) => b.toDate()),
|
|
108
|
+
...(0, import_easy.ifDefined)(alt, (a) => ({ default: a }))
|
|
109
|
+
})
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
113
|
+
0 && (module.exports = {
|
|
114
|
+
lucene
|
|
115
|
+
});
|
|
116
|
+
//# sourceMappingURL=Lucene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Lucene.ts"],"sourcesContent":["import {\n DateTime,\n entries,\n Func,\n ifDefined,\n ifNotEmpty,\n isDefined,\n isFunction,\n List,\n on,\n OneOrMore,\n Optional,\n RequireAtLeastOne,\n toArray,\n toList,\n} from '@thisisagile/easy';\nimport { toMongoType } from './Utils';\n\ntype FuzzyOptions = {\n maxEdits: number;\n prefixLength: number;\n maxExpansions: number;\n};\n\nexport type Facet =\n | { path: string; type: 'string'; numBuckets: number }\n | { path: string; type: 'number'; boundaries: number[]; default?: string }\n | { path: string; type: 'date'; boundaries: Date[]; default?: string };\n\nexport type Operator = Func<Optional<object>, string>;\nexport type Clause = object | Operator;\nexport type Clauses = Record<string, Clause>;\nexport type SearchDefinition = Record<\n string,\n (\n v: string | number\n ) => RequireAtLeastOne<{ should?: Clauses; filter?: Clauses; must?: Clauses; mustNot?: Clauses; sort?: Record<string, 1 | -1>; facet?: Facet }>\n>;\n\ntype Compound = {\n must: OneOrMore<Clauses>;\n should: OneOrMore<Clauses>;\n mustNot: OneOrMore<Clauses>;\n filter: OneOrMore<Clauses>;\n};\n\nconst should = (query: Record<string, string | number>, def: SearchDefinition): Clauses[] => entries(query).mapDefined(([k, v]) => def[k]?.(v)?.should);\nconst must = (query: Record<string, string | number>, def: SearchDefinition): Clauses[] => entries(query).mapDefined(([k, v]) => def[k]?.(v)?.must);\nconst mustNot = (query: Record<string, string | number>, def: SearchDefinition): Clauses[] => entries(query).mapDefined(([k, v]) => def[k]?.(v)?.mustNot);\nconst filter = (query: Record<string, string | number>, def: SearchDefinition): Clauses[] => entries(query).mapDefined(([k, v]) => def[k]?.(v)?.filter);\n\nconst compound = (query: Record<string, string | number>, def: SearchDefinition): Partial<Compound> =>\n entries({\n should: ifNotEmpty(should(query, def).concat(filter(query, def), must(query, def), mustNot(query, def)), should(query, def), [\n { wildcard: lucene.wildcard() },\n ]),\n ...ifNotEmpty(filter(query, def), f => ({ filter: f })),\n ...ifNotEmpty(mustNot(query, def), m => ({ mustNot: m })),\n ...ifNotEmpty(must(query, def), m => ({ must: m })),\n }).reduce((res, [k, v]) => on(res, r => (r[k] = lucene.clauses(v))), {} as any);\n\nexport const lucene = {\n clause: (c: Clauses) => entries(c).reduce((res, [k, v]) => res.add(isFunction(v) ? v(k) : v), toList()),\n clauses: (cs: OneOrMore<Clauses>) => toArray(cs).flatMap(c => lucene.clause(c)),\n search: (c: Partial<Compound>, index?: string) => ({\n $search: {\n ...ifDefined(index, { index }),\n compound: entries(c).reduce((res, [k, v]) => on(res, r => (r[k] = lucene.clauses(v))), {} as any),\n },\n }),\n searchWithDef: (query: Record<string, string | number>, options: SearchDefinition, index?: string) => {\n const sort = entries(query)\n .mapDefined(([k, v]) => options[k]?.(v)?.sort)\n .first();\n return {\n $search: { ...ifDefined(index, { index }), compound: compound(query, options), ...ifDefined(sort, { sort }) },\n };\n },\n searchMeta: (query: Record<string, string | number>, def: SearchDefinition, index?: string) => ({\n $searchMeta: {\n ...ifDefined(index, { index }),\n facet: {\n operator: {\n compound: compound(query, def),\n },\n facets: lucene.facets(def),\n },\n },\n }),\n exists: (): Operator => (path: string) => ({ exists: { path } }),\n text:\n (value?: OneOrMore<unknown>, fuzzy?: Partial<FuzzyOptions>): Operator =>\n (path: string) =>\n ifDefined(value, v => ({\n text: {\n path: path === 'wildcard' ? { wildcard: '*' } : path,\n query: v,\n ...ifDefined(fuzzy, { fuzzy }),\n },\n })),\n wildcard:\n (value?: OneOrMore<unknown>): Operator =>\n (path: string) => ({\n wildcard: {\n path: path === 'wildcard' ? { wildcard: '*' } : path,\n query: ifDefined(value, value, '*'),\n },\n }),\n lt:\n (value: unknown): Operator =>\n (path: string) =>\n ifDefined(value, lt => ({ range: { path, lt } })),\n lte:\n (value: unknown): Operator =>\n (path: string) =>\n ifDefined(value, lte => ({ range: { path, lte } })),\n gt:\n (value: unknown): Operator =>\n (path: string) =>\n ifDefined(value, gt => ({ range: { path, gt } })),\n gte:\n (value: unknown): Operator =>\n (path: string) =>\n ifDefined(value, gte => ({ range: { path, gte } })),\n after: (date: unknown): Operator => lucene.gte(toMongoType(date)),\n before: (date: unknown): Operator => lucene.lt(toMongoType(date)),\n between:\n (after: unknown, before: unknown): Operator =>\n (path: string) => ({\n range: {\n path,\n gte: toMongoType(after),\n lt: toMongoType(before),\n },\n }),\n facets: (def: SearchDefinition) =>\n entries(def)\n .filter(([k, v]) => isDefined(v(k)?.facet))\n .map(([k, v]) => ({ [k]: v(k)?.facet }))\n .reduce((acc, v) => ({ ...acc, ...v }), {}),\n facet: {\n string: (path: string, numBuckets = 1000): Facet => ({\n type: 'string',\n path,\n numBuckets,\n }),\n number: (path: string, boundaries: List<number>, alt?: string): Facet => ({\n type: 'number',\n path,\n boundaries,\n ...ifDefined(alt, a => ({ default: a })),\n }),\n date: (path: string, boundaries: List<DateTime>, alt?: string): Facet => ({\n type: 'date',\n path,\n boundaries: boundaries.mapDefined(b => b.toDate()),\n ...ifDefined(alt, a => ({ default: a })),\n }),\n },\n};\n"],"mappings":"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","names":[]}
|
package/dist/Lucene.mjs
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import {
|
|
2
|
+
entries,
|
|
3
|
+
ifDefined,
|
|
4
|
+
ifNotEmpty,
|
|
5
|
+
isDefined,
|
|
6
|
+
isFunction,
|
|
7
|
+
on,
|
|
8
|
+
toArray,
|
|
9
|
+
toList
|
|
10
|
+
} from "@thisisagile/easy";
|
|
11
|
+
import { toMongoType } from "./Utils";
|
|
12
|
+
const should = (query, def) => entries(query).mapDefined(([k, v]) => def[k]?.(v)?.should);
|
|
13
|
+
const must = (query, def) => entries(query).mapDefined(([k, v]) => def[k]?.(v)?.must);
|
|
14
|
+
const mustNot = (query, def) => entries(query).mapDefined(([k, v]) => def[k]?.(v)?.mustNot);
|
|
15
|
+
const filter = (query, def) => entries(query).mapDefined(([k, v]) => def[k]?.(v)?.filter);
|
|
16
|
+
const compound = (query, def) => entries({
|
|
17
|
+
should: ifNotEmpty(should(query, def).concat(filter(query, def), must(query, def), mustNot(query, def)), should(query, def), [
|
|
18
|
+
{ wildcard: lucene.wildcard() }
|
|
19
|
+
]),
|
|
20
|
+
...ifNotEmpty(filter(query, def), (f) => ({ filter: f })),
|
|
21
|
+
...ifNotEmpty(mustNot(query, def), (m) => ({ mustNot: m })),
|
|
22
|
+
...ifNotEmpty(must(query, def), (m) => ({ must: m }))
|
|
23
|
+
}).reduce((res, [k, v]) => on(res, (r) => r[k] = lucene.clauses(v)), {});
|
|
24
|
+
const lucene = {
|
|
25
|
+
clause: (c) => entries(c).reduce((res, [k, v]) => res.add(isFunction(v) ? v(k) : v), toList()),
|
|
26
|
+
clauses: (cs) => toArray(cs).flatMap((c) => lucene.clause(c)),
|
|
27
|
+
search: (c, index) => ({
|
|
28
|
+
$search: {
|
|
29
|
+
...ifDefined(index, { index }),
|
|
30
|
+
compound: entries(c).reduce((res, [k, v]) => on(res, (r) => r[k] = lucene.clauses(v)), {})
|
|
31
|
+
}
|
|
32
|
+
}),
|
|
33
|
+
searchWithDef: (query, options, index) => {
|
|
34
|
+
const sort = entries(query).mapDefined(([k, v]) => options[k]?.(v)?.sort).first();
|
|
35
|
+
return {
|
|
36
|
+
$search: { ...ifDefined(index, { index }), compound: compound(query, options), ...ifDefined(sort, { sort }) }
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
searchMeta: (query, def, index) => ({
|
|
40
|
+
$searchMeta: {
|
|
41
|
+
...ifDefined(index, { index }),
|
|
42
|
+
facet: {
|
|
43
|
+
operator: {
|
|
44
|
+
compound: compound(query, def)
|
|
45
|
+
},
|
|
46
|
+
facets: lucene.facets(def)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}),
|
|
50
|
+
exists: () => (path) => ({ exists: { path } }),
|
|
51
|
+
text: (value, fuzzy) => (path) => ifDefined(value, (v) => ({
|
|
52
|
+
text: {
|
|
53
|
+
path: path === "wildcard" ? { wildcard: "*" } : path,
|
|
54
|
+
query: v,
|
|
55
|
+
...ifDefined(fuzzy, { fuzzy })
|
|
56
|
+
}
|
|
57
|
+
})),
|
|
58
|
+
wildcard: (value) => (path) => ({
|
|
59
|
+
wildcard: {
|
|
60
|
+
path: path === "wildcard" ? { wildcard: "*" } : path,
|
|
61
|
+
query: ifDefined(value, value, "*")
|
|
62
|
+
}
|
|
63
|
+
}),
|
|
64
|
+
lt: (value) => (path) => ifDefined(value, (lt) => ({ range: { path, lt } })),
|
|
65
|
+
lte: (value) => (path) => ifDefined(value, (lte) => ({ range: { path, lte } })),
|
|
66
|
+
gt: (value) => (path) => ifDefined(value, (gt) => ({ range: { path, gt } })),
|
|
67
|
+
gte: (value) => (path) => ifDefined(value, (gte) => ({ range: { path, gte } })),
|
|
68
|
+
after: (date) => lucene.gte(toMongoType(date)),
|
|
69
|
+
before: (date) => lucene.lt(toMongoType(date)),
|
|
70
|
+
between: (after, before) => (path) => ({
|
|
71
|
+
range: {
|
|
72
|
+
path,
|
|
73
|
+
gte: toMongoType(after),
|
|
74
|
+
lt: toMongoType(before)
|
|
75
|
+
}
|
|
76
|
+
}),
|
|
77
|
+
facets: (def) => entries(def).filter(([k, v]) => isDefined(v(k)?.facet)).map(([k, v]) => ({ [k]: v(k)?.facet })).reduce((acc, v) => ({ ...acc, ...v }), {}),
|
|
78
|
+
facet: {
|
|
79
|
+
string: (path, numBuckets = 1e3) => ({
|
|
80
|
+
type: "string",
|
|
81
|
+
path,
|
|
82
|
+
numBuckets
|
|
83
|
+
}),
|
|
84
|
+
number: (path, boundaries, alt) => ({
|
|
85
|
+
type: "number",
|
|
86
|
+
path,
|
|
87
|
+
boundaries,
|
|
88
|
+
...ifDefined(alt, (a) => ({ default: a }))
|
|
89
|
+
}),
|
|
90
|
+
date: (path, boundaries, alt) => ({
|
|
91
|
+
type: "date",
|
|
92
|
+
path,
|
|
93
|
+
boundaries: boundaries.mapDefined((b) => b.toDate()),
|
|
94
|
+
...ifDefined(alt, (a) => ({ default: a }))
|
|
95
|
+
})
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
export {
|
|
99
|
+
lucene
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=Lucene.mjs.map
|