@decaf-ts/for-couchdb 0.4.28 → 0.4.30

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.
Files changed (49) hide show
  1. package/dist/for-couchdb.cjs +1 -1
  2. package/dist/for-couchdb.cjs.map +1 -1
  3. package/dist/for-couchdb.js +1 -1
  4. package/dist/for-couchdb.js.map +1 -1
  5. package/lib/constants.cjs +2 -0
  6. package/lib/constants.d.ts +2 -0
  7. package/lib/constants.js.map +1 -1
  8. package/lib/decorators.cjs +168 -0
  9. package/lib/decorators.d.ts +11 -0
  10. package/lib/decorators.js.map +1 -0
  11. package/lib/esm/constants.d.ts +2 -0
  12. package/lib/esm/constants.js +2 -0
  13. package/lib/esm/constants.js.map +1 -1
  14. package/lib/esm/decorators.d.ts +11 -0
  15. package/lib/esm/decorators.js +158 -0
  16. package/lib/esm/decorators.js.map +1 -0
  17. package/lib/esm/index.d.ts +3 -1
  18. package/lib/esm/index.js +3 -1
  19. package/lib/esm/index.js.map +1 -1
  20. package/lib/esm/indexes/generator.js +6 -0
  21. package/lib/esm/indexes/generator.js.map +1 -1
  22. package/lib/esm/utils.js +1 -1
  23. package/lib/esm/utils.js.map +1 -1
  24. package/lib/esm/views/generator.d.ts +7 -0
  25. package/lib/esm/views/generator.js +251 -0
  26. package/lib/esm/views/generator.js.map +1 -0
  27. package/lib/esm/views/index.d.ts +2 -0
  28. package/lib/esm/views/index.js +3 -0
  29. package/lib/esm/views/index.js.map +1 -0
  30. package/lib/esm/views/types.d.ts +44 -0
  31. package/lib/esm/views/types.js +2 -0
  32. package/lib/esm/views/types.js.map +1 -0
  33. package/lib/index.cjs +3 -1
  34. package/lib/index.d.ts +3 -1
  35. package/lib/index.js.map +1 -1
  36. package/lib/indexes/generator.cjs +6 -0
  37. package/lib/indexes/generator.js.map +1 -1
  38. package/lib/utils.cjs +1 -1
  39. package/lib/utils.js.map +1 -1
  40. package/lib/views/generator.cjs +256 -0
  41. package/lib/views/generator.d.ts +7 -0
  42. package/lib/views/generator.js.map +1 -0
  43. package/lib/views/index.cjs +19 -0
  44. package/lib/views/index.d.ts +2 -0
  45. package/lib/views/index.js.map +1 -0
  46. package/lib/views/types.cjs +3 -0
  47. package/lib/views/types.d.ts +44 -0
  48. package/lib/views/types.js.map +1 -0
  49. package/package.json +1 -1
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateViews = generateViews;
4
+ exports.generateViewIndexes = generateViewIndexes;
5
+ exports.viewIndexDefinition = viewIndexDefinition;
6
+ const core_1 = require("@decaf-ts/core");
7
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
8
+ const decoration_1 = require("@decaf-ts/decoration");
9
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
10
+ const constants_1 = require("./../constants.cjs");
11
+ const utils_1 = require("./../utils.cjs");
12
+ const core_2 = require("@decaf-ts/core");
13
+ function toJsLiteral(value) {
14
+ if (value instanceof Date)
15
+ return JSON.stringify(value.toISOString());
16
+ if (value instanceof RegExp)
17
+ return `new RegExp(${JSON.stringify(value.source)}, ${JSON.stringify(value.flags)})`;
18
+ return JSON.stringify(value);
19
+ }
20
+ function conditionToJs(condition, docVar) {
21
+ const { attr1, operator, comparison } = condition;
22
+ if (attr1 instanceof core_1.Condition) {
23
+ const left = conditionToJs(attr1, docVar);
24
+ if (operator === core_2.Operator.NOT)
25
+ return `!(${left})`;
26
+ const right = conditionToJs(comparison, docVar);
27
+ if (operator === core_1.GroupOperator.AND)
28
+ return `(${left} && ${right})`;
29
+ if (operator === core_1.GroupOperator.OR)
30
+ return `(${left} || ${right})`;
31
+ return left;
32
+ }
33
+ const attrExpr = `${docVar}[${JSON.stringify(attr1)}]`;
34
+ switch (operator) {
35
+ case core_2.Operator.EQUAL:
36
+ return `${attrExpr} === ${toJsLiteral(comparison)}`;
37
+ case core_2.Operator.DIFFERENT:
38
+ return `${attrExpr} !== ${toJsLiteral(comparison)}`;
39
+ case core_2.Operator.BIGGER:
40
+ return `${attrExpr} > ${toJsLiteral(comparison)}`;
41
+ case core_2.Operator.BIGGER_EQ:
42
+ return `${attrExpr} >= ${toJsLiteral(comparison)}`;
43
+ case core_2.Operator.SMALLER:
44
+ return `${attrExpr} < ${toJsLiteral(comparison)}`;
45
+ case core_2.Operator.SMALLER_EQ:
46
+ return `${attrExpr} <= ${toJsLiteral(comparison)}`;
47
+ case core_2.Operator.IN:
48
+ return `(${toJsLiteral(comparison)}).indexOf(${attrExpr}) !== -1`;
49
+ case core_2.Operator.REGEXP: {
50
+ const regex = comparison instanceof RegExp
51
+ ? toJsLiteral(comparison)
52
+ : `new RegExp(${JSON.stringify(comparison)})`;
53
+ return `${regex}.test(${attrExpr})`;
54
+ }
55
+ case core_2.Operator.NOT:
56
+ return `!(${attrExpr} === ${toJsLiteral(comparison)})`;
57
+ default:
58
+ return "true";
59
+ }
60
+ }
61
+ function buildAuthGuard(auth, docVar = "doc") {
62
+ if (!auth)
63
+ return undefined;
64
+ if (typeof auth === "string")
65
+ return auth;
66
+ const field = auth.field || "roles";
67
+ const roles = auth.roles || [];
68
+ if (!roles.length)
69
+ return auth.expression;
70
+ const listExpr = `${docVar}[${JSON.stringify(field)}] || []`;
71
+ if ((auth.mode || "any") === "all") {
72
+ return roles
73
+ .map((r) => `${listExpr}.indexOf(${JSON.stringify(r)}) !== -1`)
74
+ .join(" && ");
75
+ }
76
+ return roles
77
+ .map((r) => `${listExpr}.indexOf(${JSON.stringify(r)}) !== -1`)
78
+ .join(" || ");
79
+ }
80
+ function normalizeKey(key, attr, compositions) {
81
+ if (!key)
82
+ return attr ? [attr, ...(compositions || [])] : compositions || [];
83
+ return Array.isArray(key) ? key : [key];
84
+ }
85
+ function buildEmitKey(key, attr, compositions) {
86
+ const keys = normalizeKey(key, attr, compositions);
87
+ if (keys.length === 1)
88
+ return `doc[${JSON.stringify(keys[0])}]`;
89
+ return `[${keys.map((k) => `doc[${JSON.stringify(k)}]`).join(", ")}]`;
90
+ }
91
+ function buildEmitValue(value, attr) {
92
+ if (value === "doc")
93
+ return "doc";
94
+ if (!value)
95
+ return `doc[${JSON.stringify(attr)}]`;
96
+ if (Array.isArray(value))
97
+ return `[${value.map((v) => `doc[${JSON.stringify(v)}]`).join(", ")}]`;
98
+ if (typeof value === "string")
99
+ return `doc[${JSON.stringify(value)}]`;
100
+ return toJsLiteral(value);
101
+ }
102
+ function defaultReduce(kind) {
103
+ switch (kind) {
104
+ case "count":
105
+ case "groupBy":
106
+ case "distinct":
107
+ return "_count";
108
+ case "sum":
109
+ return "_sum";
110
+ case "max":
111
+ return `function (keys, values, rereduce) {\n var maxVal = null;\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n if (rereduce && val && typeof val === 'object' && 'value' in val) val = val.value;\n if (maxVal === null || val > maxVal) maxVal = val;\n }\n return maxVal;\n}`;
112
+ case "min":
113
+ return `function (keys, values, rereduce) {\n var minVal = null;\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n if (rereduce && val && typeof val === 'object' && 'value' in val) val = val.value;\n if (minVal === null || val < minVal) minVal = val;\n }\n return minVal;\n}`;
114
+ default:
115
+ return undefined;
116
+ }
117
+ }
118
+ function buildMapFunction(tableName, attr, meta) {
119
+ if (meta.map) {
120
+ if (typeof meta.map === "function")
121
+ return meta.map.toString();
122
+ return meta.map;
123
+ }
124
+ const guards = [];
125
+ guards.push(`doc[${JSON.stringify(constants_1.CouchDBKeys.TABLE)}] === ${JSON.stringify(tableName)}`);
126
+ if (meta.condition) {
127
+ if (meta.condition instanceof core_1.Condition) {
128
+ guards.push(conditionToJs(meta.condition, "doc"));
129
+ }
130
+ else if (typeof meta.condition === "string") {
131
+ guards.push(meta.condition);
132
+ }
133
+ else {
134
+ const resolved = core_1.Condition.from(meta.condition);
135
+ guards.push(conditionToJs(resolved, "doc"));
136
+ }
137
+ }
138
+ if (meta.kind === "count" && meta.value !== undefined) {
139
+ guards.push(`doc[${JSON.stringify(attr)}] === ${toJsLiteral(meta.value)}`);
140
+ }
141
+ const authGuard = buildAuthGuard(meta.auth, "doc");
142
+ if (authGuard)
143
+ guards.push(authGuard);
144
+ const guard = guards.length ? guards.join(" && ") : "true";
145
+ const emitKey = buildEmitKey(meta.key, attr, meta.compositions);
146
+ const emitValue = buildEmitValue(meta.value ?? (meta.returnDocs && meta.kind !== "sum" ? "doc" : undefined), attr);
147
+ return `function (doc) {\n if (!(${guard})) return;\n emit(${emitKey}, ${emitValue});\n}`;
148
+ }
149
+ function normalizeViewMetadata(kind, attr, meta, tableName) {
150
+ const map = buildMapFunction(tableName, attr, meta);
151
+ const reduce = meta.reduce
152
+ ? typeof meta.reduce === "function"
153
+ ? meta.reduce.toString()
154
+ : meta.reduce
155
+ : defaultReduce(kind);
156
+ return { map, reduce };
157
+ }
158
+ function generateViewName(tableName, attr, kind, meta, separator = db_decorators_1.DefaultSeparator) {
159
+ if (meta.name)
160
+ return meta.name;
161
+ const parts = [tableName, attr, kind, "view"];
162
+ return parts.join(separator).replace(/\s+/g, "_");
163
+ }
164
+ function generateDesignDocName(tableName, viewName, separator = db_decorators_1.DefaultSeparator) {
165
+ return [tableName, viewName, constants_1.CouchDBKeys.DDOC].join(separator);
166
+ }
167
+ function collectViewMetadata(model, key, kind) {
168
+ const meta = decoration_1.Metadata.get(model, key) || {};
169
+ return Object.entries(meta).flatMap(([attr, entries]) => {
170
+ if (!entries || typeof entries !== "object")
171
+ return [];
172
+ return Object.values(entries).map((entry) => {
173
+ const value = entry;
174
+ return {
175
+ ...value,
176
+ kind,
177
+ attribute: value.attribute || attr,
178
+ };
179
+ });
180
+ });
181
+ }
182
+ function generateViews(models) {
183
+ const viewDocs = {};
184
+ const viewKeys = [
185
+ [constants_1.CouchDBKeys.VIEW, "view"],
186
+ [core_2.Operator.GROUP_BY, "groupBy"],
187
+ [core_2.Operator.COUNT, "count"],
188
+ [core_2.Operator.SUM, "sum"],
189
+ [core_2.Operator.MAX, "max"],
190
+ [core_2.Operator.MIN, "min"],
191
+ [core_2.Operator.DISTINCT, "distinct"],
192
+ ];
193
+ models.forEach((m) => {
194
+ const tableName = decorator_validation_1.Model.tableName(m);
195
+ const metas = viewKeys.flatMap(([key, kind]) => collectViewMetadata(m, key, kind));
196
+ metas.forEach((meta) => {
197
+ const attr = meta.attribute;
198
+ const viewName = generateViewName(tableName, attr, meta.kind, meta);
199
+ const ddocName = meta.ddoc || generateDesignDocName(tableName, viewName);
200
+ const ddocId = `_design/${ddocName}`;
201
+ const viewDef = normalizeViewMetadata(meta.kind, attr, meta, tableName);
202
+ if (!viewDocs[ddocId]) {
203
+ viewDocs[ddocId] = {
204
+ _id: ddocId,
205
+ language: "javascript",
206
+ views: {},
207
+ };
208
+ }
209
+ viewDocs[ddocId].views[viewName] = viewDef;
210
+ });
211
+ });
212
+ return Object.values(viewDocs);
213
+ }
214
+ function generateViewIndexes(models) {
215
+ const indexes = {};
216
+ const viewKeys = [
217
+ [constants_1.CouchDBKeys.VIEW, "view"],
218
+ [core_2.Operator.GROUP_BY, "groupBy"],
219
+ [core_2.Operator.COUNT, "count"],
220
+ [core_2.Operator.SUM, "sum"],
221
+ [core_2.Operator.MAX, "max"],
222
+ [core_2.Operator.MIN, "min"],
223
+ [core_2.Operator.DISTINCT, "distinct"],
224
+ ];
225
+ models.forEach((m) => {
226
+ const tableName = decorator_validation_1.Model.tableName(m);
227
+ const metas = viewKeys.flatMap(([key, kind]) => collectViewMetadata(m, key, kind));
228
+ metas.forEach((meta) => {
229
+ const key = normalizeKey(meta.key, meta.attribute, meta.compositions);
230
+ if (!key.length)
231
+ return;
232
+ const attribute = key[0];
233
+ const compositions = key.slice(1);
234
+ const directions = meta.directions || [
235
+ core_1.OrderDirection.ASC,
236
+ core_1.OrderDirection.DSC,
237
+ ];
238
+ const baseIndex = (0, utils_1.generateIndexDoc)(attribute, tableName, compositions);
239
+ indexes[baseIndex.name || ""] = baseIndex;
240
+ directions.forEach((direction) => {
241
+ const dirIndex = (0, utils_1.generateIndexDoc)(attribute, tableName, compositions, direction);
242
+ indexes[dirIndex.name || ""] = dirIndex;
243
+ });
244
+ });
245
+ });
246
+ return Object.values(indexes);
247
+ }
248
+ function viewIndexDefinition(meta) {
249
+ const key = normalizeKey(meta.key, meta.attribute);
250
+ return {
251
+ attribute: key[0],
252
+ compositions: key.slice(1).concat(meta.compositions || []),
253
+ directions: meta.directions,
254
+ };
255
+ }
256
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1,7 @@
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ import { Constructor } from "@decaf-ts/decoration";
3
+ import { CreateIndexRequest } from "../types";
4
+ import { CouchDBDesignDoc, ViewIndexDefinition, ViewMetadata } from "./types";
5
+ export declare function generateViews<M extends Model>(models: Constructor<M>[]): CouchDBDesignDoc[];
6
+ export declare function generateViewIndexes<M extends Model>(models: Constructor<M>[]): CreateIndexRequest[];
7
+ export declare function viewIndexDefinition(meta: ViewMetadata): ViewIndexDefinition;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/views/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types.cjs"), exports);
18
+ __exportStar(require("./generator.cjs"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ export * from "./types";
2
+ export * from "./generator";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/views/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAAwB;AACxB,kDAA4B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,44 @@
1
+ import { Condition, OrderDirection } from "@decaf-ts/core";
2
+ export type ViewKey = string | string[];
3
+ export type ViewKind = "view" | "groupBy" | "count" | "sum" | "max" | "min" | "distinct";
4
+ export interface ViewAuthOptions {
5
+ expression?: string;
6
+ field?: string;
7
+ roles?: string[];
8
+ mode?: "any" | "all";
9
+ }
10
+ export interface ViewOptions {
11
+ name?: string;
12
+ ddoc?: string;
13
+ key?: ViewKey;
14
+ value?: ViewKey | "doc" | null;
15
+ map?: string | ((doc: any) => void);
16
+ reduce?: string | ((keys: any, values: any, rereduce: boolean) => any);
17
+ condition?: Condition<any> | string;
18
+ auth?: string | ViewAuthOptions;
19
+ compositions?: string[];
20
+ directions?: OrderDirection[];
21
+ returnDocs?: boolean;
22
+ }
23
+ export interface AggregateOptions extends ViewOptions {
24
+ value?: any;
25
+ }
26
+ export interface ViewMetadata extends ViewOptions {
27
+ kind: ViewKind;
28
+ attribute: string;
29
+ }
30
+ export interface CouchDBViewDefinition {
31
+ map: string;
32
+ reduce?: string;
33
+ }
34
+ export interface CouchDBDesignDoc {
35
+ _id: string;
36
+ _rev?: string;
37
+ language?: "javascript";
38
+ views: Record<string, CouchDBViewDefinition>;
39
+ }
40
+ export interface ViewIndexDefinition {
41
+ attribute: string;
42
+ compositions?: string[];
43
+ directions?: OrderDirection[];
44
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/for-couchdb",
3
- "version": "0.4.28",
3
+ "version": "0.4.30",
4
4
  "description": "template for ts projects",
5
5
  "type": "module",
6
6
  "exports": {