liwi-mongo 13.1.1 → 13.3.0
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 +245 -3
- package/dist/definitions/MongoRegistry.d.ts +20 -0
- package/dist/definitions/MongoRegistry.d.ts.map +1 -0
- package/dist/definitions/MongoRegistry.test.d.ts +2 -0
- package/dist/definitions/MongoRegistry.test.d.ts.map +1 -0
- package/dist/definitions/MongoRegistryStore.d.ts +7 -0
- package/dist/definitions/MongoRegistryStore.d.ts.map +1 -0
- package/dist/definitions/MongoStore.d.ts +9 -1
- package/dist/definitions/MongoStore.d.ts.map +1 -1
- package/dist/definitions/MongoStoreIndexes.test.d.ts +2 -0
- package/dist/definitions/MongoStoreIndexes.test.d.ts.map +1 -0
- package/dist/definitions/index.d.ts +8 -1
- package/dist/definitions/index.d.ts.map +1 -1
- package/dist/definitions/indexes/applyIndexPlan.d.ts +11 -0
- package/dist/definitions/indexes/applyIndexPlan.d.ts.map +1 -0
- package/dist/definitions/indexes/buildIndexName.d.ts +3 -0
- package/dist/definitions/indexes/buildIndexName.d.ts.map +1 -0
- package/dist/definitions/indexes/buildIndexName.test.d.ts +2 -0
- package/dist/definitions/indexes/buildIndexName.test.d.ts.map +1 -0
- package/dist/definitions/indexes/deepEqualUnordered.d.ts +2 -0
- package/dist/definitions/indexes/deepEqualUnordered.d.ts.map +1 -0
- package/dist/definitions/indexes/diffIndexes.d.ts +13 -0
- package/dist/definitions/indexes/diffIndexes.d.ts.map +1 -0
- package/dist/definitions/indexes/diffIndexes.test.d.ts +2 -0
- package/dist/definitions/indexes/diffIndexes.test.d.ts.map +1 -0
- package/dist/definitions/indexes/formatIndexPlan.d.ts +5 -0
- package/dist/definitions/indexes/formatIndexPlan.d.ts.map +1 -0
- package/dist/definitions/indexes/formatIndexPlan.test.d.ts +2 -0
- package/dist/definitions/indexes/formatIndexPlan.test.d.ts.map +1 -0
- package/dist/definitions/indexes/isIndexConflictError.d.ts +4 -0
- package/dist/definitions/indexes/isIndexConflictError.d.ts.map +1 -0
- package/dist/definitions/indexes/normalizeIndex.d.ts +34 -0
- package/dist/definitions/indexes/normalizeIndex.d.ts.map +1 -0
- package/dist/definitions/indexes/normalizeIndex.test.d.ts +2 -0
- package/dist/definitions/indexes/normalizeIndex.test.d.ts.map +1 -0
- package/dist/definitions/indexes/runIndexesCli.d.ts +11 -0
- package/dist/definitions/indexes/runIndexesCli.d.ts.map +1 -0
- package/dist/definitions/indexes/runIndexesCli.test.d.ts +2 -0
- package/dist/definitions/indexes/runIndexesCli.test.d.ts.map +1 -0
- package/dist/definitions/indexes/syncIndexes.integration.test.d.ts +2 -0
- package/dist/definitions/indexes/syncIndexes.integration.test.d.ts.map +1 -0
- package/dist/definitions/indexes/types.d.ts +72 -0
- package/dist/definitions/indexes/types.d.ts.map +1 -0
- package/dist/index-node.mjs +626 -10
- package/dist/index-node.mjs.map +1 -1
- package/package.json +7 -5
- package/src/MongoRegistry.test.ts +136 -0
- package/src/MongoRegistry.ts +108 -0
- package/src/MongoRegistryStore.ts +11 -0
- package/src/MongoStore.ts +63 -1
- package/src/MongoStoreIndexes.test.ts +259 -0
- package/src/index.ts +26 -1
- package/src/indexes/applyIndexPlan.ts +149 -0
- package/src/indexes/buildIndexName.test.ts +34 -0
- package/src/indexes/buildIndexName.ts +8 -0
- package/src/indexes/deepEqualUnordered.ts +36 -0
- package/src/indexes/diffIndexes.test.ts +290 -0
- package/src/indexes/diffIndexes.ts +234 -0
- package/src/indexes/formatIndexPlan.test.ts +105 -0
- package/src/indexes/formatIndexPlan.ts +71 -0
- package/src/indexes/isIndexConflictError.ts +20 -0
- package/src/indexes/normalizeIndex.test.ts +154 -0
- package/src/indexes/normalizeIndex.ts +191 -0
- package/src/indexes/runIndexesCli.test.ts +119 -0
- package/src/indexes/runIndexesCli.ts +74 -0
- package/src/indexes/syncIndexes.integration.test.ts +182 -0
- package/src/indexes/types.ts +115 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { Criteria, DottedPaths } from "liwi-store";
|
|
2
|
+
import type { CollationOptions, IndexDescription, IndexDescriptionInfo } from "mongodb";
|
|
3
|
+
import type { MongoBaseModel } from "../MongoBaseModel.ts";
|
|
4
|
+
export type MongoIndexDirection = -1 | "2d" | "2dsphere" | "hashed" | "text" | 1;
|
|
5
|
+
export type MongoIndexKey<Model extends MongoBaseModel<any>> = Partial<Record<DottedPaths<Model> | "$**" | `${DottedPaths<Model>}.$**`, MongoIndexDirection>>;
|
|
6
|
+
export interface MongoIndexOptions<Model extends MongoBaseModel<any>> {
|
|
7
|
+
name?: string;
|
|
8
|
+
unique?: boolean;
|
|
9
|
+
sparse?: boolean;
|
|
10
|
+
hidden?: boolean;
|
|
11
|
+
expireAfterSeconds?: number;
|
|
12
|
+
partialFilterExpression?: Criteria<Model>;
|
|
13
|
+
collation?: CollationOptions;
|
|
14
|
+
weights?: Partial<Record<DottedPaths<Model>, number>>;
|
|
15
|
+
default_language?: string;
|
|
16
|
+
language_override?: string;
|
|
17
|
+
wildcardProjection?: Record<string, 0 | 1>;
|
|
18
|
+
}
|
|
19
|
+
export interface MongoIndex<Model extends MongoBaseModel<any>> extends MongoIndexOptions<Model> {
|
|
20
|
+
key: MongoIndexKey<Model>;
|
|
21
|
+
}
|
|
22
|
+
export interface SyncIndexesOptions {
|
|
23
|
+
dryRun?: boolean;
|
|
24
|
+
dropUndeclaredIndexes?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export type MongoIndexComparedField = "collation" | "default_language" | "expireAfterSeconds" | "hidden" | "key" | "language_override" | "partialFilterExpression" | "sparse" | "unique" | "weights" | "wildcardProjection";
|
|
27
|
+
export interface MongoIndexDifference {
|
|
28
|
+
field: MongoIndexComparedField;
|
|
29
|
+
declared: unknown;
|
|
30
|
+
existing: unknown;
|
|
31
|
+
}
|
|
32
|
+
export interface MongoIndexCollModChanges {
|
|
33
|
+
expireAfterSeconds?: number;
|
|
34
|
+
hidden?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface MongoIndexPlanCreate {
|
|
37
|
+
name: string;
|
|
38
|
+
index: IndexDescription;
|
|
39
|
+
}
|
|
40
|
+
export interface MongoIndexPlanRecreate {
|
|
41
|
+
name: string;
|
|
42
|
+
index: IndexDescription;
|
|
43
|
+
existing: IndexDescriptionInfo;
|
|
44
|
+
differences: MongoIndexDifference[];
|
|
45
|
+
}
|
|
46
|
+
export interface MongoIndexPlanCollMod {
|
|
47
|
+
name: string;
|
|
48
|
+
changes: MongoIndexCollModChanges;
|
|
49
|
+
differences: MongoIndexDifference[];
|
|
50
|
+
}
|
|
51
|
+
export interface MongoIndexPlanDrop {
|
|
52
|
+
name: string;
|
|
53
|
+
existing: IndexDescriptionInfo;
|
|
54
|
+
}
|
|
55
|
+
export interface MongoIndexPlan {
|
|
56
|
+
collectionName: string;
|
|
57
|
+
toCreate: MongoIndexPlanCreate[];
|
|
58
|
+
toRecreate: MongoIndexPlanRecreate[];
|
|
59
|
+
toCollMod: MongoIndexPlanCollMod[];
|
|
60
|
+
toDrop: MongoIndexPlanDrop[];
|
|
61
|
+
unchanged: string[];
|
|
62
|
+
undeclaredKept: string[];
|
|
63
|
+
}
|
|
64
|
+
export interface MongoIndexSyncResult {
|
|
65
|
+
collectionName: string;
|
|
66
|
+
plan: MongoIndexPlan;
|
|
67
|
+
dryRun: boolean;
|
|
68
|
+
created: string[];
|
|
69
|
+
dropped: string[];
|
|
70
|
+
modified: string[];
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/indexes/types.ts"],"names":[],"mappings":"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"}
|