@steedos/utils 2.5.11-beta.10

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/lib/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './queryMetadata';
package/lib/index.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./queryMetadata"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAQA,0DAAgC"}
@@ -0,0 +1,13 @@
1
+ import { SteedosIDType, SteedosQueryOptions } from './types';
2
+ declare class MetadataDriver {
3
+ formatFiltersToMongoQuery(filters: any): any;
4
+ getMongoFilters(filters: any): any;
5
+ getMongoFieldsOptions(fields: any): {};
6
+ getMongoOptions(options: any): any;
7
+ getMongoSortOptions(sort: any): any;
8
+ getAggregateOptions(options: any): any[];
9
+ queryMetadata(collection: any, queryOptions: any, spaceId: any): import("mingo/cursor").Cursor;
10
+ find(collection: any, query: SteedosQueryOptions, spaceId?: SteedosIDType): import("mingo/types").RawArray;
11
+ }
12
+ export declare const metadataDriver: MetadataDriver;
13
+ export {};
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.metadataDriver = void 0;
4
+ var mingo = require("mingo");
5
+ var steedosFilters = require("@steedos/filters");
6
+ var odataV4Mongodb = require("@steedos/odata-v4-mongodb");
7
+ var clone = require("clone");
8
+ var _ = require("underscore");
9
+ var MetadataDriver = (function () {
10
+ function MetadataDriver() {
11
+ }
12
+ MetadataDriver.prototype.formatFiltersToMongoQuery = function (filters) {
13
+ var emptyFilters = {};
14
+ var odataQuery = "";
15
+ if (_.isString(filters)) {
16
+ odataQuery = filters;
17
+ }
18
+ else {
19
+ odataQuery = steedosFilters.formatFiltersToODataQuery(filters);
20
+ }
21
+ if (!odataQuery) {
22
+ return emptyFilters;
23
+ }
24
+ var query = odataV4Mongodb.createFilter(odataQuery);
25
+ return query;
26
+ };
27
+ MetadataDriver.prototype.getMongoFilters = function (filters) {
28
+ var emptyFilters = {};
29
+ if (_.isUndefined(filters)) {
30
+ return emptyFilters;
31
+ }
32
+ if (_.isString(filters) && !filters.length) {
33
+ return emptyFilters;
34
+ }
35
+ if (_.isArray(filters) && !filters.length) {
36
+ return emptyFilters;
37
+ }
38
+ var mongoFilters = this.formatFiltersToMongoQuery(filters);
39
+ return mongoFilters;
40
+ };
41
+ MetadataDriver.prototype.getMongoFieldsOptions = function (fields) {
42
+ if (typeof fields == "string") {
43
+ fields = (fields).split(",").map(function (n) { return n.trim(); });
44
+ }
45
+ if (!(fields && fields.length)) {
46
+ return {};
47
+ }
48
+ var projection = {
49
+ record_permissions: 1,
50
+ is_system: 1,
51
+ };
52
+ (fields).forEach(function (field) {
53
+ if (field) {
54
+ projection[field] = 1;
55
+ }
56
+ });
57
+ return projection;
58
+ };
59
+ MetadataDriver.prototype.getMongoOptions = function (options) {
60
+ if (_.isUndefined(options)) {
61
+ return {};
62
+ }
63
+ var result = {};
64
+ var projection = this.getMongoFieldsOptions(options.fields);
65
+ var sort = this.getMongoSortOptions(options.sort);
66
+ result.projection = projection;
67
+ result.sort = sort;
68
+ result.limit = options.top;
69
+ result.skip = options.skip;
70
+ return result;
71
+ };
72
+ MetadataDriver.prototype.getMongoSortOptions = function (sort) {
73
+ var result = undefined;
74
+ if (sort && typeof sort === "string") {
75
+ var arraySort = sort.split(",").map(function (n) { return n.trim(); });
76
+ var stringSort_1 = "";
77
+ arraySort.forEach(function (n) {
78
+ if (n) {
79
+ stringSort_1 += "".concat(n, ",");
80
+ }
81
+ });
82
+ stringSort_1 = stringSort_1.replace(/,$/g, "");
83
+ result = odataV4Mongodb.createQuery("$orderby=".concat(stringSort_1)).sort;
84
+ }
85
+ return result;
86
+ };
87
+ MetadataDriver.prototype.getAggregateOptions = function (options) {
88
+ if (_.isUndefined(options)) {
89
+ return [];
90
+ }
91
+ var result = [];
92
+ var projection = this.getMongoFieldsOptions(options.fields);
93
+ var sort = this.getMongoSortOptions(options.sort);
94
+ if (!_.isEmpty(projection)) {
95
+ result.push({ $project: projection });
96
+ }
97
+ if (!_.isEmpty(sort)) {
98
+ result.push({ $sort: sort });
99
+ }
100
+ if (options.skip) {
101
+ result.push({ $skip: options.skip });
102
+ }
103
+ if (options.top) {
104
+ result.push({ $limit: options.top });
105
+ }
106
+ return result;
107
+ };
108
+ MetadataDriver.prototype.queryMetadata = function (collection, queryOptions, spaceId) {
109
+ var mongoFilters = this.getMongoFilters(queryOptions.filters);
110
+ if (!spaceId) {
111
+ var str = JSON.stringify(mongoFilters);
112
+ var regex = /"space":"([^"]+)"/;
113
+ var match = regex.exec(str);
114
+ var space = match ? match[1] : null;
115
+ if (space) {
116
+ spaceId = space;
117
+ }
118
+ }
119
+ var _collection = clone(collection);
120
+ _.each(_collection, function (item) {
121
+ try {
122
+ if (!item.space && spaceId) {
123
+ item.space = spaceId;
124
+ }
125
+ }
126
+ catch (error) {
127
+ console.error("metadata driver queryMetadata: ".concat(item, " is not json data"));
128
+ }
129
+ });
130
+ var mongoOptions = this.getMongoOptions(queryOptions);
131
+ var query = new mingo.Query(mongoFilters);
132
+ var projection = queryOptions.projection ? Object.assign({}, queryOptions.projection, {
133
+ record_permissions: 1,
134
+ is_system: 1,
135
+ }) : null;
136
+ var cursor = query.find(_collection, projection);
137
+ if (mongoOptions.sort) {
138
+ cursor.sort(mongoOptions.sort);
139
+ }
140
+ return cursor;
141
+ };
142
+ MetadataDriver.prototype.find = function (collection, query, spaceId) {
143
+ var result = this.queryMetadata(collection, query, spaceId).all();
144
+ return result;
145
+ };
146
+ return MetadataDriver;
147
+ }());
148
+ exports.metadataDriver = new MetadataDriver();
149
+ //# sourceMappingURL=queryMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryMetadata.js","sourceRoot":"","sources":["../src/queryMetadata.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@steedos/utils",
3
+ "private": false,
4
+ "version": "2.5.11-beta.10",
5
+ "description": "",
6
+ "main": "lib/index.js",
7
+ "scripts": {
8
+ "build": "rm -rf ./lib && tsc"
9
+ },
10
+ "dependencies":{
11
+ "mingo": "^6.0.5",
12
+ "@steedos/filters": "2.5.11-beta.10",
13
+ "@steedos/odata-v4-mongodb": "2.5.11-beta.10",
14
+ "clone": "^2.1.2",
15
+ "underscore": "1.5.2"
16
+ },
17
+ "author": "",
18
+ "license": "ISC",
19
+ "types": "lib/index.d.ts",
20
+ "publishConfig": {
21
+ "access": "public"
22
+ }
23
+ }