couchset 0.2.0 → 0.2.4

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.
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
@@ -1 +1 @@
1
- {"version":3,"file":"couchbase.js","sourceRoot":"","sources":["../src/couchbase.ts"],"names":[],"mappings":";;AAAA,qCAAoC;AAEpC,IAAI,SAAS,CAAC;AAEd,IAAM,IAAI,GAAG,IAAA,aAAM,GAAE,CAAC;AAEtB,IAAI,IAAI,EAAE;IACN,SAAS,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC/C;KAAM;IACH,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACpC;AAED,kBAAe,SAAS,CAAC","sourcesContent":["import {isEdge} from './utils/edge';\n\nlet couchbase;\n\nconst edge = isEdge();\n\nif (edge) {\n couchbase = require('couchbase-serverless');\n} else {\n couchbase = require('couchbase');\n}\n\nexport default couchbase;\n"]}
1
+ {"version":3,"file":"couchbase.js","sourceRoot":"","sources":["../src/couchbase.ts"],"names":[],"mappings":";;AAAA,qCAAoC;AAEpC,IAAI,SAAS,CAAC;AAEd,IAAM,IAAI,GAAG,IAAA,aAAM,GAAE,CAAC;AAEtB,IAAI,IAAI,EAAE,CAAC;IACP,SAAS,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAChD,CAAC;KAAM,CAAC;IACJ,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACrC,CAAC;AAED,kBAAe,SAAS,CAAC","sourcesContent":["import {isEdge} from './utils/edge';\n\nlet couchbase;\n\nconst edge = isEdge();\n\nif (edge) {\n couchbase = require('couchbase-serverless');\n} else {\n couchbase = require('couchbase');\n}\n\nexport default couchbase;\n"]}
package/dist/index.js CHANGED
@@ -23,8 +23,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
23
23
  });
24
24
  };
25
25
  var __generator = (this && this.__generator) || function (thisArg, body) {
26
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
27
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
26
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
27
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
28
28
  function verb(n) { return function (v) { return step([n, v]); }; }
29
29
  function step(op) {
30
30
  if (f) throw new TypeError("Generator is already executing.");
@@ -20,8 +20,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
20
20
  });
21
21
  };
22
22
  var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
25
  function verb(n) { return function (v) { return step([n, v]); }; }
