@thisisagile/easy-mongo 17.26.0 → 17.26.2
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.mjs +59 -0
- package/dist/AtlasSearchGateway.mjs.map +1 -0
- package/dist/Collection.mjs +57 -0
- package/dist/Collection.mjs.map +1 -0
- package/dist/Lucene.mjs +8 -0
- package/dist/Lucene.mjs.map +1 -0
- package/dist/MongoGateway.mjs +9 -0
- package/dist/MongoGateway.mjs.map +1 -0
- package/dist/MongoProvider.mjs +8 -0
- package/dist/MongoProvider.mjs.map +1 -0
- package/dist/Stages.mjs +18 -0
- package/dist/Stages.mjs.map +1 -0
- package/dist/Utils.mjs +7 -0
- package/dist/Utils.mjs.map +1 -0
- package/dist/chunk-GFBKWYDV.mjs +65 -0
- package/dist/chunk-GFBKWYDV.mjs.map +1 -0
- package/dist/chunk-J3OXGWPD.mjs +129 -0
- package/dist/chunk-J3OXGWPD.mjs.map +1 -0
- package/dist/chunk-MZE7UWQC.mjs +13 -0
- package/dist/chunk-MZE7UWQC.mjs.map +1 -0
- package/dist/chunk-P372VCR6.mjs +157 -0
- package/dist/chunk-P372VCR6.mjs.map +1 -0
- package/dist/chunk-WEJO6T5Q.mjs +155 -0
- package/dist/chunk-WEJO6T5Q.mjs.map +1 -0
- package/dist/index.mjs +7 -587
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -13
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import {
|
|
2
|
+
toMongoType
|
|
3
|
+
} from "./chunk-MZE7UWQC.mjs";
|
|
4
|
+
|
|
5
|
+
// src/Stages.ts
|
|
6
|
+
import {
|
|
7
|
+
asNumber,
|
|
8
|
+
asString,
|
|
9
|
+
ifDefined,
|
|
10
|
+
ifNotEmpty,
|
|
11
|
+
isDefined,
|
|
12
|
+
isPresent,
|
|
13
|
+
isPrimitive,
|
|
14
|
+
isString,
|
|
15
|
+
meta,
|
|
16
|
+
ofGet,
|
|
17
|
+
on,
|
|
18
|
+
toArray,
|
|
19
|
+
use
|
|
20
|
+
} from "@thisisagile/easy";
|
|
21
|
+
var asc = 1;
|
|
22
|
+
var desc = -1;
|
|
23
|
+
var FilterBuilder = class {
|
|
24
|
+
constructor(filters) {
|
|
25
|
+
this.filters = filters;
|
|
26
|
+
}
|
|
27
|
+
from = (q = {}) => stages.match.match(
|
|
28
|
+
meta(q).entries().reduce((acc, [key, value]) => ({ ...acc, ...ifDefined(this.filters[key], (f) => f(value)) }), {})
|
|
29
|
+
);
|
|
30
|
+
};
|
|
31
|
+
var SortBuilder = class {
|
|
32
|
+
constructor(sorts) {
|
|
33
|
+
this.sorts = sorts;
|
|
34
|
+
}
|
|
35
|
+
get keys() {
|
|
36
|
+
return Object.keys(this.sorts);
|
|
37
|
+
}
|
|
38
|
+
from = (s = {}, alt) => stages.sort.sort(this.sorts[s?.s ?? ""] ?? this.sorts[alt ?? ""]);
|
|
39
|
+
};
|
|
40
|
+
var IncludeBuilder = class {
|
|
41
|
+
constructor(includes) {
|
|
42
|
+
this.includes = includes;
|
|
43
|
+
}
|
|
44
|
+
get keys() {
|
|
45
|
+
return Object.keys(this.includes);
|
|
46
|
+
}
|
|
47
|
+
from = (i = {}, alt) => stages.project.include(...this.includes[i?.i ?? ""] ?? this.includes[alt ?? ""] ?? []);
|
|
48
|
+
};
|
|
49
|
+
var escapeRegex = (s) => s.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
|
|
50
|
+
var stages = {
|
|
51
|
+
root: "$$ROOT",
|
|
52
|
+
current: "$$CURRENT",
|
|
53
|
+
id: "_id",
|
|
54
|
+
decode: {
|
|
55
|
+
object: (f) => use(Object.entries(f)[0], ([k, v]) => ofGet(v, k)),
|
|
56
|
+
fields: (f) => Object.entries(f).reduce((res, [k, v]) => on(res, (r) => ifDefined(ofGet(v, k), (nv) => r[k] = nv)), {}),
|
|
57
|
+
fieldsArrays: (f) => Object.entries(f).reduce((res, [k, v]) => on(res, (r) => r[k] = use(toArray(v), (vs) => vs.map((v2) => ofGet(v2, k)))), {}),
|
|
58
|
+
id: (f) => isString(f) ? `$${asString(f)}` : isPrimitive(f) ? f : Object.entries(f).map(([k, v]) => ofGet(v, k))[0]
|
|
59
|
+
},
|
|
60
|
+
match: {
|
|
61
|
+
match: (f) => ({ $match: stages.decode.fields(f) }),
|
|
62
|
+
filter: (filters) => new FilterBuilder(filters),
|
|
63
|
+
or: (...filters) => ({ $or: toArray(filters).map((f) => stages.decode.object(f)) }),
|
|
64
|
+
gt: (value) => ({ $gt: value }),
|
|
65
|
+
gte: (value) => ({ $gte: value }),
|
|
66
|
+
lt: (value) => ({ $lt: value }),
|
|
67
|
+
lte: (value) => ({ $lte: value }),
|
|
68
|
+
isIn: (value, separator = ",") => ({ $in: isString(value) ? value.split(separator) : value }),
|
|
69
|
+
notIn: (value, separator = ",") => ({ $nin: isString(value) ? value.split(separator) : value }),
|
|
70
|
+
after: (date) => stages.match.gte(toMongoType(date)),
|
|
71
|
+
before: (date) => stages.match.lt(toMongoType(date)),
|
|
72
|
+
anywhere: (q) => ({ $regex: escapeRegex(q), $options: "i" }),
|
|
73
|
+
money: (currency, value) => (key) => ({
|
|
74
|
+
[`${key}.currency`]: currency.id,
|
|
75
|
+
...stages.decode.fields({ [`${key}.value`]: value })
|
|
76
|
+
})
|
|
77
|
+
},
|
|
78
|
+
sort: {
|
|
79
|
+
sort: ($sort) => isPresent($sort) ? { $sort } : void 0,
|
|
80
|
+
sorter: (sorts) => new SortBuilder(sorts),
|
|
81
|
+
asc: (key) => stages.sort.sort({ [key]: asc }),
|
|
82
|
+
desc: (key) => stages.sort.sort({ [key]: desc })
|
|
83
|
+
},
|
|
84
|
+
group: {
|
|
85
|
+
group: (fields) => ({
|
|
86
|
+
by: (by) => ({ $group: Object.assign({ _id: stages.decode.id(by) }, stages.decode.fields(fields)) })
|
|
87
|
+
}),
|
|
88
|
+
date: (format = "%Y-%m-%d") => (key) => ({ $dateToString: { date: `$${key}`, format } }),
|
|
89
|
+
count: () => ({ $count: {} }),
|
|
90
|
+
sum: (from) => isDefined(from) ? { $sum: `$${from}` } : { $sum: 1 },
|
|
91
|
+
avg: (from) => ({ $avg: `$${from}` }),
|
|
92
|
+
multiply: (...multiply) => ({ $multiply: multiply.map((m) => `$${m}`) }),
|
|
93
|
+
first: (from) => ({ $first: `$${from}` }),
|
|
94
|
+
last: (from) => ({ $last: `$${from}` }),
|
|
95
|
+
min: (from) => ({ $min: `$${from}` }),
|
|
96
|
+
max: (from) => ({ $max: `$${from}` }),
|
|
97
|
+
addToSet: (from) => ({ $addToSet: `$${from}` }),
|
|
98
|
+
push: (from = "$ROOT") => ({ $push: `$${from}` }),
|
|
99
|
+
size: (from) => ({ $size: `$${from}` })
|
|
100
|
+
},
|
|
101
|
+
search: {
|
|
102
|
+
search: (f) => ifDefined(stages.decode.id(f), ($search) => ({ $search })),
|
|
103
|
+
auto: (value) => (key) => ifDefined(value, (v) => ({ autocomplete: { path: key, query: [v] } })),
|
|
104
|
+
fuzzy: (value, maxEdits = 1) => (key) => ifDefined(value, (v) => ({
|
|
105
|
+
text: {
|
|
106
|
+
query: v,
|
|
107
|
+
path: key === "wildcard" ? { wildcard: "*" } : key,
|
|
108
|
+
fuzzy: { maxEdits }
|
|
109
|
+
}
|
|
110
|
+
}))
|
|
111
|
+
},
|
|
112
|
+
set: {
|
|
113
|
+
set: (f) => ({ $set: stages.decode.fields(f) }),
|
|
114
|
+
score: () => ({ $meta: "searchScore" })
|
|
115
|
+
},
|
|
116
|
+
skip: {
|
|
117
|
+
skip: (o = {}) => ifDefined(o.skip, { $skip: asNumber(o.skip) }),
|
|
118
|
+
take: (o = {}) => ifDefined(o.take, { $limit: asNumber(o.take) })
|
|
119
|
+
},
|
|
120
|
+
project: {
|
|
121
|
+
include: (...includes) => ifNotEmpty(includes, (es) => ({ $project: es.reduce((a, b) => ({ ...a, ...isString(b) ? { [b]: 1 } : b }), {}) })),
|
|
122
|
+
exclude: (...excludes) => ifNotEmpty(excludes, (es) => ({ $project: es.reduce((a, b) => ({ ...a, ...isString(b) ? { [b]: 0 } : b }), {}) })),
|
|
123
|
+
includes: (includes) => new IncludeBuilder(includes),
|
|
124
|
+
project: (project) => ifDefined(project, ($project) => ({ $project })),
|
|
125
|
+
date: (key, format) => ({ $toDate: `$${key}`, ...ifDefined(format, { format }) }),
|
|
126
|
+
duration: (from, to) => ({ $divide: [{ $subtract: [stages.project.date(from), stages.project.date(to)] }, 1e3] })
|
|
127
|
+
},
|
|
128
|
+
replaceWith: {
|
|
129
|
+
replaceWith: (f) => ifDefined(f, { $replaceWith: f }),
|
|
130
|
+
merge: (...objects) => ifNotEmpty(objects, (os) => ({ $mergeObjects: os })),
|
|
131
|
+
rootAnd: (...objects) => stages.replaceWith.merge(stages.root, ...objects),
|
|
132
|
+
currentAnd: (...objects) => stages.replaceWith.merge(stages.current, ...objects),
|
|
133
|
+
reroot: (prop) => ({ $replaceRoot: { newRoot: `$${prop}` } }),
|
|
134
|
+
concat: (...props) => ifNotEmpty(props, (ps) => ({ $concatArrays: ps.map((p) => `$${p}`) }))
|
|
135
|
+
},
|
|
136
|
+
facet: {
|
|
137
|
+
facet: (f) => ({ $facet: stages.decode.fieldsArrays(f) }),
|
|
138
|
+
unwind: (from) => (f) => ({ $unwind: `$${from ?? f}` }),
|
|
139
|
+
count: (from) => (f) => ({ $sortByCount: `$${from ?? f}` }),
|
|
140
|
+
data: () => []
|
|
141
|
+
},
|
|
142
|
+
unwind: {
|
|
143
|
+
unwind: (prop) => ({ $unwind: `$${prop}` })
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
export {
|
|
148
|
+
asc,
|
|
149
|
+
desc,
|
|
150
|
+
FilterBuilder,
|
|
151
|
+
SortBuilder,
|
|
152
|
+
IncludeBuilder,
|
|
153
|
+
stages
|
|
154
|
+
};
|
|
155
|
+
//# sourceMappingURL=chunk-WEJO6T5Q.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Stages.ts"],"sourcesContent":["import { Filter, FindOptions } from './MongoProvider';\nimport {\n asNumber,\n asString,\n Currency,\n Get,\n Id,\n ifDefined,\n ifNotEmpty,\n isDefined,\n isPresent,\n isPrimitive,\n isString,\n meta,\n ofGet,\n on,\n OneOrMore,\n Optional,\n PartialRecord,\n toArray,\n use,\n} from '@thisisagile/easy';\nimport { toMongoType } from './Utils';\n\nexport const asc = 1;\nexport const desc = -1;\nexport type Accumulators = '$sum' | '$count' | '$multiply' | '$avg' | '$first' | '$last' | '$min' | '$max' | '$push' | '$addToSet' | '$size';\nexport type Accumulator = PartialRecord<Accumulators, Filter>;\n\nexport class FilterBuilder<Options> {\n constructor(private filters: { [K in keyof Options]: (v: Options[K]) => Filter }) {}\n\n from = (q: Partial<Options> = {}): Filter =>\n stages.match.match(\n meta(q)\n .entries()\n .reduce((acc, [key, value]) => ({ ...acc, ...ifDefined(this.filters[key as keyof Options], f => f(value as Options[keyof Options])) }), {})\n );\n}\n\ntype Sort = Record<string, typeof asc | typeof desc>;\n\nexport class SortBuilder {\n constructor(private sorts: Record<string, Sort>) {}\n\n get keys(): string[] {\n return Object.keys(this.sorts);\n }\n\n from = (\n s: {\n s?: string;\n } = {},\n alt?: string\n ): Optional<Filter> => stages.sort.sort(this.sorts[s?.s ?? ''] ?? this.sorts[alt ?? '']);\n}\n\nexport class IncludeBuilder {\n constructor(private includes: Record<string, (string | Record<string, 1>)[]>) {}\n\n get keys(): string[] {\n return Object.keys(this.includes);\n }\n\n from = (\n i: {\n i?: string;\n } = {},\n alt?: string\n ): Optional<Filter> => stages.project.include(...(this.includes[i?.i ?? ''] ?? this.includes[alt ?? ''] ?? []));\n}\n\nconst escapeRegex = (s: string) => s.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n\nexport const stages = {\n root: '$$ROOT',\n current: '$$CURRENT',\n id: '_id',\n decode: {\n object: (f: Filter) => use(Object.entries(f)[0], ([k, v]) => ofGet(v, k)),\n fields: (f: Filter) => Object.entries(f).reduce((res, [k, v]) => on(res, r => ifDefined(ofGet(v, k), nv => (r[k] = nv))), {} as any),\n fieldsArrays: (f: Filter) => Object.entries(f).reduce((res, [k, v]) => on(res, r => (r[k] = use(toArray(v), vs => vs.map(v => ofGet(v, k))))), {} as any),\n id: (f: Filter | string) => (isString(f) ? `$${asString(f)}` : isPrimitive(f) ? f : Object.entries(f).map(([k, v]) => ofGet(v, k))[0]),\n },\n match: {\n match: (f: Record<string, Get<Optional<Filter>, string>>) => ({ $match: stages.decode.fields(f) }),\n filter: <Options>(filters: { [K in keyof Options]: (v: Options[K]) => Filter }) => new FilterBuilder<Options>(filters),\n or: (...filters: Filter[]) => ({ $or: toArray(filters).map(f => stages.decode.object(f)) }),\n gt: (value: Filter) => ({ $gt: value }),\n gte: (value: Filter) => ({ $gte: value }),\n lt: (value: Filter) => ({ $lt: value }),\n lte: (value: Filter) => ({ $lte: value }),\n isIn: (value: OneOrMore<unknown>, separator = ',') => ({ $in: isString(value) ? value.split(separator) : value }),\n notIn: (value: OneOrMore<unknown>, separator = ',') => ({ $nin: isString(value) ? value.split(separator) : value }),\n after: (date: unknown) => stages.match.gte(toMongoType(date)),\n before: (date: unknown) => stages.match.lt(toMongoType(date)),\n anywhere: (q: string) => ({ $regex: escapeRegex(q), $options: 'i' }),\n money: (currency: Currency, value: Filter) => (key: string) => ({\n [`${key}.currency`]: currency.id,\n ...stages.decode.fields({ [`${key}.value`]: value }),\n }),\n },\n sort: {\n sort: ($sort: Sort) => (isPresent($sort) ? { $sort } : undefined),\n sorter: (sorts: Record<string, Sort>) => new SortBuilder(sorts),\n asc: (key: string) => stages.sort.sort({ [key]: asc }),\n desc: (key: string) => stages.sort.sort({ [key]: desc }),\n },\n group: {\n group: (fields: Record<string, Accumulator>) => ({\n by: (by: Filter) => ({ $group: Object.assign({ _id: stages.decode.id(by) }, stages.decode.fields(fields)) }),\n }),\n date:\n (format = '%Y-%m-%d') =>\n (key: string) => ({ $dateToString: { date: `$${key}`, format } }),\n count: (): Accumulator => ({ $count: {} }),\n sum: (from?: string): Accumulator => (isDefined(from) ? { $sum: `$${from}` } : { $sum: 1 }),\n avg: (from?: string) => ({ $avg: `$${from}` }),\n multiply: (...multiply: string[]) => ({ $multiply: multiply.map(m => `$${m}`) }),\n first: (from?: string): Accumulator => ({ $first: `$${from}` }),\n last: (from?: string): Accumulator => ({ $last: `$${from}` }),\n min: (from?: string): Accumulator => ({ $min: `$${from}` }),\n max: (from?: string): Accumulator => ({ $max: `$${from}` }),\n addToSet: (from?: string): Accumulator => ({ $addToSet: `$${from}` }),\n push: (from = '$ROOT'): Accumulator => ({ $push: `$${from}` }),\n size: (from?: string): Accumulator => ({ $size: `$${from}` }),\n },\n search: {\n search: (f: Record<string, Get<Filter, string>>) => ifDefined(stages.decode.id(f), $search => ({ $search })),\n auto: (value?: Id) => (key: string) => ifDefined(value, v => ({ autocomplete: { path: key, query: [v] } })),\n fuzzy:\n (value?: string, maxEdits = 1) =>\n (key?: string) =>\n ifDefined(value, v => ({\n text: {\n query: v,\n path: key === 'wildcard' ? { wildcard: '*' } : key,\n fuzzy: { maxEdits },\n },\n })),\n },\n set: {\n set: (f: Record<string, Get<Filter, string>>) => ({ $set: stages.decode.fields(f) }),\n score: () => ({ $meta: 'searchScore' }),\n },\n skip: {\n skip: (o: FindOptions = {}): Optional<Filter> => ifDefined(o.skip, { $skip: asNumber(o.skip) }),\n take: (o: FindOptions = {}): Optional<Filter> => ifDefined(o.take, { $limit: asNumber(o.take) }),\n },\n project: {\n include: (...includes: (string | Record<string, 1 | string>)[]): Optional<Filter> =>\n ifNotEmpty(includes, es => ({ $project: es.reduce((a: Filter, b: Filter) => ({ ...a, ...(isString(b) ? { [b]: 1 } : b) }), {}) })),\n exclude: (...excludes: (string | Record<string, 0>)[]): Optional<Filter> =>\n ifNotEmpty(excludes, es => ({ $project: es.reduce((a: Filter, b: Filter) => ({ ...a, ...(isString(b) ? { [b]: 0 } : b) }), {}) })),\n includes: (includes: Record<string, (string | Record<string, 1>)[]>) => new IncludeBuilder(includes),\n project: (project?: Filter) => ifDefined(project, $project => ({ $project })),\n date: (key: string, format?: string) => ({ $toDate: `$${key}`, ...ifDefined(format, { format }) }),\n duration: (from: string, to: string) => ({ $divide: [{ $subtract: [stages.project.date(from), stages.project.date(to)] }, 1000] }),\n },\n replaceWith: {\n replaceWith: (f?: Filter): Optional<Filter> => ifDefined(f, { $replaceWith: f }),\n merge: (...objects: Filter[]): Optional<Filter> => ifNotEmpty(objects, os => ({ $mergeObjects: os })),\n rootAnd: (...objects: Filter[]): Optional<Filter> => stages.replaceWith.merge(stages.root, ...objects),\n currentAnd: (...objects: Filter[]): Optional<Filter> => stages.replaceWith.merge(stages.current, ...objects),\n reroot: (prop: string): Filter => ({ $replaceRoot: { newRoot: `$${prop}` } }),\n concat: (...props: string[]): Optional<Filter> => ifNotEmpty(props, ps => ({ $concatArrays: ps.map(p => `$${p}`) })),\n },\n facet: {\n facet: (f: Record<string, OneOrMore<Get<Optional<Filter>, string>>>) => ({ $facet: stages.decode.fieldsArrays(f) }),\n unwind: (from?: string) => (f?: string) => ({ $unwind: `$${from ?? f}` }),\n count: (from?: string) => (f?: string) => ({ $sortByCount: `$${from ?? f}` }),\n data: () => [],\n },\n unwind: {\n unwind: (prop?: string) => ({ $unwind: `$${prop}` }),\n },\n};\n"],"mappings":"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","names":["v"]}
|