@fraym/crud 0.20.1 → 0.21.1

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.
@@ -7,11 +7,13 @@ import { Order } from "./order";
7
7
  import { AuthData } from "./auth";
8
8
  import { EventMetadata } from "./eventMetadata";
9
9
  import { Wait } from "./wait";
10
+ import { CloneResponse } from "./clone";
10
11
  export interface DeliveryClient {
11
12
  getData: <T extends {}>(type: string, authData: AuthData, id: string, filter?: Filter, returnEmptyDataIfNotFound?: boolean, wait?: Wait) => Promise<T | null>;
12
13
  getDataList: <T extends {}>(type: string, authData: AuthData, limit?: number, page?: number, filter?: Filter, order?: Order[]) => Promise<GetCrudDataList<T>>;
13
14
  create: <T extends {}>(type: string, authData: AuthData, data: Record<string, any>, id?: string, eventMetadata?: EventMetadata) => Promise<CreateResponse<T>>;
14
15
  update: <T extends {}>(type: string, authData: AuthData, id: string, data: Record<string, any>, eventMetadata?: EventMetadata) => Promise<UpdateResponse<T>>;
16
+ clone: <T extends {}>(type: string, authData: AuthData, id: string, newId: string, eventMetadata?: EventMetadata) => Promise<CloneResponse<T>>;
15
17
  deleteDataById: (type: string, authData: AuthData, id: string, eventMetadata?: EventMetadata) => Promise<number>;
16
18
  deleteDataByFilter: (type: string, authData: AuthData, filter?: Filter, eventMetadata?: EventMetadata) => Promise<number>;
17
19
  close: () => Promise<void>;
@@ -9,6 +9,7 @@ const update_1 = require("./update");
9
9
  const delete_1 = require("./delete");
10
10
  const getData_1 = require("./getData");
11
11
  const getDataList_1 = require("./getDataList");
12
+ const clone_1 = require("./clone");
12
13
  const newDeliveryClient = async (config) => {
13
14
  config = (0, config_1.useDeliveryConfigDefaults)(config);
14
15
  const serviceClient = new delivery_1.ServiceClient(config.serverAddress, grpc_js_1.credentials.createInsecure(), {
@@ -28,6 +29,9 @@ const newDeliveryClient = async (config) => {
28
29
  const update = async (type, authData, id, data, eventMetadata = { causationId: "", correlationId: "" }) => {
29
30
  return await (0, update_1.updateCrudData)(type, authData, id, data, eventMetadata, serviceClient);
30
31
  };
32
+ const clone = async (type, authData, id, newId, eventMetadata = { causationId: "", correlationId: "" }) => {
33
+ return await (0, clone_1.cloneCrudData)(type, authData, id, newId, eventMetadata, serviceClient);
34
+ };
31
35
  const deleteDataById = async (type, authData, id, eventMetadata = { causationId: "", correlationId: "" }) => {
32
36
  return await (0, delete_1.deleteCrudData)(type, authData, id, { fields: {}, and: [], or: [] }, eventMetadata, serviceClient);
33
37
  };
@@ -42,6 +46,7 @@ const newDeliveryClient = async (config) => {
42
46
  getDataList,
43
47
  create,
44
48
  update,
49
+ clone,
45
50
  deleteDataById,
46
51
  deleteDataByFilter,
47
52
  close,
@@ -0,0 +1,14 @@
1
+ import { ServiceClient } from "@fraym/proto/freym/crud/delivery";
2
+ import { AuthData } from "./auth";
3
+ import { EventMetadata } from "./eventMetadata";
4
+ export type CloneResponse<T extends {}> = CloneSuccessResponse<T> | CloneValidationResponse;
5
+ export interface CloneSuccessResponse<T extends {}> {
6
+ data: T;
7
+ }
8
+ export interface CloneValidationResponse {
9
+ validationErrors: string[];
10
+ fieldValidationErrors: Record<string, string>;
11
+ }
12
+ export declare const isCloneSuccessResponse: <T extends {}>(response: CloneResponse<T>) => response is CloneSuccessResponse<T>;
13
+ export declare const isCloneValidationResponse: <T extends {}>(response: CloneResponse<T>) => response is CloneValidationResponse;
14
+ export declare const cloneCrudData: <T extends {}>(type: string, authData: AuthData, id: string, newId: string, eventMetadata: EventMetadata, serviceClient: ServiceClient) => Promise<CloneResponse<T>>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cloneCrudData = exports.isCloneValidationResponse = exports.isCloneSuccessResponse = void 0;
4
+ const auth_1 = require("./auth");
5
+ const isCloneSuccessResponse = (response) => {
6
+ return response.hasOwnProperty("data");
7
+ };
8
+ exports.isCloneSuccessResponse = isCloneSuccessResponse;
9
+ const isCloneValidationResponse = (response) => {
10
+ return !response.hasOwnProperty("data");
11
+ };
12
+ exports.isCloneValidationResponse = isCloneValidationResponse;
13
+ const cloneCrudData = async (type, authData, id, newId, eventMetadata, serviceClient) => {
14
+ return new Promise((resolve, reject) => {
15
+ serviceClient.cloneEntry({
16
+ type,
17
+ auth: (0, auth_1.getProtobufAuthData)(authData),
18
+ id,
19
+ newId,
20
+ eventMetadata,
21
+ }, (error, response) => {
22
+ if (error) {
23
+ reject(error.message);
24
+ return;
25
+ }
26
+ if (response.validationErrors.length > 0 ||
27
+ Object.keys(response.fieldValidationErrors).length > 0) {
28
+ resolve({
29
+ validationErrors: response.validationErrors,
30
+ fieldValidationErrors: response.fieldValidationErrors,
31
+ });
32
+ return;
33
+ }
34
+ const data = {};
35
+ for (const key in response.newData) {
36
+ data[key] = JSON.parse(response.newData[key]);
37
+ }
38
+ resolve({ data });
39
+ });
40
+ });
41
+ };
42
+ exports.cloneCrudData = cloneCrudData;
@@ -16,7 +16,7 @@ const deleteCrudData = async (type, authData, id, filter, eventMetadata, service
16
16
  reject(error.message);
17
17
  return;
18
18
  }
19
- resolve(response.numberOfDeletedEntries);
19
+ resolve(parseInt(response.numberOfDeletedEntries, 10));
20
20
  });
21
21
  });
22
22
  };
@@ -9,8 +9,8 @@ const getCrudDataList = async (type, authData, limit, page, filter, order, servi
9
9
  serviceClient.getEntryList({
10
10
  type,
11
11
  auth: (0, auth_1.getProtobufAuthData)(authData),
12
- limit,
13
- page,
12
+ limit: limit.toString(),
13
+ page: page.toString(),
14
14
  filter: (0, filter_1.getProtobufDataFilter)(filter),
15
15
  order: (0, order_1.getProtobufDataOrder)(order),
16
16
  }, (error, response) => {
@@ -28,9 +28,9 @@ const getCrudDataList = async (type, authData, limit, page, filter, order, servi
28
28
  data.push(dataRecord);
29
29
  }
30
30
  resolve({
31
- limit: response.limit,
32
- page: response.page,
33
- total: response.total,
31
+ limit: parseInt(response.limit, 10),
32
+ page: parseInt(response.page, 10),
33
+ total: parseInt(response.total, 10),
34
34
  data,
35
35
  });
36
36
  });
@@ -9,7 +9,7 @@ const getProtobufDataWait = (wait) => {
9
9
  }
10
10
  return {
11
11
  conditionFilter: (0, filter_1.getProtobufDataFilter)(wait.conditionFilter),
12
- timeout: (_a = wait.timeout) !== null && _a !== void 0 ? _a : 0,
12
+ timeout: ((_a = wait.timeout) !== null && _a !== void 0 ? _a : 0).toString(),
13
13
  };
14
14
  };
15
15
  exports.getProtobufDataWait = getProtobufDataWait;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fraym/crud",
3
- "version": "0.20.1",
3
+ "version": "0.21.1",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/fraym/crud-nodejs",
6
6
  "repository": {
@@ -26,18 +26,18 @@
26
26
  "main": "dist/index.js",
27
27
  "types": "dist/index.d.ts",
28
28
  "dependencies": {
29
- "@fraym/proto": "^0.4.1",
29
+ "@fraym/proto": "^0.26.1",
30
30
  "@graphql-tools/graphql-file-loader": "^7.5.17",
31
31
  "@graphql-tools/load": "^7.8.14",
32
- "@grpc/grpc-js": "^1.9.7",
33
- "dotenv": "^16.3.1",
34
- "graphql": "^16.8.1",
32
+ "@grpc/grpc-js": "^1.11.3",
33
+ "dotenv": "^16.4.5",
34
+ "graphql": "^16.9.0",
35
35
  "yargs": "^17.7.2"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@becklyn/prettier": "^1.0.2",
39
39
  "@types/uuid": "^8.3.4",
40
- "@types/yargs": "^17.0.29",
40
+ "@types/yargs": "^17.0.33",
41
41
  "prettier": "^2.8.8",
42
42
  "typescript": "^4.9.5",
43
43
  "uuid": "^9.0.1"