erpnext-queue-client 1.0.6 → 1.1.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/dist/client.js +41 -16
- package/dist/erpnext/decryptFromErpNext.server.d.ts +1 -1
- package/dist/erpnext/doctypeResourceRequest.d.ts +38 -0
- package/dist/erpnext/doctypeResourceRequest.js +59 -0
- package/dist/erpnext/doctypeSubmittableResourceRequest.d.ts +8 -0
- package/dist/erpnext/doctypeSubmittableResourceRequest.js +39 -0
- package/dist/erpnext/doctypes/address.d.ts +263 -0
- package/dist/erpnext/doctypes/address.js +46 -0
- package/dist/erpnext/doctypes/contact.d.ts +383 -0
- package/dist/erpnext/doctypes/contact.js +46 -0
- package/dist/erpnext/doctypes/deliveryNote.d.ts +985 -0
- package/dist/erpnext/doctypes/deliveryNote.js +38 -0
- package/dist/erpnext/doctypes/item.d.ts +572 -0
- package/dist/erpnext/doctypes/item.js +95 -0
- package/dist/erpnext/doctypes/purchaseReceipt.d.ts +743 -0
- package/dist/erpnext/doctypes/purchaseReceipt.js +50 -0
- package/dist/erpnext/doctypes/shipment.d.ts +752 -0
- package/dist/erpnext/doctypes/shipment.js +51 -0
- package/dist/erpnext/erpnextRequestWrapper.js +15 -13
- package/dist/erpnext/fileRequests.d.ts +10 -0
- package/dist/erpnext/fileRequests.js +42 -0
- package/dist/erpnext/methodRequest.d.ts +15 -0
- package/dist/erpnext/methodRequest.js +32 -0
- package/dist/erpnext/model/Address.d.ts +200 -198
- package/dist/erpnext/model/Address.js +3 -2
- package/dist/erpnext/model/Contact.d.ts +343 -344
- package/dist/erpnext/model/Contact.js +2 -2
- package/dist/erpnext/model/Country.d.ts +83 -31
- package/dist/erpnext/model/Country.js +2 -6
- package/dist/erpnext/model/Customer.d.ts +64 -65
- package/dist/erpnext/model/Customer.js +2 -2
- package/dist/erpnext/model/DeliveryNote.d.ts +1048 -1048
- package/dist/erpnext/model/DispatchRun.d.ts +399 -399
- package/dist/erpnext/model/DispatcherPreset.d.ts +94 -94
- package/dist/erpnext/model/ERPNextRequest.d.ts +47 -30
- package/dist/erpnext/model/ERPNextResponse.d.ts +4 -4
- package/dist/erpnext/model/File.d.ts +88 -88
- package/dist/erpnext/model/Fulfiller.d.ts +97 -97
- package/dist/erpnext/model/FulfillerSettings.d.ts +66 -66
- package/dist/erpnext/model/FulfillmentStation.d.ts +2 -2
- package/dist/erpnext/model/Item.d.ts +819 -819
- package/dist/erpnext/model/Item.js +2 -2
- package/dist/erpnext/model/PaymentEntry.d.ts +197 -0
- package/dist/erpnext/model/PaymentEntry.js +63 -0
- package/dist/erpnext/model/ProjectedQuantityReport.d.ts +178 -178
- package/dist/erpnext/model/PurchaseOrder.d.ts +528 -528
- package/dist/erpnext/model/Receipt.d.ts +448 -448
- package/dist/erpnext/model/Receipt.js +2 -2
- package/dist/erpnext/model/ReceiptDraft.d.ts +392 -392
- package/dist/erpnext/model/Shipment.d.ts +709 -709
- package/dist/erpnext/model/ShippingProvider.d.ts +198 -198
- package/dist/erpnext/model/StockEntry.d.ts +248 -0
- package/dist/erpnext/model/StockEntry.js +76 -0
- package/dist/erpnext/model/StockReconciliation.d.ts +187 -0
- package/dist/erpnext/model/StockReconciliation.js +44 -0
- package/dist/erpnext/model/Supplier.d.ts +105 -0
- package/dist/erpnext/model/Supplier.js +39 -0
- package/dist/erpnext/model/Waitlist.d.ts +32 -0
- package/dist/erpnext/model/Waitlist.js +19 -0
- package/dist/erpnext/model/WarehouseCategory.d.ts +6 -6
- package/dist/erpnext/resourceRequest.d.ts +39 -10
- package/dist/erpnext/resourceRequest.js +115 -14
- package/dist/index.d.ts +39 -4
- package/dist/index.js +43 -8
- package/dist/utils/fernet.server.d.ts +11 -11
- package/dist/utils/fernet.server.js +0 -1
- package/dist/utils/request.js +2 -2
- package/dist/utils/zodUtils.d.ts +2 -1
- package/dist/utils/zodUtils.js +14 -1
- package/package.json +4 -1
- package/dist/erpnext/doctypes/country.d.ts +0 -9
- package/dist/erpnext/doctypes/country.js +0 -28
- package/dist/erpnext/erpnextRequests.d.ts +0 -1
- package/dist/erpnext/erpnextRequests.js +0 -15
- package/dist/erpnext.d.ts +0 -20
- package/dist/erpnext.js +0 -45
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const WaitlistInput: z.ZodObject<{
|
|
3
|
+
sku: z.ZodString;
|
|
4
|
+
e_mail: z.ZodString;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
sku: string;
|
|
7
|
+
e_mail: string;
|
|
8
|
+
}, {
|
|
9
|
+
sku: string;
|
|
10
|
+
e_mail: string;
|
|
11
|
+
}>;
|
|
12
|
+
export type WaitlistInputType = z.infer<typeof WaitlistInput>;
|
|
13
|
+
export declare const Waitlist: z.ZodObject<{
|
|
14
|
+
sku: z.ZodString;
|
|
15
|
+
e_mail: z.ZodString;
|
|
16
|
+
name: z.ZodString;
|
|
17
|
+
is_notified: z.ZodNumber;
|
|
18
|
+
requested_at: z.ZodString;
|
|
19
|
+
}, "strip", z.ZodTypeAny, {
|
|
20
|
+
name: string;
|
|
21
|
+
sku: string;
|
|
22
|
+
e_mail: string;
|
|
23
|
+
is_notified: number;
|
|
24
|
+
requested_at: string;
|
|
25
|
+
}, {
|
|
26
|
+
name: string;
|
|
27
|
+
sku: string;
|
|
28
|
+
e_mail: string;
|
|
29
|
+
is_notified: number;
|
|
30
|
+
requested_at: string;
|
|
31
|
+
}>;
|
|
32
|
+
export type WaitlistType = z.infer<typeof Waitlist>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Waitlist = exports.WaitlistInput = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.WaitlistInput = zod_1.z
|
|
6
|
+
.object({
|
|
7
|
+
sku: zod_1.z.string(),
|
|
8
|
+
e_mail: zod_1.z.string(),
|
|
9
|
+
})
|
|
10
|
+
.describe("WaitlistInput");
|
|
11
|
+
exports.Waitlist = zod_1.z
|
|
12
|
+
.object({
|
|
13
|
+
sku: zod_1.z.string(),
|
|
14
|
+
e_mail: zod_1.z.string(),
|
|
15
|
+
name: zod_1.z.string(),
|
|
16
|
+
is_notified: zod_1.z.number(),
|
|
17
|
+
requested_at: zod_1.z.string(),
|
|
18
|
+
})
|
|
19
|
+
.describe("Waitlist");
|
|
@@ -2,19 +2,19 @@ import { z } from "zod";
|
|
|
2
2
|
export declare const WarehouseCategoryList: z.ZodArray<z.ZodObject<{
|
|
3
3
|
name: z.ZodString;
|
|
4
4
|
}, "strip", z.ZodTypeAny, {
|
|
5
|
-
name
|
|
5
|
+
name: string;
|
|
6
6
|
}, {
|
|
7
|
-
name
|
|
7
|
+
name: string;
|
|
8
8
|
}>, "many">;
|
|
9
9
|
export type WarehouseCategoryListType = z.infer<typeof WarehouseCategoryList>;
|
|
10
10
|
export declare const WarehouseCategoryMethodResponse: z.ZodArray<z.ZodObject<{
|
|
11
11
|
name: z.ZodString;
|
|
12
12
|
fulfillment_stations: z.ZodArray<z.ZodString, "many">;
|
|
13
13
|
}, "strip", z.ZodTypeAny, {
|
|
14
|
-
name
|
|
15
|
-
fulfillment_stations
|
|
14
|
+
name: string;
|
|
15
|
+
fulfillment_stations: string[];
|
|
16
16
|
}, {
|
|
17
|
-
name
|
|
18
|
-
fulfillment_stations
|
|
17
|
+
name: string;
|
|
18
|
+
fulfillment_stations: string[];
|
|
19
19
|
}>, "many">;
|
|
20
20
|
export type WarehouseCategoryMethodResponseType = z.infer<typeof WarehouseCategoryMethodResponse>;
|
|
@@ -1,16 +1,45 @@
|
|
|
1
|
-
import { ZodTypeAny } from "zod";
|
|
1
|
+
import { z, ZodObject, ZodTypeAny } from "zod";
|
|
2
2
|
import { TemporalClient } from "../client";
|
|
3
3
|
export declare class ERPNextResourceRequest {
|
|
4
|
-
|
|
5
|
-
constructor(
|
|
6
|
-
getParams
|
|
7
|
-
getList
|
|
8
|
-
|
|
9
|
-
fields
|
|
4
|
+
protected temporalClient: TemporalClient;
|
|
5
|
+
constructor(temporalClient: TemporalClient);
|
|
6
|
+
private getParams;
|
|
7
|
+
getList<T extends ZodObject<any>, K extends keyof T["_type"], B extends boolean>({ resourceName, fields, filters, resourceModel, skip, limit, priority, asDict, params, }: {
|
|
8
|
+
resourceName: string;
|
|
9
|
+
fields?: K[];
|
|
10
10
|
filters?: string[][];
|
|
11
|
-
|
|
12
|
-
responseValidationModel: T | false;
|
|
11
|
+
resourceModel?: T;
|
|
13
12
|
skip?: number;
|
|
14
13
|
limit?: number;
|
|
15
|
-
|
|
14
|
+
priority?: number;
|
|
15
|
+
asDict?: B;
|
|
16
|
+
params?: string;
|
|
17
|
+
}): Promise<B extends false ? Array<Array<string>> : T extends undefined ? any : Array<Pick<z.infer<T>, K extends keyof z.infer<T> ? K : never>>>;
|
|
18
|
+
getById<T extends ZodTypeAny>({ resourceName, resourceId, resourceModel, priority, }: {
|
|
19
|
+
resourceName: string;
|
|
20
|
+
resourceId: string;
|
|
21
|
+
resourceModel?: T;
|
|
22
|
+
priority?: number;
|
|
23
|
+
}): Promise<z.TypeOf<T>>;
|
|
24
|
+
updateById<T extends ZodTypeAny, K extends ZodTypeAny>({ resourceName, resourceId, inputValidationModel, resourceModel, body, priority, }: {
|
|
25
|
+
resourceName: string;
|
|
26
|
+
resourceId: string;
|
|
27
|
+
inputValidationModel?: K;
|
|
28
|
+
resourceModel?: T;
|
|
29
|
+
priority?: number;
|
|
30
|
+
body: z.TypeOf<K>;
|
|
31
|
+
}): Promise<z.TypeOf<T>>;
|
|
32
|
+
create<T extends ZodTypeAny, K extends ZodTypeAny>({ resourceName, inputValidationModel, resourceModel, body, priority, }: {
|
|
33
|
+
resourceName: string;
|
|
34
|
+
inputValidationModel?: K;
|
|
35
|
+
resourceModel?: T;
|
|
36
|
+
priority?: number;
|
|
37
|
+
body: z.TypeOf<K>;
|
|
38
|
+
}): Promise<z.TypeOf<T>>;
|
|
39
|
+
deleteById<T extends ZodTypeAny, K extends ZodTypeAny>({ resourceName, resourceId, resourceModel, priority, }: {
|
|
40
|
+
resourceName: string;
|
|
41
|
+
resourceId: string;
|
|
42
|
+
resourceModel?: T;
|
|
43
|
+
priority?: number;
|
|
44
|
+
}): Promise<z.TypeOf<T>>;
|
|
16
45
|
}
|
|
@@ -10,25 +10,126 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.ERPNextResourceRequest = void 0;
|
|
13
|
+
const zod_1 = require("zod");
|
|
14
|
+
const zodUtils_1 = require("../utils/zodUtils");
|
|
13
15
|
class ERPNextResourceRequest {
|
|
14
|
-
constructor(
|
|
15
|
-
this.getParams = (fields, filters) => {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
constructor(temporalClient) {
|
|
17
|
+
this.getParams = (fields, filters, asDict, params) => {
|
|
18
|
+
const fieldsParams = fields ? `fields=${JSON.stringify(fields)}` : "";
|
|
19
|
+
const filtersParams = filters
|
|
20
|
+
? `filters=[${encodeURIComponent(filters.map((f) => JSON.stringify(f)).join(","))}]`
|
|
21
|
+
: "";
|
|
22
|
+
const asDictParams = asDict === false ? `as_dict=False` : "";
|
|
23
|
+
const allParams = `?${[
|
|
24
|
+
...(fieldsParams ? [fieldsParams] : []),
|
|
25
|
+
...(filtersParams ? [filtersParams] : []),
|
|
26
|
+
...(asDictParams ? [asDictParams] : []),
|
|
27
|
+
...(params ? [params] : []),
|
|
28
|
+
].join("&")}`;
|
|
29
|
+
console.log(allParams);
|
|
30
|
+
return allParams;
|
|
20
31
|
};
|
|
21
|
-
this.
|
|
22
|
-
|
|
32
|
+
this.temporalClient = temporalClient;
|
|
33
|
+
}
|
|
34
|
+
getList(_a) {
|
|
35
|
+
return __awaiter(this, arguments, void 0, function* ({ resourceName, fields, filters, resourceModel, skip, limit, priority = 5, asDict, params, }) {
|
|
36
|
+
if (resourceModel && !resourceModel.description)
|
|
37
|
+
throw new Error("Resource model must have a description");
|
|
38
|
+
const erpNextFields = (fields === null || fields === void 0 ? void 0 : fields.length) ? fields : ["name"];
|
|
39
|
+
const schema = asDict === false
|
|
40
|
+
? zod_1.z
|
|
41
|
+
.object({
|
|
42
|
+
data: zod_1.z.array(zod_1.z.array(zod_1.z.string())),
|
|
43
|
+
})
|
|
44
|
+
.describe(`${(resourceModel === null || resourceModel === void 0 ? void 0 : resourceModel.description)
|
|
45
|
+
? (resourceModel === null || resourceModel === void 0 ? void 0 : resourceModel.description) + " "
|
|
46
|
+
: ""}List with fields ${JSON.stringify(erpNextFields)} as dict = false`)
|
|
47
|
+
: resourceModel
|
|
48
|
+
? zod_1.z
|
|
49
|
+
.object({
|
|
50
|
+
data: zod_1.z.array((0, zodUtils_1.pickFromSchema)(resourceModel, erpNextFields)),
|
|
51
|
+
})
|
|
52
|
+
.describe(`${resourceModel.description} List with fields ${JSON.stringify(erpNextFields)}`)
|
|
53
|
+
: zod_1.z.any().describe("Any response");
|
|
54
|
+
const result = yield this.temporalClient.executeERPNextRequestWorkflow(`GET-${resourceName.toLowerCase()}-List`, {
|
|
23
55
|
requestMethod: "GET",
|
|
24
|
-
resourceName
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
params: this.getParams(fields, filters) +
|
|
56
|
+
resourceName,
|
|
57
|
+
responseValidationModel: schema,
|
|
58
|
+
params: this.getParams(fields, filters, asDict, params) +
|
|
28
59
|
`${skip ? `&skip=${skip}` : ""}&limit=${limit || 0}`,
|
|
29
|
-
}, "erpnext");
|
|
60
|
+
}, "erpnext", priority);
|
|
61
|
+
return result.data;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
getById(_a) {
|
|
65
|
+
return __awaiter(this, arguments, void 0, function* ({ resourceName, resourceId, resourceModel, priority = 5, }) {
|
|
66
|
+
if (resourceModel && !resourceModel.description)
|
|
67
|
+
throw new Error("Resource model must have a description");
|
|
68
|
+
const result = yield this.temporalClient.executeERPNextRequestWorkflow(`GET-${resourceName}-${resourceId}`, {
|
|
69
|
+
requestMethod: "GET",
|
|
70
|
+
resourceName,
|
|
71
|
+
resourceId,
|
|
72
|
+
responseValidationModel: resourceModel
|
|
73
|
+
? zod_1.z
|
|
74
|
+
.object({ data: resourceModel })
|
|
75
|
+
.describe(resourceModel.description)
|
|
76
|
+
: undefined,
|
|
77
|
+
}, "erpnext", priority);
|
|
78
|
+
return result.data;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
updateById(_a) {
|
|
82
|
+
return __awaiter(this, arguments, void 0, function* ({ resourceName, resourceId, inputValidationModel, resourceModel, body, priority = 5, }) {
|
|
83
|
+
if (resourceModel && !resourceModel.description)
|
|
84
|
+
throw new Error("Resource model must have a description");
|
|
85
|
+
const result = yield this.temporalClient.executeERPNextRequestWorkflow(`PUT-${resourceName}-${resourceId}`, {
|
|
86
|
+
requestMethod: "PUT",
|
|
87
|
+
resourceId,
|
|
88
|
+
resourceName,
|
|
89
|
+
inputValidationModel,
|
|
90
|
+
responseValidationModel: resourceModel
|
|
91
|
+
? zod_1.z
|
|
92
|
+
.object({ data: resourceModel })
|
|
93
|
+
.describe(resourceModel.description)
|
|
94
|
+
: undefined,
|
|
95
|
+
body,
|
|
96
|
+
}, "erpnext", priority);
|
|
97
|
+
return result.data;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
create(_a) {
|
|
101
|
+
return __awaiter(this, arguments, void 0, function* ({ resourceName, inputValidationModel, resourceModel, body, priority = 5, }) {
|
|
102
|
+
if (resourceModel && !resourceModel.description)
|
|
103
|
+
throw new Error("Resource model must have a description");
|
|
104
|
+
const result = yield this.temporalClient.executeERPNextRequestWorkflow(`POST-${resourceName}`, {
|
|
105
|
+
requestMethod: "POST",
|
|
106
|
+
resourceName,
|
|
107
|
+
inputValidationModel,
|
|
108
|
+
responseValidationModel: resourceModel
|
|
109
|
+
? zod_1.z
|
|
110
|
+
.object({ data: resourceModel })
|
|
111
|
+
.describe(resourceModel.description)
|
|
112
|
+
: undefined,
|
|
113
|
+
body,
|
|
114
|
+
}, "erpnext", priority);
|
|
115
|
+
return result.data;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
deleteById(_a) {
|
|
119
|
+
return __awaiter(this, arguments, void 0, function* ({ resourceName, resourceId, resourceModel, priority = 5, }) {
|
|
120
|
+
if (resourceModel && !resourceModel.description)
|
|
121
|
+
throw new Error("Resource model must have a description");
|
|
122
|
+
return yield this.temporalClient.executeERPNextRequestWorkflow(`DELETE-${resourceName}`, {
|
|
123
|
+
requestMethod: "DELETE",
|
|
124
|
+
resourceName,
|
|
125
|
+
resourceId,
|
|
126
|
+
responseValidationModel: zod_1.z
|
|
127
|
+
.object({
|
|
128
|
+
message: zod_1.z.string(),
|
|
129
|
+
})
|
|
130
|
+
.describe("Delete response"),
|
|
131
|
+
}, "erpnext", priority);
|
|
30
132
|
});
|
|
31
|
-
this.client = client;
|
|
32
133
|
}
|
|
33
134
|
}
|
|
34
135
|
exports.ERPNextResourceRequest = ERPNextResourceRequest;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,46 @@
|
|
|
1
1
|
import { TemporalClient } from "./client";
|
|
2
|
-
import {
|
|
2
|
+
import { ERPNextDoctypeResourceRequest } from "./erpnext/doctypeResourceRequest";
|
|
3
|
+
import { ERPNextAddress } from "./erpnext/doctypes/address";
|
|
4
|
+
import { ERPNextContact } from "./erpnext/doctypes/contact";
|
|
5
|
+
import { ERPNextDeliveryNote } from "./erpnext/doctypes/deliveryNote";
|
|
6
|
+
import { ERPNextItem } from "./erpnext/doctypes/item";
|
|
7
|
+
import { ERPNextPurchaseReceipt } from "./erpnext/doctypes/purchaseReceipt";
|
|
8
|
+
import { ERPNextShipment } from "./erpnext/doctypes/shipment";
|
|
9
|
+
import { ERPNextDoctypeSubmittableResourceRequest } from "./erpnext/doctypeSubmittableResourceRequest";
|
|
10
|
+
import { ERPNextFileRequests } from "./erpnext/fileRequests";
|
|
11
|
+
import { ERPNextMethodRequest } from "./erpnext/methodRequest";
|
|
12
|
+
import { Country } from "./erpnext/model/Country";
|
|
13
|
+
import { Customer } from "./erpnext/model/Customer";
|
|
3
14
|
import { ERPNextQueueClientContructorOptions } from "./erpnext/model/ERPNextQueue";
|
|
15
|
+
import { PaymentEntry } from "./erpnext/model/PaymentEntry";
|
|
16
|
+
import { PurchaseOrder } from "./erpnext/model/PurchaseOrder";
|
|
17
|
+
import { ShippingProvider } from "./erpnext/model/ShippingProvider";
|
|
18
|
+
import { StockEntry } from "./erpnext/model/StockEntry";
|
|
19
|
+
import { StockReconciliation } from "./erpnext/model/StockReconciliation";
|
|
20
|
+
import { Supplier } from "./erpnext/model/Supplier";
|
|
21
|
+
import { Waitlist } from "./erpnext/model/Waitlist";
|
|
4
22
|
import { ERPNextResourceRequest } from "./erpnext/resourceRequest";
|
|
5
23
|
export declare class ERPNextQueueClient {
|
|
6
|
-
|
|
7
|
-
private credentials
|
|
24
|
+
temporalClient: TemporalClient;
|
|
25
|
+
private credentials?;
|
|
8
26
|
resourceRequest: ERPNextResourceRequest;
|
|
9
|
-
|
|
27
|
+
methodRequest: ERPNextMethodRequest;
|
|
28
|
+
country: ERPNextDoctypeResourceRequest<typeof Country>;
|
|
29
|
+
address: ERPNextAddress;
|
|
30
|
+
contact: ERPNextContact;
|
|
31
|
+
customer: ERPNextDoctypeResourceRequest<typeof Customer>;
|
|
32
|
+
deliveryNote: ERPNextDeliveryNote;
|
|
33
|
+
fileRequests: ERPNextFileRequests;
|
|
34
|
+
shipment: ERPNextShipment;
|
|
35
|
+
shippingProvider: ERPNextDoctypeResourceRequest<typeof ShippingProvider>;
|
|
36
|
+
item: ERPNextItem;
|
|
37
|
+
purchaseOrder: ERPNextDoctypeSubmittableResourceRequest<typeof PurchaseOrder>;
|
|
38
|
+
purchaseReceipt: ERPNextPurchaseReceipt;
|
|
39
|
+
waitlist: ERPNextDoctypeResourceRequest<typeof Waitlist>;
|
|
40
|
+
stockEntry: ERPNextDoctypeSubmittableResourceRequest<typeof StockEntry>;
|
|
41
|
+
supplier: ERPNextDoctypeResourceRequest<typeof Supplier>;
|
|
42
|
+
paymentEntry: ERPNextDoctypeSubmittableResourceRequest<typeof PaymentEntry>;
|
|
43
|
+
stockReconciliation: ERPNextDoctypeSubmittableResourceRequest<typeof StockReconciliation>;
|
|
10
44
|
/**
|
|
11
45
|
* @description Provide either a temporal client or connection details to create a new client
|
|
12
46
|
*/
|
|
@@ -16,3 +50,4 @@ export declare class ERPNextQueueClient {
|
|
|
16
50
|
};
|
|
17
51
|
}
|
|
18
52
|
export { ERPNextMethodResponse, ERPNextMethodResponseType, ERPNextResourceResponse, ERPNextResourceResponseType, } from "./erpnext/model/ERPNextResponse";
|
|
53
|
+
export { pickFromSchema } from "./utils/zodUtils";
|
package/dist/index.js
CHANGED
|
@@ -1,27 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ERPNextResourceResponse = exports.ERPNextMethodResponse = exports.ERPNextQueueClient = void 0;
|
|
3
|
+
exports.pickFromSchema = exports.ERPNextResourceResponse = exports.ERPNextMethodResponse = exports.ERPNextQueueClient = void 0;
|
|
4
4
|
const client_1 = require("./client");
|
|
5
5
|
const decryptFromErpNext_server_1 = require("./erpnext/decryptFromErpNext.server");
|
|
6
|
-
const
|
|
6
|
+
const doctypeResourceRequest_1 = require("./erpnext/doctypeResourceRequest");
|
|
7
|
+
const address_1 = require("./erpnext/doctypes/address");
|
|
8
|
+
const contact_1 = require("./erpnext/doctypes/contact");
|
|
9
|
+
const deliveryNote_1 = require("./erpnext/doctypes/deliveryNote");
|
|
10
|
+
const item_1 = require("./erpnext/doctypes/item");
|
|
11
|
+
const purchaseReceipt_1 = require("./erpnext/doctypes/purchaseReceipt");
|
|
12
|
+
const shipment_1 = require("./erpnext/doctypes/shipment");
|
|
13
|
+
const doctypeSubmittableResourceRequest_1 = require("./erpnext/doctypeSubmittableResourceRequest");
|
|
14
|
+
const fileRequests_1 = require("./erpnext/fileRequests");
|
|
15
|
+
const methodRequest_1 = require("./erpnext/methodRequest");
|
|
16
|
+
const Country_1 = require("./erpnext/model/Country");
|
|
17
|
+
const Customer_1 = require("./erpnext/model/Customer");
|
|
18
|
+
const PaymentEntry_1 = require("./erpnext/model/PaymentEntry");
|
|
19
|
+
const PurchaseOrder_1 = require("./erpnext/model/PurchaseOrder");
|
|
20
|
+
const ShippingProvider_1 = require("./erpnext/model/ShippingProvider");
|
|
21
|
+
const StockEntry_1 = require("./erpnext/model/StockEntry");
|
|
22
|
+
const StockReconciliation_1 = require("./erpnext/model/StockReconciliation");
|
|
23
|
+
const Supplier_1 = require("./erpnext/model/Supplier");
|
|
24
|
+
const Waitlist_1 = require("./erpnext/model/Waitlist");
|
|
7
25
|
const resourceRequest_1 = require("./erpnext/resourceRequest");
|
|
8
26
|
class ERPNextQueueClient {
|
|
9
27
|
/**
|
|
10
28
|
* @description Provide either a temporal client or connection details to create a new client
|
|
11
29
|
*/
|
|
12
30
|
constructor(options) {
|
|
13
|
-
var _a;
|
|
14
31
|
this.utils = {
|
|
15
32
|
decryptFromErpNext: (encryptedString) => (0, decryptFromErpNext_server_1.decryptFromErpNext)(this.credentials, encryptedString),
|
|
16
33
|
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
this.resourceRequest = new resourceRequest_1.ERPNextResourceRequest(this.
|
|
21
|
-
this.
|
|
34
|
+
if (options.erpnextCredentials)
|
|
35
|
+
this.credentials = options.erpnextCredentials;
|
|
36
|
+
this.temporalClient = new client_1.TemporalClient(options.temporalCredentials);
|
|
37
|
+
this.resourceRequest = new resourceRequest_1.ERPNextResourceRequest(this.temporalClient);
|
|
38
|
+
this.methodRequest = new methodRequest_1.ERPNextMethodRequest(this.temporalClient);
|
|
39
|
+
this.country = new doctypeResourceRequest_1.ERPNextDoctypeResourceRequest(this.temporalClient, "Country", Country_1.Country);
|
|
40
|
+
this.address = new address_1.ERPNextAddress(this.temporalClient);
|
|
41
|
+
this.contact = new contact_1.ERPNextContact(this.temporalClient);
|
|
42
|
+
this.customer = new doctypeResourceRequest_1.ERPNextDoctypeResourceRequest(this.temporalClient, "Customer", Customer_1.Customer);
|
|
43
|
+
this.fileRequests = new fileRequests_1.ERPNextFileRequests(this.temporalClient, this.credentials);
|
|
44
|
+
this.deliveryNote = new deliveryNote_1.ERPNextDeliveryNote(this.temporalClient, this.fileRequests);
|
|
45
|
+
this.shipment = new shipment_1.ERPNextShipment(this.temporalClient);
|
|
46
|
+
this.shippingProvider = new doctypeResourceRequest_1.ERPNextDoctypeResourceRequest(this.temporalClient, "Shipping Provider", ShippingProvider_1.ShippingProvider);
|
|
47
|
+
this.item = new item_1.ERPNextItem(this.temporalClient);
|
|
48
|
+
this.purchaseOrder = new doctypeSubmittableResourceRequest_1.ERPNextDoctypeSubmittableResourceRequest(this.temporalClient, "Purchase Order", PurchaseOrder_1.PurchaseOrder);
|
|
49
|
+
this.purchaseReceipt = new purchaseReceipt_1.ERPNextPurchaseReceipt(this.temporalClient);
|
|
50
|
+
this.waitlist = new doctypeResourceRequest_1.ERPNextDoctypeResourceRequest(this.temporalClient, "Waitlist", Waitlist_1.Waitlist);
|
|
51
|
+
this.stockEntry = new doctypeSubmittableResourceRequest_1.ERPNextDoctypeSubmittableResourceRequest(this.temporalClient, "Stock Entry", StockEntry_1.StockEntry);
|
|
52
|
+
this.supplier = new doctypeResourceRequest_1.ERPNextDoctypeResourceRequest(this.temporalClient, "Supplier", Supplier_1.Supplier);
|
|
53
|
+
this.paymentEntry = new doctypeSubmittableResourceRequest_1.ERPNextDoctypeSubmittableResourceRequest(this.temporalClient, "Payment Entry", PaymentEntry_1.PaymentEntry);
|
|
54
|
+
this.stockReconciliation = new doctypeSubmittableResourceRequest_1.ERPNextDoctypeSubmittableResourceRequest(this.temporalClient, "Stock Reconciliation", StockReconciliation_1.StockReconciliation);
|
|
22
55
|
}
|
|
23
56
|
}
|
|
24
57
|
exports.ERPNextQueueClient = ERPNextQueueClient;
|
|
25
58
|
var ERPNextResponse_1 = require("./erpnext/model/ERPNextResponse");
|
|
26
59
|
Object.defineProperty(exports, "ERPNextMethodResponse", { enumerable: true, get: function () { return ERPNextResponse_1.ERPNextMethodResponse; } });
|
|
27
60
|
Object.defineProperty(exports, "ERPNextResourceResponse", { enumerable: true, get: function () { return ERPNextResponse_1.ERPNextResourceResponse; } });
|
|
61
|
+
var zodUtils_1 = require("./utils/zodUtils");
|
|
62
|
+
Object.defineProperty(exports, "pickFromSchema", { enumerable: true, get: function () { return zodUtils_1.pickFromSchema; } });
|
|
@@ -105,24 +105,24 @@ interface FernetOptions {
|
|
|
105
105
|
* Token object to perform encryption/decryption
|
|
106
106
|
*/
|
|
107
107
|
declare class Token {
|
|
108
|
-
secret?: Secret;
|
|
109
|
-
ttl?: number;
|
|
108
|
+
secret?: Secret | undefined;
|
|
109
|
+
ttl?: number | undefined;
|
|
110
110
|
message: string;
|
|
111
111
|
/** cipher text to decrypt */
|
|
112
|
-
cipherText?: CryptoJS.lib.WordArray;
|
|
113
|
-
cipherTextHex?: string;
|
|
112
|
+
cipherText?: CryptoJS.lib.WordArray | undefined;
|
|
113
|
+
cipherTextHex?: string | undefined;
|
|
114
114
|
/** token string */
|
|
115
|
-
token?: string;
|
|
115
|
+
token?: string | undefined;
|
|
116
116
|
/** version of token */
|
|
117
|
-
version?: string | number;
|
|
117
|
+
version?: string | number | undefined;
|
|
118
118
|
/** the IV array */
|
|
119
|
-
optsIV?: CryptoJS.lib.WordArray;
|
|
119
|
+
optsIV?: CryptoJS.lib.WordArray | undefined;
|
|
120
120
|
maxClockSkew: number;
|
|
121
121
|
time: Date | CryptoJS.lib.WordArray;
|
|
122
122
|
encoded: boolean;
|
|
123
|
-
iv?: CryptoJS.lib.WordArray;
|
|
124
|
-
ivHex?: string;
|
|
125
|
-
hmacHex?: string;
|
|
123
|
+
iv?: CryptoJS.lib.WordArray | undefined;
|
|
124
|
+
ivHex?: string | undefined;
|
|
125
|
+
hmacHex?: string | undefined;
|
|
126
126
|
/**
|
|
127
127
|
* Token object to perform encryption/decryption
|
|
128
128
|
* @param {TokenOptions} opts - options for token initialization
|
|
@@ -132,7 +132,7 @@ declare class Token {
|
|
|
132
132
|
* converts token to string
|
|
133
133
|
* @return {String} to stringified token
|
|
134
134
|
*/
|
|
135
|
-
toString(): string;
|
|
135
|
+
toString(): string | undefined;
|
|
136
136
|
/**
|
|
137
137
|
* Encrypts a message
|
|
138
138
|
* @param {String} message - message to encrypt
|
package/dist/utils/request.js
CHANGED
|
@@ -55,7 +55,7 @@ exports.RequestError = RequestError;
|
|
|
55
55
|
function request(options) {
|
|
56
56
|
return __awaiter(this, void 0, void 0, function* () {
|
|
57
57
|
var _a, _b;
|
|
58
|
-
const _c = options || {}, { body, url, inputValidationModel, responseValidationModel } = _c, requestOptions = __rest(_c, ["body", "url", "inputValidationModel", "responseValidationModel"]);
|
|
58
|
+
const _c = options || {}, { body, url, inputValidationModel, responseValidationModel, credentials, headers } = _c, requestOptions = __rest(_c, ["body", "url", "inputValidationModel", "responseValidationModel", "credentials", "headers"]);
|
|
59
59
|
// Validate the request body
|
|
60
60
|
const validatedBody = inputValidationModel
|
|
61
61
|
? (0, zodUtils_1.validateData)(body, inputValidationModel)
|
|
@@ -71,7 +71,7 @@ function request(options) {
|
|
|
71
71
|
contentType !== "application/x-www-form-urlencoded"
|
|
72
72
|
? JSON.stringify(validatedBody)
|
|
73
73
|
: undefined;
|
|
74
|
-
const convertedOptions = Object.assign(Object.assign({}, requestOptions), (options.method !== "GET"
|
|
74
|
+
const convertedOptions = Object.assign(Object.assign(Object.assign(Object.assign({}, requestOptions), (headers ? { headers } : {})), (credentials ? { credentials } : {})), (options.method !== "GET"
|
|
75
75
|
? { body: stringifiedBody !== null && stringifiedBody !== void 0 ? stringifiedBody : validatedBody }
|
|
76
76
|
: {}));
|
|
77
77
|
// Log requests
|
package/dist/utils/zodUtils.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
1
|
+
import { z, ZodObject, ZodRawShape } from "zod";
|
|
2
2
|
export declare function validateData<T extends z.ZodTypeAny>(data: unknown, ValidationModel: T): z.infer<T>;
|
|
3
|
+
export declare function pickFromSchema<T extends ZodRawShape, K extends keyof T>(schema: ZodObject<T>, keys: readonly K[]): ZodObject<Pick<T, K>>;
|
package/dist/utils/zodUtils.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateData = validateData;
|
|
4
|
+
exports.pickFromSchema = pickFromSchema;
|
|
5
|
+
const zod_1 = require("zod");
|
|
4
6
|
const constants_1 = require("../constants");
|
|
5
7
|
function validateData(data, ValidationModel) {
|
|
6
8
|
if (!ValidationModel.description)
|
|
@@ -10,8 +12,19 @@ function validateData(data, ValidationModel) {
|
|
|
10
12
|
throw {
|
|
11
13
|
message: `Validation error in model ${ValidationModel.description}`,
|
|
12
14
|
error: validationResult.error,
|
|
13
|
-
input: constants_1.constants.DEBUG_MODE === "true"
|
|
15
|
+
input: constants_1.constants.DEBUG_MODE === "true"
|
|
16
|
+
? data
|
|
17
|
+
: "set DEBUG_MODE to true to see the input",
|
|
14
18
|
};
|
|
15
19
|
}
|
|
16
20
|
return validationResult.data;
|
|
17
21
|
}
|
|
22
|
+
function pickFromSchema(schema, keys) {
|
|
23
|
+
const pickedShape = keys === null || keys === void 0 ? void 0 : keys.reduce((acc, key) => {
|
|
24
|
+
if (key in schema.shape) {
|
|
25
|
+
acc[key] = schema.shape[key];
|
|
26
|
+
}
|
|
27
|
+
return acc;
|
|
28
|
+
}, {});
|
|
29
|
+
return zod_1.z.object(pickedShape);
|
|
30
|
+
}
|
package/package.json
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
],
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"scripts": {
|
|
9
|
+
"dev": "tsc -w",
|
|
9
10
|
"test": "dotenv -c test vitest",
|
|
10
11
|
"build": "tsc",
|
|
11
12
|
"release": "npm run build && npm publish"
|
|
@@ -23,9 +24,11 @@
|
|
|
23
24
|
"winston": "^3.15.0",
|
|
24
25
|
"zod": "^3.23.8"
|
|
25
26
|
},
|
|
26
|
-
"version": "1.0
|
|
27
|
+
"version": "1.1.0",
|
|
27
28
|
"devDependencies": {
|
|
28
29
|
"@types/crypto-js": "^4.2.2",
|
|
30
|
+
"@types/lodash": "^4.17.13",
|
|
31
|
+
"@types/randombytes": "^2.0.3",
|
|
29
32
|
"typescript": "^5.6.3",
|
|
30
33
|
"vitest": "^2.1.8"
|
|
31
34
|
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.ERPNextCountry = void 0;
|
|
13
|
-
const Country_1 = require("../model/Country");
|
|
14
|
-
class ERPNextCountry {
|
|
15
|
-
constructor(client) {
|
|
16
|
-
this.getCountryList = () => __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
const result = yield this.client.executeERPNextRequestWorkflow("getCountryList", {
|
|
18
|
-
requestMethod: "GET",
|
|
19
|
-
responseValidationModel: (0, Country_1.CountryList)(["name", "code"]),
|
|
20
|
-
resourceName: "Country",
|
|
21
|
-
params: `?fields=["name", "code"]`,
|
|
22
|
-
}, "erpnext");
|
|
23
|
-
return result;
|
|
24
|
-
});
|
|
25
|
-
this.client = client;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
exports.ERPNextCountry = ERPNextCountry;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// import { isArray } from "lodash";
|
|
3
|
-
// import {
|
|
4
|
-
// AddressListName,
|
|
5
|
-
// type AddressPostBodyType,
|
|
6
|
-
// type ShipstormAddressType,
|
|
7
|
-
// } from "./model/Address";
|
|
8
|
-
// import { ErpNextResponseDictFalse } from "./model/Item";
|
|
9
|
-
// import {
|
|
10
|
-
// GetProjectedQuantity,
|
|
11
|
-
// GetProjectedQuantityRequestBody,
|
|
12
|
-
// type GetProjectedQuantityInputOptionsType,
|
|
13
|
-
// type ProjectedQuantityType,
|
|
14
|
-
// } from "./model/ProjectedQuantityReport";
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/erpnext.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { TypeOf, ZodTypeAny } from "zod";
|
|
2
|
-
import { ERPNextCredentials, ERPNextQueueType } from "./erpnext/model/ERPNextQueue";
|
|
3
|
-
import { ERPNextRequestOptions } from "./erpnext/model/ERPNextRequest";
|
|
4
|
-
import { TemporalClient } from "./client";
|
|
5
|
-
/**
|
|
6
|
-
* @description Provide either a temporal client or connection details to create a new client
|
|
7
|
-
*/
|
|
8
|
-
export declare class ERPNext {
|
|
9
|
-
private client;
|
|
10
|
-
private credentials;
|
|
11
|
-
execute: <T extends ZodTypeAny, K extends ZodTypeAny>(requestName: string, options: ERPNextRequestOptions<T, K>, queue: ERPNextQueueType, priority: number) => Promise<TypeOf<T>>;
|
|
12
|
-
constructor(client: TemporalClient, erpnextCredentials: ERPNextCredentials);
|
|
13
|
-
request: {
|
|
14
|
-
fileDownload: <T extends ZodTypeAny, K extends ZodTypeAny>(url: string) => Promise<Buffer<ArrayBufferLike>>;
|
|
15
|
-
executeWithoutTemporalQueue: <T extends ZodTypeAny, K extends ZodTypeAny>(options: ERPNextRequestOptions<T, K>) => Promise<TypeOf<T>>;
|
|
16
|
-
};
|
|
17
|
-
utils: {
|
|
18
|
-
decryptFromErpNext: (encryptedPassword: string) => string;
|
|
19
|
-
};
|
|
20
|
-
}
|