@fraym/projections 0.18.0 → 0.30.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.
- package/README.md +6 -260
- package/dist/{delivery → client}/auth.d.ts +1 -1
- package/dist/client/auth.js +1 -0
- package/dist/client/client.d.ts +20 -0
- package/dist/client/client.js +1 -0
- package/dist/client/config.js +1 -0
- package/dist/client/data.d.ts +1 -0
- package/dist/client/data.js +1 -0
- package/dist/client/delete.d.ts +5 -0
- package/dist/client/delete.js +1 -0
- package/dist/client/eventMetadata.d.ts +7 -0
- package/dist/client/eventMetadata.js +1 -0
- package/dist/{delivery → client}/filter.d.ts +1 -1
- package/dist/client/filter.js +1 -0
- package/dist/client/getData.d.ts +6 -0
- package/dist/client/getData.js +1 -0
- package/dist/client/getDataList.d.ts +12 -0
- package/dist/client/getDataList.js +1 -0
- package/dist/client/getViewData.d.ts +5 -0
- package/dist/client/getViewData.js +1 -0
- package/dist/client/getViewDataList.d.ts +12 -0
- package/dist/client/getViewDataList.js +1 -0
- package/dist/{delivery → client}/order.d.ts +1 -1
- package/dist/client/order.js +1 -0
- package/dist/client/upsert.d.ts +16 -0
- package/dist/client/upsert.js +1 -0
- package/dist/{delivery → client}/wait.d.ts +1 -1
- package/dist/client/wait.js +1 -0
- package/dist/eslint.config.js +1 -0
- package/dist/index.d.ts +9 -7
- package/dist/index.js +1 -22
- package/package.json +11 -27
- package/dist/config/config.js +0 -37
- package/dist/delivery/auth.js +0 -15
- package/dist/delivery/client.d.ts +0 -19
- package/dist/delivery/client.js +0 -55
- package/dist/delivery/delete.d.ts +0 -5
- package/dist/delivery/delete.js +0 -23
- package/dist/delivery/eventMetadata.d.ts +0 -4
- package/dist/delivery/eventMetadata.js +0 -2
- package/dist/delivery/filter.js +0 -20
- package/dist/delivery/getData.d.ts +0 -5
- package/dist/delivery/getData.js +0 -35
- package/dist/delivery/getDataList.d.ts +0 -11
- package/dist/delivery/getDataList.js +0 -40
- package/dist/delivery/getViewData.d.ts +0 -4
- package/dist/delivery/getViewData.js +0 -31
- package/dist/delivery/getViewDataList.d.ts +0 -11
- package/dist/delivery/getViewDataList.js +0 -40
- package/dist/delivery/order.js +0 -13
- package/dist/delivery/upsert.d.ts +0 -15
- package/dist/delivery/upsert.js +0 -48
- package/dist/delivery/wait.js +0 -15
- /package/dist/{config → client}/config.d.ts +0 -0
package/README.md
CHANGED
|
@@ -1,265 +1,11 @@
|
|
|
1
|
-
# projections
|
|
1
|
+
# projections
|
|
2
2
|
|
|
3
|
-
Client implementation in
|
|
3
|
+
Client implementation in JavaScript for the Freym service [projections](https://github.com/fraym/projections).
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Docs
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
npm i @fraym/projections
|
|
9
|
-
```
|
|
7
|
+
Please have a look at our [documentation](https://docs.freym.becklyn.app/docs/services/projections/introduction).
|
|
10
8
|
|
|
11
|
-
##
|
|
9
|
+
## License
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
There is a sandbox available at `http://projections:3000/delivery/graphql/sandbox`.
|
|
15
|
-
|
|
16
|
-
You need to add the `Tenant-Id` header in order to use the graphQL Endpoint and the sandbox.
|
|
17
|
-
|
|
18
|
-
### Config
|
|
19
|
-
|
|
20
|
-
Use a `.env` file or env variables to configure cte clients and the command:
|
|
21
|
-
|
|
22
|
-
```env
|
|
23
|
-
PROJECTIONS_SERVER_ADDRESS=127.0.0.1:9000
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Env variable placeholders in migrations
|
|
27
|
-
|
|
28
|
-
You can use placeholders that match environment variables in argument strings in your schema definitions:
|
|
29
|
-
|
|
30
|
-
In the following example the `{{env.BACKEND_HOSTNAME}}` part will be replaced by the value of the `BACKEND_HOSTNAME` environment variable.
|
|
31
|
-
Please add your used env variables to the `.env` file that is used to [configure the migration command](#config).
|
|
32
|
-
|
|
33
|
-
```graphql
|
|
34
|
-
type TestType {
|
|
35
|
-
value: String
|
|
36
|
-
@webhook(
|
|
37
|
-
url: "http://{{env.BACKEND_HOSTNAME}}/event-organizing/contingent/projections/frontend/contingent-management/webhook"
|
|
38
|
-
method: "GET"
|
|
39
|
-
header: [{ key: "Content-Type", value: "'application/json'" }]
|
|
40
|
-
body: [
|
|
41
|
-
{ key: "metadata", value: "metadata" }
|
|
42
|
-
{ key: "payload", value: "payload" }
|
|
43
|
-
{ key: "projection", value: "projection" }
|
|
44
|
-
]
|
|
45
|
-
)
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Usage
|
|
50
|
-
|
|
51
|
-
### Create the client
|
|
52
|
-
|
|
53
|
-
```typescript
|
|
54
|
-
const deliveryClient = await newDeliveryClient();
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### Authorization
|
|
58
|
-
|
|
59
|
-
All delivery client functions make use of the `AuthData` object.
|
|
60
|
-
This data is used to check access for the desired action.
|
|
61
|
-
|
|
62
|
-
You can add the `FRAYM_AUTH_OWNER` scope in case you are performing an action that is no subject to restrictions.
|
|
63
|
-
|
|
64
|
-
Fields:
|
|
65
|
-
|
|
66
|
-
- `tenantId`: Id of the tenant to use
|
|
67
|
-
- `scopes`: Slice of scopes to use for the action
|
|
68
|
-
- `data`: Data that is used in directives like `@filterFromJwtData`
|
|
69
|
-
|
|
70
|
-
### Event Metadata
|
|
71
|
-
|
|
72
|
-
You can specify the correlation and causation IDs for the upsert and delete functions. The `eventMetadata` parameter is optional for all these functions and has the following structure:
|
|
73
|
-
|
|
74
|
-
```typescript
|
|
75
|
-
const eventMetadata = {
|
|
76
|
-
correlationId: "some-correlation-id",
|
|
77
|
-
causationId: "some-causation-id",
|
|
78
|
-
};
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Upsert data in projection
|
|
82
|
-
|
|
83
|
-
In general you upsert data by publishing events on the event stream.
|
|
84
|
-
There are cases where you want to improve performance and get detailed validation output. In these cases you can use the client to directly upsert data. Do not worry, this is still event based under the hood.
|
|
85
|
-
|
|
86
|
-
```typescript
|
|
87
|
-
const response = await client.upsertData<{ fieldName: string }>(
|
|
88
|
-
"ProjectionName",
|
|
89
|
-
authData,
|
|
90
|
-
"dataId",
|
|
91
|
-
{
|
|
92
|
-
fieldName: "value",
|
|
93
|
-
},
|
|
94
|
-
eventMetadata
|
|
95
|
-
);
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
The response contains the following fields:
|
|
99
|
-
|
|
100
|
-
In case of no validation errors:
|
|
101
|
-
|
|
102
|
-
- `data`: The new data after your upsert action
|
|
103
|
-
|
|
104
|
-
In case of validation errors:
|
|
105
|
-
|
|
106
|
-
- `validationErrors`: List of global validation errors that are not related to a single field
|
|
107
|
-
- `fieldValidationErrors`: Validation errors mapped by the name of the field that they relate to
|
|
108
|
-
|
|
109
|
-
### Delete data from projection
|
|
110
|
-
|
|
111
|
-
In general you delete data by publishing events on the event stream.
|
|
112
|
-
There are cases where you want to improve performance and get detailed validation output. In these cases you can use the client to directly delete data. Do not worry, this is still event based under the hood.
|
|
113
|
-
|
|
114
|
-
Delete by Id:
|
|
115
|
-
|
|
116
|
-
```go
|
|
117
|
-
const numberOfDeletedEntries = await client.deleteDataById("ProjectionName", authData, "dataId", eventMetadata)
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
Delete by filter:
|
|
121
|
-
|
|
122
|
-
```go
|
|
123
|
-
const numberOfDeletedEntries = client.deleteDataByFilter("ProjectionName", authData, filter, eventMetadata)
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
### Get a single projection element
|
|
127
|
-
|
|
128
|
-
A filter could look like this:
|
|
129
|
-
|
|
130
|
-
```go
|
|
131
|
-
const filter := {
|
|
132
|
-
fields: {
|
|
133
|
-
fieldName: {
|
|
134
|
-
operation: "equals",
|
|
135
|
-
type: "Int",
|
|
136
|
-
value: 123,
|
|
137
|
-
},
|
|
138
|
-
},
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
The name of `YourProjection` has to equal your projection name in your schema (also in casing).
|
|
143
|
-
The `id` has to match the id of the projection element that you want to get.
|
|
144
|
-
|
|
145
|
-
```typescript
|
|
146
|
-
const data = await deliveryClient.getData(
|
|
147
|
-
"YourProjection",
|
|
148
|
-
authData,
|
|
149
|
-
"id",
|
|
150
|
-
filter,
|
|
151
|
-
returnEmptyDataIfNotFound
|
|
152
|
-
);
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### Get (paginated / filtered / ordered) data
|
|
156
|
-
|
|
157
|
-
The name of `YourProjection` has to equal your type name in your schema (also in casing).
|
|
158
|
-
|
|
159
|
-
No pagination:
|
|
160
|
-
|
|
161
|
-
```typescript
|
|
162
|
-
const dataList = await deliveryClient.getDataList("YourProjection", authData);
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
The dataList response contains the following fields:
|
|
166
|
-
|
|
167
|
-
- `limit`: The pagination limit
|
|
168
|
-
- `page`: The pagination page
|
|
169
|
-
- `total`: The total amount of elements matching the given filter
|
|
170
|
-
- `data`: The selected data
|
|
171
|
-
|
|
172
|
-
With pagination:
|
|
173
|
-
|
|
174
|
-
```typescript
|
|
175
|
-
const limit = 50; // elements to query per page
|
|
176
|
-
const page = 1; // number of the page you want to select, first page starts at: 1
|
|
177
|
-
const dataList = await deliveryClient.getDataList("YourProjection", authData, limit, page);
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
With filter:
|
|
181
|
-
|
|
182
|
-
```typescript
|
|
183
|
-
const dataList = await deliveryClient.getDataList(
|
|
184
|
-
"YourProjection",
|
|
185
|
-
authData,
|
|
186
|
-
undefined,
|
|
187
|
-
undefined,
|
|
188
|
-
{
|
|
189
|
-
fields: {
|
|
190
|
-
fieldName: {
|
|
191
|
-
operation: "equals",
|
|
192
|
-
type: "Int",
|
|
193
|
-
value: 123,
|
|
194
|
-
},
|
|
195
|
-
},
|
|
196
|
-
}
|
|
197
|
-
);
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
All `Filter`s are evaluated by:
|
|
201
|
-
|
|
202
|
-
- checking that all field filters match
|
|
203
|
-
- checking that all `and` filters match
|
|
204
|
-
- checking that one of the `or` filters match
|
|
205
|
-
|
|
206
|
-
Avaliable types:
|
|
207
|
-
|
|
208
|
-
- `String`
|
|
209
|
-
- `ID`
|
|
210
|
-
- `DateTime`
|
|
211
|
-
- `Int`
|
|
212
|
-
- `Float`
|
|
213
|
-
- `Boolean`
|
|
214
|
-
|
|
215
|
-
Avaliable operators for all types:
|
|
216
|
-
|
|
217
|
-
- `equals`
|
|
218
|
-
- `notEquals`
|
|
219
|
-
|
|
220
|
-
Avaliable options for the filter type `DateTime`:
|
|
221
|
-
|
|
222
|
-
- `inArray`
|
|
223
|
-
- `notInArray`
|
|
224
|
-
- `after`
|
|
225
|
-
- `before`
|
|
226
|
-
|
|
227
|
-
Avaliable options for the filter type `String` and `ID`:
|
|
228
|
-
|
|
229
|
-
- `inArray`
|
|
230
|
-
- `notInArray`
|
|
231
|
-
|
|
232
|
-
Avaliable options for the filter type `Int` and `Float`:
|
|
233
|
-
|
|
234
|
-
- `lessThan`
|
|
235
|
-
- `greaterThan`
|
|
236
|
-
- `lessThanOrEqual`
|
|
237
|
-
- `greaterThanOrEqual`
|
|
238
|
-
|
|
239
|
-
With order:
|
|
240
|
-
|
|
241
|
-
All order definitions are prioritized in the order that they are defined (the first definition is prioritized over the second).
|
|
242
|
-
|
|
243
|
-
```typescript
|
|
244
|
-
const dataList = await client.getDataList(
|
|
245
|
-
"YourProjection",
|
|
246
|
-
authData,
|
|
247
|
-
undefined,
|
|
248
|
-
undefined,
|
|
249
|
-
undefined,
|
|
250
|
-
[
|
|
251
|
-
{
|
|
252
|
-
field: "fieldName",
|
|
253
|
-
descending: true, // omit this value for asc order
|
|
254
|
-
},
|
|
255
|
-
]
|
|
256
|
-
);
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
### Gracefully close the delivery client
|
|
260
|
-
|
|
261
|
-
You won't lose any data if you don't. Use it for your peace of mind.
|
|
262
|
-
|
|
263
|
-
```typescript
|
|
264
|
-
client.close();
|
|
265
|
-
```
|
|
11
|
+
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getProtobufAuthData",{enumerable:true,get:function(){return getProtobufAuthData}});var getProtobufAuthData=function(auth){var data={};for(var key in auth.data){data[key]=JSON.stringify(auth.data[key])}return{tenantId:auth.tenantId,scopes:auth.scopes,data:data}};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AuthData } from "./auth";
|
|
2
|
+
import { DeliveryClientConfig } from "./config";
|
|
3
|
+
import { ProjectionData } from "./data";
|
|
4
|
+
import { EventMetadata } from "./eventMetadata";
|
|
5
|
+
import { Filter } from "./filter";
|
|
6
|
+
import { GetProjectionDataList } from "./getDataList";
|
|
7
|
+
import { Order } from "./order";
|
|
8
|
+
import { UpsertResponse } from "./upsert";
|
|
9
|
+
import { Wait } from "./wait";
|
|
10
|
+
export interface DeliveryClient {
|
|
11
|
+
getData: <T extends ProjectionData>(projection: string, authData: AuthData, id: string, filter?: Filter, returnEmptyDataIfNotFound?: boolean, useStrongConsistency?: boolean, deploymentId?: number, wait?: Wait) => Promise<T | null>;
|
|
12
|
+
getViewData: <T extends ProjectionData>(view: string, authData: AuthData, filter?: Filter, useStrongConsistency?: boolean, deploymentId?: number) => Promise<T | null>;
|
|
13
|
+
getDataList: <T extends ProjectionData>(projection: string, authData: AuthData, limit?: number, page?: number, filter?: Filter, order?: Order[], useStrongConsistency?: boolean, deploymentId?: number) => Promise<GetProjectionDataList<T> | null>;
|
|
14
|
+
getViewDataList: <T extends ProjectionData>(view: string, authData: AuthData, limit?: number, page?: number, filter?: Filter, order?: Order[], useStrongConsistency?: boolean, deploymentId?: number) => Promise<GetProjectionDataList<T> | null>;
|
|
15
|
+
upsertData: <T extends ProjectionData>(projection: string, authData: AuthData, dataId: string, payload: Partial<T>, eventMetadata?: Partial<EventMetadata>) => Promise<UpsertResponse<T>>;
|
|
16
|
+
deleteDataById: (projection: string, authData: AuthData, dataId: string, eventMetadata?: Partial<EventMetadata>) => Promise<number>;
|
|
17
|
+
deleteDataByFilter: (projection: string, authData: AuthData, filter?: Filter, eventMetadata?: Partial<EventMetadata>) => Promise<number>;
|
|
18
|
+
close: () => Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export declare const newDeliveryClient: (config?: DeliveryClientConfig) => Promise<DeliveryClient>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"newDeliveryClient",{enumerable:true,get:function(){return newDeliveryClient}});var _indexfreymprojectionsdelivery=require("@fraym/proto/dist/index.freym.projections.delivery");var _grpcjs=require("@grpc/grpc-js");var _config=require("./config");var _delete=require("./delete");var _getData=require("./getData");var _getDataList=require("./getDataList");var _getViewData=require("./getViewData");var _getViewDataList=require("./getViewDataList");var _upsert=require("./upsert");function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var newDeliveryClient=/*#__PURE__*/function(){var _ref=_async_to_generator(function(config){var serviceClient,getData,getViewData,getDataList,getViewDataList,upsertData,deleteDataById,deleteDataByFilter,close;return _ts_generator(this,function(_state){config=(0,_config.useDeliveryConfigDefaults)(config);serviceClient=new _indexfreymprojectionsdelivery.ServiceClient(config.serverAddress,_grpcjs.credentials.createInsecure(),{"grpc.keepalive_time_ms":config.keepaliveInterval,"grpc.keepalive_timeout_ms":config.keepaliveTimeout,"grpc.keepalive_permit_without_calls":1});getData=/*#__PURE__*/function(){var _ref=_async_to_generator(function(projection,auth,id){var filter,returnEmptyDataIfNotFound,useStrongConsistency,deploymentId,wait;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:filter=_arguments.length>3&&_arguments[3]!==void 0?_arguments[3]:{fields:{},and:[],or:[]},returnEmptyDataIfNotFound=_arguments.length>4&&_arguments[4]!==void 0?_arguments[4]:false,useStrongConsistency=_arguments.length>5&&_arguments[5]!==void 0?_arguments[5]:false,deploymentId=_arguments.length>6&&_arguments[6]!==void 0?_arguments[6]:null,wait=_arguments.length>7?_arguments[7]:void 0;return[4,(0,_getData.getProjectionData)(projection,auth,id,filter,returnEmptyDataIfNotFound,!!useStrongConsistency,deploymentId,serviceClient,wait)];case 1:return[2,_state.sent()]}})});return function getData(projection,auth,id){return _ref.apply(this,arguments)}}();getViewData=/*#__PURE__*/function(){var _ref=_async_to_generator(function(view,auth){var filter,useStrongConsistency,deploymentId;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:filter=_arguments.length>2&&_arguments[2]!==void 0?_arguments[2]:{fields:{},and:[],or:[]},useStrongConsistency=_arguments.length>3&&_arguments[3]!==void 0?_arguments[3]:false,deploymentId=_arguments.length>4&&_arguments[4]!==void 0?_arguments[4]:null;return[4,(0,_getViewData.getViewData)(view,auth,filter,!!useStrongConsistency,deploymentId,serviceClient)];case 1:return[2,_state.sent()]}})});return function getViewData(view,auth){return _ref.apply(this,arguments)}}();getDataList=/*#__PURE__*/function(){var _ref=_async_to_generator(function(projection,auth){var limit,page,filter,order,useStrongConsistency,deploymentId;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:limit=_arguments.length>2&&_arguments[2]!==void 0?_arguments[2]:0,page=_arguments.length>3&&_arguments[3]!==void 0?_arguments[3]:1,filter=_arguments.length>4&&_arguments[4]!==void 0?_arguments[4]:{fields:{},and:[],or:[]},order=_arguments.length>5&&_arguments[5]!==void 0?_arguments[5]:[],useStrongConsistency=_arguments.length>6&&_arguments[6]!==void 0?_arguments[6]:false,deploymentId=_arguments.length>7&&_arguments[7]!==void 0?_arguments[7]:null;return[4,(0,_getDataList.getProjectionDataList)(projection,auth,limit,page,filter,order,!!useStrongConsistency,deploymentId,serviceClient)];case 1:return[2,_state.sent()]}})});return function getDataList(projection,auth){return _ref.apply(this,arguments)}}();getViewDataList=/*#__PURE__*/function(){var _ref=_async_to_generator(function(view,auth){var limit,page,filter,order,useStrongConsistency,deploymentId;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:limit=_arguments.length>2&&_arguments[2]!==void 0?_arguments[2]:0,page=_arguments.length>3&&_arguments[3]!==void 0?_arguments[3]:1,filter=_arguments.length>4&&_arguments[4]!==void 0?_arguments[4]:{fields:{},and:[],or:[]},order=_arguments.length>5&&_arguments[5]!==void 0?_arguments[5]:[],useStrongConsistency=_arguments.length>6&&_arguments[6]!==void 0?_arguments[6]:false,deploymentId=_arguments.length>7&&_arguments[7]!==void 0?_arguments[7]:null;return[4,(0,_getViewDataList.getViewDataList)(view,auth,limit,page,filter,order,!!useStrongConsistency,deploymentId,serviceClient)];case 1:return[2,_state.sent()]}})});return function getViewDataList(view,auth){return _ref.apply(this,arguments)}}();upsertData=/*#__PURE__*/function(){var _ref=_async_to_generator(function(projection,authData,dataId,payload){var eventMetadata;var _arguments=arguments;return _ts_generator(this,function(_state){eventMetadata=_arguments.length>4&&_arguments[4]!==void 0?_arguments[4]:null;return[2,(0,_upsert.upsertProjectionData)(projection,authData,dataId,payload,eventMetadata,serviceClient)]})});return function upsertData(projection,authData,dataId,payload){return _ref.apply(this,arguments)}}();deleteDataById=/*#__PURE__*/function(){var _ref=_async_to_generator(function(projection,authData,dataId){var eventMetadata;var _arguments=arguments;return _ts_generator(this,function(_state){eventMetadata=_arguments.length>3&&_arguments[3]!==void 0?_arguments[3]:null;return[2,(0,_delete.deleteProjectionData)(projection,authData,dataId,{fields:{},and:[],or:[]},eventMetadata,serviceClient)]})});return function deleteDataById(projection,authData,dataId){return _ref.apply(this,arguments)}}();deleteDataByFilter=/*#__PURE__*/function(){var _ref=_async_to_generator(function(projection,authData){var filter,eventMetadata;var _arguments=arguments;return _ts_generator(this,function(_state){filter=_arguments.length>2&&_arguments[2]!==void 0?_arguments[2]:{fields:{},and:[],or:[]},eventMetadata=_arguments.length>3&&_arguments[3]!==void 0?_arguments[3]:null;return[2,(0,_delete.deleteProjectionData)(projection,authData,"",filter,eventMetadata,serviceClient)]})});return function deleteDataByFilter(projection,authData){return _ref.apply(this,arguments)}}();close=/*#__PURE__*/function(){var _ref=_async_to_generator(function(){return _ts_generator(this,function(_state){serviceClient.close();return[2]})});return function close(){return _ref.apply(this,arguments)}}();return[2,{getData:getData,getViewData:getViewData,getDataList:getDataList,getViewDataList:getViewDataList,upsertData:upsertData,deleteDataById:deleteDataById,deleteDataByFilter:deleteDataByFilter,close:close}]})});return function newDeliveryClient(config){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{getEnvDeliveryConfig:function(){return getEnvDeliveryConfig},useDeliveryConfigDefaults:function(){return useDeliveryConfigDefaults}});var _dotenv=require("dotenv");var getEnvDeliveryConfig=function(){(0,_dotenv.config)();var _process_env_PROJECTIONS_SERVER_ADDRESS;var serverAddress=(_process_env_PROJECTIONS_SERVER_ADDRESS=process.env.PROJECTIONS_SERVER_ADDRESS)!==null&&_process_env_PROJECTIONS_SERVER_ADDRESS!==void 0?_process_env_PROJECTIONS_SERVER_ADDRESS:"";var keepaliveInterval;var keepaliveTimeout;var keepaliveIntervalString=process.env.PROJECTIONS_CONNECTION_KEEPALIVE_INTERVAL;var keepaliveTimeoutString=process.env.PROJECTIONS_CONNECTION_KEEPALIVE_INTERVAL;if(keepaliveIntervalString){keepaliveInterval=parseInt(keepaliveIntervalString,10)}if(keepaliveTimeoutString){keepaliveTimeout=parseInt(keepaliveTimeoutString,10)}return{serverAddress:serverAddress,keepaliveInterval:keepaliveInterval,keepaliveTimeout:keepaliveTimeout}};var useDeliveryConfigDefaults=function(config){if(!config){config=getEnvDeliveryConfig()}var _config_keepaliveInterval,_config_keepaliveTimeout;return{serverAddress:config.serverAddress,keepaliveInterval:(_config_keepaliveInterval=config.keepaliveInterval)!==null&&_config_keepaliveInterval!==void 0?_config_keepaliveInterval:40*1e3,keepaliveTimeout:(_config_keepaliveTimeout=config.keepaliveTimeout)!==null&&_config_keepaliveTimeout!==void 0?_config_keepaliveTimeout:3*1e3}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type ProjectionData = Record<string, any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ServiceClient } from "@fraym/proto/dist/index.freym.projections.delivery";
|
|
2
|
+
import { AuthData } from "./auth";
|
|
3
|
+
import { EventMetadata } from "./eventMetadata";
|
|
4
|
+
import { Filter } from "./filter";
|
|
5
|
+
export declare const deleteProjectionData: (projection: string, auth: AuthData, dataId: string, filter: Filter, eventMetadata: Partial<EventMetadata> | null, serviceClient: ServiceClient) => Promise<number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"deleteProjectionData",{enumerable:true,get:function(){return deleteProjectionData}});var _auth=require("./auth");var _eventMetadata=require("./eventMetadata");var _filter=require("./filter");function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var deleteProjectionData=/*#__PURE__*/function(){var _ref=_async_to_generator(function(projection,auth,dataId,filter,eventMetadata,serviceClient){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve,reject){serviceClient.delete({projection:projection,auth:(0,_auth.getProtobufAuthData)(auth),dataId:dataId,filter:(0,_filter.getProtobufDataFilter)(filter),eventMetadata:(0,_eventMetadata.fillMetadataWithDefaults)(eventMetadata)},function(error,response){if(error){reject(error.message);return}resolve(parseInt(response.numberOfDeletedEntries,10))})})]})});return function deleteProjectionData(projection,auth,dataId,filter,eventMetadata,serviceClient){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"fillMetadataWithDefaults",{enumerable:true,get:function(){return fillMetadataWithDefaults}});var fillMetadataWithDefaults=function(metadata){if(!metadata){return{causationId:"",correlationId:"",deploymentId:"",userId:""}}return{causationId:metadata.causationId||"",correlationId:metadata.correlationId||"",deploymentId:metadata.deploymentId||"",userId:metadata.userId||""}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getProtobufDataFilter",{enumerable:true,get:function(){return getProtobufDataFilter}});var getProtobufDataFilter=function(filter){var fields={};for(var fieldName in filter.fields){var field=filter.fields[fieldName];if(!field){continue}fields[fieldName]={operation:field.operation,type:field.type,value:JSON.stringify(field.value)}}return{fields:fields,and:filter.and.map(function(and){return getProtobufDataFilter(and)}),or:filter.or.map(function(or){return getProtobufDataFilter(or)})}};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ServiceClient } from "@fraym/proto/dist/index.freym.projections.delivery";
|
|
2
|
+
import { AuthData } from "./auth";
|
|
3
|
+
import { ProjectionData } from "./data";
|
|
4
|
+
import { Filter } from "./filter";
|
|
5
|
+
import { Wait } from "./wait";
|
|
6
|
+
export declare const getProjectionData: <T extends ProjectionData>(projection: string, auth: AuthData, dataId: string, filter: Filter, returnEmptyDataIfNotFound: boolean, useStrongConsistency: boolean, deploymentId: number | null, serviceClient: ServiceClient, wait?: Wait) => Promise<T | null>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getProjectionData",{enumerable:true,get:function(){return getProjectionData}});var _auth=require("./auth");var _filter=require("./filter");var _wait=require("./wait");function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var getProjectionData=/*#__PURE__*/function(){var _ref=_async_to_generator(function(projection,auth,dataId,filter,returnEmptyDataIfNotFound,useStrongConsistency,deploymentId,serviceClient,wait){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve,reject){var _deploymentId_toString;serviceClient.getData({projection:projection,auth:(0,_auth.getProtobufAuthData)(auth),dataId:dataId,filter:(0,_filter.getProtobufDataFilter)(filter),returnEmptyDataIfNotFound:returnEmptyDataIfNotFound,wait:(0,_wait.getProtobufDataWait)(wait),useStrongConsistency:useStrongConsistency,deploymentId:(_deploymentId_toString=deploymentId===null||deploymentId===void 0?void 0:deploymentId.toString())!==null&&_deploymentId_toString!==void 0?_deploymentId_toString:""},function(error,response){if(error){reject(error.message);return}var result=response.result;if(!result||!result.data||Object.keys(result.data).length===0){resolve(null);return}var data={};for(var key in result.data){if(result.data[key]!==undefined){data[key]=JSON.parse(result.data[key])}}resolve(data)})})]})});return function getProjectionData(projection,auth,dataId,filter,returnEmptyDataIfNotFound,useStrongConsistency,deploymentId,serviceClient,wait){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ServiceClient } from "@fraym/proto/dist/index.freym.projections.delivery";
|
|
2
|
+
import { AuthData } from "./auth";
|
|
3
|
+
import { ProjectionData } from "./data";
|
|
4
|
+
import { Filter } from "./filter";
|
|
5
|
+
import { Order } from "./order";
|
|
6
|
+
export interface GetProjectionDataList<T extends ProjectionData> {
|
|
7
|
+
limit: number;
|
|
8
|
+
page: number;
|
|
9
|
+
total: number;
|
|
10
|
+
data: T[];
|
|
11
|
+
}
|
|
12
|
+
export declare const getProjectionDataList: <T extends ProjectionData>(projection: string, auth: AuthData, limit: number, page: number, filter: Filter, order: Order[], useStrongConsistency: boolean, deploymentId: number | null, serviceClient: ServiceClient) => Promise<GetProjectionDataList<T> | null>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getProjectionDataList",{enumerable:true,get:function(){return getProjectionDataList}});var _auth=require("./auth");var _filter=require("./filter");var _order=require("./order");function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var getProjectionDataList=/*#__PURE__*/function(){var _ref=_async_to_generator(function(projection,auth,limit,page,filter,order,useStrongConsistency,deploymentId,serviceClient){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve,reject){var _deploymentId_toString;serviceClient.getDataList({projection:projection,auth:(0,_auth.getProtobufAuthData)(auth),limit:limit.toString(),page:page.toString(),filter:(0,_filter.getProtobufDataFilter)(filter),order:(0,_order.getProtobufDataOrder)(order),useStrongConsistency:useStrongConsistency,deploymentId:(_deploymentId_toString=deploymentId===null||deploymentId===void 0?void 0:deploymentId.toString())!==null&&_deploymentId_toString!==void 0?_deploymentId_toString:""},function(error,response){if(error){reject(error.message);return}var data=[];var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=response.result[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var result=_step.value;var dataRecord={};var resultData=result.data;for(var key in resultData){if(resultData[key]!==undefined){dataRecord[key]=JSON.parse(resultData[key])}}data.push(dataRecord)}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}resolve({limit:parseInt(response.limit,10),page:parseInt(response.page,10),total:parseInt(response.total,10),data:data})})})]})});return function getProjectionDataList(projection,auth,limit,page,filter,order,useStrongConsistency,deploymentId,serviceClient){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ServiceClient } from "@fraym/proto/dist/index.freym.projections.delivery";
|
|
2
|
+
import { AuthData } from "./auth";
|
|
3
|
+
import { ProjectionData } from "./data";
|
|
4
|
+
import { Filter } from "./filter";
|
|
5
|
+
export declare const getViewData: <T extends ProjectionData>(view: string, auth: AuthData, filter: Filter, useStrongConsistency: boolean, deploymentId: number | null, serviceClient: ServiceClient) => Promise<T | null>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getViewData",{enumerable:true,get:function(){return getViewData}});var _auth=require("./auth");var _filter=require("./filter");function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var getViewData=/*#__PURE__*/function(){var _ref=_async_to_generator(function(view,auth,filter,useStrongConsistency,deploymentId,serviceClient){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve,reject){var _deploymentId_toString;serviceClient.getViewData({view:view,auth:(0,_auth.getProtobufAuthData)(auth),filter:(0,_filter.getProtobufDataFilter)(filter),useStrongConsistency:useStrongConsistency,deploymentId:(_deploymentId_toString=deploymentId===null||deploymentId===void 0?void 0:deploymentId.toString())!==null&&_deploymentId_toString!==void 0?_deploymentId_toString:""},function(error,response){if(error){reject(error.message);return}var result=response.result;if(!result||!result.data||Object.keys(result.data).length===0){resolve(null);return}var data={};for(var key in result.data){if(result.data[key]!==undefined){data[key]=JSON.parse(result.data[key])}}resolve(data)})})]})});return function getViewData(view,auth,filter,useStrongConsistency,deploymentId,serviceClient){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ServiceClient } from "@fraym/proto/dist/index.freym.projections.delivery";
|
|
2
|
+
import { AuthData } from "./auth";
|
|
3
|
+
import { ProjectionData } from "./data";
|
|
4
|
+
import { Filter } from "./filter";
|
|
5
|
+
import { Order } from "./order";
|
|
6
|
+
export interface GetViewDataList<T extends ProjectionData> {
|
|
7
|
+
limit: number;
|
|
8
|
+
page: number;
|
|
9
|
+
total: number;
|
|
10
|
+
data: T[];
|
|
11
|
+
}
|
|
12
|
+
export declare const getViewDataList: <T extends ProjectionData>(view: string, auth: AuthData, limit: number, page: number, filter: Filter, order: Order[], useStrongConsistency: boolean, deploymentId: number | null, serviceClient: ServiceClient) => Promise<GetViewDataList<T> | null>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getViewDataList",{enumerable:true,get:function(){return getViewDataList}});var _auth=require("./auth");var _filter=require("./filter");var _order=require("./order");function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var getViewDataList=/*#__PURE__*/function(){var _ref=_async_to_generator(function(view,auth,limit,page,filter,order,useStrongConsistency,deploymentId,serviceClient){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve,reject){var _deploymentId_toString;serviceClient.getViewDataList({view:view,auth:(0,_auth.getProtobufAuthData)(auth),limit:limit.toString(),page:page.toString(),filter:(0,_filter.getProtobufDataFilter)(filter),order:(0,_order.getProtobufDataOrder)(order),useStrongConsistency:useStrongConsistency,deploymentId:(_deploymentId_toString=deploymentId===null||deploymentId===void 0?void 0:deploymentId.toString())!==null&&_deploymentId_toString!==void 0?_deploymentId_toString:""},function(error,response){if(error){reject(error.message);return}var data=[];var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=response.result[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var result=_step.value;var dataRecord={};var resultData=result.data;for(var key in resultData){if(resultData[key]!==undefined){dataRecord[key]=JSON.parse(resultData[key])}}data.push(dataRecord)}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}resolve({limit:parseInt(response.limit,10),page:parseInt(response.page,10),total:parseInt(response.total,10),data:data})})})]})});return function getViewDataList(view,auth,limit,page,filter,order,useStrongConsistency,deploymentId,serviceClient){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getProtobufDataOrder",{enumerable:true,get:function(){return getProtobufDataOrder}});var getProtobufDataOrder=function(order){return order.map(function(o){var _o_descending;return{field:o.field,descending:(_o_descending=o.descending)!==null&&_o_descending!==void 0?_o_descending:false}})};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ServiceClient } from "@fraym/proto/dist/index.freym.projections.delivery";
|
|
2
|
+
import { AuthData } from "./auth";
|
|
3
|
+
import { ProjectionData } from "./data";
|
|
4
|
+
import { EventMetadata } from "./eventMetadata";
|
|
5
|
+
export type UpsertResponse<T extends ProjectionData> = UpsertSuccessResponse<T> | UpsertValidationResponse;
|
|
6
|
+
export interface UpsertSuccessResponse<T extends ProjectionData> {
|
|
7
|
+
data: T;
|
|
8
|
+
id: string;
|
|
9
|
+
}
|
|
10
|
+
export interface UpsertValidationResponse {
|
|
11
|
+
validationErrors: string[];
|
|
12
|
+
fieldValidationErrors: Record<string, string>;
|
|
13
|
+
}
|
|
14
|
+
export declare const isUpsertSuccessResponse: <T extends ProjectionData>(response: UpsertResponse<T>) => response is UpsertSuccessResponse<T>;
|
|
15
|
+
export declare const isUpsertValidationResponse: <T extends ProjectionData>(response: UpsertResponse<T>) => response is UpsertValidationResponse;
|
|
16
|
+
export declare const upsertProjectionData: <T extends ProjectionData>(projection: string, auth: AuthData, dataId: string, payload: Partial<T>, eventMetadata: Partial<EventMetadata> | null, serviceClient: ServiceClient) => Promise<UpsertResponse<T>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{isUpsertSuccessResponse:function(){return isUpsertSuccessResponse},isUpsertValidationResponse:function(){return isUpsertValidationResponse},upsertProjectionData:function(){return upsertProjectionData}});var _auth=require("./auth");var _eventMetadata=require("./eventMetadata");function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var isUpsertSuccessResponse=function(response){return Object.prototype.hasOwnProperty.call(response,"data")};var isUpsertValidationResponse=function(response){return!Object.prototype.hasOwnProperty.call(response,"data")};var upsertProjectionData=/*#__PURE__*/function(){var _ref=_async_to_generator(function(projection,auth,dataId,payload,eventMetadata,serviceClient){var usedPayload,key;return _ts_generator(this,function(_state){usedPayload={};for(var key in payload){usedPayload[key]=JSON.stringify(payload[key])}return[2,new Promise(function(resolve,reject){serviceClient.upsert({projection:projection,auth:(0,_auth.getProtobufAuthData)(auth),dataId:dataId,payload:usedPayload,eventMetadata:(0,_eventMetadata.fillMetadataWithDefaults)(eventMetadata)},function(error,response){if(error){reject(error.message);return}if(response.validationErrors||response.fieldValidationErrors){resolve({validationErrors:response.validationErrors,fieldValidationErrors:response.fieldValidationErrors});return}var data={};for(var key in response.newData){if(response.newData[key]!==undefined){data[key]=JSON.parse(response.newData[key])}}resolve({data:data,id:response.id})})})]})});return function upsertProjectionData(projection,auth,dataId,payload,eventMetadata,serviceClient){return _ref.apply(this,arguments)}}();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"getProtobufDataWait",{enumerable:true,get:function(){return getProtobufDataWait}});var _filter=require("./filter");var getProtobufDataWait=function(wait){if(!wait){return undefined}var _wait_timeout;return{conditionFilter:(0,_filter.getProtobufDataFilter)(wait.conditionFilter),timeout:((_wait_timeout=wait.timeout)!==null&&_wait_timeout!==void 0?_wait_timeout:0).toString()}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return _default}});var _base=require("@becklyn/eslint/base");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}var _default=_to_consumable_array(_base.config);
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
export * from "./
|
|
2
|
-
export * from "./
|
|
3
|
-
export { Filter, FieldFilter } from "./
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export { Order } from "./
|
|
7
|
-
export {
|
|
1
|
+
export * from "./client/config";
|
|
2
|
+
export * from "./client/client";
|
|
3
|
+
export type { Filter, FieldFilter } from "./client/filter";
|
|
4
|
+
export type { AuthData } from "./client/auth";
|
|
5
|
+
export type { ProjectionData } from "./client/data";
|
|
6
|
+
export type { Order } from "./client/order";
|
|
7
|
+
export type { Wait } from "./client/wait";
|
|
8
|
+
export type { EventMetadata } from "./client/eventMetadata";
|
|
9
|
+
export { isUpsertSuccessResponse, isUpsertValidationResponse } from "./client/upsert";
|
package/dist/index.js
CHANGED
|
@@ -1,22 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.isUpsertValidationResponse = exports.isUpsertSuccessResponse = void 0;
|
|
18
|
-
__exportStar(require("./config/config"), exports);
|
|
19
|
-
__exportStar(require("./delivery/client"), exports);
|
|
20
|
-
var upsert_1 = require("./delivery/upsert");
|
|
21
|
-
Object.defineProperty(exports, "isUpsertSuccessResponse", { enumerable: true, get: function () { return upsert_1.isUpsertSuccessResponse; } });
|
|
22
|
-
Object.defineProperty(exports, "isUpsertValidationResponse", { enumerable: true, get: function () { return upsert_1.isUpsertValidationResponse; } });
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{isUpsertSuccessResponse:function(){return _upsert.isUpsertSuccessResponse},isUpsertValidationResponse:function(){return _upsert.isUpsertValidationResponse}});_export_star(require("./client/config"),exports);_export_star(require("./client/client"),exports);var _upsert=require("./client/upsert");function _export_star(from,to){Object.keys(from).forEach(function(k){if(k!=="default"&&!Object.prototype.hasOwnProperty.call(to,k)){Object.defineProperty(to,k,{enumerable:true,get:function(){return from[k]}})}});return from}
|
package/package.json
CHANGED
|
@@ -1,46 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fraym/projections",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"homepage": "https://github.com/fraym/
|
|
5
|
+
"homepage": "https://github.com/fraym/freym-api",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "git+https://github.com/fraym/
|
|
8
|
+
"url": "git+https://github.com/fraym/freym-api.git"
|
|
9
9
|
},
|
|
10
|
-
"description": "
|
|
10
|
+
"description": "JS client implementation of the projections service of Freym",
|
|
11
11
|
"scripts": {
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"build": "npm run clean && tsc",
|
|
16
|
-
"clean": "rm -rf dist",
|
|
17
|
-
"prepublishOnly": "npm test && npm run lint && npm run build",
|
|
18
|
-
"preversion": "npm run lint"
|
|
12
|
+
"build": "rm -rf dist && tsc && npx swc . -d dist",
|
|
13
|
+
"lint": "eslint && prettier --check \"**/*.{ts,tsx,json,scss,css}\"",
|
|
14
|
+
"fix": "eslint --fix && prettier --write \"**/*.{ts,tsx,json,scss,css}\""
|
|
19
15
|
},
|
|
20
16
|
"files": [
|
|
21
17
|
"dist/**/*"
|
|
22
18
|
],
|
|
23
19
|
"engines": {
|
|
24
|
-
"node": ">=
|
|
20
|
+
"node": ">=20"
|
|
25
21
|
},
|
|
26
22
|
"main": "dist/index.js",
|
|
27
23
|
"types": "dist/index.d.ts",
|
|
28
24
|
"dependencies": {
|
|
29
|
-
"@fraym/proto": "^0.
|
|
30
|
-
"@
|
|
31
|
-
"
|
|
32
|
-
"@grpc/grpc-js": "^1.11.3",
|
|
33
|
-
"dotenv": "^16.4.5",
|
|
34
|
-
"graphql": "^16.9.0",
|
|
35
|
-
"yargs": "^17.7.2"
|
|
36
|
-
},
|
|
37
|
-
"devDependencies": {
|
|
38
|
-
"@becklyn/prettier": "^1.0.2",
|
|
39
|
-
"@types/uuid": "^9.0.8",
|
|
40
|
-
"@types/yargs": "^17.0.33",
|
|
41
|
-
"prettier": "^2.8.8",
|
|
42
|
-
"typescript": "^5.6.2",
|
|
43
|
-
"uuid": "^9.0.1"
|
|
25
|
+
"@fraym/proto": "^0.30.0",
|
|
26
|
+
"@grpc/grpc-js": "^1.12.6",
|
|
27
|
+
"dotenv": "^16.4.7"
|
|
44
28
|
},
|
|
45
29
|
"prettier": "@becklyn/prettier"
|
|
46
30
|
}
|
package/dist/config/config.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useDeliveryConfigDefaults = exports.getEnvDeliveryConfig = void 0;
|
|
4
|
-
const dotenv_1 = require("dotenv");
|
|
5
|
-
const getEnvDeliveryConfig = () => {
|
|
6
|
-
var _a;
|
|
7
|
-
(0, dotenv_1.config)();
|
|
8
|
-
const serverAddress = (_a = process.env.PROJECTIONS_SERVER_ADDRESS) !== null && _a !== void 0 ? _a : "";
|
|
9
|
-
let keepaliveInterval;
|
|
10
|
-
let keepaliveTimeout;
|
|
11
|
-
const keepaliveIntervalString = process.env.PROJECTIONS_CONNECTION_KEEPALIVE_INTERVAL;
|
|
12
|
-
const keepaliveTimeoutString = process.env.PROJECTIONS_CONNECTION_KEEPALIVE_INTERVAL;
|
|
13
|
-
if (keepaliveIntervalString) {
|
|
14
|
-
keepaliveInterval = parseInt(keepaliveIntervalString, 10);
|
|
15
|
-
}
|
|
16
|
-
if (keepaliveTimeoutString) {
|
|
17
|
-
keepaliveTimeout = parseInt(keepaliveTimeoutString, 10);
|
|
18
|
-
}
|
|
19
|
-
return {
|
|
20
|
-
serverAddress,
|
|
21
|
-
keepaliveInterval,
|
|
22
|
-
keepaliveTimeout,
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
exports.getEnvDeliveryConfig = getEnvDeliveryConfig;
|
|
26
|
-
const useDeliveryConfigDefaults = (config) => {
|
|
27
|
-
var _a, _b;
|
|
28
|
-
if (!config) {
|
|
29
|
-
config = (0, exports.getEnvDeliveryConfig)();
|
|
30
|
-
}
|
|
31
|
-
return {
|
|
32
|
-
serverAddress: config.serverAddress,
|
|
33
|
-
keepaliveTimeout: (_a = config.keepaliveTimeout) !== null && _a !== void 0 ? _a : 3 * 1000,
|
|
34
|
-
keepaliveInterval: (_b = config.keepaliveInterval) !== null && _b !== void 0 ? _b : 40 * 1000,
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
exports.useDeliveryConfigDefaults = useDeliveryConfigDefaults;
|
package/dist/delivery/auth.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getProtobufAuthData = void 0;
|
|
4
|
-
const getProtobufAuthData = (auth) => {
|
|
5
|
-
const data = {};
|
|
6
|
-
for (let key in auth.data) {
|
|
7
|
-
data[key] = JSON.stringify(auth.data[key]);
|
|
8
|
-
}
|
|
9
|
-
return {
|
|
10
|
-
tenantId: auth.tenantId,
|
|
11
|
-
scopes: auth.scopes,
|
|
12
|
-
data,
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
exports.getProtobufAuthData = getProtobufAuthData;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { DeliveryClientConfig } from "../config/config";
|
|
2
|
-
import { Filter } from "./filter";
|
|
3
|
-
import { GetProjectionDataList } from "./getDataList";
|
|
4
|
-
import { Order } from "./order";
|
|
5
|
-
import { AuthData } from "./auth";
|
|
6
|
-
import { UpsertResponse } from "./upsert";
|
|
7
|
-
import { EventMetadata } from "./eventMetadata";
|
|
8
|
-
import { Wait } from "./wait";
|
|
9
|
-
export interface DeliveryClient {
|
|
10
|
-
getData: <T extends {}>(projection: string, authData: AuthData, id: string, filter?: Filter, returnEmptyDataIfNotFound?: boolean, wait?: Wait) => Promise<T | null>;
|
|
11
|
-
getViewData: <T extends {}>(view: string, authData: AuthData, filter?: Filter) => Promise<T | null>;
|
|
12
|
-
getDataList: <T extends {}>(projection: string, authData: AuthData, limit?: number, page?: number, filter?: Filter, order?: Order[]) => Promise<GetProjectionDataList<T> | null>;
|
|
13
|
-
getViewDataList: <T extends {}>(view: string, authData: AuthData, limit?: number, page?: number, filter?: Filter, order?: Order[]) => Promise<GetProjectionDataList<T> | null>;
|
|
14
|
-
upsertData: <T extends {}>(projection: string, authData: AuthData, dataId: string, payload: Record<string, any>, eventMetadata?: EventMetadata) => Promise<UpsertResponse<T>>;
|
|
15
|
-
deleteDataById: (projection: string, authData: AuthData, dataId: string, eventMetadata?: EventMetadata) => Promise<number>;
|
|
16
|
-
deleteDataByFilter: (projection: string, authData: AuthData, filter?: Filter, eventMetadata?: EventMetadata) => Promise<number>;
|
|
17
|
-
close: () => Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
export declare const newDeliveryClient: (config?: DeliveryClientConfig) => Promise<DeliveryClient>;
|
package/dist/delivery/client.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.newDeliveryClient = void 0;
|
|
4
|
-
const delivery_1 = require("@fraym/proto/freym/projections/delivery");
|
|
5
|
-
const grpc_js_1 = require("@grpc/grpc-js");
|
|
6
|
-
const config_1 = require("../config/config");
|
|
7
|
-
const getData_1 = require("./getData");
|
|
8
|
-
const getDataList_1 = require("./getDataList");
|
|
9
|
-
const upsert_1 = require("./upsert");
|
|
10
|
-
const delete_1 = require("./delete");
|
|
11
|
-
const getViewData_1 = require("./getViewData");
|
|
12
|
-
const getViewDataList_1 = require("./getViewDataList");
|
|
13
|
-
const newDeliveryClient = async (config) => {
|
|
14
|
-
config = (0, config_1.useDeliveryConfigDefaults)(config);
|
|
15
|
-
const serviceClient = new delivery_1.ServiceClient(config.serverAddress, grpc_js_1.credentials.createInsecure(), {
|
|
16
|
-
"grpc.keepalive_time_ms": config.keepaliveInterval,
|
|
17
|
-
"grpc.keepalive_timeout_ms": config.keepaliveTimeout,
|
|
18
|
-
"grpc.keepalive_permit_without_calls": 1,
|
|
19
|
-
});
|
|
20
|
-
const getData = async (projection, auth, id, filter = { fields: {}, and: [], or: [] }, returnEmptyDataIfNotFound = false, wait) => {
|
|
21
|
-
return await (0, getData_1.getProjectionData)(projection, auth, id, filter, returnEmptyDataIfNotFound, serviceClient, wait);
|
|
22
|
-
};
|
|
23
|
-
const getViewData = async (view, auth, filter = { fields: {}, and: [], or: [] }) => {
|
|
24
|
-
return await (0, getViewData_1.getViewData)(view, auth, filter, serviceClient);
|
|
25
|
-
};
|
|
26
|
-
const getDataList = async (projection, auth, limit = 0, page = 1, filter = { fields: {}, and: [], or: [] }, order = []) => {
|
|
27
|
-
return await (0, getDataList_1.getProjectionDataList)(projection, auth, limit, page, filter, order, serviceClient);
|
|
28
|
-
};
|
|
29
|
-
const getViewDataList = async (view, auth, limit = 0, page = 1, filter = { fields: {}, and: [], or: [] }, order = []) => {
|
|
30
|
-
return await (0, getViewDataList_1.getViewDataList)(view, auth, limit, page, filter, order, serviceClient);
|
|
31
|
-
};
|
|
32
|
-
const upsertData = async (projection, authData, dataId, payload, eventMetadata = { causationId: "", correlationId: "" }) => {
|
|
33
|
-
return (0, upsert_1.upsertProjectionData)(projection, authData, dataId, payload, eventMetadata, serviceClient);
|
|
34
|
-
};
|
|
35
|
-
const deleteDataById = async (projection, authData, dataId, eventMetadata = { causationId: "", correlationId: "" }) => {
|
|
36
|
-
return (0, delete_1.deleteProjectionData)(projection, authData, dataId, { fields: {}, and: [], or: [] }, eventMetadata, serviceClient);
|
|
37
|
-
};
|
|
38
|
-
const deleteDataByFilter = async (projection, authData, filter = { fields: {}, and: [], or: [] }, eventMetadata = { causationId: "", correlationId: "" }) => {
|
|
39
|
-
return (0, delete_1.deleteProjectionData)(projection, authData, "", filter, eventMetadata, serviceClient);
|
|
40
|
-
};
|
|
41
|
-
const close = async () => {
|
|
42
|
-
serviceClient.close();
|
|
43
|
-
};
|
|
44
|
-
return {
|
|
45
|
-
getData,
|
|
46
|
-
getViewData,
|
|
47
|
-
getDataList,
|
|
48
|
-
getViewDataList,
|
|
49
|
-
upsertData,
|
|
50
|
-
deleteDataById,
|
|
51
|
-
deleteDataByFilter,
|
|
52
|
-
close,
|
|
53
|
-
};
|
|
54
|
-
};
|
|
55
|
-
exports.newDeliveryClient = newDeliveryClient;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { ServiceClient } from "@fraym/proto/freym/projections/delivery";
|
|
2
|
-
import { AuthData } from "./auth";
|
|
3
|
-
import { EventMetadata } from "./eventMetadata";
|
|
4
|
-
import { Filter } from "./filter";
|
|
5
|
-
export declare const deleteProjectionData: (projection: string, auth: AuthData, dataId: string, filter: Filter, eventMetadata: EventMetadata, serviceClient: ServiceClient) => Promise<number>;
|
package/dist/delivery/delete.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deleteProjectionData = void 0;
|
|
4
|
-
const auth_1 = require("./auth");
|
|
5
|
-
const filter_1 = require("./filter");
|
|
6
|
-
const deleteProjectionData = async (projection, auth, dataId, filter, eventMetadata, serviceClient) => {
|
|
7
|
-
return new Promise((resolve, reject) => {
|
|
8
|
-
serviceClient.deleteData({
|
|
9
|
-
projection,
|
|
10
|
-
auth: (0, auth_1.getProtobufAuthData)(auth),
|
|
11
|
-
dataId,
|
|
12
|
-
filter: (0, filter_1.getProtobufDataFilter)(filter),
|
|
13
|
-
eventMetadata,
|
|
14
|
-
}, (error, response) => {
|
|
15
|
-
if (error) {
|
|
16
|
-
reject(error.message);
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
resolve(parseInt(response.numberOfDeletedEntries, 10));
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
exports.deleteProjectionData = deleteProjectionData;
|
package/dist/delivery/filter.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getProtobufDataFilter = void 0;
|
|
4
|
-
const getProtobufDataFilter = (filter) => {
|
|
5
|
-
const fields = {};
|
|
6
|
-
for (const fieldName in filter.fields) {
|
|
7
|
-
const field = filter.fields[fieldName];
|
|
8
|
-
fields[fieldName] = {
|
|
9
|
-
operation: field.operation,
|
|
10
|
-
type: field.type,
|
|
11
|
-
value: JSON.stringify(field.value),
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
return {
|
|
15
|
-
fields: fields,
|
|
16
|
-
and: filter.and.map(and => (0, exports.getProtobufDataFilter)(and)),
|
|
17
|
-
or: filter.or.map(or => (0, exports.getProtobufDataFilter)(or)),
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
exports.getProtobufDataFilter = getProtobufDataFilter;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { ServiceClient } from "@fraym/proto/freym/projections/delivery";
|
|
2
|
-
import { AuthData } from "./auth";
|
|
3
|
-
import { Filter } from "./filter";
|
|
4
|
-
import { Wait } from "./wait";
|
|
5
|
-
export declare const getProjectionData: <T extends {}>(projection: string, auth: AuthData, dataId: string, filter: Filter, returnEmptyDataIfNotFound: boolean, serviceClient: ServiceClient, wait?: Wait) => Promise<T | null>;
|
package/dist/delivery/getData.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getProjectionData = void 0;
|
|
4
|
-
const auth_1 = require("./auth");
|
|
5
|
-
const filter_1 = require("./filter");
|
|
6
|
-
const wait_1 = require("./wait");
|
|
7
|
-
const getProjectionData = async (projection, auth, dataId, filter, returnEmptyDataIfNotFound, serviceClient, wait) => {
|
|
8
|
-
return new Promise((resolve, reject) => {
|
|
9
|
-
serviceClient.getData({
|
|
10
|
-
projection,
|
|
11
|
-
auth: (0, auth_1.getProtobufAuthData)(auth),
|
|
12
|
-
dataId,
|
|
13
|
-
filter: (0, filter_1.getProtobufDataFilter)(filter),
|
|
14
|
-
returnEmptyDataIfNotFound,
|
|
15
|
-
wait: (0, wait_1.getProtobufDataWait)(wait),
|
|
16
|
-
useStrongConsistency: false,
|
|
17
|
-
}, (error, response) => {
|
|
18
|
-
if (error) {
|
|
19
|
-
reject(error.message);
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
const result = response.result;
|
|
23
|
-
if (!result || !result.data || Object.keys(result.data).length === 0) {
|
|
24
|
-
resolve(null);
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
const data = {};
|
|
28
|
-
for (const key in result.data) {
|
|
29
|
-
data[key] = JSON.parse(result.data[key]);
|
|
30
|
-
}
|
|
31
|
-
resolve(data);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
exports.getProjectionData = getProjectionData;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { ServiceClient } from "@fraym/proto/freym/projections/delivery";
|
|
2
|
-
import { AuthData } from "./auth";
|
|
3
|
-
import { Filter } from "./filter";
|
|
4
|
-
import { Order } from "./order";
|
|
5
|
-
export interface GetProjectionDataList<T extends {}> {
|
|
6
|
-
limit: number;
|
|
7
|
-
page: number;
|
|
8
|
-
total: number;
|
|
9
|
-
data: T[];
|
|
10
|
-
}
|
|
11
|
-
export declare const getProjectionDataList: <T extends {}>(projection: string, auth: AuthData, limit: number, page: number, filter: Filter, order: Order[], serviceClient: ServiceClient) => Promise<GetProjectionDataList<T> | null>;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getProjectionDataList = void 0;
|
|
4
|
-
const auth_1 = require("./auth");
|
|
5
|
-
const filter_1 = require("./filter");
|
|
6
|
-
const order_1 = require("./order");
|
|
7
|
-
const getProjectionDataList = async (projection, auth, limit, page, filter, order, serviceClient) => {
|
|
8
|
-
return new Promise((resolve, reject) => {
|
|
9
|
-
serviceClient.getDataList({
|
|
10
|
-
projection,
|
|
11
|
-
auth: (0, auth_1.getProtobufAuthData)(auth),
|
|
12
|
-
limit: limit.toString(),
|
|
13
|
-
page: page.toString(),
|
|
14
|
-
filter: (0, filter_1.getProtobufDataFilter)(filter),
|
|
15
|
-
order: (0, order_1.getProtobufDataOrder)(order),
|
|
16
|
-
useStrongConsistency: false,
|
|
17
|
-
}, (error, response) => {
|
|
18
|
-
if (error) {
|
|
19
|
-
reject(error.message);
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
const data = [];
|
|
23
|
-
for (const result of response.result) {
|
|
24
|
-
const dataRecord = {};
|
|
25
|
-
const resultData = result.data;
|
|
26
|
-
for (const key in resultData) {
|
|
27
|
-
dataRecord[key] = JSON.parse(resultData[key]);
|
|
28
|
-
}
|
|
29
|
-
data.push(dataRecord);
|
|
30
|
-
}
|
|
31
|
-
resolve({
|
|
32
|
-
limit: parseInt(response.limit, 10),
|
|
33
|
-
page: parseInt(response.page, 10),
|
|
34
|
-
total: parseInt(response.total, 10),
|
|
35
|
-
data,
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
exports.getProjectionDataList = getProjectionDataList;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ServiceClient } from "@fraym/proto/freym/projections/delivery";
|
|
2
|
-
import { AuthData } from "./auth";
|
|
3
|
-
import { Filter } from "./filter";
|
|
4
|
-
export declare const getViewData: <T extends {}>(view: string, auth: AuthData, filter: Filter, serviceClient: ServiceClient) => Promise<T | null>;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getViewData = void 0;
|
|
4
|
-
const auth_1 = require("./auth");
|
|
5
|
-
const filter_1 = require("./filter");
|
|
6
|
-
const getViewData = async (view, auth, filter, serviceClient) => {
|
|
7
|
-
return new Promise((resolve, reject) => {
|
|
8
|
-
serviceClient.getViewData({
|
|
9
|
-
view,
|
|
10
|
-
auth: (0, auth_1.getProtobufAuthData)(auth),
|
|
11
|
-
filter: (0, filter_1.getProtobufDataFilter)(filter),
|
|
12
|
-
useStrongConsistency: false,
|
|
13
|
-
}, (error, response) => {
|
|
14
|
-
if (error) {
|
|
15
|
-
reject(error.message);
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
const result = response.result;
|
|
19
|
-
if (!result || !result.data || Object.keys(result.data).length === 0) {
|
|
20
|
-
resolve(null);
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
const data = {};
|
|
24
|
-
for (const key in result.data) {
|
|
25
|
-
data[key] = JSON.parse(result.data[key]);
|
|
26
|
-
}
|
|
27
|
-
resolve(data);
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
exports.getViewData = getViewData;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { ServiceClient } from "@fraym/proto/freym/projections/delivery";
|
|
2
|
-
import { AuthData } from "./auth";
|
|
3
|
-
import { Filter } from "./filter";
|
|
4
|
-
import { Order } from "./order";
|
|
5
|
-
export interface GetViewDataList<T extends {}> {
|
|
6
|
-
limit: number;
|
|
7
|
-
page: number;
|
|
8
|
-
total: number;
|
|
9
|
-
data: T[];
|
|
10
|
-
}
|
|
11
|
-
export declare const getViewDataList: <T extends {}>(view: string, auth: AuthData, limit: number, page: number, filter: Filter, order: Order[], serviceClient: ServiceClient) => Promise<GetViewDataList<T> | null>;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getViewDataList = void 0;
|
|
4
|
-
const auth_1 = require("./auth");
|
|
5
|
-
const filter_1 = require("./filter");
|
|
6
|
-
const order_1 = require("./order");
|
|
7
|
-
const getViewDataList = async (view, auth, limit, page, filter, order, serviceClient) => {
|
|
8
|
-
return new Promise((resolve, reject) => {
|
|
9
|
-
serviceClient.getViewDataList({
|
|
10
|
-
view,
|
|
11
|
-
auth: (0, auth_1.getProtobufAuthData)(auth),
|
|
12
|
-
limit: limit.toString(),
|
|
13
|
-
page: page.toString(),
|
|
14
|
-
filter: (0, filter_1.getProtobufDataFilter)(filter),
|
|
15
|
-
order: (0, order_1.getProtobufDataOrder)(order),
|
|
16
|
-
useStrongConsistency: false,
|
|
17
|
-
}, (error, response) => {
|
|
18
|
-
if (error) {
|
|
19
|
-
reject(error.message);
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
const data = [];
|
|
23
|
-
for (const result of response.result) {
|
|
24
|
-
const dataRecord = {};
|
|
25
|
-
const resultData = result.data;
|
|
26
|
-
for (const key in resultData) {
|
|
27
|
-
dataRecord[key] = JSON.parse(resultData[key]);
|
|
28
|
-
}
|
|
29
|
-
data.push(dataRecord);
|
|
30
|
-
}
|
|
31
|
-
resolve({
|
|
32
|
-
limit: parseInt(response.limit, 10),
|
|
33
|
-
page: parseInt(response.page, 10),
|
|
34
|
-
total: parseInt(response.total, 10),
|
|
35
|
-
data,
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
exports.getViewDataList = getViewDataList;
|
package/dist/delivery/order.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getProtobufDataOrder = void 0;
|
|
4
|
-
const getProtobufDataOrder = (order) => {
|
|
5
|
-
return order.map(o => {
|
|
6
|
-
var _a;
|
|
7
|
-
return ({
|
|
8
|
-
field: o.field,
|
|
9
|
-
descending: (_a = o.descending) !== null && _a !== void 0 ? _a : false,
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
|
-
exports.getProtobufDataOrder = getProtobufDataOrder;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ServiceClient } from "@fraym/proto/freym/projections/delivery";
|
|
2
|
-
import { AuthData } from "./auth";
|
|
3
|
-
import { EventMetadata } from "./eventMetadata";
|
|
4
|
-
export type UpsertResponse<T extends {}> = UpsertSuccessResponse<T> | UpsertValidationResponse;
|
|
5
|
-
export interface UpsertSuccessResponse<T extends {}> {
|
|
6
|
-
data: T;
|
|
7
|
-
id: string;
|
|
8
|
-
}
|
|
9
|
-
export interface UpsertValidationResponse {
|
|
10
|
-
validationErrors: string[];
|
|
11
|
-
fieldValidationErrors: Record<string, string>;
|
|
12
|
-
}
|
|
13
|
-
export declare const isUpsertSuccessResponse: <T extends {}>(response: UpsertResponse<T>) => response is UpsertSuccessResponse<T>;
|
|
14
|
-
export declare const isUpsertValidationResponse: <T extends {}>(response: UpsertResponse<T>) => response is UpsertValidationResponse;
|
|
15
|
-
export declare const upsertProjectionData: <T extends {}>(projection: string, auth: AuthData, dataId: string, payload: Record<string, any>, eventMetadata: EventMetadata, serviceClient: ServiceClient) => Promise<UpsertResponse<T>>;
|
package/dist/delivery/upsert.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.upsertProjectionData = exports.isUpsertValidationResponse = exports.isUpsertSuccessResponse = void 0;
|
|
4
|
-
const auth_1 = require("./auth");
|
|
5
|
-
const isUpsertSuccessResponse = (response) => {
|
|
6
|
-
return response.hasOwnProperty("data");
|
|
7
|
-
};
|
|
8
|
-
exports.isUpsertSuccessResponse = isUpsertSuccessResponse;
|
|
9
|
-
const isUpsertValidationResponse = (response) => {
|
|
10
|
-
return !response.hasOwnProperty("data");
|
|
11
|
-
};
|
|
12
|
-
exports.isUpsertValidationResponse = isUpsertValidationResponse;
|
|
13
|
-
const upsertProjectionData = async (projection, auth, dataId, payload, eventMetadata, serviceClient) => {
|
|
14
|
-
const usedPayload = {};
|
|
15
|
-
for (const key in payload) {
|
|
16
|
-
usedPayload[key] = JSON.stringify(payload[key]);
|
|
17
|
-
}
|
|
18
|
-
return new Promise((resolve, reject) => {
|
|
19
|
-
serviceClient.upsertData({
|
|
20
|
-
projection,
|
|
21
|
-
auth: (0, auth_1.getProtobufAuthData)(auth),
|
|
22
|
-
dataId,
|
|
23
|
-
payload: usedPayload,
|
|
24
|
-
eventMetadata,
|
|
25
|
-
}, (error, response) => {
|
|
26
|
-
if (error) {
|
|
27
|
-
reject(error.message);
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
if (response.validationErrors || response.fieldValidationErrors) {
|
|
31
|
-
resolve({
|
|
32
|
-
validationErrors: response.validationErrors,
|
|
33
|
-
fieldValidationErrors: response.fieldValidationErrors,
|
|
34
|
-
});
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
const data = {};
|
|
38
|
-
for (const key in response.newData) {
|
|
39
|
-
data[key] = JSON.parse(response.newData[key]);
|
|
40
|
-
}
|
|
41
|
-
resolve({
|
|
42
|
-
data,
|
|
43
|
-
id: response.id,
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
exports.upsertProjectionData = upsertProjectionData;
|
package/dist/delivery/wait.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getProtobufDataWait = void 0;
|
|
4
|
-
const filter_1 = require("./filter");
|
|
5
|
-
const getProtobufDataWait = (wait) => {
|
|
6
|
-
var _a;
|
|
7
|
-
if (!wait) {
|
|
8
|
-
return undefined;
|
|
9
|
-
}
|
|
10
|
-
return {
|
|
11
|
-
conditionFilter: (0, filter_1.getProtobufDataFilter)(wait.conditionFilter),
|
|
12
|
-
timeout: ((_a = wait.timeout) !== null && _a !== void 0 ? _a : 0).toString(),
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
exports.getProtobufDataWait = getProtobufDataWait;
|
|
File without changes
|