@pristine-ts/opensearch 0.0.217

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/LICENSE +201 -0
  2. package/dist/lib/cjs/clients/clients.js +18 -0
  3. package/dist/lib/cjs/clients/clients.js.map +1 -0
  4. package/dist/lib/cjs/clients/open-search.client.js +218 -0
  5. package/dist/lib/cjs/clients/open-search.client.js.map +1 -0
  6. package/dist/lib/cjs/elastic-search.module.js +30 -0
  7. package/dist/lib/cjs/elastic-search.module.js.map +1 -0
  8. package/dist/lib/cjs/elastic-search.module.keyname.js +5 -0
  9. package/dist/lib/cjs/elastic-search.module.keyname.js.map +1 -0
  10. package/dist/lib/cjs/models/aggregation.model.js +14 -0
  11. package/dist/lib/cjs/models/aggregation.model.js.map +1 -0
  12. package/dist/lib/cjs/models/models.js +23 -0
  13. package/dist/lib/cjs/models/models.js.map +1 -0
  14. package/dist/lib/cjs/models/query.model.js +23 -0
  15. package/dist/lib/cjs/models/query.model.js.map +1 -0
  16. package/dist/lib/cjs/models/range.model.js +7 -0
  17. package/dist/lib/cjs/models/range.model.js.map +1 -0
  18. package/dist/lib/cjs/models/search-result-aggregation.model.js +12 -0
  19. package/dist/lib/cjs/models/search-result-aggregation.model.js.map +1 -0
  20. package/dist/lib/cjs/models/search-result.model.js +15 -0
  21. package/dist/lib/cjs/models/search-result.model.js.map +1 -0
  22. package/dist/lib/cjs/models/sort-query.model.js +7 -0
  23. package/dist/lib/cjs/models/sort-query.model.js.map +1 -0
  24. package/dist/lib/cjs/open-search.module.js +42 -0
  25. package/dist/lib/cjs/open-search.module.js.map +1 -0
  26. package/dist/lib/cjs/open-search.module.keyname.js +5 -0
  27. package/dist/lib/cjs/open-search.module.keyname.js.map +1 -0
  28. package/dist/lib/cjs/parsers/parsers.js +18 -0
  29. package/dist/lib/cjs/parsers/parsers.js.map +1 -0
  30. package/dist/lib/cjs/parsers/request-query.parser.js +137 -0
  31. package/dist/lib/cjs/parsers/request-query.parser.js.map +1 -0
  32. package/dist/lib/esm/clients/clients.js +2 -0
  33. package/dist/lib/esm/clients/clients.js.map +1 -0
  34. package/dist/lib/esm/clients/open-search.client.js +215 -0
  35. package/dist/lib/esm/clients/open-search.client.js.map +1 -0
  36. package/dist/lib/esm/elastic-search.module.js +13 -0
  37. package/dist/lib/esm/elastic-search.module.js.map +1 -0
  38. package/dist/lib/esm/elastic-search.module.keyname.js +2 -0
  39. package/dist/lib/esm/elastic-search.module.keyname.js.map +1 -0
  40. package/dist/lib/esm/models/aggregation.model.js +10 -0
  41. package/dist/lib/esm/models/aggregation.model.js.map +1 -0
  42. package/dist/lib/esm/models/models.js +7 -0
  43. package/dist/lib/esm/models/models.js.map +1 -0
  44. package/dist/lib/esm/models/query.model.js +19 -0
  45. package/dist/lib/esm/models/query.model.js.map +1 -0
  46. package/dist/lib/esm/models/range.model.js +3 -0
  47. package/dist/lib/esm/models/range.model.js.map +1 -0
  48. package/dist/lib/esm/models/search-result-aggregation.model.js +8 -0
  49. package/dist/lib/esm/models/search-result-aggregation.model.js.map +1 -0
  50. package/dist/lib/esm/models/search-result.model.js +11 -0
  51. package/dist/lib/esm/models/search-result.model.js.map +1 -0
  52. package/dist/lib/esm/models/sort-query.model.js +3 -0
  53. package/dist/lib/esm/models/sort-query.model.js.map +1 -0
  54. package/dist/lib/esm/open-search.module.js +25 -0
  55. package/dist/lib/esm/open-search.module.js.map +1 -0
  56. package/dist/lib/esm/open-search.module.keyname.js +2 -0
  57. package/dist/lib/esm/open-search.module.keyname.js.map +1 -0
  58. package/dist/lib/esm/parsers/parsers.js +2 -0
  59. package/dist/lib/esm/parsers/parsers.js.map +1 -0
  60. package/dist/lib/esm/parsers/request-query.parser.js +134 -0
  61. package/dist/lib/esm/parsers/request-query.parser.js.map +1 -0
  62. package/dist/types/clients/clients.d.ts +1 -0
  63. package/dist/types/clients/open-search.client.d.ts +19 -0
  64. package/dist/types/elastic-search.module.d.ts +3 -0
  65. package/dist/types/elastic-search.module.keyname.d.ts +1 -0
  66. package/dist/types/models/aggregation.model.d.ts +7 -0
  67. package/dist/types/models/models.d.ts +6 -0
  68. package/dist/types/models/query.model.d.ts +41 -0
  69. package/dist/types/models/range.model.d.ts +3 -0
  70. package/dist/types/models/search-result-aggregation.model.d.ts +4 -0
  71. package/dist/types/models/search-result.model.d.ts +9 -0
  72. package/dist/types/models/sort-query.model.d.ts +3 -0
  73. package/dist/types/open-search.module.d.ts +6 -0
  74. package/dist/types/open-search.module.keyname.d.ts +1 -0
  75. package/dist/types/parsers/parsers.d.ts +1 -0
  76. package/dist/types/parsers/request-query.parser.d.ts +5 -0
  77. package/package.json +63 -0
  78. package/readme.md +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../../src/parsers/parsers.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,134 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Query } from "../models/query.model";