26
26
  function step(op) {
27
27
  if (f) throw new TypeError("Generator is already executing.");
@@ -276,12 +276,12 @@ var Model = /** @class */ (function () {
276
276
  * @param args PaginationArgs
277
277
  */
278
278
  Model.prototype.pagination = function (_a) {
279
- var select = _a.select, where = _a.where, orderBy = _a.orderBy, limit = _a.limit, page = _a.page, _b = _a.customQuery, customQuery = _b === void 0 ? {} : _b;
280
- return __awaiter(this, void 0, void 0, function () {
279
+ return __awaiter(this, arguments, void 0, function (_b) {
281
280
  var whereEx, bucketName, rows;
282
281
  var _this = this;
283
- return __generator(this, function (_c) {
284
- switch (_c.label) {
282
+ var select = _b.select, where = _b.where, orderBy = _b.orderBy, limit = _b.limit, page = _b.page, _c = _b.customQuery, customQuery = _c === void 0 ? {} : _c;
283
+ return __generator(this, function (_d) {
284
+ switch (_d.label) {
285
285
  case 0:
286
286
  this.fresh(); // refresh
287
287
  whereEx = { _type: { $eq: this.collectionName } };
@@ -298,7 +298,7 @@ var Model = /** @class */ (function () {
298
298
  orderBy: orderBy,
299
299
  })];
300
300
  case 1:
301
- rows = _c.sent();
301
+ rows = _d.sent();
302
302
  return [2 /*return*/, rows.map(function (r) { return (0, utils_1.parseSchema)(_this.schema, r); })];
303
303
  }
304
304
  });
@@ -310,11 +310,11 @@ var Model = /** @class */ (function () {
310
310
  * @returns
311
311
  */
312
312
  Model.prototype.customQuery = function (_a) {
313
- var params = _a.params, limit = _a.limit, query = _a.query;
314
- return __awaiter(this, void 0, void 0, function () {
313
+ return __awaiter(this, arguments, void 0, function (_b) {
315
314
  var response;
316
- return __generator(this, function (_b) {
317
- switch (_b.label) {
315
+ var params = _b.params, limit = _b.limit, query = _b.query;
316
+ return __generator(this, function (_c) {
317
+ switch (_c.label) {
318
318
  case 0:
319
319
  this.fresh(); // refresh
320
320
  return [4 /*yield*/, (0, search_1.CustomQuery)({
@@ -323,7 +323,7 @@ var Model = /** @class */ (function () {
323
323
  query: query,
324
324
  })];
325
325
  case 1:
326
- response = _b.sent();
326
+ response = _c.sent();
327
327
  return [2 /*return*/, response];
328
328
  }
329
329
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Collection, GetOptions, RemoveOptions, ReplaceOptions, UpsertOptions} from 'couchbase';\n\n// import {AutomaticMethodOptions, AutomaticOutput, automateImplementation} from '../automate';\nimport {CustomQuery, CustomQueryPagination} from '../search';\nimport {SchemaTypes, parseSchema} from '../utils';\nimport CouchbaseConnection from '../connection';\nimport {Pagination} from '../pagination';\nimport {generateUUID} from '../uuid';\n\nexport interface AutoModelFields {\n id: string;\n createdAt: Date;\n updatedAt?: Date;\n deleted?: Date;\n _type: string; // type for models/collections\n _scope: string; // scope for collections\n}\n\nexport interface UpdateOptions extends ReplaceOptions {\n silent?: boolean; // whether to updatedAt;\n}\n\nexport interface ModalOptions {\n scope?: string;\n schema?: Record<string, SchemaTypes>;\n graphqlType?: any;\n}\n\nexport class Model {\n collection: Collection;\n collectionName: string;\n scope = '_default';\n schema: Record<string, SchemaTypes> = {\n createdAt: 'date',\n updatedAt: 'date',\n };\n graphqlType = null;\n\n constructor(name: string, options?: ModalOptions) {\n // this.collection = CouchbaseConnection.Instance.getCollection();\n this.collectionName = name;\n if (options) {\n this.graphqlType = (options && options.graphqlType) || null;\n this.scope = (options && options.scope) || '_default';\n this.schema = {\n ...((options && options.schema) || {}),\n createdAt: 'date',\n updatedAt: 'date',\n };\n }\n }\n\n /**\n * Set setGraphqlType\n * setGraphqlType\n */\n public setGraphqlType(gqlType: any): Model {\n this.graphqlType = gqlType;\n return this;\n }\n\n /**\n * Refresh and get default collection from CouchbaseConnection\n * Because CouchbaseConnection is a singleton, sometimes it might be undefined depending when model was created\n * So we have to call it from all model methods\n * to avoid error `Cannot read property 'defaultCollection' of null`\n */\n public fresh(): void {\n // if couchbase connection has been init\n if (CouchbaseConnection.Instance.bucketName) {\n this.collection = CouchbaseConnection.Instance.getCollection();\n }\n }\n\n /** Get this collection\n * getCollection\n */\n public getBucketName(): string {\n return CouchbaseConnection.Instance?.getBucket();\n }\n\n /** Get this collection\n * getCollection\n */\n public couchbaseConnection(): CouchbaseConnection {\n return CouchbaseConnection.Instance;\n }\n\n /** Get this collection\n * getCollection\n */\n public getCollection(): Collection {\n this.fresh();\n return this.collection;\n }\n\n /**\n * create\n */\n public async create<T>(data: T, options?: UpsertOptions): Promise<T & AutoModelFields> {\n this.fresh();\n const id = generateUUID();\n const createdData = {\n id, // let id be override\n ...data,\n createdAt: new Date(),\n updatedAt: new Date(), // same as created at\n _type: this.collectionName,\n _scope: this.scope,\n };\n\n try {\n await this.collection.upsert(createdData.id, createdData, options);\n return parseSchema(this.schema, createdData);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * findById\n */\n public async findById(id: string, options?: GetOptions): Promise<any & AutoModelFields> {\n this.fresh();\n try {\n const data = await this.collection.get(id, options);\n return parseSchema(this.schema, data.content);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * update\n */\n public async updateById<T>(id: string, data: T, opt?: UpdateOptions): Promise<T> {\n this.fresh();\n\n const {silent = false, ...options} = opt || {};\n\n const updatedDocument: any = {\n ...data,\n id,\n _type: this.collectionName, // type and scope must be defined\n _scope: this.scope,\n };\n\n if (!silent) {\n updatedDocument.updatedAt = new Date();\n }\n\n try {\n await this.collection.replace(id, updatedDocument, options);\n return parseSchema(this.schema, updatedDocument);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * save\n */\n public async save<T>(data: T & {id: string}, opt?: UpdateOptions): Promise<T> {\n this.fresh();\n\n const id = data && data.id;\n\n const {silent = false, ...options} = opt || {};\n\n const updatedDocument: any = {\n ...data,\n id,\n _type: this.collectionName, // type and scope must be defined\n _scope: this.scope,\n };\n\n if (!silent) {\n updatedDocument.updatedAt = new Date();\n }\n\n try {\n if (!id) {\n throw new Error('document must have id');\n }\n await this.collection.replace(id, updatedDocument, options);\n return parseSchema(this.schema, updatedDocument);\n } catch (error) {\n console.error(error);\n throw error;\n }\n }\n\n public async delete(id: string, options?: RemoveOptions): Promise<boolean> {\n this.fresh();\n try {\n await this.collection.remove(id, options);\n return true;\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Pagination\n * \n select = ['id', 'createdAt']\n where = {\n where: { owner: { $eq: \"stoqey\" }, _type: { $eq: \"Trade\" } },\n },\n page = 0,\n limit = 10,\n orderBy = { createdAt: \"DESC\" },\n * @param args PaginationArgs\n */\n public async pagination({\n select,\n where,\n orderBy,\n limit,\n page,\n customQuery = {},\n }: {\n select?: any[] | string;\n where?: any;\n orderBy?: any;\n limit?: number;\n page?: number;\n customQuery?: any; // can be $and or any other valid quries\n }): Promise<any[]> {\n this.fresh(); // refresh\n // Where begins here\n let whereEx = {_type: {$eq: this.collectionName}};\n\n if (where) {\n whereEx = {\n ...whereEx,\n ...where,\n };\n }\n\n const bucketName = CouchbaseConnection.Instance.bucketName;\n\n const rows = await Pagination({\n bucketName,\n select,\n where: {where: whereEx, ...customQuery},\n limit,\n page,\n orderBy,\n });\n\n return rows.map((r) => parseSchema(this.schema, r));\n }\n\n /**\n * Run a custom query with model parsing\n * @param { select, query }\n * @returns\n */\n public async customQuery<T>({\n params,\n limit,\n query,\n }: {\n params: any;\n limit: number;\n query: string;\n }): Promise<[T[], CustomQueryPagination]> {\n this.fresh(); // refresh\n // Where begins here\n\n const response = await CustomQuery<T>({\n limit,\n params,\n query,\n });\n\n return response;\n }\n\n public parse<T>(data: T): T {\n this.fresh(); // refresh\n return parseSchema(this.schema, data);\n }\n\n // /**\n // *\n // * @param args AutomaticModelOptions\n // * @returns\n // */\n // public automate(args?: Partial<AutomaticMethodOptions>): AutomaticOutput {\n // this.fresh(); // refresh\n // return automateImplementation(this.graphqlType, {model: this, ...args});\n // }\n}\n\nexport default Model;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Collection, GetOptions, RemoveOptions, ReplaceOptions, UpsertOptions} from 'couchbase';\n\n// import {AutomaticMethodOptions, AutomaticOutput, automateImplementation} from '../automate';\nimport {CustomQuery, CustomQueryPagination} from '../search';\nimport {SchemaTypes, parseSchema} from '../utils';\nimport CouchbaseConnection from '../connection';\nimport {Pagination} from '../pagination';\nimport {generateUUID} from '../uuid';\n\nexport interface AutoModelFields {\n id: string;\n createdAt: Date;\n updatedAt?: Date;\n deleted?: Date;\n _type: string; // type for models/collections\n _scope: string; // scope for collections\n}\n\nexport interface UpdateOptions extends ReplaceOptions {\n silent?: boolean; // whether to updatedAt;\n}\n\nexport interface ModalOptions {\n scope?: string;\n schema?: Record<string, SchemaTypes>;\n graphqlType?: any;\n}\n\nexport class Model {\n collection: Collection;\n collectionName: string;\n scope = '_default';\n schema: Record<string, SchemaTypes> = {\n createdAt: 'date',\n updatedAt: 'date',\n };\n graphqlType = null;\n\n constructor(name: string, options?: ModalOptions) {\n // this.collection = CouchbaseConnection.Instance.getCollection();\n this.collectionName = name;\n if (options) {\n this.graphqlType = (options && options.graphqlType) || null;\n this.scope = (options && options.scope) || '_default';\n this.schema = {\n ...((options && options.schema) || {}),\n createdAt: 'date',\n updatedAt: 'date',\n };\n }\n }\n\n /**\n * Set setGraphqlType\n * setGraphqlType\n */\n public setGraphqlType(gqlType: any): Model {\n this.graphqlType = gqlType;\n return this;\n }\n\n /**\n * Refresh and get default collection from CouchbaseConnection\n * Because CouchbaseConnection is a singleton, sometimes it might be undefined depending when model was created\n * So we have to call it from all model methods\n * to avoid error `Cannot read property 'defaultCollection' of null`\n */\n public fresh(): void {\n // if couchbase connection has been init\n if (CouchbaseConnection.Instance.bucketName) {\n this.collection = CouchbaseConnection.Instance.getCollection();\n }\n }\n\n /** Get this collection\n * getCollection\n */\n public getBucketName(): string {\n return CouchbaseConnection.Instance?.getBucket();\n }\n\n /** Get this collection\n * getCollection\n */\n public couchbaseConnection(): CouchbaseConnection {\n return CouchbaseConnection.Instance;\n }\n\n /** Get this collection\n * getCollection\n */\n public getCollection(): Collection {\n this.fresh();\n return this.collection;\n }\n\n /**\n * create\n */\n public async create<T>(data: T, options?: UpsertOptions): Promise<T & AutoModelFields> {\n this.fresh();\n const id = generateUUID();\n const createdData = {\n id, // let id be override\n ...data,\n createdAt: new Date(),\n updatedAt: new Date(), // same as created at\n _type: this.collectionName,\n _scope: this.scope,\n };\n\n try {\n await this.collection.upsert(createdData.id, createdData, options);\n return parseSchema(this.schema, createdData);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * findById\n */\n public async findById(id: string, options?: GetOptions): Promise<any & AutoModelFields> {\n this.fresh();\n try {\n const data = await this.collection.get(id, options);\n return parseSchema(this.schema, data.content);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * update\n */\n public async updateById<T>(id: string, data: T, opt?: UpdateOptions): Promise<T> {\n this.fresh();\n\n const {silent = false, ...options} = opt || {};\n\n const updatedDocument: any = {\n ...data,\n id,\n _type: this.collectionName, // type and scope must be defined\n _scope: this.scope,\n };\n\n if (!silent) {\n updatedDocument.updatedAt = new Date();\n }\n\n try {\n await this.collection.replace(id, updatedDocument, options);\n return parseSchema(this.schema, updatedDocument);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * save\n */\n public async save<T>(data: T & {id: string}, opt?: UpdateOptions): Promise<T> {\n this.fresh();\n\n const id = data && data.id;\n\n const {silent = false, ...options} = opt || {};\n\n const updatedDocument: any = {\n ...data,\n id,\n _type: this.collectionName, // type and scope must be defined\n _scope: this.scope,\n };\n\n if (!silent) {\n updatedDocument.updatedAt = new Date();\n }\n\n try {\n if (!id) {\n throw new Error('document must have id');\n }\n await this.collection.replace(id, updatedDocument, options);\n return parseSchema(this.schema, updatedDocument);\n } catch (error) {\n console.error(error);\n throw error;\n }\n }\n\n public async delete(id: string, options?: RemoveOptions): Promise<boolean> {\n this.fresh();\n try {\n await this.collection.remove(id, options);\n return true;\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Pagination\n * \n select = ['id', 'createdAt']\n where = {\n where: { owner: { $eq: \"stoqey\" }, _type: { $eq: \"Trade\" } },\n },\n page = 0,\n limit = 10,\n orderBy = { createdAt: \"DESC\" },\n * @param args PaginationArgs\n */\n public async pagination({\n select,\n where,\n orderBy,\n limit,\n page,\n customQuery = {},\n }: {\n select?: any[] | string;\n where?: any;\n orderBy?: any;\n limit?: number;\n page?: number;\n customQuery?: any; // can be $and or any other valid quries\n }): Promise<any[]> {\n this.fresh(); // refresh\n // Where begins here\n let whereEx = {_type: {$eq: this.collectionName}};\n\n if (where) {\n whereEx = {\n ...whereEx,\n ...where,\n };\n }\n\n const bucketName = CouchbaseConnection.Instance.bucketName;\n\n const rows = await Pagination({\n bucketName,\n select,\n where: {where: whereEx, ...customQuery},\n limit,\n page,\n orderBy,\n });\n\n return rows.map((r) => parseSchema(this.schema, r));\n }\n\n /**\n * Run a custom query with model parsing\n * @param { select, query }\n * @returns\n */\n public async customQuery<T>({\n params,\n limit,\n query,\n }: {\n params: any;\n limit: number;\n query: string;\n }): Promise<[T[], CustomQueryPagination]> {\n this.fresh(); // refresh\n // Where begins here\n\n const response = await CustomQuery<T>({\n limit,\n params,\n query,\n });\n\n return response;\n }\n\n public parse<T>(data: T): T {\n this.fresh(); // refresh\n return parseSchema(this.schema, data);\n }\n\n // /**\n // *\n // * @param args AutomaticModelOptions\n // * @returns\n // */\n // public automate(args?: Partial<AutomaticMethodOptions>): AutomaticOutput {\n // this.fresh(); // refresh\n // return automateImplementation(this.graphqlType, {model: this, ...args});\n // }\n}\n\nexport default Model;\n"]}
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/pagination/pagination.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kCAAsC;AACtC,6DAAgD;AAWhD;;;;;;;;;GASG;AACI,IAAM,UAAU,GAAG,UAAO,IAAoB;;;;;;;gBAE7C,KAQA,IAAI,WARmB,EAAvB,UAAU,mBAAG,UAAU,KAAA,EAEvB,KAMA,IAAI,MAJH,EAFD,KAAK,mBAAG;gBACJ,0DAA0D;iBAC7D,KAAA,EACD,KAGA,IAAI,KAHI,EAAR,IAAI,mBAAG,CAAC,KAAA,EACR,KAEA,IAAI,MAFM,EAAV,KAAK,mBAAG,EAAE,KAAA,EACV,KACA,IAAI,QADyB,EAA7B,OAAO,mBAAG,EAAC,SAAS,EAAE,MAAM,EAAC,KAAA,CACxB;gBAEH,OAAO,GAAG,oBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAEjD,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;gBAChC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACvB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,EAAC,MAAM,EAAE,CAAC,EAAC,CAAC,EAAb,CAAa,CAAC,CAAC;iBAC7C;gBAEK,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;;;;gBAGlB,KAAK,GAAG,IAAI,oBAAY,CAAC,KAAK,EAAE,UAAU,CAAC;qBAC5C,MAAM,CAAC,MAAM,CAAC;qBACd,KAAK,CAAC,KAAK,CAAC;qBACZ,MAAM,CAAC,MAAM,CAAC;qBACd,OAAO,CAAC,OAAO,CAAC;qBAChB,KAAK,EAAE,CAAC;gBAEb,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAEb,qBAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAA;;gBAAlC,IAAI,GAAI,CAAA,SAA0B,CAAA,KAA9B;gBAEL,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,CAAM;oBAClC,OAAO,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;gBAEH,sBAAO,aAAa,EAAC;;;gBAErB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,OAAK,CAAC,CAAC;gBACjD,sBAAO,EAAE,EAAC;;;;KAEjB,CAAC;AA1CW,QAAA,UAAU,cA0CrB","sourcesContent":["import {QueryBuilder} from '../query';\nimport CouchbaseConnection from '../connection';\n\nexport interface PaginationArgs {\n bucketName: string;\n select?: any[] | string;\n where: any;\n page: number;\n limit: number;\n orderBy?: any;\n}\n\n/**\n * Common pagination\n * where = {\n where: { owner: { $eq: \"stoqey\" }, _type: { $eq: \"Trade\" } },\n },\n page = 0,\n limit = 10,\n orderBy = { createdAt: \"DESC\" },\n * @param args PaginationArgs\n */\nexport const Pagination = async (args: PaginationArgs): Promise<any[]> => {\n const {\n bucketName = '_default',\n // select: ogSelected = '*',\n where = {\n // where: {owner: {$eq: 'stoqey'}, _type: {$eq: 'Trade'}},\n },\n page = 0,\n limit = 10,\n orderBy = {createdAt: 'DESC'},\n } = args;\n\n const cluster = CouchbaseConnection.Instance.cluster;\n\n let select = args.select || '*';\n if (Array.isArray(select)) {\n select = select.map((i) => ({$field: i}));\n }\n\n const offset = page * limit;\n\n try {\n const query = new QueryBuilder(where, bucketName)\n .select(select)\n .limit(limit)\n .offset(offset)\n .orderBy(orderBy)\n .build();\n\n console.log('query', query);\n\n const {rows} = await cluster.query(query);\n\n const completedRows = rows.map((r: any) => {\n return select === '*' ? r[bucketName] : r;\n });\n\n return completedRows;\n } catch (error) {\n console.error('error running pagination', error);\n return [];\n }\n};\n"]}
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/pagination/pagination.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kCAAsC;AACtC,6DAAgD;AAWhD;;;;;;;;;GASG;AACI,IAAM,UAAU,GAAG,UAAO,IAAoB;;;;;;;gBAE7C,KAQA,IAAI,WARmB,EAAvB,UAAU,mBAAG,UAAU,KAAA,EAEvB,KAMA,IAAI,MAJH,EAFD,KAAK,mBAAG;gBACJ,0DAA0D;iBAC7D,KAAA,EACD,KAGA,IAAI,KAHI,EAAR,IAAI,mBAAG,CAAC,KAAA,EACR,KAEA,IAAI,MAFM,EAAV,KAAK,mBAAG,EAAE,KAAA,EACV,KACA,IAAI,QADyB,EAA7B,OAAO,mBAAG,EAAC,SAAS,EAAE,MAAM,EAAC,KAAA,CACxB;gBAEH,OAAO,GAAG,oBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAEjD,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;gBAChC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,EAAC,MAAM,EAAE,CAAC,EAAC,CAAC,EAAb,CAAa,CAAC,CAAC;gBAC9C,CAAC;gBAEK,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;;;;gBAGlB,KAAK,GAAG,IAAI,oBAAY,CAAC,KAAK,EAAE,UAAU,CAAC;qBAC5C,MAAM,CAAC,MAAM,CAAC;qBACd,KAAK,CAAC,KAAK,CAAC;qBACZ,MAAM,CAAC,MAAM,CAAC;qBACd,OAAO,CAAC,OAAO,CAAC;qBAChB,KAAK,EAAE,CAAC;gBAEb,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAEb,qBAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAA;;gBAAlC,IAAI,GAAI,CAAA,SAA0B,CAAA,KAA9B;gBAEL,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,CAAM;oBAClC,OAAO,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;gBAEH,sBAAO,aAAa,EAAC;;;gBAErB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,OAAK,CAAC,CAAC;gBACjD,sBAAO,EAAE,EAAC;;;;KAEjB,CAAC;AA1CW,QAAA,UAAU,cA0CrB","sourcesContent":["import {QueryBuilder} from '../query';\nimport CouchbaseConnection from '../connection';\n\nexport interface PaginationArgs {\n bucketName: string;\n select?: any[] | string;\n where: any;\n page: number;\n limit: number;\n orderBy?: any;\n}\n\n/**\n * Common pagination\n * where = {\n where: { owner: { $eq: \"stoqey\" }, _type: { $eq: \"Trade\" } },\n },\n page = 0,\n limit = 10,\n orderBy = { createdAt: \"DESC\" },\n * @param args PaginationArgs\n */\nexport const Pagination = async (args: PaginationArgs): Promise<any[]> => {\n const {\n bucketName = '_default',\n // select: ogSelected = '*',\n where = {\n // where: {owner: {$eq: 'stoqey'}, _type: {$eq: 'Trade'}},\n },\n page = 0,\n limit = 10,\n orderBy = {createdAt: 'DESC'},\n } = args;\n\n const cluster = CouchbaseConnection.Instance.cluster;\n\n let select = args.select || '*';\n if (Array.isArray(select)) {\n select = select.map((i) => ({$field: i}));\n }\n\n const offset = page * limit;\n\n try {\n const query = new QueryBuilder(where, bucketName)\n .select(select)\n .limit(limit)\n .offset(offset)\n .orderBy(orderBy)\n .build();\n\n console.log('query', query);\n\n const {rows} = await cluster.query(query);\n\n const completedRows = rows.map((r: any) => {\n return select === '*' ? r[bucketName] : r;\n });\n\n return completedRows;\n } catch (error) {\n console.error('error running pagination', error);\n return [];\n }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/query/exceptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;IAA2C,yCAAK;IAC5C;QACI,sBAAsB;eACtB,kBAAM,sDAAsD,CAAC;IACjE,CAAC;IACL,4BAAC;AAAD,CAAC,AALD,CAA2C,KAAK,GAK/C;AALY,sDAAqB;AAOlC;IAA0C,wCAAK;IAC3C;eACI,kBAAM,qDAAqD,CAAC;IAChE,CAAC;IACL,2BAAC;AAAD,CAAC,AAJD,CAA0C,KAAK,GAI9C;AAJY,oDAAoB;AAMjC;IAAgD,8CAAoB;IAChE;QAAA,YACI,iBAAO,SAEV;QADG,KAAI,CAAC,OAAO,GAAG,uGAAuG,CAAC;;IAC3H,CAAC;IACL,iCAAC;AAAD,CAAC,AALD,CAAgD,oBAAoB,GAKnE;AALY,gEAA0B;AAMvC;IAAiD,+CAAK;IAClD,qCAAY,KAAa,EAAE,KAAa;eACpC,kBAAM,mDAA4C,KAAK,mBAAS,KAAK,CAAE,CAAC;IAC5E,CAAC;IACL,kCAAC;AAAD,CAAC,AAJD,CAAiD,KAAK,GAIrD;AAJY,kEAA2B;AAMxC;IAAoD,kDAAoB;IACpE,wCAAY,QAAgB;QAA5B,YACI,iBAAO,SAEV;QADG,KAAI,CAAC,OAAO,GAAG,8BAAuB,QAAQ,CAAE,CAAC;;IACrD,CAAC;IACL,qCAAC;AAAD,CAAC,AALD,CAAoD,oBAAoB,GAKvE;AALY,wEAA8B;AAO3C;IAAiD,+CAAoB;IACjE;QAAA,YACI,iBAAO,SAEV;QADG,KAAI,CAAC,OAAO,GAAG,2EAA2E,CAAC;;IAC/F,CAAC;IACL,kCAAC;AAAD,CAAC,AALD,CAAiD,oBAAoB,GAKpE;AALY,kEAA2B;AAOxC;IAA6C,2CAAK;IAC9C,iCAAY,MAAgB;eACxB,kBACI,yEAAkE,IAAI,CAAC,SAAS,CAC5E,MAAM,CACT,CAAE,CACN;IACL,CAAC;IACL,8BAAC;AAAD,CAAC,AARD,CAA6C,KAAK,GAQjD;AARY,0DAAuB;AAUpC;IAAmD,iDAAK;IACpD,uCAAY,MAAgB;eACxB,kBACI,gFAAyE,IAAI,CAAC,SAAS,CACnF,MAAM,CACT,CAAE,CACN;IACL,CAAC;IACL,oCAAC;AAAD,CAAC,AARD,CAAmD,KAAK,GAQvD;AARY,sEAA6B","sourcesContent":["export class SelectClauseException extends Error {\n constructor() {\n // todo update message\n super('The SELECT clause does not have the proper structure');\n }\n}\n\nexport class WhereClauseException extends Error {\n constructor() {\n super('The WHERE clause does not have the proper structure');\n }\n}\n\nexport class InWithinOperatorExceptions extends WhereClauseException {\n constructor() {\n super();\n this.message = `The search_expr, target_expr and operator (IN | WITHIN) values are required for collection operators.`;\n }\n}\nexport class MultipleQueryTypesException extends Error {\n constructor(type1: string, type2: string) {\n super(`Cannot combine multiple query types (ex: ${type1} with ${type2}`);\n }\n}\n\nexport class QueryOperatorNotFoundException extends WhereClauseException {\n constructor(operator: string) {\n super();\n this.message = `Operator not found: ${operator}`;\n }\n}\n\nexport class QueryGroupByParamsException extends WhereClauseException {\n constructor() {\n super();\n this.message = `The GROUP BY clause must be defined to use the LETTING and HAVING clauses`;\n }\n}\n\nexport class IndexParamsOnExceptions extends Error {\n constructor(clause: string[]) {\n super(\n `The ON parameter can only be applied in the following clauses: ${JSON.stringify(\n clause\n )}`\n );\n }\n}\n\nexport class IndexParamsUsingGSIExceptions extends Error {\n constructor(clause: string[]) {\n super(\n `The USING GSI parameter can only be applied in the following clauses: ${JSON.stringify(\n clause\n )}`\n );\n }\n}\n"]}
1
+ {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/query/exceptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;IAA2C,yCAAK;IAC5C;QACI,sBAAsB;QACtB,OAAA,MAAK,YAAC,sDAAsD,CAAC,SAAC;IAClE,CAAC;IACL,4BAAC;AAAD,CAAC,AALD,CAA2C,KAAK,GAK/C;AALY,sDAAqB;AAOlC;IAA0C,wCAAK;IAC3C;QACI,OAAA,MAAK,YAAC,qDAAqD,CAAC,SAAC;IACjE,CAAC;IACL,2BAAC;AAAD,CAAC,AAJD,CAA0C,KAAK,GAI9C;AAJY,oDAAoB;AAMjC;IAAgD,8CAAoB;IAChE;QACI,YAAA,MAAK,WAAE,SAAC;QACR,KAAI,CAAC,OAAO,GAAG,uGAAuG,CAAC;;IAC3H,CAAC;IACL,iCAAC;AAAD,CAAC,AALD,CAAgD,oBAAoB,GAKnE;AALY,gEAA0B;AAMvC;IAAiD,+CAAK;IAClD,qCAAY,KAAa,EAAE,KAAa;QACpC,OAAA,MAAK,YAAC,mDAA4C,KAAK,mBAAS,KAAK,CAAE,CAAC,SAAC;IAC7E,CAAC;IACL,kCAAC;AAAD,CAAC,AAJD,CAAiD,KAAK,GAIrD;AAJY,kEAA2B;AAMxC;IAAoD,kDAAoB;IACpE,wCAAY,QAAgB;QACxB,YAAA,MAAK,WAAE,SAAC;QACR,KAAI,CAAC,OAAO,GAAG,8BAAuB,QAAQ,CAAE,CAAC;;IACrD,CAAC;IACL,qCAAC;AAAD,CAAC,AALD,CAAoD,oBAAoB,GAKvE;AALY,wEAA8B;AAO3C;IAAiD,+CAAoB;IACjE;QACI,YAAA,MAAK,WAAE,SAAC;QACR,KAAI,CAAC,OAAO,GAAG,2EAA2E,CAAC;;IAC/F,CAAC;IACL,kCAAC;AAAD,CAAC,AALD,CAAiD,oBAAoB,GAKpE;AALY,kEAA2B;AAOxC;IAA6C,2CAAK;IAC9C,iCAAY,MAAgB;QACxB,OAAA,MAAK,YACD,yEAAkE,IAAI,CAAC,SAAS,CAC5E,MAAM,CACT,CAAE,CACN,SAAC;IACN,CAAC;IACL,8BAAC;AAAD,CAAC,AARD,CAA6C,KAAK,GAQjD;AARY,0DAAuB;AAUpC;IAAmD,iDAAK;IACpD,uCAAY,MAAgB;QACxB,OAAA,MAAK,YACD,gFAAyE,IAAI,CAAC,SAAS,CACnF,MAAM,CACT,CAAE,CACN,SAAC;IACN,CAAC;IACL,oCAAC;AAAD,CAAC,AARD,CAAmD,KAAK,GAQvD;AARY,sEAA6B","sourcesContent":["export class SelectClauseException extends Error {\n constructor() {\n // todo update message\n super('The SELECT clause does not have the proper structure');\n }\n}\n\nexport class WhereClauseException extends Error {\n constructor() {\n super('The WHERE clause does not have the proper structure');\n }\n}\n\nexport class InWithinOperatorExceptions extends WhereClauseException {\n constructor() {\n super();\n this.message = `The search_expr, target_expr and operator (IN | WITHIN) values are required for collection operators.`;\n }\n}\nexport class MultipleQueryTypesException extends Error {\n constructor(type1: string, type2: string) {\n super(`Cannot combine multiple query types (ex: ${type1} with ${type2}`);\n }\n}\n\nexport class QueryOperatorNotFoundException extends WhereClauseException {\n constructor(operator: string) {\n super();\n this.message = `Operator not found: ${operator}`;\n }\n}\n\nexport class QueryGroupByParamsException extends WhereClauseException {\n constructor() {\n super();\n this.message = `The GROUP BY clause must be defined to use the LETTING and HAVING clauses`;\n }\n}\n\nexport class IndexParamsOnExceptions extends Error {\n constructor(clause: string[]) {\n super(\n `The ON parameter can only be applied in the following clauses: ${JSON.stringify(\n clause\n )}`\n );\n }\n}\n\nexport class IndexParamsUsingGSIExceptions extends Error {\n constructor(clause: string[]) {\n super(\n `The USING GSI parameter can only be applied in the following clauses: ${JSON.stringify(\n clause\n )}`\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/query/helpers/builders.ts"],"names":[],"mappings":";;;AAkBA,4CAMuB;AACvB,kCAA6C;AAE7C,2CAYsB;AAEtB,+BAA+B;AAC/B;;;;;;;;;;;;;KAaK;AACE,IAAM,aAAa,GAAG,UACzB,UAAkB,EAClB,MAA8B,EAC9B,OAAoB,EACpB,KAAwB,EACxB,OAAkC,EAClC,KAAc,EACd,MAAe,EACf,OAAkB,EAClB,WAAwB,EACxB,WAAwB,EACxB,UAA6B,EAC7B,aAAsB;IAEtB,IAAI;QACA,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC5B,IAAI,GAAG,MAAM,CAAC;SACjB;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,IAAI,GAAG,IAAA,4BAAoB,EAAC,MAAM,CAAC,CAAC;SACvC;QACD,IAAM,WAAW,GACb,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC,WAAK,UAAU,CAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;YACtC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAChC,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,WAAK,UAAU,MAAI,CAAC;QAC9B,OAAO,iBAAU,IAAI,mBAAS,WAAW,SACrC,aAAa,CAAC,CAAC,CAAC,WAAI,aAAa,MAAG,CAAC,CAAC,CAAC,EAAE,SAC1C,iBAAiB,CAAC,OAAO,CAAC,SAAG,aAAa,CAAC,OAAO,CAAC,SAAG,IAAA,sBAAc,EACnE,KAAK,CACR,SAAG,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,SAAG,iBAAiB,CAC3E,OAAO,CACV,SAAG,eAAe,CAAC,KAAK,CAAC,SAAG,gBAAgB,CAAC,MAAM,CAAC,CAAE,CAAC;KAC3D;IAAC,OAAO,SAAS,EAAE;QAChB,IAAI,SAAS,YAAY,iCAAoB,EAAE;YAC3C,MAAM,SAAS,CAAC;SACnB;QACD,MAAM,IAAI,kCAAqB,EAAE,CAAC;KACrC;AACL,CAAC,CAAC;AAzCW,QAAA,aAAa,iBAyCxB;AAEF;;KAEK;AACL,IAAM,QAAQ,GAAG,UAAC,CAA0B;IACxC,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAO,CAAC,CAAC,IAAI,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,WAAW,GAAG,UAAC,MAAuB;IACxC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;QAC/B,OAAO,UAAG,IAAA,2BAAmB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAG,QAAQ,CAAC,MAAgB,CAAC,CAAE,CAAC;KAChF;IACD,OAAO,UAAG,IAAA,2BAAmB,EAAC,MAAgB,CAAC,CAAE,CAAC;AACtD,CAAC,CAAC;AAEF;;;;;KAKK;AACE,IAAM,oBAAoB,GAAG,UAAC,MAAqB;IACtD,OAAO,UAAG,MAAM,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,IAAA,uBAAe,EAAC,EAAE,EAAE,CAAC,CAAC,EAAtB,CAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,CAAC;AACpE,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B;AAEF;;;;;;KAMK;AACE,IAAM,eAAe,GAAG,UAAC,IAAY,EAAE,MAAmB;IAC7D,IAAI;QACA,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;YACjC,OAAO,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;SACxC;QACD,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,6BAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACtC,OAAO,UAAG,6BAAgB,CAAC,GAAG,CAAC,cAAI,IAAA,uBAAe,EAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;SAC3E;QACD,IAAI,2BAAc,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACpC,OAAO,UAAG,2BAAc,CAAC,GAAG,CAAC,cAAI,IAAA,uBAAe,EAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;SACzE;QACD,IAAI,oBAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC7B,qDAAqD;YACrD,OAAO,UAAG,oBAAO,CAAC,GAAG,CAAC,cAAI,iBAAiB,CACvC,MAAwB,EACxB,GAAG,CACN,SAAG,IAAA,uBAAe,EAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,cAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;SACrE;QACD,MAAM,IAAI,kCAAqB,EAAE,CAAC;KACrC;IAAC,WAAM;QACJ,MAAM,IAAI,kCAAqB,EAAE,CAAC;KACrC;AACL,CAAC,CAAC;AAvBW,QAAA,eAAe,mBAuB1B;AAEF;;KAEK;AACL,IAAM,iBAAiB,GAAG,UAAC,MAAsB,EAAE,GAAW;IAC1D,IAAI,oBAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QAC7B,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAClC,OAAO,UAAG,6BAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAG,CAAC;SACpD;KACJ;IACD,OAAO,EAAE,CAAC;AACd,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,aAAa,GAAG,UAAC,OAA+B,EAAE,MAAe;IACnE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACzB,CAAC,CAAC,WAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,cAAI,OAAO;aACjC,GAAG,CAAC,UAAC,KAAe,IAAK,OAAA,UAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,GAAG,CAAC,cAAI,KAAK,CAAC,KAAK,CAAE,EAAlD,CAAkD,CAAC;aAC5E,IAAI,CAAC,GAAG,CAAC,CAAE;QAClB,CAAC,CAAC,EAAE,CAAC;AACb,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,iBAAiB,GAAG,UAAC,SAA+C;IACtE,OAAO,CAAC,CAAC,SAAS;QACd,CAAC,CAAC,oBAAa,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aAC9B,GAAG,CAAC,UAAC,KAAa,IAAK,OAAA,UAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,cAAI,SAAS,CAAC,KAAK,CAAC,CAAE,EAAnD,CAAmD,CAAC;aAC3E,IAAI,CAAC,GAAG,CAAC,CAAE;QAClB,CAAC,CAAC,EAAE,CAAC;AACb,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,eAAe,GAAG,UAAC,KAAyB;IAC9C,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAU,KAAK,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,gBAAgB,GAAG,UAAC,MAA0B;IAChD,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,kBAAW,MAAM,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,iBAAiB,GAAG,UAAC,OAA6B;IACpD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAa,eAAe,CAAC,OAAO,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjF,CAAC,CAAC;AAEF,kCAAkC;AAElC,+BAA+B;AAC/B;;GAEG;AACH,IAAM,iBAAiB,GAAG,UACtB,WAAwB,EACxB,WAAwB,EACxB,UAA6B;IAE7B,IAAI;QACA,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE;YAC7C,MAAM,IAAI,wCAA2B,EAAE,CAAC;SAC3C;QACD,IAAI,CAAC,WAAW,EAAE;YACd,OAAO,EAAE,CAAC;SACb;QACD,OAAO,WAAI,aAAa,CAAC,WAAW,CAAC,SAAG,aAAa,CACjD,WAAW,EACX,SAAS,CACZ,SAAG,IAAA,sBAAc,EAAC,UAA8B,EAAE,QAAQ,CAAC,CAAE,CAAC;KAClE;IAAC,WAAM;QACJ,MAAM,IAAI,wCAA2B,EAAE,CAAC;KAC3C;AACL,CAAC,CAAC;AAEF;;GAEG;AACH,IAAM,aAAa,GAAG,UAAC,WAAuB;IAC1C,OAAO,mBAAY,WAAW;SACzB,GAAG,CAAC,UAAC,KAAe;QACjB,OAAO,UAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,IAAI,CAAC,SAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,cAAO,KAAK,CAAC,EAAE,CAAE,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC;IACpF,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAE,CAAC;AACrB,CAAC,CAAC;AAEF,mCAAmC;AAEnC,6BAA6B;AAE7B;;;;;KAKK;AACE,IAAM,cAAc,GAAG,UAAC,IAAkC,EAAE,MAAe;IAC9E,OAAO,IAAI,CAAC,CAAC,CAAC,WAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,cAAI,IAAA,4BAAoB,EAAC,EAAE,EAAE,IAAI,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACzF,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB;AAEF;;;IAGI;AACG,IAAM,oBAAoB,GAAG,UAAC,MAAwB;IACzD,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,KAAK,IAAM,GAAG,IAAI,MAAM,EAAE;QACtB,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC5E,KAAK,GAAG,IAAI,CAAC;YACb,MAAM;SACT;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AATW,QAAA,oBAAoB,wBAS/B;AAEF;;;;;;KAMK;AACE,IAAM,oBAAoB,GAAG,UAAC,IAAY,EAAE,MAAwB;IACvE,IAAI;QACA,IAAI,CAAC,IAAA,4BAAoB,EAAC,MAAM,CAAC,EAAE;YAC/B,OAAO,qBAAqB,CACxB,MAAyE,CAC5E,CAAC;SACL;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aACrB,GAAG,CAAC,UAAC,GAAG;;YACL,IAAI,yCAA4B,CAAC,GAAG,CAAC,EAAE;gBACnC,OAAO,UAAG,yBAAyB,CAC/B,GAA+B,EAC/B,MAAM,CAAC,GAAG,CAAC,CACd,CAAE,CAAC;aACP;YACD,IAAI,2CAA8B,CAAC,GAAG,CAAC,EAAE;gBACrC,OAAO,UAAG,gCAAgC,CACtC,GAAiC,EACjC,MAAM,CAAC,GAAG,CAAC,CACd,CAAE,CAAC;aACP;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC5B,IAAM,MAAM,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,UAAG,gCAAmB,CAAC,GAAG,CAAC,MAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,IAAM,MAAM,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAI,gCAAmB,CAAC,GAAG,CAAC,MAAG,CAAC;gBAC1E,OAAO,UAAG,MAAM,cAAI,MAAM,CAAC,GAAG,CAAC;qBAC1B,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,IAAA,4BAAoB,EAAC,IAAI,EAAE,KAAyB,CAAC,EAArD,CAAqD,CAAC;qBACrE,IAAI,CAAC,MAAM,CAAC,MAAG,CAAC;aACxB;iBAAM;gBACH,OAAO,UAAG,IAAA,4BAAoB,EAAC,IAAI,YAAG,GAAC,GAAG,IAAG,MAAM,CAAC,GAAG,CAAC,MAAE,CAAE,CAAC;aAChE;QACL,CAAC,CAAC;aACD,IAAI,CAAC,OAAO,CAAC,CAAC;KACtB;IAAC,OAAO,SAAS,EAAE;QAChB,IAAI,SAAS,YAAY,iCAAoB,EAAE;YAC3C,MAAM,SAAS,CAAC;SACnB;QACD,MAAM,IAAI,iCAAoB,EAAE,CAAC;KACpC;AACL,CAAC,CAAC;AAvCW,QAAA,oBAAoB,wBAuC/B;AAEF;;KAEK;AACL,IAAM,qBAAqB,GAAG,UAC1B,KAAsE;IAEtE,IAAI;QACA,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAC,KAAa;YAC9C,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;gBAClE,OAAO,UAAG,2BAA2B,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAwB,CAAC,CAAE,CAAC;aACvF;YACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACtB,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;oBAClC,OAAO,UAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,cAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;iBAC3E;gBACD,IACI,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ;oBAChC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS;oBACjC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAC7B;oBACE,OAAO,UAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,cAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;iBAC3E;aACJ;YACD,MAAM,IAAI,2CAA8B,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC7B;IAAC,OAAO,SAAS,EAAE;QAChB,IAAI,SAAS,YAAY,iCAAoB,EAAE;YAC3C,MAAM,SAAS,CAAC;SACnB;QACD,MAAM,IAAI,iCAAoB,EAAE,CAAC;KACpC;AACL,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,2BAA2B,GAAG,UAAC,SAAiB,EAAE,UAA+B;IACnF,IAAI;QACA,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;aAC/B,GAAG,CAAC,UAAC,KAAa;YACf,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBACrB,IAAI,wCAA2B,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBACnD,OAAO,UAAG,IAAA,2BAAmB,EAAC,SAAS,CAAC,cACpC,wCAA2B,CAAC,KAAK,CAAC,CACpC,CAAC;iBACN;gBACD,IAAI,yCAA4B,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBACpD,OAAO,UAAG,IAAA,2BAAmB,EAAC,SAAS,CAAC,SACpC,yCAA4B,CAAC,KAAK,CAAC,SACpC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;iBAC3C;gBACD,IAAI,+CAAkC,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBAC1D,OAAO,UAAG,IAAA,2BAAmB,EAAC,SAAS,CAAC,cACpC,+CAAkC,CAAC,KAAK,CAAC,cACzC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;iBAC5C;gBACD,IACI,2CAA8B,CAAC,cAAc,CAAC,KAAK,CAAC;oBACpD,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAClC;oBACE,OAAO,UAAG,IAAA,2BAAmB,EAAC,SAAS,CAAC,cACpC,2CAA8B,CAAC,KAAK,CAAC,cACrC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,eAAe,CAAC,CAAC,CAAC,EAAlB,CAAkB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAE,CAAC;iBACxE;aACJ;YACD,MAAM,IAAI,2CAA8B,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC,CAAC;aACD,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAI,IAAI,MAAG,CAAC,CAAC,CAAC,IAAI,CAAC;KAClE;IAAC,OAAO,SAAS,EAAE;QAChB,IAAI,SAAS,YAAY,iCAAoB,EAAE;YAC3C,MAAM,SAAS,CAAC;SACnB;QACD,MAAM,IAAI,iCAAoB,EAAE,CAAC;KACpC;AACL,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,gCAAgC,GAAG,UACrC,EAA8B,EAC9B,IAAqC,EACrC,eAAyB;IAEzB,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAC/C,MAAM,IAAI,uCAA0B,EAAE,CAAC;KAC1C;IACD,OAAO,UAAG,IAAI,CAAC,WAAW,SAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SACtE,2CAA8B,CAAC,EAAE,CAAC,cAClC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAE,CAAC;AACjF,CAAC,CAAC;AAEF,IAAM,eAAe,GAAG,UAAC,KAAc;IACnC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,wBAAwB,GAAG,UAAC,UAA0C;IACxE,IAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,IAAI,CAAC,EAAE,EAAE;QACL,MAAM,IAAI,KAAK,CACX,mGAAmG,CACtG,CAAC;KACL;IACD,OAAO,UAAG,gCAAgC,CACtC,EAAE,EACF,UAAU,CAAC,EAAE,CAAoC,EACjD,IAAI,CACP,CAAE,CAAC;AACR,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,yBAAyB,GAAG,UAC9B,EAA4B,EAC5B,IAA8B;IAE9B,OAAO,UAAG,yCAA4B,CAAC,EAAE,CAAC,cAAI,IAAI,CAAC,KAAK;SACnD,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,wBAAwB,CAAC,KAAK,CAAC,EAA/B,CAA+B,CAAC;SAC/C,IAAI,CAAC,GAAG,CAAC,cAAI,4CAA+B,CAAC,YAAY,CAAC,cAAI,IAAA,4BAAoB,EACnF,EAAE,EACF,IAAI,CAAC,UAAU,CAClB,SAAM,CAAC;AACZ,CAAC,CAAC;AAEF,iCAAiC;AAEjC,6BAA6B;AAE7B;;;;;;;;;;;KAWK;AACE,IAAM,cAAc,GAAG,UAC1B,UAAkB,EAClB,IAAe,EACf,IAAY,EACZ,EAAqB,EACrB,KAAwB,EACxB,QAAkB,EAClB,QAA2B;IAE3B,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;QAC5D,OAAO,UAAG,IAAI,qBAAY,IAAI,mBAAW,UAAU,eAAM,WAAW,CAAC,EAAE,CAAC,cAAI,IAAA,sBAAc,EACtF,KAAK,CACR,cAAI,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,cAAI,aAAa,CAAC,QAAQ,CAAC,CAAE,CAAC;KACjE;SAAM;QACH,OAAO,UAAG,IAAI,qBAAY,UAAU,gBAAQ,IAAI,cAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC;KACvF;AACL,CAAC,CAAC;AAhBW,QAAA,cAAc,kBAgBzB;AAEF;;KAEK;AACL,IAAM,WAAW,GAAG,UAAC,EAAoB;IACrC,OAAO,EAAE;SACJ,GAAG,CAAC,UAAC,KAAqB;QACvB,OAAO,UAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,IAAI,CAAC,SAAG,eAAe,CAAC,KAAK,CAAC,CAAE,CAAC;IACzE,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,eAAe,GAAG,UAAC,MAAuB;IAC5C,IAAI,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;QACzC,OAAO,aAAK,MAAM,CAAC,IAAI,QAAI,CAAC;KAC/B;IACD,OAAO,EAAE,CAAC;AACd,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,aAAa,GAAG,UAAC,QAA2B;IAC9C,IAAI,QAAQ,EAAE;QACV,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;aACnC,GAAG,CAAC,UAAC,KAAa;YACf,QAAQ,KAAK,EAAE;gBACX,KAAK,OAAO;oBACR,OAAO,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/C,KAAK,aAAa,CAAC;gBACnB,KAAK,aAAa;oBACd,OAAO,YAAI,KAAK,iBAAM,QAAQ,CAAC,KAAK,CAAC,CAAE,CAAC;gBAC5C;oBACI,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;aAClE;QACL,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAS,UAAU,MAAG,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD;IACD,OAAO,EAAE,CAAC;AACd,CAAC,CAAC;AAEF;;KAEK;AACL,IAAM,kBAAkB,GAAG,UAAC,aAAwB;IAChD,IAAI,aAAa,EAAE;QACf,OAAO,qBAAY,eAAe,CAAC,aAAa,CAAC,CAAE,CAAC;KACvD;AACL,CAAC,CAAC;AAEF,iCAAiC","sourcesContent":["import {\n CollectionExpressionType,\n CollectionInWithinOperator,\n CollectionInWithinOperatorType,\n CollectionInWithinOperatorValue,\n CollectionSelectOperator,\n ComparisonWhereExpr,\n IField,\n IGroupBy,\n IIndexOnParams,\n IIndexWithParams,\n ILetExpr,\n IndexType,\n ISelectAggType,\n ISelectType,\n LogicalWhereExpr,\n SortType,\n} from '../interface/query.types';\nimport {\n InWithinOperatorExceptions,\n QueryGroupByParamsException,\n QueryOperatorNotFoundException,\n SelectClauseException,\n WhereClauseException,\n} from '../exceptions';\nimport {escapeReservedWords} from '../utils';\n\nimport {\n AggDict,\n CollectionInWithinOperatorDict,\n CollectionSatisfiesOperatorDict,\n CollectionSelectOperatorDict,\n ComparisonEmptyOperatorDict,\n ComparisonMultipleOperatorDict,\n ComparisonSingleOperatorDict,\n ComparisonSingleStringOperatorDict,\n LogicalOperatorDict,\n ResultExprDict,\n ReturnResultDict,\n} from './dictionary';\n\n// select expressions functions\n/**\n * Build a SELECT N1QL query from user-specified parameters.\n * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/select-syntax.html}\n * @param collection Collection name\n * @param select SELECT Clause param\n * @param letExpr LET Clause param\n * @param where WHERE Clause param\n * @param orderBy ORDER BY Clause param\n * @param limit LIMIT Clause param\n * @param offset OFFSET Clause param\n * @param useExpr USE Clause param\n *\n * @return N1QL SELECT Query\n * */\nexport const selectBuilder = (\n collection: string,\n select: ISelectType[] | string,\n letExpr?: ILetExpr[],\n where?: LogicalWhereExpr,\n orderBy?: Record<string, SortType>,\n limit?: number,\n offset?: number,\n useExpr?: string[],\n groupByExpr?: IGroupBy[],\n lettingExpr?: ILetExpr[],\n havingExpr?: LogicalWhereExpr,\n plainJoinExpr?: string\n): string => {\n try {\n let expr = '';\n if (typeof select === 'string') {\n expr = select;\n }\n if (Array.isArray(select)) {\n expr = buildSelectArrayExpr(select);\n }\n const _collection =\n collection.indexOf(' ') !== -1\n ? `\\`${collection}`.replace(' ', '` ')\n : collection.indexOf('`') !== -1\n ? collection\n : `\\`${collection}\\``;\n return `SELECT ${expr} FROM ${_collection}${\n plainJoinExpr ? ` ${plainJoinExpr} ` : ''\n }${_buildUseKeysExpr(useExpr)}${_buildLetExpr(letExpr)}${buildWhereExpr(\n where\n )}${_buildGroupByExpr(groupByExpr, lettingExpr, havingExpr)}${_buildOrderByExpr(\n orderBy\n )}${_buildLimitExpr(limit)}${_buildOffsetExpr(offset)}`;\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new SelectClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildAS = (c: ISelectAggType | IField) => {\n return c.hasOwnProperty('as') ? ` AS ${c['as']}` : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildField = (clause: IField | string) => {\n if (clause.hasOwnProperty('name')) {\n return `${escapeReservedWords(clause['name'])}${_buildAS(clause as IField)}`;\n }\n return `${escapeReservedWords(clause as string)}`;\n};\n\n/**\n * Create N1QL queries from select array params\n * @param clause SELECT Clause param\n *\n * @return N1QL SELECT Query\n * */\nexport const buildSelectArrayExpr = (clause: ISelectType[]): string => {\n return `${clause.map((c) => buildSelectExpr('', c)).join(',')}`;\n};\n\n/**\n * Recursive function to create N1QL queries.\n * @param n1ql N1QL Query String\n * @param clause SELECT Clause param\n *\n * @return N1QL SELECT Query\n * */\nexport const buildSelectExpr = (n1ql: string, clause: ISelectType): string => {\n try {\n if (clause.hasOwnProperty('$field')) {\n return _buildField(clause['$field']);\n }\n const key = Object.keys(clause)[0];\n if (ReturnResultDict.hasOwnProperty(key)) {\n return `${ReturnResultDict[key]} ${buildSelectExpr(n1ql, clause[key])}`;\n }\n if (ResultExprDict.hasOwnProperty(key)) {\n return `${ResultExprDict[key]} ${buildSelectExpr(n1ql, clause[key])}`;\n }\n if (AggDict.hasOwnProperty(key)) {\n // todo check if have AS expr inside of Agg function.\n return `${AggDict[key]}(${_buildAggDictExpr(\n clause as ISelectAggType,\n key\n )}${buildSelectExpr(n1ql, clause[key])})${_buildAS(clause[key])}`;\n }\n throw new SelectClauseException();\n } catch {\n throw new SelectClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildAggDictExpr = (clause: ISelectAggType, key: string) => {\n if (AggDict.hasOwnProperty(key)) {\n if (clause[key].hasOwnProperty('ro')) {\n return `${ReturnResultDict[clause[key]['ro']]} `;\n }\n }\n return '';\n};\n\n/**\n * @ignore\n * */\nconst _buildLetExpr = (letExpr: ILetExpr[] | undefined, clause?: string) => {\n return Array.isArray(letExpr)\n ? ` ${clause ? clause : 'LET'} ${letExpr\n .map((value: ILetExpr) => `${escapeReservedWords(value.key)}=${value.value}`)\n .join(',')}`\n : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildOrderByExpr = (orderExpr: Record<string, SortType> | undefined) => {\n return !!orderExpr\n ? ` ORDER BY ${Object.keys(orderExpr)\n .map((value: string) => `${escapeReservedWords(value)} ${orderExpr[value]}`)\n .join(',')}`\n : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildLimitExpr = (limit: number | undefined) => {\n return Number.isInteger(limit) ? ` LIMIT ${limit}` : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildOffsetExpr = (offset: number | undefined) => {\n return Number.isInteger(offset) ? ` OFFSET ${offset}` : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildUseKeysExpr = (useKeys: string[] | undefined) => {\n return Array.isArray(useKeys) ? ` USE KEYS ${stringifyValues(useKeys)}` : '';\n};\n\n// end select expression functions\n\n//group by expression functions\n/**\n *@ignore\n */\nconst _buildGroupByExpr = (\n groupByExpr?: IGroupBy[],\n lettingExpr?: ILetExpr[],\n havingExpr?: LogicalWhereExpr\n) => {\n try {\n if ((lettingExpr || havingExpr) && !groupByExpr) {\n throw new QueryGroupByParamsException();\n }\n if (!groupByExpr) {\n return '';\n }\n return ` ${_buildGroupBy(groupByExpr)}${_buildLetExpr(\n lettingExpr,\n 'LETTING'\n )}${buildWhereExpr(havingExpr as LogicalWhereExpr, 'HAVING')}`;\n } catch {\n throw new QueryGroupByParamsException();\n }\n};\n\n/**\n *@ignore\n */\nconst _buildGroupBy = (groupByExpr: IGroupBy[]) => {\n return `GROUP BY ${groupByExpr\n .map((value: IGroupBy) => {\n return `${escapeReservedWords(value.expr)}${value.as ? ` AS ${value.as}` : ''}`;\n })\n .join(',')}`;\n};\n\n//end group by expression functions\n\n// where expression functions\n\n/**\n * Create WHERE N1QL Expressions.\n * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/where.html}\n * @param clause WHERE Clause param\n * @return N1QL WHERE Expression\n * */\nexport const buildWhereExpr = (expr: LogicalWhereExpr | undefined, clause?: string): string => {\n return expr ? ` ${clause ? clause : 'WHERE'} ${buildWhereClauseExpr('', expr)}` : '';\n};\n\n/**\n * @ignore\n *\n **/\nexport const verifyWhereObjectKey = (clause: LogicalWhereExpr) => {\n let exist = false;\n for (const key in clause) {\n if (['$and', '$or', '$not', '$any', '$$every', '$in', '$within'].includes(key)) {\n exist = true;\n break;\n }\n }\n return exist;\n};\n\n/**\n * Recursive function to create WHERE N1QL Expressions.\n * @param n1ql N1QL Query String\n * @param clause WHERE Clause param\n *\n * @return N1QL WHERE Expression\n * */\nexport const buildWhereClauseExpr = (n1ql: string, clause: LogicalWhereExpr): string => {\n try {\n if (!verifyWhereObjectKey(clause)) {\n return _buildFieldClauseExpr(\n clause as Record<string, string | number | boolean | ComparisonWhereExpr>\n );\n }\n\n return Object.keys(clause)\n .map((key) => {\n if (CollectionSelectOperatorDict[key]) {\n return `${_buildWhereCollectionExpr(\n key as CollectionSelectOperator,\n clause[key]\n )}`;\n }\n if (CollectionInWithinOperatorDict[key]) {\n return `${_buildCollectionInWithinOperator(\n key as CollectionInWithinOperator,\n clause[key]\n )}`;\n }\n if (Array.isArray(clause[key])) {\n const prefix = key === '$not' ? `${LogicalOperatorDict[key]} ` : '';\n const joinOp = key === '$not' ? ` AND ` : ` ${LogicalOperatorDict[key]} `;\n return `${prefix}(${clause[key]\n .map((value) => buildWhereClauseExpr(n1ql, value as LogicalWhereExpr))\n .join(joinOp)})`;\n } else {\n return `${buildWhereClauseExpr(n1ql, {[key]: clause[key]})}`;\n }\n })\n .join(' AND ');\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new WhereClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildFieldClauseExpr = (\n field: Record<string, string | number | boolean | ComparisonWhereExpr>\n) => {\n try {\n const expr = Object.keys(field).map((value: string) => {\n if (typeof field[value] === 'object' && !Array.isArray(field[value])) {\n return `${_buildComparisionClauseExpr(value, field[value] as ComparisonWhereExpr)}`;\n }\n if (!value.includes('$')) {\n if (typeof field[value] === 'string') {\n return `${escapeReservedWords(value)}=${stringifyValues(field[value])}`;\n }\n if (\n typeof field[value] === 'number' ||\n typeof field[value] === 'boolean' ||\n Array.isArray(field[value])\n ) {\n return `${escapeReservedWords(value)}=${stringifyValues(field[value])}`;\n }\n }\n throw new QueryOperatorNotFoundException(value);\n });\n return expr.join(' AND ');\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new WhereClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildComparisionClauseExpr = (fieldName: string, comparison: ComparisonWhereExpr) => {\n try {\n const expr = Object.keys(comparison)\n .map((value: string) => {\n if (!!comparison[value]) {\n if (ComparisonEmptyOperatorDict.hasOwnProperty(value)) {\n return `${escapeReservedWords(fieldName)} ${\n ComparisonEmptyOperatorDict[value]\n }`;\n }\n if (ComparisonSingleOperatorDict.hasOwnProperty(value)) {\n return `${escapeReservedWords(fieldName)}${\n ComparisonSingleOperatorDict[value]\n }${stringifyValues(comparison[value])}`;\n }\n if (ComparisonSingleStringOperatorDict.hasOwnProperty(value)) {\n return `${escapeReservedWords(fieldName)} ${\n ComparisonSingleStringOperatorDict[value]\n } ${stringifyValues(comparison[value])}`;\n }\n if (\n ComparisonMultipleOperatorDict.hasOwnProperty(value) &&\n Array.isArray(comparison[value])\n ) {\n return `${escapeReservedWords(fieldName)} ${\n ComparisonMultipleOperatorDict[value]\n } ${comparison[value].map((v) => stringifyValues(v)).join(' AND ')}`;\n }\n }\n throw new QueryOperatorNotFoundException(value);\n })\n .join(` AND `);\n return Object.keys(comparison).length > 1 ? `(${expr})` : expr;\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new WhereClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildCollectionInWithinOperator = (\n op: CollectionInWithinOperator,\n expr: CollectionInWithinOperatorValue,\n excludeOperator?: boolean\n): string => {\n if (!op || !expr.target_expr || !expr.search_expr) {\n throw new InWithinOperatorExceptions();\n }\n return `${expr.search_expr}${!excludeOperator && expr.$not ? ' NOT ' : ' '}${\n CollectionInWithinOperatorDict[op]\n } ${excludeOperator ? expr.target_expr : stringifyValues(expr.target_expr)}`;\n};\n\nconst stringifyValues = (value: unknown) => {\n return JSON.stringify(value).replace(/\\\\/gi, '');\n};\n\n/**\n * @ignore\n * */\nconst _buildCollectionInWithIn = (collection: CollectionInWithinOperatorType) => {\n const op = collection.$in ? '$in' : collection.$within ? '$within' : undefined;\n if (!op) {\n throw new Error(\n 'The Collection Operator needs to have the following clauses declared (IN | WITHIN) and SATISFIES.'\n );\n }\n return `${_buildCollectionInWithinOperator(\n op,\n collection[op] as CollectionInWithinOperatorValue,\n true\n )}`;\n};\n\n/**\n * @ignore\n * */\nconst _buildWhereCollectionExpr = (\n op: CollectionSelectOperator,\n expr: CollectionExpressionType\n) => {\n return `${CollectionSelectOperatorDict[op]} ${expr.$expr\n .map((value) => _buildCollectionInWithIn(value))\n .join(',')} ${CollectionSatisfiesOperatorDict['$satisfies']} ${buildWhereClauseExpr(\n '',\n expr.$satisfied\n )} END`;\n};\n\n// end where expression functions\n\n// index expression functions\n\n/**\n * Build a INDEX N1QL query from user-specified parameters.\n * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/createindex.html}\n * @param collection Collection name\n * @param type INDEX clause types can be 'CREATE' | 'BUILD' | 'DROP' | 'CREATE PRIMARY'\n * @param on ON Clause param\n * @param where WHERE Clause param\n * @param usingGSI use a Global Secondary Index(GSI).\n * @param withExpr WITH Clause param\n *\n * @return N1QL INDEX Query\n * */\nexport const buildIndexExpr = (\n collection: string,\n type: IndexType,\n name: string,\n on?: IIndexOnParams[],\n where?: LogicalWhereExpr,\n usingGSI?: boolean,\n withExpr?: IIndexWithParams\n): string => {\n if (['BUILD', 'CREATE', 'CREATE PRIMARY'].includes(type) && on) {\n return `${type} INDEX \\`${name}\\` ON \\`${collection}\\`(${buildOnExpr(on)})${buildWhereExpr(\n where\n )} ${usingGSI ? 'USING GSI' : ''} ${buildWithExpr(withExpr)}`;\n } else {\n return `${type} INDEX \\`${collection}\\`.\\`${name}\\`${usingGSI ? ' USING GSI' : ''}`;\n }\n};\n\n/**\n * @ignore\n * */\nconst buildOnExpr = (on: IIndexOnParams[]) => {\n return on\n .map((value: IIndexOnParams) => {\n return `${escapeReservedWords(value.name)}${buildOnSortExpr(value)}`;\n })\n .join(',');\n};\n\n/**\n * @ignore\n * */\nconst buildOnSortExpr = (onExpr?: IIndexOnParams) => {\n if (onExpr && onExpr.hasOwnProperty('sort')) {\n return `[\"${onExpr.sort}\"]`;\n }\n return '';\n};\n\n/**\n * @ignore\n * */\nconst buildWithExpr = (withExpr?: IIndexWithParams) => {\n if (withExpr) {\n const resultExpr = Object.keys(withExpr)\n .map((value: string) => {\n switch (value) {\n case 'nodes':\n return buildWithNodesExpr(withExpr[value]);\n case 'defer_build':\n case 'num_replica':\n return `\"${value}\": ${withExpr[value]}`;\n default:\n throw new Error('The WITH clause has an incorrect syntax');\n }\n })\n .join(',');\n return !!resultExpr ? `WITH {${resultExpr}}` : '';\n }\n return '';\n};\n\n/**\n * @ignore\n * */\nconst buildWithNodesExpr = (withNodesExpr?: string[]) => {\n if (withNodesExpr) {\n return `\"nodes\": ${stringifyValues(withNodesExpr)}`;\n }\n};\n\n// end index expression functions\n"]}
1
+ {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/query/helpers/builders.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CollectionExpressionType,\n CollectionInWithinOperator,\n CollectionInWithinOperatorType,\n CollectionInWithinOperatorValue,\n CollectionSelectOperator,\n ComparisonWhereExpr,\n IField,\n IGroupBy,\n IIndexOnParams,\n IIndexWithParams,\n ILetExpr,\n IndexType,\n ISelectAggType,\n ISelectType,\n LogicalWhereExpr,\n SortType,\n} from '../interface/query.types';\nimport {\n InWithinOperatorExceptions,\n QueryGroupByParamsException,\n QueryOperatorNotFoundException,\n SelectClauseException,\n WhereClauseException,\n} from '../exceptions';\nimport {escapeReservedWords} from '../utils';\n\nimport {\n AggDict,\n CollectionInWithinOperatorDict,\n CollectionSatisfiesOperatorDict,\n CollectionSelectOperatorDict,\n ComparisonEmptyOperatorDict,\n ComparisonMultipleOperatorDict,\n ComparisonSingleOperatorDict,\n ComparisonSingleStringOperatorDict,\n LogicalOperatorDict,\n ResultExprDict,\n ReturnResultDict,\n} from './dictionary';\n\n// select expressions functions\n/**\n * Build a SELECT N1QL query from user-specified parameters.\n * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/select-syntax.html}\n * @param collection Collection name\n * @param select SELECT Clause param\n * @param letExpr LET Clause param\n * @param where WHERE Clause param\n * @param orderBy ORDER BY Clause param\n * @param limit LIMIT Clause param\n * @param offset OFFSET Clause param\n * @param useExpr USE Clause param\n *\n * @return N1QL SELECT Query\n * */\nexport const selectBuilder = (\n collection: string,\n select: ISelectType[] | string,\n letExpr?: ILetExpr[],\n where?: LogicalWhereExpr,\n orderBy?: Record<string, SortType>,\n limit?: number,\n offset?: number,\n useExpr?: string[],\n groupByExpr?: IGroupBy[],\n lettingExpr?: ILetExpr[],\n havingExpr?: LogicalWhereExpr,\n plainJoinExpr?: string\n): string => {\n try {\n let expr = '';\n if (typeof select === 'string') {\n expr = select;\n }\n if (Array.isArray(select)) {\n expr = buildSelectArrayExpr(select);\n }\n const _collection =\n collection.indexOf(' ') !== -1\n ? `\\`${collection}`.replace(' ', '` ')\n : collection.indexOf('`') !== -1\n ? collection\n : `\\`${collection}\\``;\n return `SELECT ${expr} FROM ${_collection}${\n plainJoinExpr ? ` ${plainJoinExpr} ` : ''\n }${_buildUseKeysExpr(useExpr)}${_buildLetExpr(letExpr)}${buildWhereExpr(\n where\n )}${_buildGroupByExpr(groupByExpr, lettingExpr, havingExpr)}${_buildOrderByExpr(\n orderBy\n )}${_buildLimitExpr(limit)}${_buildOffsetExpr(offset)}`;\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new SelectClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildAS = (c: ISelectAggType | IField) => {\n return c.hasOwnProperty('as') ? ` AS ${c['as']}` : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildField = (clause: IField | string) => {\n if (clause.hasOwnProperty('name')) {\n return `${escapeReservedWords(clause['name'])}${_buildAS(clause as IField)}`;\n }\n return `${escapeReservedWords(clause as string)}`;\n};\n\n/**\n * Create N1QL queries from select array params\n * @param clause SELECT Clause param\n *\n * @return N1QL SELECT Query\n * */\nexport const buildSelectArrayExpr = (clause: ISelectType[]): string => {\n return `${clause.map((c) => buildSelectExpr('', c)).join(',')}`;\n};\n\n/**\n * Recursive function to create N1QL queries.\n * @param n1ql N1QL Query String\n * @param clause SELECT Clause param\n *\n * @return N1QL SELECT Query\n * */\nexport const buildSelectExpr = (n1ql: string, clause: ISelectType): string => {\n try {\n if (clause.hasOwnProperty('$field')) {\n return _buildField(clause['$field']);\n }\n const key = Object.keys(clause)[0];\n if (ReturnResultDict.hasOwnProperty(key)) {\n return `${ReturnResultDict[key]} ${buildSelectExpr(n1ql, clause[key])}`;\n }\n if (ResultExprDict.hasOwnProperty(key)) {\n return `${ResultExprDict[key]} ${buildSelectExpr(n1ql, clause[key])}`;\n }\n if (AggDict.hasOwnProperty(key)) {\n // todo check if have AS expr inside of Agg function.\n return `${AggDict[key]}(${_buildAggDictExpr(\n clause as ISelectAggType,\n key\n )}${buildSelectExpr(n1ql, clause[key])})${_buildAS(clause[key])}`;\n }\n throw new SelectClauseException();\n } catch {\n throw new SelectClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildAggDictExpr = (clause: ISelectAggType, key: string) => {\n if (AggDict.hasOwnProperty(key)) {\n if (clause[key].hasOwnProperty('ro')) {\n return `${ReturnResultDict[clause[key]['ro']]} `;\n }\n }\n return '';\n};\n\n/**\n * @ignore\n * */\nconst _buildLetExpr = (letExpr: ILetExpr[] | undefined, clause?: string) => {\n return Array.isArray(letExpr)\n ? ` ${clause ? clause : 'LET'} ${letExpr\n .map((value: ILetExpr) => `${escapeReservedWords(value.key)}=${value.value}`)\n .join(',')}`\n : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildOrderByExpr = (orderExpr: Record<string, SortType> | undefined) => {\n return !!orderExpr\n ? ` ORDER BY ${Object.keys(orderExpr)\n .map((value: string) => `${escapeReservedWords(value)} ${orderExpr[value]}`)\n .join(',')}`\n : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildLimitExpr = (limit: number | undefined) => {\n return Number.isInteger(limit) ? ` LIMIT ${limit}` : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildOffsetExpr = (offset: number | undefined) => {\n return Number.isInteger(offset) ? ` OFFSET ${offset}` : '';\n};\n\n/**\n * @ignore\n * */\nconst _buildUseKeysExpr = (useKeys: string[] | undefined) => {\n return Array.isArray(useKeys) ? ` USE KEYS ${stringifyValues(useKeys)}` : '';\n};\n\n// end select expression functions\n\n//group by expression functions\n/**\n *@ignore\n */\nconst _buildGroupByExpr = (\n groupByExpr?: IGroupBy[],\n lettingExpr?: ILetExpr[],\n havingExpr?: LogicalWhereExpr\n) => {\n try {\n if ((lettingExpr || havingExpr) && !groupByExpr) {\n throw new QueryGroupByParamsException();\n }\n if (!groupByExpr) {\n return '';\n }\n return ` ${_buildGroupBy(groupByExpr)}${_buildLetExpr(\n lettingExpr,\n 'LETTING'\n )}${buildWhereExpr(havingExpr as LogicalWhereExpr, 'HAVING')}`;\n } catch {\n throw new QueryGroupByParamsException();\n }\n};\n\n/**\n *@ignore\n */\nconst _buildGroupBy = (groupByExpr: IGroupBy[]) => {\n return `GROUP BY ${groupByExpr\n .map((value: IGroupBy) => {\n return `${escapeReservedWords(value.expr)}${value.as ? ` AS ${value.as}` : ''}`;\n })\n .join(',')}`;\n};\n\n//end group by expression functions\n\n// where expression functions\n\n/**\n * Create WHERE N1QL Expressions.\n * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/where.html}\n * @param clause WHERE Clause param\n * @return N1QL WHERE Expression\n * */\nexport const buildWhereExpr = (expr: LogicalWhereExpr | undefined, clause?: string): string => {\n return expr ? ` ${clause ? clause : 'WHERE'} ${buildWhereClauseExpr('', expr)}` : '';\n};\n\n/**\n * @ignore\n *\n **/\nexport const verifyWhereObjectKey = (clause: LogicalWhereExpr) => {\n let exist = false;\n for (const key in clause) {\n if (['$and', '$or', '$not', '$any', '$$every', '$in', '$within'].includes(key)) {\n exist = true;\n break;\n }\n }\n return exist;\n};\n\n/**\n * Recursive function to create WHERE N1QL Expressions.\n * @param n1ql N1QL Query String\n * @param clause WHERE Clause param\n *\n * @return N1QL WHERE Expression\n * */\nexport const buildWhereClauseExpr = (n1ql: string, clause: LogicalWhereExpr): string => {\n try {\n if (!verifyWhereObjectKey(clause)) {\n return _buildFieldClauseExpr(\n clause as Record<string, string | number | boolean | ComparisonWhereExpr>\n );\n }\n\n return Object.keys(clause)\n .map((key) => {\n if (CollectionSelectOperatorDict[key]) {\n return `${_buildWhereCollectionExpr(\n key as CollectionSelectOperator,\n clause[key]\n )}`;\n }\n if (CollectionInWithinOperatorDict[key]) {\n return `${_buildCollectionInWithinOperator(\n key as CollectionInWithinOperator,\n clause[key]\n )}`;\n }\n if (Array.isArray(clause[key])) {\n const prefix = key === '$not' ? `${LogicalOperatorDict[key]} ` : '';\n const joinOp = key === '$not' ? ` AND ` : ` ${LogicalOperatorDict[key]} `;\n return `${prefix}(${clause[key]\n .map((value) => buildWhereClauseExpr(n1ql, value as LogicalWhereExpr))\n .join(joinOp)})`;\n } else {\n return `${buildWhereClauseExpr(n1ql, {[key]: clause[key]})}`;\n }\n })\n .join(' AND ');\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new WhereClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildFieldClauseExpr = (\n field: Record<string, string | number | boolean | ComparisonWhereExpr>\n) => {\n try {\n const expr = Object.keys(field).map((value: string) => {\n if (typeof field[value] === 'object' && !Array.isArray(field[value])) {\n return `${_buildComparisionClauseExpr(value, field[value] as ComparisonWhereExpr)}`;\n }\n if (!value.includes('$')) {\n if (typeof field[value] === 'string') {\n return `${escapeReservedWords(value)}=${stringifyValues(field[value])}`;\n }\n if (\n typeof field[value] === 'number' ||\n typeof field[value] === 'boolean' ||\n Array.isArray(field[value])\n ) {\n return `${escapeReservedWords(value)}=${stringifyValues(field[value])}`;\n }\n }\n throw new QueryOperatorNotFoundException(value);\n });\n return expr.join(' AND ');\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new WhereClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildComparisionClauseExpr = (fieldName: string, comparison: ComparisonWhereExpr) => {\n try {\n const expr = Object.keys(comparison)\n .map((value: string) => {\n if (!!comparison[value]) {\n if (ComparisonEmptyOperatorDict.hasOwnProperty(value)) {\n return `${escapeReservedWords(fieldName)} ${\n ComparisonEmptyOperatorDict[value]\n }`;\n }\n if (ComparisonSingleOperatorDict.hasOwnProperty(value)) {\n return `${escapeReservedWords(fieldName)}${\n ComparisonSingleOperatorDict[value]\n }${stringifyValues(comparison[value])}`;\n }\n if (ComparisonSingleStringOperatorDict.hasOwnProperty(value)) {\n return `${escapeReservedWords(fieldName)} ${\n ComparisonSingleStringOperatorDict[value]\n } ${stringifyValues(comparison[value])}`;\n }\n if (\n ComparisonMultipleOperatorDict.hasOwnProperty(value) &&\n Array.isArray(comparison[value])\n ) {\n return `${escapeReservedWords(fieldName)} ${\n ComparisonMultipleOperatorDict[value]\n } ${comparison[value].map((v) => stringifyValues(v)).join(' AND ')}`;\n }\n }\n throw new QueryOperatorNotFoundException(value);\n })\n .join(` AND `);\n return Object.keys(comparison).length > 1 ? `(${expr})` : expr;\n } catch (exception) {\n if (exception instanceof WhereClauseException) {\n throw exception;\n }\n throw new WhereClauseException();\n }\n};\n\n/**\n * @ignore\n * */\nconst _buildCollectionInWithinOperator = (\n op: CollectionInWithinOperator,\n expr: CollectionInWithinOperatorValue,\n excludeOperator?: boolean\n): string => {\n if (!op || !expr.target_expr || !expr.search_expr) {\n throw new InWithinOperatorExceptions();\n }\n return `${expr.search_expr}${!excludeOperator && expr.$not ? ' NOT ' : ' '}${\n CollectionInWithinOperatorDict[op]\n } ${excludeOperator ? expr.target_expr : stringifyValues(expr.target_expr)}`;\n};\n\nconst stringifyValues = (value: unknown) => {\n return JSON.stringify(value).replace(/\\\\/gi, '');\n};\n\n/**\n * @ignore\n * */\nconst _buildCollectionInWithIn = (collection: CollectionInWithinOperatorType) => {\n const op = collection.$in ? '$in' : collection.$within ? '$within' : undefined;\n if (!op) {\n throw new Error(\n 'The Collection Operator needs to have the following clauses declared (IN | WITHIN) and SATISFIES.'\n );\n }\n return `${_buildCollectionInWithinOperator(\n op,\n collection[op] as CollectionInWithinOperatorValue,\n true\n )}`;\n};\n\n/**\n * @ignore\n * */\nconst _buildWhereCollectionExpr = (\n op: CollectionSelectOperator,\n expr: CollectionExpressionType\n) => {\n return `${CollectionSelectOperatorDict[op]} ${expr.$expr\n .map((value) => _buildCollectionInWithIn(value))\n .join(',')} ${CollectionSatisfiesOperatorDict['$satisfies']} ${buildWhereClauseExpr(\n '',\n expr.$satisfied\n )} END`;\n};\n\n// end where expression functions\n\n// index expression functions\n\n/**\n * Build a INDEX N1QL query from user-specified parameters.\n * {@link https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/createindex.html}\n * @param collection Collection name\n * @param type INDEX clause types can be 'CREATE' | 'BUILD' | 'DROP' | 'CREATE PRIMARY'\n * @param on ON Clause param\n * @param where WHERE Clause param\n * @param usingGSI use a Global Secondary Index(GSI).\n * @param withExpr WITH Clause param\n *\n * @return N1QL INDEX Query\n * */\nexport const buildIndexExpr = (\n collection: string,\n type: IndexType,\n name: string,\n on?: IIndexOnParams[],\n where?: LogicalWhereExpr,\n usingGSI?: boolean,\n withExpr?: IIndexWithParams\n): string => {\n if (['BUILD', 'CREATE', 'CREATE PRIMARY'].includes(type) && on) {\n return `${type} INDEX \\`${name}\\` ON \\`${collection}\\`(${buildOnExpr(on)})${buildWhereExpr(\n where\n )} ${usingGSI ? 'USING GSI' : ''} ${buildWithExpr(withExpr)}`;\n } else {\n return `${type} INDEX \\`${collection}\\`.\\`${name}\\`${usingGSI ? ' USING GSI' : ''}`;\n }\n};\n\n/**\n * @ignore\n * */\nconst buildOnExpr = (on: IIndexOnParams[]) => {\n return on\n .map((value: IIndexOnParams) => {\n return `${escapeReservedWords(value.name)}${buildOnSortExpr(value)}`;\n })\n .join(',');\n};\n\n/**\n * @ignore\n * */\nconst buildOnSortExpr = (onExpr?: IIndexOnParams) => {\n if (onExpr && onExpr.hasOwnProperty('sort')) {\n return `[\"${onExpr.sort}\"]`;\n }\n return '';\n};\n\n/**\n * @ignore\n * */\nconst buildWithExpr = (withExpr?: IIndexWithParams) => {\n if (withExpr) {\n const resultExpr = Object.keys(withExpr)\n .map((value: string) => {\n switch (value) {\n case 'nodes':\n return buildWithNodesExpr(withExpr[value]);\n case 'defer_build':\n case 'num_replica':\n return `\"${value}\": ${withExpr[value]}`;\n default:\n throw new Error('The WITH clause has an incorrect syntax');\n }\n })\n .join(',');\n return !!resultExpr ? `WITH {${resultExpr}}` : '';\n }\n return '';\n};\n\n/**\n * @ignore\n * */\nconst buildWithNodesExpr = (withNodesExpr?: string[]) => {\n if (withNodesExpr) {\n return `\"nodes\": ${stringifyValues(withNodesExpr)}`;\n }\n};\n\n// end index expression functions\n"]}
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.QueryCluster = void 0;
42
+ exports.QueryCluster = QueryCluster;
43
43
  var connection_1 = __importDefault(require("../connection"));
44
44
  /**
45
45
  * Query couchbase db
@@ -76,5 +76,4 @@ function QueryCluster(query, options) {
76
76
  });
77
77
  });
78
78
  }
79
- exports.QueryCluster = QueryCluster;
80
79
  //# sourceMappingURL=query.cluster.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.cluster.js","sourceRoot":"","sources":["../../src/query/query.cluster.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,6DAAgD;AAEhD;;;;;;;;;;;GAWG;AACH,SAAsB,YAAY,CAAC,KAAa,EAAE,OAAa;;;;;;oBACrD,OAAO,GAAG,oBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC;;;;oBAElC,qBAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,EAAA;;oBAA5C,MAAM,GAAG,SAAmC;oBAClD,sBAAO,MAAM,EAAC;;;oBAEd,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAK,CAAC,CAAC;oBACvC,MAAM,OAAK,CAAC;;;;;CAEnB;AATD,oCASC","sourcesContent":["import type {QueryResult} from 'couchbase';\n\nimport CouchbaseConnection from '../connection';\n\n/**\n * Query couchbase db\n * @param query\n * \n const query = `\n SELECT airportname, city FROM \\`travel-sample\\`\n WHERE type=$1\n AND city=$2\n `;\n const options = {parameters: ['airport', 'San Jose']};\n * @param options\n */\nexport async function QueryCluster(query: string, options?: any): Promise<QueryResult> {\n const cluster = CouchbaseConnection.Instance.cluster;\n try {\n const result = await cluster.query(query, options);\n return result;\n } catch (error) {\n console.error('Query failed: ', error);\n throw error;\n }\n}\n"]}
1
+ {"version":3,"file":"query.cluster.js","sourceRoot":"","sources":["../../src/query/query.cluster.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,oCASC;AAvBD,6DAAgD;AAEhD;;;;;;;;;;;GAWG;AACH,SAAsB,YAAY,CAAC,KAAa,EAAE,OAAa;;;;;;oBACrD,OAAO,GAAG,oBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC;;;;oBAElC,qBAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,EAAA;;oBAA5C,MAAM,GAAG,SAAmC;oBAClD,sBAAO,MAAM,EAAC;;;oBAEd,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAK,CAAC,CAAC;oBACvC,MAAM,OAAK,CAAC;;;;;CAEnB","sourcesContent":["import type {QueryResult} from 'couchbase';\n\nimport CouchbaseConnection from '../connection';\n\n/**\n * Query couchbase db\n * @param query\n * \n const query = `\n SELECT airportname, city FROM \\`travel-sample\\`\n WHERE type=$1\n AND city=$2\n `;\n const options = {parameters: ['airport', 'San Jose']};\n * @param options\n */\nexport async function QueryCluster(query: string, options?: any): Promise<QueryResult> {\n const cluster = CouchbaseConnection.Instance.cluster;\n try {\n const result = await cluster.query(query, options);\n return result;\n } catch (error) {\n console.error('Query failed: ', error);\n throw error;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/query/query.ts"],"names":[],"mappings":"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","sourcesContent":["import {BaseQuery} from './base-query';\nimport {\n IConditionExpr,\n IGroupBy,\n IIndexOnParams,\n IIndexWithParams,\n ILetExpr,\n IndexType,\n ISelectType,\n LogicalWhereExpr,\n SortType,\n} from './interface/query.types';\nimport {\n IndexParamsOnExceptions,\n IndexParamsUsingGSIExceptions,\n MultipleQueryTypesException,\n} from './exceptions';\nimport {buildIndexExpr, selectBuilder} from './helpers';\n\nexport class QueryBuilder extends BaseQuery {\n /**\n * SELECT Expression.\n */\n private selectExpr?: ISelectType[] | string;\n /**\n * WHERE Expression.\n */\n private whereExpr?: LogicalWhereExpr;\n /**\n * ORDER BY Expression.\n */\n private orderExpr?: Record<string, SortType>;\n /**\n * LIMIT Expression.\n */\n private limitExpr?: number;\n /**\n * OFFSET Expression.\n */\n private offSetExpr?: number;\n /**\n * LET Expression.\n */\n private letExpr?: ILetExpr[];\n /**\n * GROUP BY Expression.\n */\n private groupByExpr?: IGroupBy[];\n /**\n * LETTING Expression.\n */\n private lettingExpr?: ILetExpr[];\n /**\n * HAVING Expression.\n */\n private havingExpr?: LogicalWhereExpr;\n\n /**\n * Plain JOIN Expression.\n */\n private plainJoinExpr?: string;\n /**\n * USE Expression.\n */\n private useKeysExpr?: string[];\n /**\n * Available query types.\n */\n private queryType?: 'SELECT' | 'INDEX';\n /**\n * INDEX ON Expression.\n */\n private indexOn?: IIndexOnParams[];\n /**\n * Types of supported index statements.\n */\n private indexType?: IndexType;\n /**\n * Index name.\n */\n private indexName?: string;\n /**\n * INDEX USING GSI Expression.\n */\n private indexUsingGSI?: boolean;\n /**\n * INDEX USING GSI Expression.\n */\n private indexWith?: IIndexWithParams;\n /**\n * @summary Create an instance of QueryBuilder.\n * @name QueryBuilder\n * @class\n * @public\n *\n * @param conditions List of SELECT clause conditions\n * @param collection Collection name\n * @returns QueryBuilder\n *\n * @example\n * ```ts\n * const query = new QueryBuilder({$select: [{$field: 'address'}], $where: {$nill: [{ address: { $like: '%57-59%' } }, { free_breakfast: true }, { free_lunch: [1] }]}}, 'travel-sample');\n * ```\n */\n constructor(conditions: IConditionExpr, collection: string) {\n super(conditions, collection);\n if (conditions) {\n this.compileFromConditions(conditions);\n }\n }\n\n /**\n * Add result selectors to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample`\n */\n select(value?: ISelectType[] | string | undefined): QueryBuilder {\n if (this.queryType === undefined || this.queryType === 'SELECT') {\n this.queryType = 'SELECT';\n if (!value) {\n this.selectExpr = '*';\n } else if (typeof value === 'string') {\n this.selectExpr = value;\n } else if (typeof value === 'object') {\n this.selectExpr = [...(this.selectExpr || []), ...value] as ISelectType[];\n }\n\n return this;\n }\n throw new MultipleQueryTypesException('SELECT', this.queryType);\n }\n\n /**\n * Add index type and name to INDEX clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const result = new QueryBuilder({}, 'travel-sample').index('DROP', 'travel_sample_id_test').build();\n * console.log(result)\n * ```\n * > DROP INDEX `travel-sample`.`travel_sample_id_test`\n */\n index(type: IndexType, name: string): QueryBuilder {\n if (this.queryType === undefined) {\n if (name.search(/^[A-Za-z][A-Za-z0-9#_]*$/g) === -1) {\n throw new Error(\n 'Valid GSI index names can contain any of the following characters: A-Z a-z 0-9 # _, and must start with a letter, [A-Z a-z]'\n );\n }\n this.queryType = 'INDEX';\n this.indexType = type;\n this.indexName = name;\n return this;\n }\n throw new MultipleQueryTypesException('INDEX', this.queryType);\n }\n\n /**\n * Add items to ON clause in INDEX clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const on = [{ name: 'travel-sample.callsing', sort: 'ASC' }];\n * const result = new QueryBuilder({}, 'travel-sample').index('CREATE', 'travel_sample_id_test').on(on).build();\n * console.log(result)\n * ```\n * > CREATE INDEX `travel_sample_id_test` ON `travel-sample`(`travel-sample.callsing`['ASC'])\n */\n on(value: IIndexOnParams[]): QueryBuilder {\n if (\n this.queryType === 'INDEX' &&\n ['CREATE', 'CREATE PRIMARY', 'BUILD'].includes(this.indexType || '')\n ) {\n this.indexOn = value;\n return this;\n }\n throw new IndexParamsOnExceptions(['CREATE', 'CREATE PRIMARY', 'BUILD']);\n }\n\n /**\n * Create INDEX using General Secondary Index(GSI).\n * @method\n * @public\n *\n * @example\n * ```ts\n * const result = new QueryBuilder({}, 'travel-sample').index('CREATE', 'travel_sample_id_test').usingGSI().build();\n * console.log(result)\n * ```\n * > CREATE INDEX `travel_sample_id_test` USING GSI)\n */\n usingGSI(): QueryBuilder {\n if (this.queryType === 'INDEX') {\n this.indexUsingGSI = true;\n return this;\n }\n throw new IndexParamsUsingGSIExceptions(['CREATE', 'CREATE PRIMARY', 'BUILD']);\n }\n\n /**\n * Add items to WITH clause in INDEX clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const withExpr = {nodes: ['192.168.1.1:8078'],defer_build: true,num_replica: 2};\n * const result = new QueryBuilder({}, 'travel-sample').index('CREATE', 'travel_sample_id_test').with(withExpr).build();\n * console.log(result)\n * ```\n * > CREATE INDEX `travel_sample_id_test` WITH {'nodes': ['192.168.1.1:8078'],'defer_build': true,'num_replica': 2})\n */\n with(value: IIndexWithParams): QueryBuilder {\n if (this.queryType === 'INDEX') {\n this.indexWith = value;\n return this;\n }\n throw new Error('The WITH clause is only available for Indexes');\n }\n\n /**\n * Add WHERE expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const expr_where = {$or: [{ address: { $like: '%57-59%' } }, { free_breakfast: true }]};\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).where(expr_where).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample WHERE (address LIKE '%57-59%' OR free_breakfast = true)`\n */\n where(value: LogicalWhereExpr): QueryBuilder {\n this.whereExpr = value;\n return this;\n }\n\n /**\n * Add JOIN expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```tS\n * const query = new QueryBuilder({}, 'beer-sample brewery');\n * const result = query.select([{$field: 'address'}]).plainJoin('JOIN `beer-sample` beer ON beer.brewery_id = LOWER(REPLACE(brewery.name, \" \", \"_\"))').build()\n * console.log(result)\n * ```\n * > SELECT address FROM `beer-sample brewery` JOIN `beer-sample` beer ON beer.brewery_id = LOWER(REPLACE(brewery.name, \" \", \"_\")) LIMIT 1`\n */\n plainJoin(value: string): QueryBuilder {\n this.plainJoinExpr = value;\n return this;\n }\n\n /**\n * Add ORDER BY expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).orderBy({ size: 'DESC' }).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample ORDER BY size = 'DESC'`\n */\n orderBy(value: Record<string, SortType>): QueryBuilder {\n this.orderExpr = value;\n return this;\n }\n\n /**\n * Add LIMIT expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).limit(10).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample LIMIT 10`\n */\n limit(value: number): QueryBuilder {\n this.limitExpr = value;\n return this;\n }\n\n /**\n * Add OFFSET expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).offset(10).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample OFFSET 10`\n */\n offset(value: number): QueryBuilder {\n this.offSetExpr = value;\n return this;\n }\n\n /**\n * Add LET expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const letExpr = [{ key: 'amount_val', value: 10 }];\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).let(letExpr).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample LET amount_val = 10`\n */\n let(value: ILetExpr[]): QueryBuilder {\n this.letExpr = value;\n return this;\n }\n\n /**\n * Add GROUP BY expression to GROUP BY clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const groupByExpr = [{ expr: 'COUNT(amount_val)', as: 'amount' }];\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).groupBy(groupByExpr).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample GROUP BY COUNT(amount) AS amount`\n */\n groupBy(value: IGroupBy[]): QueryBuilder {\n this.groupByExpr = value;\n return this;\n }\n\n /**\n * Add LETTING expression to GROUP BY clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const groupByExpr = [{ expr: 'COUNT(amount_val)', as: 'amount' }];\n * const letExpr = [{ key: 'amount_val', value: 10 }];\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).groupBy(groupByExpr).let(letExpr).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample GROUP BY COUNT(amount) AS amount LETTING amount = 10`\n */\n letting(value: ILetExpr[]): QueryBuilder {\n this.lettingExpr = value;\n return this;\n }\n\n /**\n * Add HAVING expression to GROUP BY clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const groupByExpr = [{ expr: 'COUNT(amount_val)', as: 'amount' }];\n * const having = {address: {$like: '%58%'}};\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).groupBy(groupByExpr).having(having).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample GROUP BY COUNT(amount) AS amount HAVING address LIKE '%58%'`\n */\n having(value: LogicalWhereExpr): QueryBuilder {\n this.havingExpr = value;\n return this;\n }\n\n /**\n * Add USE KEYS expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).useKeys(['airlineR_8093']).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample USE KEYS ['airlineR_8093']`\n */\n useKeys(value: string[]): QueryBuilder {\n this.useKeysExpr = value;\n return this;\n }\n\n /**\n * Converts the conditional parameters passed to the constructor to the properties of the N1QL QueryBuilder.\n * @method\n * @public\n *\n */\n compileFromConditions(conditionals: IConditionExpr): void {\n Object.keys(conditionals).forEach((value: string) => {\n switch (value) {\n case 'select':\n this.select(conditionals[value]);\n break;\n case 'let':\n !!conditionals[value] && this.let(conditionals[value] as ILetExpr[]);\n break;\n case 'where':\n !!conditionals[value] && this.where(conditionals[value] as LogicalWhereExpr);\n break;\n case 'plainJoin':\n !!conditionals[value] && this.plainJoin(conditionals[value] as string);\n break;\n case 'groupBy':\n !!conditionals[value] && this.groupBy(conditionals[value] as IGroupBy[]);\n break;\n case 'letting':\n !!conditionals[value] && this.letting(conditionals[value] as ILetExpr[]);\n break;\n case 'having':\n !!conditionals[value] && this.having(conditionals[value] as LogicalWhereExpr);\n break;\n case 'orderBy':\n !!conditionals[value] &&\n this.orderBy(conditionals[value] as Record<string, SortType>);\n break;\n case 'limit':\n !!conditionals[value] && this.limit(conditionals[value] as number);\n break;\n case 'offset':\n !!conditionals[value] && this.offset(conditionals[value] as number);\n break;\n case 'use':\n !!conditionals[value] && this.useKeys(conditionals[value] as string[]);\n break;\n }\n });\n }\n\n /**\n * Build a n1ql query from the defined parameters.\n * @method\n * @public\n *\n */\n build(): string {\n switch (this.queryType) {\n case 'INDEX':\n switch (this.indexType) {\n case 'BUILD':\n case 'CREATE':\n case 'CREATE PRIMARY':\n if (this.indexOn) {\n return buildIndexExpr(\n this.collection,\n this.indexType,\n this.indexName || '',\n this.indexOn,\n this.whereExpr,\n this.indexUsingGSI,\n this.indexWith\n );\n }\n case 'DROP':\n return buildIndexExpr(\n this.collection,\n this.indexType,\n this.indexName || '',\n undefined,\n undefined,\n this.indexUsingGSI\n );\n }\n\n case 'SELECT':\n if (this.selectExpr) {\n return selectBuilder(\n this.collection,\n this.selectExpr,\n this.letExpr,\n this.whereExpr,\n this.orderExpr,\n this.limitExpr,\n this.offSetExpr,\n this.useKeysExpr,\n this.groupByExpr,\n this.lettingExpr,\n this.havingExpr,\n this.plainJoinExpr\n );\n }\n }\n return '';\n }\n\n get conditions(): IConditionExpr {\n return this._conditions;\n }\n\n set conditions(value: IConditionExpr) {\n this._conditions = value;\n }\n\n get collection(): string {\n return this._collection;\n }\n\n set collection(value: string) {\n this._collection = value;\n }\n}\n"]}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/query/query.ts"],"names":[],"mappings":"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","sourcesContent":["import {BaseQuery} from './base-query';\nimport {\n IConditionExpr,\n IGroupBy,\n IIndexOnParams,\n IIndexWithParams,\n ILetExpr,\n IndexType,\n ISelectType,\n LogicalWhereExpr,\n SortType,\n} from './interface/query.types';\nimport {\n IndexParamsOnExceptions,\n IndexParamsUsingGSIExceptions,\n MultipleQueryTypesException,\n} from './exceptions';\nimport {buildIndexExpr, selectBuilder} from './helpers';\n\nexport class QueryBuilder extends BaseQuery {\n /**\n * SELECT Expression.\n */\n private selectExpr?: ISelectType[] | string;\n /**\n * WHERE Expression.\n */\n private whereExpr?: LogicalWhereExpr;\n /**\n * ORDER BY Expression.\n */\n private orderExpr?: Record<string, SortType>;\n /**\n * LIMIT Expression.\n */\n private limitExpr?: number;\n /**\n * OFFSET Expression.\n */\n private offSetExpr?: number;\n /**\n * LET Expression.\n */\n private letExpr?: ILetExpr[];\n /**\n * GROUP BY Expression.\n */\n private groupByExpr?: IGroupBy[];\n /**\n * LETTING Expression.\n */\n private lettingExpr?: ILetExpr[];\n /**\n * HAVING Expression.\n */\n private havingExpr?: LogicalWhereExpr;\n\n /**\n * Plain JOIN Expression.\n */\n private plainJoinExpr?: string;\n /**\n * USE Expression.\n */\n private useKeysExpr?: string[];\n /**\n * Available query types.\n */\n private queryType?: 'SELECT' | 'INDEX';\n /**\n * INDEX ON Expression.\n */\n private indexOn?: IIndexOnParams[];\n /**\n * Types of supported index statements.\n */\n private indexType?: IndexType;\n /**\n * Index name.\n */\n private indexName?: string;\n /**\n * INDEX USING GSI Expression.\n */\n private indexUsingGSI?: boolean;\n /**\n * INDEX USING GSI Expression.\n */\n private indexWith?: IIndexWithParams;\n /**\n * @summary Create an instance of QueryBuilder.\n * @name QueryBuilder\n * @class\n * @public\n *\n * @param conditions List of SELECT clause conditions\n * @param collection Collection name\n * @returns QueryBuilder\n *\n * @example\n * ```ts\n * const query = new QueryBuilder({$select: [{$field: 'address'}], $where: {$nill: [{ address: { $like: '%57-59%' } }, { free_breakfast: true }, { free_lunch: [1] }]}}, 'travel-sample');\n * ```\n */\n constructor(conditions: IConditionExpr, collection: string) {\n super(conditions, collection);\n if (conditions) {\n this.compileFromConditions(conditions);\n }\n }\n\n /**\n * Add result selectors to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample`\n */\n select(value?: ISelectType[] | string | undefined): QueryBuilder {\n if (this.queryType === undefined || this.queryType === 'SELECT') {\n this.queryType = 'SELECT';\n if (!value) {\n this.selectExpr = '*';\n } else if (typeof value === 'string') {\n this.selectExpr = value;\n } else if (typeof value === 'object') {\n this.selectExpr = [...(this.selectExpr || []), ...value] as ISelectType[];\n }\n\n return this;\n }\n throw new MultipleQueryTypesException('SELECT', this.queryType);\n }\n\n /**\n * Add index type and name to INDEX clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const result = new QueryBuilder({}, 'travel-sample').index('DROP', 'travel_sample_id_test').build();\n * console.log(result)\n * ```\n * > DROP INDEX `travel-sample`.`travel_sample_id_test`\n */\n index(type: IndexType, name: string): QueryBuilder {\n if (this.queryType === undefined) {\n if (name.search(/^[A-Za-z][A-Za-z0-9#_]*$/g) === -1) {\n throw new Error(\n 'Valid GSI index names can contain any of the following characters: A-Z a-z 0-9 # _, and must start with a letter, [A-Z a-z]'\n );\n }\n this.queryType = 'INDEX';\n this.indexType = type;\n this.indexName = name;\n return this;\n }\n throw new MultipleQueryTypesException('INDEX', this.queryType);\n }\n\n /**\n * Add items to ON clause in INDEX clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const on = [{ name: 'travel-sample.callsing', sort: 'ASC' }];\n * const result = new QueryBuilder({}, 'travel-sample').index('CREATE', 'travel_sample_id_test').on(on).build();\n * console.log(result)\n * ```\n * > CREATE INDEX `travel_sample_id_test` ON `travel-sample`(`travel-sample.callsing`['ASC'])\n */\n on(value: IIndexOnParams[]): QueryBuilder {\n if (\n this.queryType === 'INDEX' &&\n ['CREATE', 'CREATE PRIMARY', 'BUILD'].includes(this.indexType || '')\n ) {\n this.indexOn = value;\n return this;\n }\n throw new IndexParamsOnExceptions(['CREATE', 'CREATE PRIMARY', 'BUILD']);\n }\n\n /**\n * Create INDEX using General Secondary Index(GSI).\n * @method\n * @public\n *\n * @example\n * ```ts\n * const result = new QueryBuilder({}, 'travel-sample').index('CREATE', 'travel_sample_id_test').usingGSI().build();\n * console.log(result)\n * ```\n * > CREATE INDEX `travel_sample_id_test` USING GSI)\n */\n usingGSI(): QueryBuilder {\n if (this.queryType === 'INDEX') {\n this.indexUsingGSI = true;\n return this;\n }\n throw new IndexParamsUsingGSIExceptions(['CREATE', 'CREATE PRIMARY', 'BUILD']);\n }\n\n /**\n * Add items to WITH clause in INDEX clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const withExpr = {nodes: ['192.168.1.1:8078'],defer_build: true,num_replica: 2};\n * const result = new QueryBuilder({}, 'travel-sample').index('CREATE', 'travel_sample_id_test').with(withExpr).build();\n * console.log(result)\n * ```\n * > CREATE INDEX `travel_sample_id_test` WITH {'nodes': ['192.168.1.1:8078'],'defer_build': true,'num_replica': 2})\n */\n with(value: IIndexWithParams): QueryBuilder {\n if (this.queryType === 'INDEX') {\n this.indexWith = value;\n return this;\n }\n throw new Error('The WITH clause is only available for Indexes');\n }\n\n /**\n * Add WHERE expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const expr_where = {$or: [{ address: { $like: '%57-59%' } }, { free_breakfast: true }]};\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).where(expr_where).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample WHERE (address LIKE '%57-59%' OR free_breakfast = true)`\n */\n where(value: LogicalWhereExpr): QueryBuilder {\n this.whereExpr = value;\n return this;\n }\n\n /**\n * Add JOIN expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```tS\n * const query = new QueryBuilder({}, 'beer-sample brewery');\n * const result = query.select([{$field: 'address'}]).plainJoin('JOIN `beer-sample` beer ON beer.brewery_id = LOWER(REPLACE(brewery.name, \" \", \"_\"))').build()\n * console.log(result)\n * ```\n * > SELECT address FROM `beer-sample brewery` JOIN `beer-sample` beer ON beer.brewery_id = LOWER(REPLACE(brewery.name, \" \", \"_\")) LIMIT 1`\n */\n plainJoin(value: string): QueryBuilder {\n this.plainJoinExpr = value;\n return this;\n }\n\n /**\n * Add ORDER BY expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).orderBy({ size: 'DESC' }).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample ORDER BY size = 'DESC'`\n */\n orderBy(value: Record<string, SortType>): QueryBuilder {\n this.orderExpr = value;\n return this;\n }\n\n /**\n * Add LIMIT expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).limit(10).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample LIMIT 10`\n */\n limit(value: number): QueryBuilder {\n this.limitExpr = value;\n return this;\n }\n\n /**\n * Add OFFSET expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).offset(10).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample OFFSET 10`\n */\n offset(value: number): QueryBuilder {\n this.offSetExpr = value;\n return this;\n }\n\n /**\n * Add LET expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const letExpr = [{ key: 'amount_val', value: 10 }];\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).let(letExpr).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample LET amount_val = 10`\n */\n let(value: ILetExpr[]): QueryBuilder {\n this.letExpr = value;\n return this;\n }\n\n /**\n * Add GROUP BY expression to GROUP BY clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const groupByExpr = [{ expr: 'COUNT(amount_val)', as: 'amount' }];\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).groupBy(groupByExpr).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample GROUP BY COUNT(amount) AS amount`\n */\n groupBy(value: IGroupBy[]): QueryBuilder {\n this.groupByExpr = value;\n return this;\n }\n\n /**\n * Add LETTING expression to GROUP BY clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const groupByExpr = [{ expr: 'COUNT(amount_val)', as: 'amount' }];\n * const letExpr = [{ key: 'amount_val', value: 10 }];\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).groupBy(groupByExpr).let(letExpr).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample GROUP BY COUNT(amount) AS amount LETTING amount = 10`\n */\n letting(value: ILetExpr[]): QueryBuilder {\n this.lettingExpr = value;\n return this;\n }\n\n /**\n * Add HAVING expression to GROUP BY clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const groupByExpr = [{ expr: 'COUNT(amount_val)', as: 'amount' }];\n * const having = {address: {$like: '%58%'}};\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).groupBy(groupByExpr).having(having).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample GROUP BY COUNT(amount) AS amount HAVING address LIKE '%58%'`\n */\n having(value: LogicalWhereExpr): QueryBuilder {\n this.havingExpr = value;\n return this;\n }\n\n /**\n * Add USE KEYS expression to SELECT clause.\n * @method\n * @public\n *\n * @example\n * ```ts\n * const query = new QueryBuilder({}, 'travel-sample');\n * const result = query.select([{$field: 'address'}]).useKeys(['airlineR_8093']).build()\n * console.log(result)\n * ```\n * > SELECT address FROM `travel-sample USE KEYS ['airlineR_8093']`\n */\n useKeys(value: string[]): QueryBuilder {\n this.useKeysExpr = value;\n return this;\n }\n\n /**\n * Converts the conditional parameters passed to the constructor to the properties of the N1QL QueryBuilder.\n * @method\n * @public\n *\n */\n compileFromConditions(conditionals: IConditionExpr): void {\n Object.keys(conditionals).forEach((value: string) => {\n switch (value) {\n case 'select':\n this.select(conditionals[value]);\n break;\n case 'let':\n !!conditionals[value] && this.let(conditionals[value] as ILetExpr[]);\n break;\n case 'where':\n !!conditionals[value] && this.where(conditionals[value] as LogicalWhereExpr);\n break;\n case 'plainJoin':\n !!conditionals[value] && this.plainJoin(conditionals[value] as string);\n break;\n case 'groupBy':\n !!conditionals[value] && this.groupBy(conditionals[value] as IGroupBy[]);\n break;\n case 'letting':\n !!conditionals[value] && this.letting(conditionals[value] as ILetExpr[]);\n break;\n case 'having':\n !!conditionals[value] && this.having(conditionals[value] as LogicalWhereExpr);\n break;\n case 'orderBy':\n !!conditionals[value] &&\n this.orderBy(conditionals[value] as Record<string, SortType>);\n break;\n case 'limit':\n !!conditionals[value] && this.limit(conditionals[value] as number);\n break;\n case 'offset':\n !!conditionals[value] && this.offset(conditionals[value] as number);\n break;\n case 'use':\n !!conditionals[value] && this.useKeys(conditionals[value] as string[]);\n break;\n }\n });\n }\n\n /**\n * Build a n1ql query from the defined parameters.\n * @method\n * @public\n *\n */\n build(): string {\n switch (this.queryType) {\n case 'INDEX':\n switch (this.indexType) {\n case 'BUILD':\n case 'CREATE':\n case 'CREATE PRIMARY':\n if (this.indexOn) {\n return buildIndexExpr(\n this.collection,\n this.indexType,\n this.indexName || '',\n this.indexOn,\n this.whereExpr,\n this.indexUsingGSI,\n this.indexWith\n );\n }\n case 'DROP':\n return buildIndexExpr(\n this.collection,\n this.indexType,\n this.indexName || '',\n undefined,\n undefined,\n this.indexUsingGSI\n );\n }\n\n case 'SELECT':\n if (this.selectExpr) {\n return selectBuilder(\n this.collection,\n this.selectExpr,\n this.letExpr,\n this.whereExpr,\n this.orderExpr,\n this.limitExpr,\n this.offSetExpr,\n this.useKeysExpr,\n this.groupByExpr,\n this.lettingExpr,\n this.havingExpr,\n this.plainJoinExpr\n );\n }\n }\n return '';\n }\n\n get conditions(): IConditionExpr {\n return this._conditions;\n }\n\n set conditions(value: IConditionExpr) {\n this._conditions = value;\n }\n\n get collection(): string {\n return this._collection;\n }\n\n set collection(value: string) {\n this._collection = value;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/query/utils.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAE5C,IAAM,WAAW,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAEnE;;KAEK;AACE,IAAM,qBAAqB,GAAG,UAAC,IAAY;IAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC;KACjB;IACD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC3C,WAAW,CAAC,OAAO,CAAC,UAAC,KAAa;QAC9B,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAK,KAAK,OAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAC,CAAS;QACvC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAXW,QAAA,qBAAqB,yBAWhC;AAEF;;KAEK;AACL,IAAM,cAAc,GAAG,UAAC,IAAY;IAChC,IAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KAC3B;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF;;GAEG;AACI,IAAM,mBAAmB,GAAG,UAAC,KAAa;IAC7C,IAAI,2BAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE;QACjD,OAAO,WAAK,KAAK,MAAI,CAAC;KACzB;IACD,IAAI,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE;QACrC,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,GAAG,IAAI;aACN,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,UAAC,KAAK;YACP,IAAI,2BAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE;gBACjD,OAAO,WAAK,KAAK,MAAI,CAAC;aACzB;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;KACf;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAnBW,QAAA,mBAAmB,uBAmB9B","sourcesContent":["import {n1qlReservedWords} from './helpers';\n\nconst replaceList = ['ALL', 'DISTINCT', 'RAW', 'ELEMENT', 'VALUE'];\n\n/**\n * Convert select expression into an Array of selection keys\n * */\nexport const parseStringSelectExpr = (expr: string): string[] => {\n if (expr.indexOf(',') === -1 && expr.indexOf(' as ') === -1) {\n return [expr];\n }\n let resultExpr = expr.replace(/[()]/g, '');\n replaceList.forEach((value: string) => {\n resultExpr = resultExpr.replace(new RegExp(`/[${value}]/`, 'g'), '');\n });\n return resultExpr.split(',').map((v: string) => {\n return extractAsValue(v);\n });\n};\n\n/**\n * @ignore\n * */\nconst extractAsValue = (expr: string): string => {\n const result = expr.toLowerCase().split(' as ');\n if (result.length === 2) {\n return result[1].trim();\n }\n return expr.trim();\n};\n\n/**\n * @ignore\n */\nexport const escapeReservedWords = (field: string) => {\n if (n1qlReservedWords.includes(field.toUpperCase())) {\n return `\\`${field}\\``;\n }\n if (field.match(/(\\-)|(\\.)|(\\[\\d+\\])/g)) {\n let expr = field;\n expr = expr\n .split('.')\n .map((value) => {\n if (n1qlReservedWords.includes(value.toUpperCase())) {\n return `\\`${value}\\``;\n }\n return value;\n })\n .join('.');\n expr = expr.replace(/([a-z0-9]*\\-[a-z0-9]*)/g, '`$&`');\n return expr;\n }\n return field;\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/query/utils.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAE5C,IAAM,WAAW,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAEnE;;KAEK;AACE,IAAM,qBAAqB,GAAG,UAAC,IAAY;IAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC3C,WAAW,CAAC,OAAO,CAAC,UAAC,KAAa;QAC9B,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAK,KAAK,OAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAC,CAAS;QACvC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAXW,QAAA,qBAAqB,yBAWhC;AAEF;;KAEK;AACL,IAAM,cAAc,GAAG,UAAC,IAAY;IAChC,IAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF;;GAEG;AACI,IAAM,mBAAmB,GAAG,UAAC,KAAa;IAC7C,IAAI,2BAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAClD,OAAO,WAAK,KAAK,MAAI,CAAC;IAC1B,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACtC,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,GAAG,IAAI;aACN,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,UAAC,KAAK;YACP,IAAI,2BAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAClD,OAAO,WAAK,KAAK,MAAI,CAAC;YAC1B,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAnBW,QAAA,mBAAmB,uBAmB9B","sourcesContent":["import {n1qlReservedWords} from './helpers';\n\nconst replaceList = ['ALL', 'DISTINCT', 'RAW', 'ELEMENT', 'VALUE'];\n\n/**\n * Convert select expression into an Array of selection keys\n * */\nexport const parseStringSelectExpr = (expr: string): string[] => {\n if (expr.indexOf(',') === -1 && expr.indexOf(' as ') === -1) {\n return [expr];\n }\n let resultExpr = expr.replace(/[()]/g, '');\n replaceList.forEach((value: string) => {\n resultExpr = resultExpr.replace(new RegExp(`/[${value}]/`, 'g'), '');\n });\n return resultExpr.split(',').map((v: string) => {\n return extractAsValue(v);\n });\n};\n\n/**\n * @ignore\n * */\nconst extractAsValue = (expr: string): string => {\n const result = expr.toLowerCase().split(' as ');\n if (result.length === 2) {\n return result[1].trim();\n }\n return expr.trim();\n};\n\n/**\n * @ignore\n */\nexport const escapeReservedWords = (field: string) => {\n if (n1qlReservedWords.includes(field.toUpperCase())) {\n return `\\`${field}\\``;\n }\n if (field.match(/(\\-)|(\\.)|(\\[\\d+\\])/g)) {\n let expr = field;\n expr = expr\n .split('.')\n .map((value) => {\n if (n1qlReservedWords.includes(value.toUpperCase())) {\n return `\\`${value}\\``;\n }\n return value;\n })\n .join('.');\n expr = expr.replace(/([a-z0-9]*\\-[a-z0-9]*)/g, '`$&`');\n return expr;\n }\n return field;\n};\n"]}
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
@@ -1 +1 @@
1
- {"version":3,"file":"customQuery.js","sourceRoot":"","sources":["../../src/search/customQuery.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAAgD;AAahD;;;;;;GAMG;AACI,IAAM,WAAW,GAAG,UACvB,IAAqB;;;;;gBAEd,KAAK,GAAmB,IAAI,MAAvB,EAAE,KAAK,GAAY,IAAI,MAAhB,EAAE,MAAM,GAAI,IAAI,OAAR,CAAS;gBAE9B,OAAO,GAAG,oBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC;;;;gBAGjD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAEN,qBAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAA;;gBAAvC,KAAa,CAAA,SAA0B,CAAA,KAA9B,EAAT,IAAI,mBAAG,EAAE,KAAA;gBAEV,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;gBAE3B,OAAO,GAAG,IAAI,CAAC;gBACnB,IAAI,UAAU,IAAI,KAAK,EAAE;oBACrB,OAAO,GAAG,IAAI,CAAC;iBAClB;qBAAM;oBACH,OAAO,GAAG,KAAK,CAAC;iBACnB;gBAED,sBAAO,CAAC,IAAsB,EAAE,EAAC,MAAM,QAAA,EAAE,OAAO,SAAA,EAAC,CAAC,EAAC;;;gBAEnD,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,OAAK,CAAC,CAAC;gBAClD,sBAAO,CAAC,EAAE,EAAE,EAAC,MAAM,QAAA,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;;;;KAE7C,CAAC;AA1BW,QAAA,WAAW,eA0BtB","sourcesContent":["import CouchbaseConnection from '../connection';\n\nexport interface CustomQueryArgs {\n query: any;\n limit: number;\n params: any;\n}\n\nexport interface CustomQueryPagination {\n hasNext: boolean;\n params: any;\n}\n\n/**\n * Common pagination\n * query,\n bucketName = \"\",\n select = [\"id\", \"owner\"] || \"*\"\n * @param args PaginationArgs\n */\nexport const CustomQuery = async <T>(\n args: CustomQueryArgs\n): Promise<[T[], CustomQueryPagination]> => {\n const {query, limit, params} = args;\n\n const cluster = CouchbaseConnection.Instance.cluster;\n\n try {\n console.log('-> ', query);\n\n const {rows = []} = await cluster.query(query);\n\n const totalItems = rows.length;\n\n let hasNext = true;\n if (totalItems >= limit) {\n hasNext = true;\n } else {\n hasNext = false;\n }\n\n return [rows as unknown as T[], {params, hasNext}];\n } catch (error) {\n console.error('error running CustomQuery', error);\n return [[], {params, hasNext: false}];\n }\n};\n"]}
1
+ {"version":3,"file":"customQuery.js","sourceRoot":"","sources":["../../src/search/customQuery.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAAgD;AAahD;;;;;;GAMG;AACI,IAAM,WAAW,GAAG,UACvB,IAAqB;;;;;gBAEd,KAAK,GAAmB,IAAI,MAAvB,EAAE,KAAK,GAAY,IAAI,MAAhB,EAAE,MAAM,GAAI,IAAI,OAAR,CAAS;gBAE9B,OAAO,GAAG,oBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC;;;;gBAGjD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAEN,qBAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAA;;gBAAvC,KAAa,CAAA,SAA0B,CAAA,KAA9B,EAAT,IAAI,mBAAG,EAAE,KAAA;gBAEV,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;gBAE3B,OAAO,GAAG,IAAI,CAAC;gBACnB,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;oBACtB,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACJ,OAAO,GAAG,KAAK,CAAC;gBACpB,CAAC;gBAED,sBAAO,CAAC,IAAsB,EAAE,EAAC,MAAM,QAAA,EAAE,OAAO,SAAA,EAAC,CAAC,EAAC;;;gBAEnD,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,OAAK,CAAC,CAAC;gBAClD,sBAAO,CAAC,EAAE,EAAE,EAAC,MAAM,QAAA,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;;;;KAE7C,CAAC;AA1BW,QAAA,WAAW,eA0BtB","sourcesContent":["import CouchbaseConnection from '../connection';\n\nexport interface CustomQueryArgs {\n query: any;\n limit: number;\n params: any;\n}\n\nexport interface CustomQueryPagination {\n hasNext: boolean;\n params: any;\n}\n\n/**\n * Common pagination\n * query,\n bucketName = \"\",\n select = [\"id\", \"owner\"] || \"*\"\n * @param args PaginationArgs\n */\nexport const CustomQuery = async <T>(\n args: CustomQueryArgs\n): Promise<[T[], CustomQueryPagination]> => {\n const {query, limit, params} = args;\n\n const cluster = CouchbaseConnection.Instance.cluster;\n\n try {\n console.log('-> ', query);\n\n const {rows = []} = await cluster.query(query);\n\n const totalItems = rows.length;\n\n let hasNext = true;\n if (totalItems >= limit) {\n hasNext = true;\n } else {\n hasNext = false;\n }\n\n return [rows as unknown as T[], {params, hasNext}];\n } catch (error) {\n console.error('error running CustomQuery', error);\n return [[], {params, hasNext: false}];\n }\n};\n"]}
@@ -5,5 +5,5 @@ interface CreateUpdate {
5
5
  owner?: string;
6
6
  data: any;
7
7
  }
8
- export declare const createUpdate: <T>(args: CreateUpdate) => Promise<T>;
8
+ export declare const createUpdate: <T>(args: CreateUpdate) => Promise<T | null>;
9
9
  export {};
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
@@ -35,20 +35,25 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
36
  }
37
37
  };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
38
41
  Object.defineProperty(exports, "__esModule", { value: true });
39
42
  exports.createUpdate = void 0;
40
- var lodash_1 = require("../utils/lodash");
43
+ var isEmpty_1 = __importDefault(require("lodash/isEmpty"));
44
+ var pickBy_1 = __importDefault(require("lodash/pickBy"));
45
+ var identity_1 = __importDefault(require("lodash/identity"));
41
46
  var createUpdate = function (args) { return __awaiter(void 0, void 0, void 0, function () {
42
47
  var model, id, data, createdItem, error_1;
43
48
  return __generator(this, function (_a) {
44
49
  switch (_a.label) {
45
50
  case 0:
46
51
  model = args.model, id = args.id;
47
- data = args.data;
52
+ data = (0, pickBy_1.default)(args.data, identity_1.default);
48
53
  _a.label = 1;
49
54
  case 1:
50
55
  _a.trys.push([1, 5, , 6]);
51
- if (!!(0, lodash_1.isEmpty)(id)) return [3 /*break*/, 3];
56
+ if (!!(0, isEmpty_1.default)(id)) return [3 /*break*/, 3];
52
57
  // update
53
58
  return [4 /*yield*/, model.updateById(id, data)];
54
59
  case 2:
@@ -1 +1 @@
1
- {"version":3,"file":"common.model.js","sourceRoot":"","sources":["../../src/shared/common.model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAwC;AAUjC,IAAM,YAAY,GAAG,UAAU,IAAkB;;;;;gBAC7C,KAAK,GAAQ,IAAI,MAAZ,EAAE,EAAE,GAAI,IAAI,GAAR,CAAS;gBACnB,IAAI,GAAQ,IAAI,CAAC,IAAI,CAAC;;;;qBAGpB,CAAC,IAAA,gBAAO,EAAC,EAAE,CAAC,EAAZ,wBAAY;gBACZ,SAAS;gBACT,qBAAM,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,EAAA;;gBADhC,SAAS;gBACT,SAAgC,CAAC;gBACjC,sBAAO,IAAI,EAAC;oBAGI,qBAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAA;;gBAAtC,WAAW,GAAG,SAAwB;gBAC5C,sBAAO,WAAW,EAAC;;;gBAEnB,OAAO,CAAC,KAAK,CAAC,6BAAsB,KAAK,CAAC,cAAc,CAAE,EAAE,OAAK,CAAC,CAAC;gBACnE,sBAAO,IAAI,EAAC;;;;KAEnB,CAAC;AAjBW,QAAA,YAAY,gBAiBvB","sourcesContent":["import {isEmpty} from '../utils/lodash';\nimport {Model} from '../model';\n\ninterface CreateUpdate {\n model: Model;\n id?: string;\n owner?: string;\n data: any;\n}\n\nexport const createUpdate = async <T>(args: CreateUpdate): Promise<T | null> => {\n const {model, id} = args;\n const data: any = args.data;\n\n try {\n if (!isEmpty(id)) {\n // update\n await model.updateById(id, data);\n return data;\n }\n // create\n const createdItem = await model.create(data);\n return createdItem;\n } catch (error) {\n console.error(`error creating for ${model.collectionName}`, error);\n return null;\n }\n};\n"]}
1
+ {"version":3,"file":"common.model.js","sourceRoot":"","sources":["../../src/shared/common.model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2DAAqC;AACrC,yDAAmC;AACnC,6DAAuC;AAWhC,IAAM,YAAY,GAAG,UAAU,IAAkB;;;;;gBAC7C,KAAK,GAAQ,IAAI,MAAZ,EAAE,EAAE,GAAI,IAAI,GAAR,CAAS;gBACnB,IAAI,GAAQ,IAAA,gBAAM,EAAC,IAAI,CAAC,IAAI,EAAE,kBAAQ,CAAC,CAAC;;;;qBAGtC,CAAC,IAAA,iBAAO,EAAC,EAAE,CAAC,EAAZ,wBAAY;gBACZ,SAAS;gBACT,qBAAM,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,EAAA;;gBADhC,SAAS;gBACT,SAAgC,CAAC;gBACjC,sBAAO,IAAI,EAAC;oBAGI,qBAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAA;;gBAAtC,WAAW,GAAG,SAAwB;gBAC5C,sBAAO,WAAW,EAAC;;;gBAEnB,OAAO,CAAC,KAAK,CAAC,6BAAsB,KAAK,CAAC,cAAc,CAAE,EAAE,OAAK,CAAC,CAAC;gBACnE,sBAAO,IAAI,EAAC;;;;KAEnB,CAAC;AAjBW,QAAA,YAAY,gBAiBvB","sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport pickBy from 'lodash/pickBy';\nimport identity from 'lodash/identity';\n\nimport {Model} from '../model';\n\ninterface CreateUpdate {\n model: Model;\n id?: string;\n owner?: string;\n data: any;\n}\n\nexport const createUpdate = async <T>(args: CreateUpdate): Promise<T | null> => {\n const {model, id} = args;\n const data: any = pickBy(args.data, identity);\n\n try {\n if (!isEmpty(id)) {\n // update\n await model.updateById(id, data);\n return data;\n }\n // create\n const createdItem = await model.create(data);\n return createdItem;\n } catch (error) {\n console.error(`error creating for ${model.collectionName}`, error);\n return null;\n }\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.awaitTo = void 0;
3
+ exports.awaitTo = awaitTo;
4
4
  /**
5
5
  * Async await wrapper for easy error handling
6
6
  * @param { Promise } promise
@@ -26,6 +26,5 @@ function awaitTo(promise, errorExt) {
26
26
  return [err, undefined];
27
27
  });
28
28
  }
29
- exports.awaitTo = awaitTo;
30
29
  exports.default = awaitTo;
31
30
  //# sourceMappingURL=awaitTo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"awaitTo.js","sourceRoot":"","sources":["../../src/utils/awaitTo.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,SAAgB,OAAO,CACnB,OAAmB,EACnB,QAA8B;IAE9B,OAAO,OAAO;SACT,IAAI,CAAY,UAAC,IAAO,IAAK,OAAA,CAAC,IAAI,EAAE,IAAI,CAAC,EAAZ,CAAY,CAAC;SAC1C,KAAK,CAAiB,UAAC,GAAM;QAC1B,IAAI,QAAQ,EAAE;YACV,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SAChC;QAED,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACX,CAAC;AAbD,0BAaC;AAED,kBAAe,OAAO,CAAC","sourcesContent":["/**\n * Async await wrapper for easy error handling\n * @param { Promise } promise\n * @param { Object= } errorExt - Additional Information you can pass to the err object\n * @return { Promise }\n * \n let err, user, savedTask;\n\n [ err, user ] = await awaitTo(UserModel.findById(1));\n if(!user) return cb('No user found');\n\n [ err, savedTask ] = await awaitTo(TaskModel({userId: user.id, name: 'Demo Task'}));\n if(err) return cb('Error occurred while saving task');\n\n */\nexport function awaitTo<T, U = Error>(\n promise: Promise<T>,\n errorExt?: Record<string, any>\n): Promise<[U, undefined] | [null, T]> {\n return promise\n .then<[null, T]>((data: T) => [null, data])\n .catch<[U, undefined]>((err: U) => {\n if (errorExt) {\n Object.assign(err, errorExt);\n }\n\n return [err, undefined];\n });\n}\n\nexport default awaitTo;\n"]}
1
+ {"version":3,"file":"awaitTo.js","sourceRoot":"","sources":["../../src/utils/awaitTo.ts"],"names":[],"mappings":";;AAeA,0BAaC;AA5BD;;;;;;;;;;;;;;GAcG;AACH,SAAgB,OAAO,CACnB,OAAmB,EACnB,QAA8B;IAE9B,OAAO,OAAO;SACT,IAAI,CAAY,UAAC,IAAO,IAAK,OAAA,CAAC,IAAI,EAAE,IAAI,CAAC,EAAZ,CAAY,CAAC;SAC1C,KAAK,CAAiB,UAAC,GAAM;QAC1B,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACX,CAAC;AAED,kBAAe,OAAO,CAAC","sourcesContent":["/**\n * Async await wrapper for easy error handling\n * @param { Promise } promise\n * @param { Object= } errorExt - Additional Information you can pass to the err object\n * @return { Promise }\n * \n let err, user, savedTask;\n\n [ err, user ] = await awaitTo(UserModel.findById(1));\n if(!user) return cb('No user found');\n\n [ err, savedTask ] = await awaitTo(TaskModel({userId: user.id, name: 'Demo Task'}));\n if(err) return cb('Error occurred while saving task');\n\n */\nexport function awaitTo<T, U = Error>(\n promise: Promise<T>,\n errorExt?: Record<string, any>\n): Promise<[U, undefined] | [null, T]> {\n return promise\n .then<[null, T]>((data: T) => [null, data])\n .catch<[U, undefined]>((err: U) => {\n if (errorExt) {\n Object.assign(err, errorExt);\n }\n\n return [err, undefined];\n });\n}\n\nexport default awaitTo;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":";;;AAMA;;;GAGG;AACI,IAAM,YAAY,GAAG,UAAC,IAAmB;IAC5C,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7C;IAED,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7C;IAED,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAdW,QAAA,YAAY,gBAcvB","sourcesContent":["interface DataWithDates {\n createdAt: Date;\n updatedAt: Date;\n date: Date;\n}\n\n/**\n * Convert date strings to data objects\n * @param data\n */\nexport const convertDates = (data: DataWithDates): any => {\n if (data && data.createdAt) {\n data.createdAt = new Date(data.createdAt);\n }\n\n if (data && data.updatedAt) {\n data.updatedAt = new Date(data.updatedAt);\n }\n\n if (data && data.date) {\n data.date = new Date(data.date);\n }\n\n return data;\n};\n"]}
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":";;;AAMA;;;GAGG;AACI,IAAM,YAAY,GAAG,UAAC,IAAmB;IAC5C,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAdW,QAAA,YAAY,gBAcvB","sourcesContent":["interface DataWithDates {\n createdAt: Date;\n updatedAt: Date;\n date: Date;\n}\n\n/**\n * Convert date strings to data objects\n * @param data\n */\nexport const convertDates = (data: DataWithDates): any => {\n if (data && data.createdAt) {\n data.createdAt = new Date(data.createdAt);\n }\n\n if (data && data.updatedAt) {\n data.updatedAt = new Date(data.updatedAt);\n }\n\n if (data && data.date) {\n data.date = new Date(data.date);\n }\n\n return data;\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isEdge = void 0;
3
+ exports.isEdge = isEdge;
4
4
  function isEdge() {
5
5
  if (typeof process !== 'undefined' && process.env.NEXT_RUNTIME === 'edge') {
6
6
  return true;
@@ -12,5 +12,4 @@ function isEdge() {
12
12
  // Additional checks for other edge environments can be added here
13
13
  return false;
14
14
  }
15
- exports.isEdge = isEdge;
16
15
  //# sourceMappingURL=edge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/utils/edge.ts"],"names":[],"mappings":";;;AAAA,SAAgB,MAAM;IAClB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM,EAAE;QACvE,OAAO,IAAI,CAAC;KACf;IAED,qEAAqE;IACrE,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,0BAA0B,EAAE;QACrF,OAAO,IAAI,CAAC;KACf;IAED,kEAAkE;IAClE,OAAO,KAAK,CAAC;AACjB,CAAC;AAZD,wBAYC","sourcesContent":["export function isEdge(): boolean {\n if (typeof process !== 'undefined' && process.env.NEXT_RUNTIME === 'edge') {\n return true;\n }\n\n // Check for Cloudflare Workers and other Service Worker environments\n if (typeof self !== 'undefined' && self.constructor.name === 'ServiceWorkerGlobalScope') {\n return true;\n }\n\n // Additional checks for other edge environments can be added here\n return false;\n}\n"]}
1
+ {"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/utils/edge.ts"],"names":[],"mappings":";;AAAA,wBAYC;AAZD,SAAgB,MAAM;IAClB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qEAAqE;IACrE,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QACtF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kEAAkE;IAClE,OAAO,KAAK,CAAC;AACjB,CAAC","sourcesContent":["export function isEdge(): boolean {\n if (typeof process !== 'undefined' && process.env.NEXT_RUNTIME === 'edge') {\n return true;\n }\n\n // Check for Cloudflare Workers and other Service Worker environments\n if (typeof self !== 'undefined' && self.constructor.name === 'ServiceWorkerGlobalScope') {\n return true;\n }\n\n // Additional checks for other edge environments can be added here\n return false;\n}\n"]}
@@ -3,4 +3,3 @@ export * from './text.utils';
3
3
  export * from './utils.schema';
4
4
  export * from './awaitTo';
5
5
  export * from './log';
6
- export * from './lodash';
@@ -19,5 +19,4 @@ __exportStar(require("./text.utils"), exports);
19
19
  __exportStar(require("./utils.schema"), exports);
20
20
  __exportStar(require("./awaitTo"), exports);
21
21
  __exportStar(require("./log"), exports);
22
- __exportStar(require("./lodash"), exports);
23
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,+CAA6B;AAC7B,iDAA+B;AAC/B,4CAA0B;AAC1B,wCAAsB;AACtB,2CAAyB","sourcesContent":["export * from './date';\nexport * from './text.utils';\nexport * from './utils.schema';\nexport * from './awaitTo';\nexport * from './log';\nexport * from './lodash';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,+CAA6B;AAC7B,iDAA+B;AAC/B,4CAA0B;AAC1B,wCAAsB","sourcesContent":["export * from './date';\nexport * from './text.utils';\nexport * from './utils.schema';\nexport * from './awaitTo';\nexport * from './log';\n"]}
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.capText = exports.JSONDATA = void 0;
6
+ exports.JSONDATA = void 0;
7
+ exports.capText = capText;
7
8
  var isEmpty_1 = __importDefault(require("lodash/isEmpty"));
8
9
  var JSONDATA = function (data) {
9
10
  if ((0, isEmpty_1.default)(data) || !data) {
@@ -29,6 +30,5 @@ exports.JSONDATA = JSONDATA;
29
30
  function capText(txt) {
30
31
  return txt.charAt(0).toUpperCase() + txt.slice(1); //or if you want lowercase the rest txt.slice(1).toLowerCase();
31
32
  }
32
- exports.capText = capText;
33
33
  exports.default = exports.JSONDATA;
34
34
  //# sourceMappingURL=text.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"text.utils.js","sourceRoot":"","sources":["../../src/utils/text.utils.ts"],"names":[],"mappings":";;;;;;AAAA,2DAAqC;AAE9B,IAAM,QAAQ,GAAG,UAAC,IAAS;IAC9B,IAAI,IAAA,iBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACxB,OAAO,IAAI,CAAC;KACf;IAED,IAAI;QACA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC3B;QACD,OAAO,IAAI,CAAC;KACf;IAAC,OAAO,KAAK,EAAE;QACZ,sDAAsD;QACtD,OAAO,IAAI,CAAC;KACf;AACL,CAAC,CAAC;AAdW,QAAA,QAAQ,YAcnB;AAEF;;;;GAIG;AACH,SAAgB,OAAO,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,+DAA+D;AACtH,CAAC;AAFD,0BAEC;AAED,kBAAe,gBAAQ,CAAC","sourcesContent":["import isEmpty from 'lodash/isEmpty';\n\nexport const JSONDATA = (data: any): Record<string, any> | string | null => {\n if (isEmpty(data) || !data) {\n return null;\n }\n\n try {\n if (typeof data !== 'object') {\n return JSON.parse(data);\n }\n return data;\n } catch (error) {\n // console.log('error trying to parse response data');\n return data;\n }\n};\n\n/**\n * CapitalizeFirstLetter\n * @param txt\n * @returns\n */\nexport function capText(txt: string): string {\n return txt.charAt(0).toUpperCase() + txt.slice(1); //or if you want lowercase the rest txt.slice(1).toLowerCase();\n}\n\nexport default JSONDATA;\n"]}
1
+ {"version":3,"file":"text.utils.js","sourceRoot":"","sources":["../../src/utils/text.utils.ts"],"names":[],"mappings":";;;;;;AAuBA,0BAEC;AAzBD,2DAAqC;AAE9B,IAAM,QAAQ,GAAG,UAAC,IAAS;IAC9B,IAAI,IAAA,iBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,sDAAsD;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AAdW,QAAA,QAAQ,YAcnB;AAEF;;;;GAIG;AACH,SAAgB,OAAO,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,+DAA+D;AACtH,CAAC;AAED,kBAAe,gBAAQ,CAAC","sourcesContent":["import isEmpty from 'lodash/isEmpty';\n\nexport const JSONDATA = (data: any): Record<string, any> | string | null => {\n if (isEmpty(data) || !data) {\n return null;\n }\n\n try {\n if (typeof data !== 'object') {\n return JSON.parse(data);\n }\n return data;\n } catch (error) {\n // console.log('error trying to parse response data');\n return data;\n }\n};\n\n/**\n * CapitalizeFirstLetter\n * @param txt\n * @returns\n */\nexport function capText(txt: string): string {\n return txt.charAt(0).toUpperCase() + txt.slice(1); //or if you want lowercase the rest txt.slice(1).toLowerCase();\n}\n\nexport default JSONDATA;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.schema.js","sourceRoot":"","sources":["../../src/utils/utils.schema.ts"],"names":[],"mappings":";;;AAEA,IAAM,UAAU,GAAG,UAAC,SAAsB,EAAE,KAAU;IAClD,QAAQ,SAAS,EAAE;QACf,KAAK,MAAM;YACP,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B;YACI,OAAO,KAAK,CAAC;KACpB;AACL,CAAC,CAAC;AAEF;;;GAGG;AACI,IAAM,WAAW,GAAG,UAAC,MAAW,EAAE,KAAU;IAC/C,2CAA2C;IAC3C,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEhC,IAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,IAAI,CAAC,OAAO,CAAC,UAAC,MAAM;QAChB,yBAAyB;QACzB,IAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,oBAAoB,EAAE;YACtB,WAAW,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;SACzE;aAAM;YACH,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;SACvC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC;AAlBW,QAAA,WAAW,eAkBtB","sourcesContent":["export type SchemaTypes = 'string' | 'number' | 'date' | 'object';\n\nconst parseValue = (fieldType: SchemaTypes, value: any): any => {\n switch (fieldType) {\n case 'date':\n return new Date(value);\n default:\n return value;\n }\n};\n\n/**\n * Convert date strings to data objects\n * @param data\n */\nexport const parseSchema = (schema: any, iItem: any): any => {\n // Get all schema types and parse with data\n const keys = Object.keys(iItem);\n\n const finalObject = {};\n\n keys.forEach((xField) => {\n // check if xField exists\n const xFieldExistsInSchema = schema[xField];\n\n if (xFieldExistsInSchema) {\n finalObject[xField] = parseValue(xFieldExistsInSchema, iItem[xField]);\n } else {\n finalObject[xField] = iItem[xField];\n }\n });\n\n return finalObject;\n};\n"]}
1
+ {"version":3,"file":"utils.schema.js","sourceRoot":"","sources":["../../src/utils/utils.schema.ts"],"names":[],"mappings":";;;AAEA,IAAM,UAAU,GAAG,UAAC,SAAsB,EAAE,KAAU;IAClD,QAAQ,SAAS,EAAE,CAAC;QAChB,KAAK,MAAM;YACP,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B;YACI,OAAO,KAAK,CAAC;IACrB,CAAC;AACL,CAAC,CAAC;AAEF;;;GAGG;AACI,IAAM,WAAW,GAAG,UAAC,MAAW,EAAE,KAAU;IAC/C,2CAA2C;IAC3C,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEhC,IAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,IAAI,CAAC,OAAO,CAAC,UAAC,MAAM;QAChB,yBAAyB;QACzB,IAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,oBAAoB,EAAE,CAAC;YACvB,WAAW,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACJ,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC;AAlBW,QAAA,WAAW,eAkBtB","sourcesContent":["export type SchemaTypes = 'string' | 'number' | 'date' | 'object';\n\nconst parseValue = (fieldType: SchemaTypes, value: any): any => {\n switch (fieldType) {\n case 'date':\n return new Date(value);\n default:\n return value;\n }\n};\n\n/**\n * Convert date strings to data objects\n * @param data\n */\nexport const parseSchema = (schema: any, iItem: any): any => {\n // Get all schema types and parse with data\n const keys = Object.keys(iItem);\n\n const finalObject = {};\n\n keys.forEach((xField) => {\n // check if xField exists\n const xFieldExistsInSchema = schema[xField];\n\n if (xFieldExistsInSchema) {\n finalObject[xField] = parseValue(xFieldExistsInSchema, iItem[xField]);\n } else {\n finalObject[xField] = iItem[xField];\n }\n });\n\n return finalObject;\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "couchset",
3
- "version": "0.2.0",
3
+ "version": "0.2.4",
4
4
  "description": "Couchbase ORM",
5
5
  "private": false,
6
6
  "main": "dist/index.js",
@@ -29,9 +29,6 @@
29
29
  "pre-commit": "lint-staged"
30
30
  }
31
31
  },
32
- "engines": {
33
- "node": ">=4.2.0"
34
- },
35
32
  "repository": {
36
33
  "type": "git",
37
34
  "url": "git+https://github.com/couchset/couchset.git"
@@ -65,7 +62,7 @@
65
62
  "@types/couchbase": "^2.4.9",
66
63
  "@types/debug": "^4.1.7",
67
64
  "@types/express": "^4.17.13",
68
- "@types/lodash": "^4.14.168",
65
+ "@types/lodash": "^4.17.10",
69
66
  "@types/mocha": "^8.2.0",
70
67
  "@types/node": "^10.0.3",
71
68
  "@types/source-map-support": "^0.4.0",
@@ -88,17 +85,16 @@
88
85
  "reflect-metadata": "^0.1.13",
89
86
  "rimraf": "^2.5.4",
90
87
  "ts-node": "^9.1.1",
91
- "tslint": "^5.11.0",
92
- "tslint-config-standard": "^8.0.1",
93
- "typescript": "^4.4.3"
94
- },
95
- "peerDependencies": {
96
- "typescript": ">=2.0"
88
+ "tslint": "^6.1.3",
89
+ "tslint-config-standard": "^9.0.0",
90
+ "tsx": "^4.19.1",
91
+ "typescript": "^5.6.3"
97
92
  },
98
93
  "dependencies": {
99
94
  "couchbase": "^4.4.2",
100
95
  "couchbase-serverless": "^0.0.2",
101
96
  "debug": "^4.3.1",
97
+ "lodash": "^4.17.21",
102
98
  "uuid": "^8.3.2"
103
99
  }
104
100
  }
@@ -1 +0,0 @@
1
- export declare function isEmpty(value?: unknown): boolean;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isEmpty = void 0;
4
- function isEmpty(value) {
5
- if (value == null) {
6
- return true;
7
- }
8
- if (Array.isArray(value) || typeof value === 'string') {
9
- return value.length === 0;
10
- }
11
- if (value instanceof Map || value instanceof Set) {
12
- return value.size === 0;
13
- }
14
- if (typeof value === 'object') {
15
- return Object.keys(value).length === 0;
16
- }
17
- return false;
18
- }
19
- exports.isEmpty = isEmpty;
20
- //# sourceMappingURL=lodash.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lodash.js","sourceRoot":"","sources":["../../src/utils/lodash.ts"],"names":[],"mappings":";;;AAAA,SAAgB,OAAO,CAAC,KAAe;IACnC,IAAI,KAAK,IAAI,IAAI,EAAE;QACf,OAAO,IAAI,CAAC;KACf;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACnD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;KAC7B;IAED,IAAI,KAAK,YAAY,GAAG,IAAI,KAAK,YAAY,GAAG,EAAE;QAC9C,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;KAC3B;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;KAC1C;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAlBD,0BAkBC","sourcesContent":["export function isEmpty(value?: unknown): boolean {\n if (value == null) {\n return true;\n }\n\n if (Array.isArray(value) || typeof value === 'string') {\n return value.length === 0;\n }\n\n if (value instanceof Map || value instanceof Set) {\n return value.size === 0;\n }\n\n if (typeof value === 'object') {\n return Object.keys(value).length === 0;\n }\n\n return false;\n}\n"]}