@osqd/jql 0.1.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/CHANGELOG.md +220 -0
- package/LICENSE +102 -0
- package/README.md +84 -0
- package/bin/jql.mjs +5 -0
- package/conformance/cases.json +290 -0
- package/dist/array.d.ts +11 -0
- package/dist/async.d.ts +44 -0
- package/dist/canonical.d.ts +18 -0
- package/dist/cjs/array.d.ts +11 -0
- package/dist/cjs/async.d.ts +44 -0
- package/dist/cjs/canonical.d.ts +18 -0
- package/dist/cjs/cli.d.ts +15 -0
- package/dist/cjs/collections.d.ts +34 -0
- package/dist/cjs/core.d.ts +117 -0
- package/dist/cjs/errors.d.ts +17 -0
- package/dist/cjs/explain.d.ts +30 -0
- package/dist/cjs/global.d.ts +90 -0
- package/dist/cjs/group.d.ts +47 -0
- package/dist/cjs/index.d.ts +25 -0
- package/dist/cjs/internal/closest.d.ts +9 -0
- package/dist/cjs/internal/duration.d.ts +15 -0
- package/dist/cjs/internal/equal.d.ts +34 -0
- package/dist/cjs/internal/glob.d.ts +30 -0
- package/dist/cjs/internal/order.d.ts +24 -0
- package/dist/cjs/internal/path.d.ts +109 -0
- package/dist/cjs/internal/record.d.ts +18 -0
- package/dist/cjs/internal/values.d.ts +41 -0
- package/dist/cjs/limits.d.ts +64 -0
- package/dist/cjs/operators.d.ts +81 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/plan.d.ts +79 -0
- package/dist/cjs/search.d.ts +42 -0
- package/dist/cjs/targets/mongo.d.ts +55 -0
- package/dist/cjs/text/index.d.ts +12 -0
- package/dist/cjs/text/parse.d.ts +91 -0
- package/dist/cjs/text/suggest.d.ts +16 -0
- package/dist/cjs/text/write.d.ts +34 -0
- package/dist/cjs/types.d.ts +236 -0
- package/dist/cjs/vocabulary.d.ts +106 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.js +2729 -0
- package/dist/cli.js.map +1 -0
- package/dist/collections.d.ts +34 -0
- package/dist/core.d.ts +117 -0
- package/dist/errors.d.ts +17 -0
- package/dist/explain.d.ts +30 -0
- package/dist/global.cjs +1953 -0
- package/dist/global.cjs.map +1 -0
- package/dist/global.d.ts +90 -0
- package/dist/global.js +1950 -0
- package/dist/global.js.map +1 -0
- package/dist/group.d.ts +47 -0
- package/dist/index.cjs +2529 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +2495 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/closest.d.ts +9 -0
- package/dist/internal/duration.d.ts +15 -0
- package/dist/internal/equal.d.ts +34 -0
- package/dist/internal/glob.d.ts +30 -0
- package/dist/internal/order.d.ts +24 -0
- package/dist/internal/path.d.ts +109 -0
- package/dist/internal/record.d.ts +18 -0
- package/dist/internal/values.d.ts +41 -0
- package/dist/limits.d.ts +64 -0
- package/dist/mongo.cjs +357 -0
- package/dist/mongo.cjs.map +1 -0
- package/dist/mongo.js +354 -0
- package/dist/mongo.js.map +1 -0
- package/dist/operators.d.ts +81 -0
- package/dist/plan.d.ts +79 -0
- package/dist/search.d.ts +42 -0
- package/dist/targets/mongo.d.ts +55 -0
- package/dist/text/index.d.ts +12 -0
- package/dist/text/parse.d.ts +91 -0
- package/dist/text/suggest.d.ts +16 -0
- package/dist/text/write.d.ts +34 -0
- package/dist/text.cjs +674 -0
- package/dist/text.cjs.map +1 -0
- package/dist/text.js +667 -0
- package/dist/text.js.map +1 -0
- package/dist/types.d.ts +236 -0
- package/dist/vocabulary.d.ts +106 -0
- package/docs/course/01-first-query.md +217 -0
- package/docs/course/02-operators.md +285 -0
- package/docs/course/03-arrays-and-paths.md +239 -0
- package/docs/course/04-combining.md +221 -0
- package/docs/course/05-dates.md +214 -0
- package/docs/course/06-typed-queries.md +240 -0
- package/docs/course/07-requests.md +261 -0
- package/docs/course/08-grouping.md +210 -0
- package/docs/course/09-explaining.md +171 -0
- package/docs/course/10-vocabulary.md +276 -0
- package/docs/course/11-the-search-box.md +349 -0
- package/docs/course/12-untrusted.md +257 -0
- package/docs/course/13-saved-filters.md +199 -0
- package/docs/course/14-streams-and-cli.md +276 -0
- package/docs/course/15-pushdown.md +240 -0
- package/docs/course/16-extending.md +199 -0
- package/docs/course/index.md +185 -0
- package/docs/design/decisions.md +198 -0
- package/docs/design/performance.md +102 -0
- package/docs/guides/adopting.md +81 -0
- package/docs/guides/pushdown.md +147 -0
- package/docs/guides/typescript.md +115 -0
- package/docs/guides/untrusted-input.md +86 -0
- package/docs/index.md +102 -0
- package/docs/reference/api.md +266 -0
- package/docs/reference/cli.md +103 -0
- package/docs/reference/index.md +12 -0
- package/docs/reference/specification.md +549 -0
- package/docs/reference/text-syntax.md +152 -0
- package/docs/start/quick-start.md +84 -0
- package/package.json +136 -0
package/dist/group.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type CompileOptions } from "./core.js";
|
|
2
|
+
import type { QueryLike, Source } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Counting the matches by one field.
|
|
5
|
+
*
|
|
6
|
+
* Every dashboard in this family ends up doing this: a thousand requests become a dozen
|
|
7
|
+
* actors you can read down, a feed becomes counts per verdict, per rule, per path. Each
|
|
8
|
+
* one used to write the tally loop itself, which is where the disagreements crept in —
|
|
9
|
+
* whether an item with two tags counts twice, what happens to the items with no value at
|
|
10
|
+
* all, and what order the groups come back in. It is one answer now.
|
|
11
|
+
*
|
|
12
|
+
* One pass over the source, one `Map` of counts, and the items kept only when asked for.
|
|
13
|
+
*/
|
|
14
|
+
export interface Grouped<T> {
|
|
15
|
+
/** The value that names the group. `null` covers everything that cannot name one — see below. */
|
|
16
|
+
readonly key: unknown;
|
|
17
|
+
readonly count: number;
|
|
18
|
+
/** Present only when `items` asked for them. */
|
|
19
|
+
readonly items?: readonly T[] | undefined;
|
|
20
|
+
}
|
|
21
|
+
export interface GroupOptions<T, Extra extends object = {}> extends CompileOptions<Extra> {
|
|
22
|
+
/** Which items to count. Absent counts them all. */
|
|
23
|
+
readonly where?: QueryLike<T, NoInfer<Extra>> | undefined;
|
|
24
|
+
/** How many groups to return. Absent returns all of them. */
|
|
25
|
+
readonly limit?: number | undefined;
|
|
26
|
+
/** Keep the items too: `true` for all of them, a number for the first few. Default: counts only. */
|
|
27
|
+
readonly items?: boolean | number | undefined;
|
|
28
|
+
/** `"count"` (default) puts the largest group first; `"key"` orders by the value itself. */
|
|
29
|
+
readonly sort?: "count" | "key" | undefined;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Groups the matching items by the value at `by`, largest group first.
|
|
33
|
+
*
|
|
34
|
+
* Three rules worth knowing, each because leaving it unsaid is how two dashboards came to
|
|
35
|
+
* disagree about the same feed:
|
|
36
|
+
*
|
|
37
|
+
* - **An item counts once in each group it belongs to.** A path that reaches an array —
|
|
38
|
+
* tags, say — puts the item in a group per distinct tag, and a repeated value inside one
|
|
39
|
+
* item counts once.
|
|
40
|
+
* - **Everything that cannot name a group shares `null`**: a missing field, a `null`, a value
|
|
41
|
+
* that is an object, and an empty list. That is the "no rule matched" heading, and it is a
|
|
42
|
+
* real answer rather than a silently dropped row — which is the point, because it is what
|
|
43
|
+
* makes the counts add up to the number of rows there are.
|
|
44
|
+
* - **Ties break by the key**, so the same data always comes back in the same order.
|
|
45
|
+
*/
|
|
46
|
+
export declare function group<K, V, Extra extends object = {}>(source: ReadonlyMap<K, V>, by: string, options?: GroupOptions<V, Extra>): Grouped<V>[];
|
|
47
|
+
export declare function group<T, Extra extends object = {}>(source: Source<T>, by: string, options?: GroupOptions<T, Extra>): Grouped<T>[];
|