8
+ import { Aggregation } from "../models/aggregation.model";
9
+ import { Range } from "../models/range.model";
10
+ import { URL } from "url";
11
+ import { injectable } from 'tsyringe';
12
+ let RequestQueryParser = class RequestQueryParser {
13
+ parse(request) {
14
+ var _a, _b;
15
+ const openSearchQuery = new Query();
16
+ const url = new URL(request.url);
17
+ // Page
18
+ const page = url.searchParams.get("page");
19
+ if (page) {
20
+ openSearchQuery.page = isNaN(+page) ? undefined : +page;
21
+ }
22
+ // Query
23
+ const query = url.searchParams.get("query");
24
+ const searchType = url.searchParams.get("search_type");
25
+ const searchOperator = url.searchParams.get("search_operator");
26
+ if (query && query != "") {
27
+ openSearchQuery.query = query;
28
+ if (searchType && (searchType === "multi_match" || searchType === "query_string")) {
29
+ openSearchQuery.searchType = searchType;
30
+ openSearchQuery.searchOperator = (_a = searchOperator) !== null && _a !== void 0 ? _a : "and";
31
+ }
32
+ }
33
+ // Fields
34
+ const fields = url.searchParams.get("fields");
35
+ if (fields) {
36
+ openSearchQuery.fields = fields.split(",");
37
+ }
38
+ // Exclude fields from Response
39
+ const excludeFieldsFromResponse = url.searchParams.get("exclude_fields_from_response");
40
+ if (excludeFieldsFromResponse) {
41
+ openSearchQuery.excludeFieldsFromResponse = excludeFieldsFromResponse.split(",");
42
+ }
43
+ // Maximum number of results per page
44
+ const maximumNumberOfResultsPerPage = url.searchParams.get("maximum_number_of_results_per_page");
45
+ if (maximumNumberOfResultsPerPage) {
46
+ openSearchQuery.maximumNumberOfResultsPerPage = isNaN(+maximumNumberOfResultsPerPage) ? openSearchQuery.maximumNumberOfResultsPerPage : +maximumNumberOfResultsPerPage;
47
+ }
48
+ // Aggregation
49
+ const aggregationName = url.searchParams.get("aggregation_name");
50
+ const aggregationTerm = url.searchParams.get("aggregation_term");
51
+ const aggregationSize = url.searchParams.get("aggregation_size");
52
+ const aggregationSortOn = url.searchParams.get("aggregation_sort_on");
53
+ const aggregationSortOrder = url.searchParams.get("aggregation_sort_order");
54
+ if (aggregationName || aggregationTerm || aggregationSize) {
55
+ openSearchQuery.aggregation = new Aggregation();
56
+ openSearchQuery.aggregation.name = aggregationName !== null && aggregationName !== void 0 ? aggregationName : openSearchQuery.aggregation.name;
57
+ openSearchQuery.aggregation.term = aggregationTerm !== null && aggregationTerm !== void 0 ? aggregationTerm : openSearchQuery.aggregation.term;
58
+ if (aggregationSize) {
59
+ openSearchQuery.aggregation.size = isNaN(+aggregationSize) ? openSearchQuery.aggregation.size : +aggregationSize;
60
+ }
61
+ switch (aggregationSortOn) {
62
+ case 'term':
63
+ openSearchQuery.aggregation.sortOn = '_term';
64
+ break;
65
+ case "count":
66
+ openSearchQuery.aggregation.sortOn = "_count";
67
+ break;
68
+ }
69
+ openSearchQuery.aggregation.sortOrder = (_b = aggregationSortOrder) !== null && _b !== void 0 ? _b : openSearchQuery.aggregation.sortOrder;
70
+ }
71
+ // Sort
72
+ const sort = url.searchParams.get("sort");
73
+ if (sort) {
74
+ openSearchQuery.sort = [];
75
+ const sortingPairs = sort.split(',');
76
+ for (const sortingPair of sortingPairs) {
77
+ const pair = sortingPair.split(":");
78
+ const term = pair[0];
79
+ let order = "asc";
80
+ if (pair[1] && (pair[1] === "desc" || pair[1] === "asc")) {
81
+ order = pair[1];
82
+ }
83
+ openSearchQuery.sort.push({
84
+ [term]: {
85
+ order,
86
+ },
87
+ });
88
+ }
89
+ }
90
+ // Conditions
91
+ const conditions = url.searchParams.get("conditions");
92
+ if (conditions) {
93
+ openSearchQuery.conditions = [];
94
+ const parsedConditions = conditions.split(',');
95
+ for (const condition of parsedConditions) {
96
+ const pair = condition.split(":");
97
+ const term = pair[0];
98
+ if (pair[1]) {
99
+ openSearchQuery.conditions.push({
100
+ [term]: pair[1],
101
+ });
102
+ }
103
+ }
104
+ }
105
+ /**
106
+ * range_key : {string} The property on which the filter will be applied. E.g: createdAt.
107
+ * range_conditions : {string} The condition(s), comma separated with no space, that will be applied. E.g: gte:5,lte:6 or gte:0.01
108
+ * Available Conditions : gte (greater then equal), lte (less then equal), gt (greater then), lt (less then),
109
+ * Followed by the value of that condition. For Date, use the Epoch number, since the date format is not in our ElasticSearch.
110
+ * For more information : https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html.
111
+ */
112
+ const rangeKey = url.searchParams.get("range_key");
113
+ const rangeConditions = url.searchParams.get("range_conditions");
114
+ if (rangeKey && typeof rangeConditions === "string") {
115
+ openSearchQuery.range = {};
116
+ const range = new Range();
117
+ const conditions = rangeConditions.split(",");
118
+ for (const condition of conditions) {
119
+ const pair = condition.split(":");
120
+ const term = pair[0];
121
+ if (pair[1]) {
122
+ range[term] = isNaN(+pair[1]) ? pair[1] : +pair[1];
123
+ }
124
+ }
125
+ openSearchQuery.range[rangeKey] = range;
126
+ }
127
+ return openSearchQuery;
128
+ }
129
+ };
130
+ RequestQueryParser = __decorate([
131
+ injectable()
132
+ ], RequestQueryParser);
133
+ export { RequestQueryParser };
134
+ //# sourceMappingURL=request-query.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-query.parser.js","sourceRoot":"","sources":["../../../../src/parsers/request-query.parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./open-search.client";
@@ -0,0 +1,19 @@
1
+ import { Query } from "../models/query.model";
2
+ import { LogHandlerInterface } from "@pristine-ts/logging";
3
+ import { SearchResult } from "../models/search-result.model";
4
+ import { ApiResponse, Client } from '@opensearch-project/opensearch';
5
+ export declare class OpenSearchClient {
6
+ private readonly domainUrl;
7
+ private readonly region;
8
+ private readonly logHandler;
9
+ constructor(domainUrl: string, region: string, logHandler: LogHandlerInterface);
10
+ getClient(): Client;
11
+ parseResponse<T>(response: ApiResponse, resultClassObject: T, currentPage?: number, maximumNumberOfResultsPerPage?: number): Promise<SearchResult<T>>;
12
+ search<T>(indexName: string, resultClassObject: T, query: Query): Promise<SearchResult<T>>;
13
+ createIndex(name: string): Promise<void>;
14
+ deleteIndex(name: string): Promise<void>;
15
+ createDocument(indexName: string, id: string, document: any): Promise<void>;
16
+ indexDocument(indexName: string, id: string, document: any): Promise<void>;
17
+ updateDocument(indexName: string, id: string, document: any): Promise<void>;
18
+ deleteDocument(indexName: string, id: string): Promise<void>;
19
+ }
@@ -0,0 +1,3 @@
1
+ import { ModuleInterface } from "@pristine-ts/common";
2
+ export * from "./elastic-search.module.keyname";
3
+ export declare const ElasticSearchModule: ModuleInterface;
@@ -0,0 +1 @@
1
+ export declare const ElasticSearchModuleKeyname: string;
@@ -0,0 +1,7 @@
1
+ export declare class Aggregation {
2
+ name: string;
3
+ term: string;
4
+ size: number;
5
+ sortOn: "_term" | "_count";
6
+ sortOrder: "asc" | "desc";
7
+ }
@@ -0,0 +1,6 @@
1
+ export * from "./aggregation.model";
2
+ export * from "./query.model";
3
+ export * from "./range.model";
4
+ export * from "./search-result.model";
5
+ export * from "./search-result-aggregation.model";
6
+ export * from "./sort-query.model";
@@ -0,0 +1,41 @@
1
+ import { SortQuery } from "./sort-query.model";
2
+ import { Aggregation } from "./aggregation.model";
3
+ import { Range } from "./range.model";
4
+ export declare class Query {
5
+ /**
6
+ * "sort": [
7
+ * {
8
+ * "priority": {
9
+ * "order": "asc"
10
+ * }
11
+ * }
12
+ * ]
13
+ */
14
+ sort: {
15
+ [key: string]: SortQuery;
16
+ }[];
17
+ excludeFieldsFromResponse: string[];
18
+ fields: string[];
19
+ conditions: {
20
+ [key: string]: string | number | boolean;
21
+ }[];
22
+ page?: number;
23
+ maximumNumberOfResultsPerPage: number;
24
+ query?: string;
25
+ aggregation?: Aggregation;
26
+ searchType?: "multi_match" | "query_string";
27
+ searchOperator?: "and" | "or";
28
+ /**
29
+ * {
30
+ * range: {
31
+ * fieldName: {
32
+ * gte: 5,
33
+ * lte: 10
34
+ * }
35
+ * }
36
+ * }
37
+ */
38
+ range?: {
39
+ [key: string]: Range;
40
+ };
41
+ }
@@ -0,0 +1,3 @@
1
+ export declare class Range {
2
+ [key: string]: string | number;
3
+ }
@@ -0,0 +1,4 @@
1
+ import { Aggregation } from "./aggregation.model";
2
+ export declare class SearchResultAggregation extends Aggregation {
3
+ results: any[];
4
+ }
@@ -0,0 +1,9 @@
1
+ import { SearchResultAggregation } from "./search-result-aggregation.model";
2
+ export declare class SearchResult<T> {
3
+ total: number;
4
+ numberOfReturnedResults: number;
5
+ results: T[];
6
+ maximumNumberOfResultsPerPage: number;
7
+ currentPage: number;
8
+ aggregations: SearchResultAggregation[];
9
+ }
@@ -0,0 +1,3 @@
1
+ export declare class SortQuery {
2
+ order?: "asc" | "desc";
3
+ }
@@ -0,0 +1,6 @@
1
+ import { ModuleInterface } from "@pristine-ts/common";
2
+ export * from "./clients/clients";
3
+ export * from "./models/models";
4
+ export * from "./parsers/parsers";
5
+ export * from "./open-search.module.keyname";
6
+ export declare const OpenSearchModule: ModuleInterface;
@@ -0,0 +1 @@
1
+ export declare const OpenSearchModuleKeyname: string;
@@ -0,0 +1 @@
1
+ export * from './request-query.parser';
@@ -0,0 +1,5 @@
1
+ import { Query } from "../models/query.model";
2
+ import { Request } from "@pristine-ts/common";
3
+ export declare class RequestQueryParser {
4
+ parse(request: Request): Query;
5
+ }
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@pristine-ts/opensearch",
3
+ "version": "0.0.217",
4
+ "description": "",
5
+ "module": "dist/lib/esm/opensearch.module.js",
6
+ "main": "dist/lib/cjs/opensearch.module.js",
7
+ "types": "dist/types/opensearch.module.d.ts",
8
+ "scripts": {
9
+ "build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json",
10
+ "prepublish": "npm run build",
11
+ "test": "jest",
12
+ "test:cov": "jest --coverage"
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "author": "",
18
+ "license": "ISC",
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "dependencies": {
23
+ "@opensearch-project/opensearch": "^2.1.0",
24
+ "@pristine-ts/aws": "^0.0.217",
25
+ "@pristine-ts/common": "^0.0.217",
26
+ "@pristine-ts/core": "^0.0.217"
27
+ },
28
+ "jest": {
29
+ "transform": {
30
+ ".(ts|tsx)": "ts-jest"
31
+ },
32
+ "globals": {
33
+ "ts-jest": {
34
+ "tsconfig": {
35
+ "strictNullChecks": false
36
+ }
37
+ }
38
+ },
39
+ "testEnvironment": "node",
40
+ "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
41
+ "moduleFileExtensions": [
42
+ "ts",
43
+ "tsx",
44
+ "js"
45
+ ],
46
+ "coveragePathIgnorePatterns": [
47
+ "/node_modules/",
48
+ "/test/"
49
+ ],
50
+ "coverageThreshold": {
51
+ "global": {
52
+ "branches": 90,
53
+ "functions": 95,
54
+ "lines": 95,
55
+ "statements": 95
56
+ }
57
+ },
58
+ "collectCoverageFrom": [
59
+ "src/*.{js,ts}"
60
+ ]
61
+ },
62
+ "gitHead": "09d75c294b086344ec20d8226436aaee06cf2caa"
63
+ }
package/readme.md ADDED
@@ -0,0 +1,2 @@
1
+ # Elatiscsearch module
2
+