@opra/client 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/cjs/client-request.js +48 -0
  2. package/cjs/client.js +111 -68
  3. package/cjs/index.js +13 -3
  4. package/cjs/requests/batch-request.js +136 -0
  5. package/cjs/requests/collection-create-request.js +28 -15
  6. package/cjs/requests/collection-delete-many-request.js +21 -7
  7. package/cjs/requests/collection-delete-request.js +29 -0
  8. package/cjs/requests/collection-get-request.js +28 -15
  9. package/cjs/requests/collection-search-request.js +38 -40
  10. package/cjs/requests/collection-update-many-request.js +24 -7
  11. package/cjs/requests/collection-update-request.js +31 -15
  12. package/cjs/requests/singleton-get-request.js +25 -15
  13. package/cjs/services/collection-node.js +42 -0
  14. package/cjs/services/singleton-node.js +18 -0
  15. package/cjs/types.js +0 -9
  16. package/esm/client-request.d.ts +17 -0
  17. package/esm/client-request.js +44 -0
  18. package/esm/client.d.ts +27 -18
  19. package/esm/client.js +112 -69
  20. package/esm/index.d.ts +13 -3
  21. package/esm/index.js +13 -3
  22. package/esm/requests/batch-request.d.ts +19 -0
  23. package/esm/requests/batch-request.js +131 -0
  24. package/esm/requests/collection-create-request.d.ts +12 -7
  25. package/esm/requests/collection-create-request.js +28 -15
  26. package/esm/requests/collection-delete-many-request.d.ts +11 -6
  27. package/esm/requests/collection-delete-many-request.js +21 -7
  28. package/esm/requests/collection-delete-request.d.ts +13 -0
  29. package/esm/requests/collection-delete-request.js +25 -0
  30. package/esm/requests/collection-get-request.d.ts +12 -7
  31. package/esm/requests/collection-get-request.js +28 -15
  32. package/esm/requests/collection-search-request.d.ts +11 -14
  33. package/esm/requests/collection-search-request.js +38 -40
  34. package/esm/requests/collection-update-many-request.d.ts +12 -6
  35. package/esm/requests/collection-update-many-request.js +24 -7
  36. package/esm/requests/collection-update-request.d.ts +13 -7
  37. package/esm/requests/collection-update-request.js +31 -15
  38. package/esm/requests/singleton-get-request.d.ts +11 -7
  39. package/esm/requests/singleton-get-request.js +25 -15
  40. package/esm/services/collection-node.d.ts +24 -0
  41. package/esm/services/collection-node.js +38 -0
  42. package/esm/services/singleton-node.d.ts +12 -0
  43. package/esm/services/singleton-node.js +14 -0
  44. package/esm/types.d.ts +33 -6
  45. package/esm/types.js +0 -9
  46. package/package.json +13 -6
  47. package/cjs/observable-promise.js +0 -10
  48. package/cjs/response.js +0 -2
  49. package/cjs/services/collection-service.js +0 -192
  50. package/cjs/services/singleton-service.js +0 -43
  51. package/esm/observable-promise.d.ts +0 -2
  52. package/esm/observable-promise.js +0 -6
  53. package/esm/response.d.ts +0 -9
  54. package/esm/response.js +0 -1
  55. package/esm/services/collection-service.d.ts +0 -31
  56. package/esm/services/collection-service.js +0 -188
  57. package/esm/services/singleton-service.d.ts +0 -14
  58. package/esm/services/singleton-service.js +0 -39
@@ -1,18 +1,34 @@
1
- export class CollectionUpdateRequest {
2
- _options;
3
- constructor(_options = {}) {
4
- this._options = _options;
1
+ import { OpraURL } from '@opra/url';
2
+ import { OpraClientRequest } from '../client-request.js';
3
+ export class CollectionUpdateRequest extends OpraClientRequest {
4
+ client;
5
+ resource;
6
+ keyValue;
7
+ data;
8
+ options;
9
+ constructor(client, send, resource, keyValue, data, options = {}) {
10
+ super(client, send, options);
11
+ this.client = client;
12
+ this.resource = resource;
13
+ this.keyValue = keyValue;
14
+ this.data = data;
15
+ this.options = options;
5
16
  }
6
- omit(...fields) {
7
- this._options.omit = fields.flat();
8
- return this;
9
- }
10
- pick(...fields) {
11
- this._options.pick = fields.flat();
12
- return this;
13
- }
14
- include(...fields) {
15
- this._options.include = fields.flat();
16
- return this;
17
+ prepare() {
18
+ const url = new OpraURL(this.client.serviceUrl);
19
+ url.path.join(this.resource.name);
20
+ url.path.get(url.path.size - 1).key = this.keyValue;
21
+ if (this.options.include)
22
+ url.searchParams.set('$include', this.options.include);
23
+ if (this.options.pick)
24
+ url.searchParams.set('$pick', this.options.pick);
25
+ if (this.options.omit)
26
+ url.searchParams.set('$omit', this.options.omit);
27
+ return {
28
+ method: 'PATCH',
29
+ url: url.address,
30
+ data: this.data,
31
+ params: url.searchParams
32
+ };
17
33
  }
18
34
  }
@@ -1,8 +1,12 @@
1
- import { SingletonGetQueryOptions } from '@opra/schema';
2
- export declare class SingletonGetRequest {
3
- protected _options: SingletonGetQueryOptions;
4
- constructor(_options?: SingletonGetQueryOptions);
5
- omit(...fields: (string | string[])[]): this;
6
- pick(...fields: (string | string[])[]): this;
7
- include(...fields: (string | string[])[]): this;
1
+ import { AxiosRequestConfig } from 'axios';
2
+ import { SingletonGetQueryOptions, SingletonResourceInfo } from '@opra/schema';
3
+ import type { OpraClient } from '../client.js';
4
+ import { OpraClientRequest } from '../client-request.js';
5
+ import { ClientResponse, CommonQueryOptions } from '../types.js';
6
+ export declare class SingletonGetRequest<T, TResponse extends ClientResponse<T>> extends OpraClientRequest<T, TResponse> {
7
+ readonly client: OpraClient;
8
+ readonly resource: SingletonResourceInfo;
9
+ options: SingletonGetQueryOptions & CommonQueryOptions;
10
+ constructor(client: OpraClient, send: (req: AxiosRequestConfig) => Promise<TResponse>, resource: SingletonResourceInfo, options?: SingletonGetQueryOptions & CommonQueryOptions);
11
+ prepare(): AxiosRequestConfig;
8
12
  }
@@ -1,18 +1,28 @@
1
- export class SingletonGetRequest {
2
- _options;
3
- constructor(_options = {}) {
4
- this._options = _options;
1
+ import { OpraURL } from '@opra/url';
2
+ import { OpraClientRequest } from '../client-request.js';
3
+ export class SingletonGetRequest extends OpraClientRequest {
4
+ client;
5
+ resource;
6
+ options;
7
+ constructor(client, send, resource, options = {}) {
8
+ super(client, send, options);
9
+ this.client = client;
10
+ this.resource = resource;
11
+ this.options = options;
5
12
  }
6
- omit(...fields) {
7
- this._options.omit = fields.flat();
8
- return this;
9
- }
10
- pick(...fields) {
11
- this._options.pick = fields.flat();
12
- return this;
13
- }
14
- include(...fields) {
15
- this._options.include = fields.flat();
16
- return this;
13
+ prepare() {
14
+ const url = new OpraURL(this.client.serviceUrl);
15
+ url.path.join(this.resource.name);
16
+ if (this.options.include)
17
+ url.searchParams.set('$include', this.options.include);
18
+ if (this.options.pick)
19
+ url.searchParams.set('$pick', this.options.pick);
20
+ if (this.options.omit)
21
+ url.searchParams.set('$omit', this.options.omit);
22
+ return {
23
+ method: 'GET',
24
+ url: url.address,
25
+ params: url.searchParams
26
+ };
17
27
  }
18
28
  }
@@ -0,0 +1,24 @@
1
+ import { AxiosRequestConfig } from 'axios';
2
+ import type { CollectionCreateQueryOptions, CollectionDeleteManyQueryOptions, CollectionGetQueryOptions, CollectionResourceInfo, CollectionSearchQueryOptions, CollectionUpdateManyQueryOptions, CollectionUpdateQueryOptions } from '@opra/schema';
3
+ import type { OpraClient } from '../client.js';
4
+ import { CollectionCreateRequest } from '../requests/collection-create-request.js';
5
+ import { CollectionDeleteManyRequest } from '../requests/collection-delete-many-request.js';
6
+ import { CollectionDeleteRequest } from '../requests/collection-delete-request.js';
7
+ import { CollectionGetRequest } from '../requests/collection-get-request.js';
8
+ import { CollectionSearchRequest } from '../requests/collection-search-request.js';
9
+ import { CollectionUpdateManyRequest } from '../requests/collection-update-many-request.js';
10
+ import { CollectionUpdateRequest } from '../requests/collection-update-request.js';
11
+ import { ClientResponse, CommonQueryOptions, PartialInput } from '../types.js';
12
+ export declare class CollectionNode<T, TResponse extends ClientResponse<T>> {
13
+ readonly client: OpraClient;
14
+ readonly resource: CollectionResourceInfo;
15
+ protected _send: (req: AxiosRequestConfig) => Promise<TResponse>;
16
+ constructor(client: OpraClient, resource: CollectionResourceInfo, _send: (req: AxiosRequestConfig) => Promise<TResponse>);
17
+ create(data: PartialInput<T>, options?: CollectionCreateQueryOptions & CommonQueryOptions): CollectionCreateRequest<T, TResponse>;
18
+ delete(keyValue: any, options?: CommonQueryOptions): CollectionDeleteRequest<T, TResponse>;
19
+ deleteMany(options?: CollectionDeleteManyQueryOptions & CommonQueryOptions): CollectionDeleteManyRequest<T, TResponse>;
20
+ get(keyValue: any, options?: CollectionGetQueryOptions & CommonQueryOptions): CollectionGetRequest<T, TResponse>;
21
+ search(options?: CollectionSearchQueryOptions & CommonQueryOptions): CollectionSearchRequest<T, TResponse>;
22
+ update(keyValue: any, data: PartialInput<T>, options?: CollectionUpdateQueryOptions & CommonQueryOptions): CollectionUpdateRequest<T, TResponse>;
23
+ updateMany(data: PartialInput<T>, options?: CollectionUpdateManyQueryOptions & CommonQueryOptions): CollectionUpdateManyRequest<T, TResponse>;
24
+ }
@@ -0,0 +1,38 @@
1
+ import { CollectionCreateRequest } from '../requests/collection-create-request.js';
2
+ import { CollectionDeleteManyRequest } from '../requests/collection-delete-many-request.js';
3
+ import { CollectionDeleteRequest } from '../requests/collection-delete-request.js';
4
+ import { CollectionGetRequest } from '../requests/collection-get-request.js';
5
+ import { CollectionSearchRequest } from '../requests/collection-search-request.js';
6
+ import { CollectionUpdateManyRequest } from '../requests/collection-update-many-request.js';
7
+ import { CollectionUpdateRequest } from '../requests/collection-update-request.js';
8
+ export class CollectionNode {
9
+ client;
10
+ resource;
11
+ _send;
12
+ constructor(client, resource, _send) {
13
+ this.client = client;
14
+ this.resource = resource;
15
+ this._send = _send;
16
+ }
17
+ create(data, options) {
18
+ return new CollectionCreateRequest(this.client, this._send, this.resource, data, options);
19
+ }
20
+ delete(keyValue, options) {
21
+ return new CollectionDeleteRequest(this.client, this._send, this.resource, keyValue, options);
22
+ }
23
+ deleteMany(options) {
24
+ return new CollectionDeleteManyRequest(this.client, this._send, this.resource, options);
25
+ }
26
+ get(keyValue, options) {
27
+ return new CollectionGetRequest(this.client, this._send, this.resource, keyValue, options);
28
+ }
29
+ search(options) {
30
+ return new CollectionSearchRequest(this.client, this._send, this.resource, options);
31
+ }
32
+ update(keyValue, data, options) {
33
+ return new CollectionUpdateRequest(this.client, this._send, this.resource, keyValue, data, options);
34
+ }
35
+ updateMany(data, options) {
36
+ return new CollectionUpdateManyRequest(this.client, this._send, this.resource, data, options);
37
+ }
38
+ }
@@ -0,0 +1,12 @@
1
+ import { AxiosRequestConfig } from 'axios';
2
+ import { SingletonGetQueryOptions, SingletonResourceInfo } from '@opra/schema';
3
+ import type { OpraClient } from '../client.js';
4
+ import { SingletonGetRequest } from '../requests/singleton-get-request.js';
5
+ import { ClientResponse } from '../types.js';
6
+ export declare class SingletonNode<T, TResponse extends ClientResponse<T>> {
7
+ readonly client: OpraClient;
8
+ readonly resource: SingletonResourceInfo;
9
+ protected _send: (req: AxiosRequestConfig) => Promise<TResponse>;
10
+ constructor(client: OpraClient, resource: SingletonResourceInfo, _send: (req: AxiosRequestConfig) => Promise<TResponse>);
11
+ get(options?: SingletonGetQueryOptions): SingletonGetRequest<T, TResponse>;
12
+ }
@@ -0,0 +1,14 @@
1
+ import { SingletonGetRequest } from '../requests/singleton-get-request.js';
2
+ export class SingletonNode {
3
+ client;
4
+ resource;
5
+ _send;
6
+ constructor(client, resource, _send) {
7
+ this.client = client;
8
+ this.resource = resource;
9
+ this._send = _send;
10
+ }
11
+ get(options) {
12
+ return new SingletonGetRequest(this.client, this._send, this.resource, options);
13
+ }
14
+ }
package/esm/types.d.ts CHANGED
@@ -1,10 +1,37 @@
1
- import { AxiosRequestConfig } from 'axios';
2
- import { Observable } from 'rxjs';
3
- export declare type ObservablePromiseLike<T> = Observable<T> & PromiseLike<T>;
1
+ import { AxiosAdapter, AxiosBasicCredentials, AxiosProxyConfig, AxiosRequestConfig, AxiosResponse } from 'axios';
2
+ import { ResponsiveMap } from '@opra/common';
4
3
  export { PartialInput, PartialOutput } from '@opra/common';
4
+ export { AxiosRequestConfig, AxiosResponse, AxiosProxyConfig, AxiosBasicCredentials };
5
+ export declare type ClientAdapter = AxiosAdapter;
5
6
  export declare type ResponseHeaders = Partial<Record<string, string | string[]>>;
6
- export declare type CommonRequestOptions = {
7
+ export declare type MaxUploadRate = number;
8
+ export declare type MaxDownloadRate = number;
9
+ export declare type HttpRequestOptions = {
10
+ auth?: AxiosBasicCredentials;
7
11
  headers?: Record<string, string>;
8
- validateStatus?: boolean | ((status: number) => boolean);
12
+ timeout?: number;
13
+ timeoutErrorMessage?: string;
14
+ xsrfCookieName?: string;
15
+ xsrfHeaderName?: string;
16
+ maxRedirects?: number;
17
+ maxRate?: number | [MaxUploadRate, MaxDownloadRate];
18
+ httpAgent?: any;
19
+ httpsAgent?: any;
20
+ proxy?: AxiosProxyConfig | false;
21
+ validateStatus?: ((status: number) => boolean) | null;
9
22
  };
10
- export declare type RequestConfig = AxiosRequestConfig & CommonRequestOptions;
23
+ export declare type CommonQueryOptions = {
24
+ http?: HttpRequestOptions;
25
+ };
26
+ export declare type ClientResponse<T = any> = {
27
+ status: number;
28
+ statusText: string;
29
+ rawHeaders: ResponseHeaders;
30
+ headers: ResponsiveMap<string, string | string[]>;
31
+ data?: T;
32
+ };
33
+ export declare type BatchClientResponse = (ClientResponse & {
34
+ id: string;
35
+ })[];
36
+ export interface OpraBatchRequestOptions {
37
+ }
package/esm/types.js CHANGED
@@ -1,10 +1 @@
1
1
  export {};
2
- // export type CollectionCreateRequestOptions = CollectionCreateQueryOptions & CommonRequestOptions;
3
- // export type CollectionDeleteRequestOptions = CommonRequestOptions;
4
- // export type CollectionDeleteManyRequestOptions = CollectionDeleteManyQueryOptions & CommonRequestOptions;
5
- // export type CollectionGetRequestOptions = CollectionGetQueryOptions & CommonRequestOptions;
6
- // export type CollectionUpdateRequestOptions = CollectionUpdateQueryOptions & CommonRequestOptions;
7
- // export type CollectionUpdateManyRequestOptions = CollectionUpdateManyQueryOptions & CommonRequestOptions;
8
- // export type CollectionSearchRequestOptions = CollectionSearchQueryOptions & CommonRequestOptions;
9
- //
10
- // export type SingletonGetRequestOptions = SingletonGetQueryOptions & CommonRequestOptions;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/client",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Opra internationalization package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -26,16 +26,23 @@
26
26
  "clean:cover": "rimraf ../../coverage/client"
27
27
  },
28
28
  "dependencies": {
29
- "@opra/url": "^0.4.0",
30
- "@opra/exception": "^0.4.0",
31
- "@opra/schema": "^0.4.0",
29
+ "@opra/url": "^0.5.0",
30
+ "@opra/exception": "^0.5.0",
31
+ "@opra/schema": "^0.5.0",
32
32
  "axios": "^1.1.3",
33
+ "highland": "^2.13.5",
34
+ "power-tasks": "^1.5.0",
33
35
  "putil-isplainobject": "^1.1.4",
34
36
  "rxjs": "^7.5.7",
35
- "ts-gems": "^2.3.0"
37
+ "ts-gems": "^2.3.0",
38
+ "uid": "^2.0.1"
36
39
  },
37
40
  "devDependencies": {
38
- "@types/lodash": "^4.14.186"
41
+ "@types/lodash": "^4.14.186",
42
+ "@types/highland": "^2.12.14",
43
+ "axiosist": "^1.0.0",
44
+ "express": "^4.18.2",
45
+ "body-parser": "^1.20.1"
39
46
  },
40
47
  "type": "module",
41
48
  "types": "esm/index.d.ts",
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.observablePromise = void 0;
4
- const rxjs_1 = require("rxjs");
5
- function observablePromise(promise) {
6
- const observable = (0, rxjs_1.from)(promise);
7
- observable.then = (...args) => promise.then(...args);
8
- return observable;
9
- }
10
- exports.observablePromise = observablePromise;
package/cjs/response.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,192 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CollectionService = void 0;
4
- const url_1 = require("@opra/url");
5
- const observable_promise_js_1 = require("../observable-promise.js");
6
- const collection_create_request_js_1 = require("../requests/collection-create-request.js");
7
- const collection_delete_many_request_js_1 = require("../requests/collection-delete-many-request.js");
8
- const collection_get_request_js_1 = require("../requests/collection-get-request.js");
9
- const collection_search_request_js_1 = require("../requests/collection-search-request.js");
10
- const collection_update_many_request_js_1 = require("../requests/collection-update-many-request.js");
11
- const collection_update_request_js_1 = require("../requests/collection-update-request.js");
12
- class CollectionService {
13
- _serviceUrl;
14
- _document;
15
- _handler;
16
- _resource;
17
- constructor(_serviceUrl, _document, _handler, _resource) {
18
- this._serviceUrl = _serviceUrl;
19
- this._document = _document;
20
- this._handler = _handler;
21
- this._resource = _resource;
22
- }
23
- create(data, options) {
24
- const requestOptions = options && typeof options === 'object' ? options : {};
25
- const requestWrapper = new collection_create_request_js_1.CollectionCreateRequest(requestOptions);
26
- if (typeof options === 'function')
27
- options(requestWrapper);
28
- const req = this._prepareCreateRequest(data, requestOptions);
29
- const promise = this._handler(req);
30
- return (0, observable_promise_js_1.observablePromise)(promise);
31
- }
32
- delete(keyValue) {
33
- const req = this._prepareDeleteRequest(keyValue);
34
- const promise = this._handler(req);
35
- return (0, observable_promise_js_1.observablePromise)(promise);
36
- }
37
- deleteMany(options) {
38
- const requestOptions = options && typeof options === 'object' ? options : {};
39
- const requestWrapper = new collection_delete_many_request_js_1.CollectionDeleteManyRequest(requestOptions);
40
- if (typeof options === 'function')
41
- options(requestWrapper);
42
- const req = this._prepareDeleteManyRequest(requestOptions);
43
- const promise = this._handler(req);
44
- return (0, observable_promise_js_1.observablePromise)(promise);
45
- }
46
- get(keyValue, options) {
47
- const requestOptions = options && typeof options === 'object' ? options : {};
48
- const requestWrapper = new collection_get_request_js_1.CollectionGetRequest(requestOptions);
49
- if (typeof options === 'function')
50
- options(requestWrapper);
51
- const req = this._prepareGetRequest(keyValue, requestOptions);
52
- const promise = this._handler(req);
53
- return (0, observable_promise_js_1.observablePromise)(promise);
54
- }
55
- search(options) {
56
- const requestOptions = options && typeof options === 'object' ? options : {};
57
- const requestWrapper = new collection_search_request_js_1.CollectionSearchRequest(requestOptions);
58
- if (typeof options === 'function')
59
- options(requestWrapper);
60
- const req = this._prepareSearchRequest(requestOptions);
61
- const promise = this._handler(req);
62
- return (0, observable_promise_js_1.observablePromise)(promise);
63
- }
64
- update(keyValue, data, options) {
65
- const requestOptions = options && typeof options === 'object' ? options : {};
66
- const requestWrapper = new collection_update_request_js_1.CollectionUpdateRequest(requestOptions);
67
- if (typeof options === 'function')
68
- options(requestWrapper);
69
- const req = this._prepareUpdateRequest(keyValue, data, requestOptions);
70
- const promise = this._handler(req);
71
- return (0, observable_promise_js_1.observablePromise)(promise);
72
- }
73
- updateMany(data, options) {
74
- const requestOptions = options && typeof options === 'object' ? options : {};
75
- const requestWrapper = new collection_update_many_request_js_1.CollectionUpdateManyRequest(requestOptions);
76
- if (typeof options === 'function')
77
- options(requestWrapper);
78
- const req = this._prepareUpdateManyRequest(data, requestOptions);
79
- const promise = this._handler(req);
80
- return (0, observable_promise_js_1.observablePromise)(promise);
81
- }
82
- _prepareCreateRequest(data, options) {
83
- const url = new url_1.OpraURL(this._serviceUrl);
84
- url.path.join(this._resource.name);
85
- if (options.include)
86
- url.searchParams.set('$include', options.include);
87
- if (options.pick)
88
- url.searchParams.set('$pick', options.pick);
89
- if (options.omit)
90
- url.searchParams.set('$omit', options.omit);
91
- return {
92
- method: 'POST',
93
- url: url.address,
94
- data,
95
- params: url.searchParams
96
- };
97
- }
98
- _prepareDeleteRequest(keyValue) {
99
- const url = new url_1.OpraURL(this._serviceUrl);
100
- url.path.join(this._resource.name);
101
- url.path.get(url.path.size - 1).key = keyValue;
102
- return {
103
- method: 'DELETE',
104
- url: url.address,
105
- params: url.searchParams
106
- };
107
- }
108
- _prepareDeleteManyRequest(options) {
109
- const url = new url_1.OpraURL(this._serviceUrl);
110
- url.path.join(this._resource.name);
111
- if (options.filter)
112
- url.searchParams.set('$filter', options.filter);
113
- return {
114
- method: 'DELETE',
115
- url: url.address,
116
- params: url.searchParams
117
- };
118
- }
119
- _prepareGetRequest(keyValue, options) {
120
- const url = new url_1.OpraURL(this._serviceUrl);
121
- url.path.join(this._resource.name);
122
- url.path.get(url.path.size - 1).key = keyValue;
123
- if (options.include)
124
- url.searchParams.set('$include', options.include);
125
- if (options.pick)
126
- url.searchParams.set('$pick', options.pick);
127
- if (options.omit)
128
- url.searchParams.set('$omit', options.omit);
129
- return {
130
- method: 'GET',
131
- url: url.address,
132
- params: url.searchParams
133
- };
134
- }
135
- _prepareSearchRequest(options) {
136
- const url = new url_1.OpraURL(this._serviceUrl);
137
- url.path.join(this._resource.name);
138
- if (options.include)
139
- url.searchParams.set('$include', options.include);
140
- if (options.pick)
141
- url.searchParams.set('$pick', options.pick);
142
- if (options.omit)
143
- url.searchParams.set('$omit', options.omit);
144
- if (options.sort)
145
- url.searchParams.set('$sort', options.sort);
146
- if (options.filter)
147
- url.searchParams.set('$filter', options.filter);
148
- if (options.limit != null)
149
- url.searchParams.set('$limit', options.limit);
150
- if (options.skip != null)
151
- url.searchParams.set('$skip', options.skip);
152
- if (options.count != null)
153
- url.searchParams.set('$count', options.count);
154
- if (options.distinct != null)
155
- url.searchParams.set('$distinct', options.distinct);
156
- return {
157
- method: 'GET',
158
- url: url.address,
159
- params: url.searchParams
160
- };
161
- }
162
- _prepareUpdateRequest(keyValue, data, options) {
163
- const url = new url_1.OpraURL(this._serviceUrl);
164
- url.path.join(this._resource.name);
165
- url.path.get(url.path.size - 1).key = keyValue;
166
- if (options.include)
167
- url.searchParams.set('$include', options.include);
168
- if (options.pick)
169
- url.searchParams.set('$pick', options.pick);
170
- if (options.omit)
171
- url.searchParams.set('$omit', options.omit);
172
- return {
173
- method: 'PATCH',
174
- url: url.address,
175
- data,
176
- params: url.searchParams
177
- };
178
- }
179
- _prepareUpdateManyRequest(data, options) {
180
- const url = new url_1.OpraURL(this._serviceUrl);
181
- url.path.join(this._resource.name);
182
- if (options.filter)
183
- url.searchParams.set('$filter', options.filter);
184
- return {
185
- method: 'PATCH',
186
- url: url.address,
187
- data,
188
- params: url.searchParams
189
- };
190
- }
191
- }
192
- exports.CollectionService = CollectionService;
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SingletonService = void 0;
4
- const url_1 = require("@opra/url");
5
- const observable_promise_js_1 = require("../observable-promise.js");
6
- const singleton_get_request_js_1 = require("../requests/singleton-get-request.js");
7
- class SingletonService {
8
- _serviceUrl;
9
- _document;
10
- _handler;
11
- _resource;
12
- constructor(_serviceUrl, _document, _handler, _resource) {
13
- this._serviceUrl = _serviceUrl;
14
- this._document = _document;
15
- this._handler = _handler;
16
- this._resource = _resource;
17
- }
18
- get(options) {
19
- const requestOptions = options && typeof options === 'object' ? options : {};
20
- const requestWrapper = new singleton_get_request_js_1.SingletonGetRequest(requestOptions);
21
- if (typeof options === 'function')
22
- options(requestWrapper);
23
- const req = this._prepareGetRequest(requestOptions);
24
- const promise = this._handler(req);
25
- return (0, observable_promise_js_1.observablePromise)(promise);
26
- }
27
- _prepareGetRequest(options) {
28
- const url = new url_1.OpraURL(this._serviceUrl);
29
- url.path.join(this._resource.name);
30
- if (options.include)
31
- url.searchParams.set('$include', options.include);
32
- if (options.pick)
33
- url.searchParams.set('$pick', options.pick);
34
- if (options.omit)
35
- url.searchParams.set('$omit', options.omit);
36
- return {
37
- method: 'GET',
38
- url: url.address,
39
- params: url.searchParams
40
- };
41
- }
42
- }
43
- exports.SingletonService = SingletonService;
@@ -1,2 +0,0 @@
1
- import { ObservablePromiseLike } from './types.js';
2
- export declare function observablePromise<T>(promise: Promise<T>): ObservablePromiseLike<T>;
@@ -1,6 +0,0 @@
1
- import { from } from 'rxjs';
2
- export function observablePromise(promise) {
3
- const observable = from(promise);
4
- observable.then = (...args) => promise.then(...args);
5
- return observable;
6
- }
package/esm/response.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import { ResponsiveMap } from '@opra/common';
2
- import { ResponseHeaders } from './types.js';
3
- export declare type OpraResponse<T = any> = {
4
- status: number;
5
- statusText: string;
6
- rawHeaders: ResponseHeaders;
7
- headers: ResponsiveMap<string, string | string[]>;
8
- data?: T;
9
- };
package/esm/response.js DELETED
@@ -1 +0,0 @@
1
- export {};
@@ -1,31 +0,0 @@
1
- import { AxiosRequestConfig } from 'axios';
2
- import { CollectionCreateQueryOptions, CollectionDeleteManyQueryOptions, CollectionGetQueryOptions, CollectionResourceInfo, CollectionSearchQueryOptions, CollectionUpdateManyQueryOptions, CollectionUpdateQueryOptions, OpraDocument } from '@opra/schema';
3
- import { CollectionCreateRequest } from '../requests/collection-create-request.js';
4
- import { CollectionDeleteManyRequest } from '../requests/collection-delete-many-request.js';
5
- import { CollectionGetRequest } from '../requests/collection-get-request.js';
6
- import { CollectionSearchRequest } from '../requests/collection-search-request.js';
7
- import { CollectionUpdateManyRequest } from '../requests/collection-update-many-request.js';
8
- import { CollectionUpdateRequest } from '../requests/collection-update-request.js';
9
- import { OpraResponse } from '../response.js';
10
- import { ObservablePromiseLike, PartialInput, RequestConfig } from '../types.js';
11
- export declare class CollectionService<T, TResponse extends OpraResponse<T>> {
12
- protected _serviceUrl: string;
13
- protected _document: OpraDocument;
14
- protected _handler: (req: AxiosRequestConfig) => Promise<any>;
15
- protected _resource: CollectionResourceInfo;
16
- constructor(_serviceUrl: string, _document: OpraDocument, _handler: (req: AxiosRequestConfig) => Promise<any>, _resource: CollectionResourceInfo);
17
- create(data: PartialInput<T>, options?: CollectionCreateQueryOptions | ((req: CollectionCreateRequest) => void)): ObservablePromiseLike<TResponse>;
18
- delete(keyValue: any): ObservablePromiseLike<TResponse>;
19
- deleteMany(options?: CollectionDeleteManyQueryOptions | ((req: CollectionDeleteManyRequest) => void)): ObservablePromiseLike<TResponse>;
20
- get(keyValue: any, options?: CollectionGetQueryOptions | ((req: CollectionGetRequest) => void)): ObservablePromiseLike<TResponse>;
21
- search(options?: CollectionSearchQueryOptions | ((req: CollectionSearchRequest) => void)): ObservablePromiseLike<TResponse>;
22
- update(keyValue: any, data: PartialInput<T>, options?: CollectionUpdateQueryOptions | ((req: CollectionUpdateRequest) => void)): ObservablePromiseLike<TResponse>;
23
- updateMany(data: PartialInput<T>, options?: CollectionUpdateManyQueryOptions | ((req: CollectionUpdateManyRequest) => void)): ObservablePromiseLike<TResponse>;
24
- protected _prepareCreateRequest(data: any, options: CollectionCreateQueryOptions): AxiosRequestConfig;
25
- protected _prepareDeleteRequest(keyValue: any): AxiosRequestConfig;
26
- protected _prepareDeleteManyRequest(options: CollectionDeleteManyQueryOptions): AxiosRequestConfig;
27
- protected _prepareGetRequest(keyValue: any, options: CollectionGetQueryOptions): RequestConfig;
28
- protected _prepareSearchRequest(options: CollectionSearchQueryOptions): AxiosRequestConfig;
29
- protected _prepareUpdateRequest(keyValue: any, data: any, options: CollectionUpdateQueryOptions): RequestConfig;
30
- protected _prepareUpdateManyRequest(data: any, options: CollectionUpdateManyQueryOptions): RequestConfig;
31
- }