@kwiz/node 1.0.32 → 1.0.36
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/SPO/common.js +2 -3
- package/dist/SPO/common.js.map +1 -1
- package/dist/auth/discovery.js +5 -4
- package/dist/auth/discovery.js.map +1 -1
- package/dist/auth/msal.js +2 -3
- package/dist/auth/msal.js.map +1 -1
- package/dist/axios.js +3 -4
- package/dist/axios.js.map +1 -1
- package/dist/exports-index.d.ts +3 -0
- package/dist/exports-index.js +3 -0
- package/dist/exports-index.js.map +1 -1
- package/dist/get-with-cache.js +1 -2
- package/dist/get-with-cache.js.map +1 -1
- package/dist/graph/graph.js +3 -3
- package/dist/graph/graph.js.map +1 -1
- package/dist/next-js/api.d.ts +4 -0
- package/dist/next-js/api.js +41 -0
- package/dist/next-js/api.js.map +1 -0
- package/dist/next-js/api.responses.d.ts +22 -0
- package/dist/next-js/api.responses.js +25 -0
- package/dist/next-js/api.responses.js.map +1 -0
- package/dist/next-js/exports-index.d.ts +2 -0
- package/dist/next-js/exports-index.js +19 -0
- package/dist/next-js/exports-index.js.map +1 -0
- package/dist/sf/actions.d.ts +25 -0
- package/dist/sf/actions.js +251 -0
- package/dist/sf/actions.js.map +1 -0
- package/dist/sf/connections.d.ts +10 -0
- package/dist/sf/connections.js +108 -0
- package/dist/sf/connections.js.map +1 -0
- package/dist/sf/constants.d.ts +17 -0
- package/dist/sf/constants.js +21 -0
- package/dist/sf/constants.js.map +1 -0
- package/dist/sf/exports-index.d.ts +4 -0
- package/dist/sf/exports-index.js +21 -0
- package/dist/sf/exports-index.js.map +1 -0
- package/dist/sf/types.d.ts +146 -0
- package/dist/sf/types.js +65 -0
- package/dist/sf/types.js.map +1 -0
- package/dist/storage/common.js +1 -2
- package/dist/storage/common.js.map +1 -1
- package/dist/storage/odata.js +10 -5
- package/dist/storage/odata.js.map +1 -1
- package/dist/storage/table-storage.d.ts +2 -0
- package/dist/storage/table-storage.js +17 -15
- package/dist/storage/table-storage.js.map +1 -1
- package/dist/utilities/email.d.ts +16 -0
- package/dist/utilities/email.js +46 -0
- package/dist/utilities/email.js.map +1 -0
- package/dist/utilities/exports-index.d.ts +1 -0
- package/dist/utilities/exports-index.js +18 -0
- package/dist/utilities/exports-index.js.map +1 -0
- package/package.json +24 -5
|
@@ -0,0 +1,251 @@
|
|
|
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.sfGetUserName = sfGetUserName;
|
|
13
|
+
exports.sfIsConnectionValid = sfIsConnectionValid;
|
|
14
|
+
exports.sfGetFields = sfGetFields;
|
|
15
|
+
exports.sfGetRecords = sfGetRecords;
|
|
16
|
+
exports.sfGetOrgInfo = sfGetOrgInfo;
|
|
17
|
+
exports.sfGetObjects = sfGetObjects;
|
|
18
|
+
exports.sfCreateItem = sfCreateItem;
|
|
19
|
+
exports.sfGetField = sfGetField;
|
|
20
|
+
exports.sfAddField = sfAddField;
|
|
21
|
+
exports.sfUpdateField = sfUpdateField;
|
|
22
|
+
exports.sfSetFieldPermissions = sfSetFieldPermissions;
|
|
23
|
+
exports.sfAttachFile = sfAttachFile;
|
|
24
|
+
const common_1 = require("@kwiz/common");
|
|
25
|
+
const constants_1 = require("./constants");
|
|
26
|
+
const types_1 = require("./types");
|
|
27
|
+
function sfGetUserName(conn) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
var _a;
|
|
30
|
+
try {
|
|
31
|
+
let userId = (_a = conn.userInfo) === null || _a === void 0 ? void 0 : _a.id;
|
|
32
|
+
if ((0, common_1.isNullOrEmptyString)(userId)) {
|
|
33
|
+
const identity = yield conn.identity();
|
|
34
|
+
//console.log(identity);
|
|
35
|
+
if ((0, common_1.isNotEmptyString)(identity.display_name))
|
|
36
|
+
return identity.display_name;
|
|
37
|
+
userId = identity.user_id;
|
|
38
|
+
}
|
|
39
|
+
const ui = yield conn.query("SELECT Name FROM User WHERE Id = '" + userId + "'");
|
|
40
|
+
return ui.records[0].Name;
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
console.error(e);
|
|
44
|
+
return types_1.sf_unknown_user;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function sfIsConnectionValid(conn) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
const userName = yield sfGetUserName(conn);
|
|
51
|
+
return userName !== types_1.sf_unknown_user;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function sfGetFields(conn, entity) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
const ent = yield conn.sobject(entity).describe();
|
|
57
|
+
return ent.fields;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function sfGetRecords(conn_1, entity_1) {
|
|
61
|
+
return __awaiter(this, arguments, void 0, function* (conn, entity, select = ["Id, Name"], accessAsAppInstanceUrl) {
|
|
62
|
+
const records = yield conn.query(`SELECT ${select.join(', ')} FROM ${entity}`);
|
|
63
|
+
return records;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function sfGetOrgInfo(conn) {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
const result = yield (conn === null || conn === void 0 ? void 0 : conn.query("SELECT Id, Name FROM Organization LIMIT 1"));
|
|
69
|
+
return {
|
|
70
|
+
instanceUrl: conn.instanceUrl,
|
|
71
|
+
orgId: result.records[0].Id,
|
|
72
|
+
orgName: result.records[0].Name
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function sfGetObjects(conn) {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
const objects = yield conn.describeGlobal();
|
|
79
|
+
//console.log(objects);
|
|
80
|
+
return objects.sobjects;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function sfCreateItem(conn, entity, values) {
|
|
84
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
try {
|
|
86
|
+
const sObject = conn.sobject(entity);
|
|
87
|
+
const result = yield sObject.create(values, {
|
|
88
|
+
headers: {
|
|
89
|
+
//bypass duplicate check
|
|
90
|
+
'Sforce-Duplicate-Rule-Header': 'allowSave=true'
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
//console.log(result);
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
const typedError = e;
|
|
98
|
+
return {
|
|
99
|
+
success: false,
|
|
100
|
+
errors: [{
|
|
101
|
+
errorCode: typedError.errorCode || "unknown error",
|
|
102
|
+
message: typedError.message || (0, common_1.GetError)(e) || "unexpected error"
|
|
103
|
+
}]
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
function sfGetField(conn, entity, name) {
|
|
109
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
110
|
+
return conn.metadata.read("CustomField", `${entity}.${name}`);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
function sfAddField(conn, info) {
|
|
114
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
115
|
+
try {
|
|
116
|
+
if (!info.fullName.endsWith(constants_1.sf_custom_field_name_suffix))
|
|
117
|
+
info.fullName = `${info.fullName}${constants_1.sf_custom_field_name_suffix}`;
|
|
118
|
+
const result = yield conn.metadata.create("CustomField", info);
|
|
119
|
+
//set visibiliy on new field
|
|
120
|
+
//console.log(result);
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
const typedError = e;
|
|
125
|
+
return {
|
|
126
|
+
success: false,
|
|
127
|
+
fullName: info.fullName,
|
|
128
|
+
errors: [{
|
|
129
|
+
statusCode: typedError.errorCode || "unknown error",
|
|
130
|
+
message: typedError.message || (0, common_1.GetError)(e) || "unexpected error",
|
|
131
|
+
extendedErrorDetails: [], fields: []
|
|
132
|
+
}]
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
function sfUpdateField(conn, info) {
|
|
138
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
const field = yield conn.metadata.read("CustomField", info.fullName);
|
|
140
|
+
if (!field)
|
|
141
|
+
return {
|
|
142
|
+
success: false,
|
|
143
|
+
fullName: info.fullName,
|
|
144
|
+
errors: [{ statusCode: "FIELD_NOT_FOUND", message: `Could not find field ${info.fullName}`, extendedErrorDetails: [], fields: [] }]
|
|
145
|
+
};
|
|
146
|
+
if ((0, common_1.isNullOrUndefined)(info.type))
|
|
147
|
+
info.type = field.type;
|
|
148
|
+
if ((0, common_1.isNullOrEmptyString)(info.label))
|
|
149
|
+
info.label = field.label;
|
|
150
|
+
else if (field.type !== info.type)
|
|
151
|
+
return {
|
|
152
|
+
success: false,
|
|
153
|
+
fullName: info.fullName,
|
|
154
|
+
errors: [{ statusCode: "DO_NOT_CHANGE_TYPE", message: "Do not change field type - data loss risk", extendedErrorDetails: [], fields: [] }]
|
|
155
|
+
};
|
|
156
|
+
const result = yield conn.metadata.update("CustomField", info);
|
|
157
|
+
//console.log(result);
|
|
158
|
+
return result;
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
function sfSetFieldPermissions(conn, fieldName) {
|
|
162
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
163
|
+
try {
|
|
164
|
+
//set visibiliy on new field
|
|
165
|
+
const result = yield (conn === null || conn === void 0 ? void 0 : conn.query("SELECT Id, Name FROM Profile"));
|
|
166
|
+
const chunks = (0, common_1.chunkArray)([...types_1.sf_builtin_profiles, ...result.records.map(r => r.Name)], types_1.sf_throttle);
|
|
167
|
+
//no need to check anything - just run the update
|
|
168
|
+
yield (0, common_1.forEachAsync)(chunks, (names) => __awaiter(this, void 0, void 0, function* () {
|
|
169
|
+
yield conn.metadata.update("Profile", names.map(name => ({
|
|
170
|
+
fullName: name,
|
|
171
|
+
fieldPermissions: [{
|
|
172
|
+
editable: true,
|
|
173
|
+
field: fieldName,
|
|
174
|
+
readable: true
|
|
175
|
+
}]
|
|
176
|
+
})));
|
|
177
|
+
}));
|
|
178
|
+
//can check - but no need... faster to just update
|
|
179
|
+
// await forEachAsync(chunks, async names => {
|
|
180
|
+
// let chunkProfiles = await conn!.metadata.read("Profile", names);
|
|
181
|
+
// chunkProfiles = chunkProfiles.filter(p => {
|
|
182
|
+
// if (isNullOrEmptyString(p.fullName)
|
|
183
|
+
// || isNullOrEmptyArray(p.fieldPermissions))
|
|
184
|
+
// return false;//skip system accounts
|
|
185
|
+
// const existing = firstOrNull(p.fieldPermissions, fp => fp.field === fieldName);
|
|
186
|
+
// if (existing && existing.editable && existing.readable)
|
|
187
|
+
// return false;//skip accounts that already have permissions set
|
|
188
|
+
// else {
|
|
189
|
+
// //make the change...
|
|
190
|
+
// if (existing) {
|
|
191
|
+
// existing.editable = true;
|
|
192
|
+
// existing.readable = true;
|
|
193
|
+
// }
|
|
194
|
+
// else p.fieldPermissions.push({
|
|
195
|
+
// editable: true,
|
|
196
|
+
// field: fieldName,
|
|
197
|
+
// readable: true
|
|
198
|
+
// });
|
|
199
|
+
// return true;
|
|
200
|
+
// }
|
|
201
|
+
// });
|
|
202
|
+
// if (isNotEmptyArray(chunkProfiles)) {
|
|
203
|
+
// await conn!.metadata.update("Profile", chunkProfiles.map(p => ({
|
|
204
|
+
// fullName: p.fullName,
|
|
205
|
+
// fieldPermissions: p.fieldPermissions
|
|
206
|
+
// })));
|
|
207
|
+
// profilesToUpdate.push(...chunkProfiles);
|
|
208
|
+
// }
|
|
209
|
+
// });
|
|
210
|
+
return { success: true };
|
|
211
|
+
}
|
|
212
|
+
catch (e) {
|
|
213
|
+
const typedError = e;
|
|
214
|
+
return {
|
|
215
|
+
success: false,
|
|
216
|
+
error: {
|
|
217
|
+
statusCode: typedError.errorCode || "unknown error",
|
|
218
|
+
message: typedError.message || (0, common_1.GetError)(e) || "unexpected error"
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
function sfAttachFile(conn, itemId, file) {
|
|
225
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
226
|
+
const base64Marker = 'base64,';
|
|
227
|
+
const base64 = (file.base64.indexOf(base64Marker) >= 0)
|
|
228
|
+
? file.base64.slice(file.base64.indexOf(base64Marker) + base64Marker.length)
|
|
229
|
+
: file.base64;
|
|
230
|
+
const res = yield conn.sobject('ContentVersion').create({
|
|
231
|
+
PathOnClient: file.filename,
|
|
232
|
+
Title: file.filename,
|
|
233
|
+
VersionData: base64
|
|
234
|
+
// Add other fields as needed, e.g., Origin: 'C' for Chatter files
|
|
235
|
+
});
|
|
236
|
+
if (res.success) {
|
|
237
|
+
//wait for it to be committed - get it from DB
|
|
238
|
+
const docId = yield conn.sobject('ContentVersion').retrieve(res.id); // await conn?.query(`SELECT contentdocumentid FROM ContentVersion where id = '${res.id}'`);
|
|
239
|
+
//use it to make the link
|
|
240
|
+
const linkRes = yield conn.sobject('ContentDocumentLink').create({
|
|
241
|
+
ContentDocumentId: docId.ContentDocumentId,
|
|
242
|
+
LinkedEntityId: itemId,
|
|
243
|
+
ShareType: 'V', // 'V' for Viewer, 'C' for Collaborator, 'I' for Inferred
|
|
244
|
+
Visibility: 'AllUsers'
|
|
245
|
+
});
|
|
246
|
+
return linkRes.success;
|
|
247
|
+
}
|
|
248
|
+
return false;
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/sf/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Connection } from "@jsforce/jsforce-node";
|
|
2
|
+
import { isf_cfg, isf_user_token } from "./types";
|
|
3
|
+
export declare function sf_conn_app(cfg: isf_cfg, instanceUrl: string): Promise<Connection<import("@jsforce/jsforce-node").Schema>>;
|
|
4
|
+
export declare function sf_conn_user(cfg: isf_cfg, userToken: isf_user_token): Promise<Connection<import("@jsforce/jsforce-node").Schema>>;
|
|
5
|
+
/** your redirect page will get an authorization code. call sf_oauth2_authorize to exchange for an access token.
|
|
6
|
+
* look for query params: code, error, error_description, state
|
|
7
|
+
*/
|
|
8
|
+
export declare function sf_signin_redirect(cfg: isf_cfg, state: string, sandbox?: boolean): Promise<string>;
|
|
9
|
+
/** complete the user sign in flow, use the code to get an access token */
|
|
10
|
+
export declare function sf_oauth2_authorize(cfg: isf_cfg, authorizationCode: string, sandbox?: boolean): Promise<isf_user_token>;
|
|
@@ -0,0 +1,108 @@
|
|
|
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.sf_conn_app = sf_conn_app;
|
|
13
|
+
exports.sf_conn_user = sf_conn_user;
|
|
14
|
+
exports.sf_signin_redirect = sf_signin_redirect;
|
|
15
|
+
exports.sf_oauth2_authorize = sf_oauth2_authorize;
|
|
16
|
+
const jsforce_node_1 = require("@jsforce/jsforce-node");
|
|
17
|
+
const common_1 = require("@kwiz/common");
|
|
18
|
+
const actions_1 = require("./actions");
|
|
19
|
+
const types_1 = require("./types");
|
|
20
|
+
const useInstanceForLogin = true; //this is the preferred method
|
|
21
|
+
function getOauth2Config(cfg, instanceUrl) {
|
|
22
|
+
const loginUrl = useInstanceForLogin
|
|
23
|
+
? instanceUrl
|
|
24
|
+
: instanceUrl.includes('.sandbox.my.salesforce.com') ? types_1.sf_instances.sandbox : types_1.sf_instances.default;
|
|
25
|
+
return {
|
|
26
|
+
clientId: cfg.clientId,
|
|
27
|
+
clientSecret: cfg.clientSecret,
|
|
28
|
+
redirectUri: cfg.redirectUri,
|
|
29
|
+
loginUrl: loginUrl
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function hasTokenError(t) {
|
|
33
|
+
return (0, common_1.isNotEmptyString)(t.error);
|
|
34
|
+
}
|
|
35
|
+
function sf_conn_app(cfg, instanceUrl) {
|
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
try {
|
|
38
|
+
const oauth2Config = getOauth2Config(cfg, instanceUrl);
|
|
39
|
+
//get app only token
|
|
40
|
+
const buffer = Buffer.from(`${oauth2Config.clientId}:${oauth2Config.clientSecret}`, 'utf8');
|
|
41
|
+
const base64EncodedString = buffer.toString('base64');
|
|
42
|
+
const token = yield fetch(`${instanceUrl}/services/oauth2/token`, {
|
|
43
|
+
method: "POST",
|
|
44
|
+
headers: {
|
|
45
|
+
Authorization: `Basic ${base64EncodedString}`,
|
|
46
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
47
|
+
},
|
|
48
|
+
body: `grant_type=client_credentials`
|
|
49
|
+
});
|
|
50
|
+
//get the token response
|
|
51
|
+
const token_json = (yield token.json());
|
|
52
|
+
if (hasTokenError(token_json)) {
|
|
53
|
+
throw token_json;
|
|
54
|
+
}
|
|
55
|
+
//configure the connection
|
|
56
|
+
const conn = new jsforce_node_1.Connection({
|
|
57
|
+
instanceUrl: token_json.instance_url,
|
|
58
|
+
accessToken: token_json.access_token
|
|
59
|
+
});
|
|
60
|
+
return conn;
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
console.error(e);
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function sf_conn_user(cfg, userToken) {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
if (cfg && userToken) {
|
|
71
|
+
const conn = new jsforce_node_1.default.Connection({
|
|
72
|
+
oauth2: getOauth2Config(cfg, userToken.instanceUrl),
|
|
73
|
+
instanceUrl: userToken.instanceUrl,
|
|
74
|
+
accessToken: userToken.accessToken,
|
|
75
|
+
});
|
|
76
|
+
return conn;
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/** your redirect page will get an authorization code. call sf_oauth2_authorize to exchange for an access token.
|
|
82
|
+
* look for query params: code, error, error_description, state
|
|
83
|
+
*/
|
|
84
|
+
function sf_signin_redirect(cfg, state, sandbox) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
const redirectUrl = new jsforce_node_1.default.OAuth2(getOauth2Config(cfg, sandbox ? types_1.sf_instances.sandbox : types_1.sf_instances.default)).getAuthorizationUrl({
|
|
87
|
+
//which page the user came from
|
|
88
|
+
state: (0, common_1.jsonStringify)(state)
|
|
89
|
+
});
|
|
90
|
+
return redirectUrl;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/** complete the user sign in flow, use the code to get an access token */
|
|
94
|
+
function sf_oauth2_authorize(cfg, authorizationCode, sandbox) {
|
|
95
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
const conn = new jsforce_node_1.default.Connection({
|
|
97
|
+
oauth2: getOauth2Config(cfg, sandbox ? types_1.sf_instances.sandbox : types_1.sf_instances.default)
|
|
98
|
+
});
|
|
99
|
+
yield conn.authorize(authorizationCode);
|
|
100
|
+
const userName = yield (0, actions_1.sfGetUserName)(conn);
|
|
101
|
+
return ({
|
|
102
|
+
accessToken: conn.accessToken,
|
|
103
|
+
instanceUrl: conn.instanceUrl,
|
|
104
|
+
userName
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=connections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../../src/sf/connections.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const sf_custom_field_name_suffix = "__c";
|
|
2
|
+
export declare const sf_metadata_field_type_info: {
|
|
3
|
+
Text: string;
|
|
4
|
+
Checkbox: string;
|
|
5
|
+
Currency: string;
|
|
6
|
+
Date: string;
|
|
7
|
+
DateTime: string;
|
|
8
|
+
Email: string;
|
|
9
|
+
Number: string;
|
|
10
|
+
Phone: string;
|
|
11
|
+
Picklist: string;
|
|
12
|
+
MultiselectPicklist: string;
|
|
13
|
+
TextArea: string;
|
|
14
|
+
Url: string;
|
|
15
|
+
Percent: string;
|
|
16
|
+
Html: string;
|
|
17
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sf_metadata_field_type_info = exports.sf_custom_field_name_suffix = void 0;
|
|
4
|
+
exports.sf_custom_field_name_suffix = '__c';
|
|
5
|
+
exports.sf_metadata_field_type_info = {
|
|
6
|
+
Text: 'Text',
|
|
7
|
+
Checkbox: 'Checkbox',
|
|
8
|
+
Currency: 'Currency',
|
|
9
|
+
Date: 'Date',
|
|
10
|
+
DateTime: 'DateTime',
|
|
11
|
+
Email: 'Email',
|
|
12
|
+
Number: 'Number',
|
|
13
|
+
Phone: 'Phone',
|
|
14
|
+
Picklist: 'Picklist',
|
|
15
|
+
MultiselectPicklist: 'MultiselectPicklist',
|
|
16
|
+
TextArea: 'TextArea',
|
|
17
|
+
Url: 'Url',
|
|
18
|
+
Percent: 'Percent',
|
|
19
|
+
Html: 'Html'
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/sf/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,2BAA2B,GAAG,KAAK,CAAC;AAEpC,QAAA,2BAA2B,GAAG;IACvC,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,mBAAmB,EAAE,qBAAqB;IAC1C,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;CACf,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
__exportStar(require("./actions"), exports);
|
|
18
|
+
__exportStar(require("./connections"), exports);
|
|
19
|
+
__exportStar(require("./constants"), exports);
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
21
|
+
//# sourceMappingURL=exports-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports-index.js","sourceRoot":"","sources":["../../src/sf/exports-index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,gDAA8B;AAC9B,8CAA4B;AAC5B,0CAAwB"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { Connection, Field, Schema } from "@jsforce/jsforce-node";
|
|
2
|
+
import { ValueSet } from "@jsforce/jsforce-node/lib/api/metadata";
|
|
3
|
+
import { DescribeGlobalSObjectResult } from "@jsforce/jsforce-node/lib/api/soap/schema";
|
|
4
|
+
import { sf_metadata_field_type_info } from "./constants";
|
|
5
|
+
export declare const sf_unknown_user = "Unknown User";
|
|
6
|
+
export declare const sf_throttle = 10;
|
|
7
|
+
export declare const sf_instances: {
|
|
8
|
+
default: string;
|
|
9
|
+
sandbox: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const sf_builtin_profiles: string[];
|
|
12
|
+
export declare const sf_known_entities: {
|
|
13
|
+
Lead: {
|
|
14
|
+
Label: string;
|
|
15
|
+
};
|
|
16
|
+
Account: {
|
|
17
|
+
Label: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export declare const sf_known_entities_arr: ({
|
|
21
|
+
Label: string;
|
|
22
|
+
key: string;
|
|
23
|
+
} | {
|
|
24
|
+
Label: string;
|
|
25
|
+
key: string;
|
|
26
|
+
})[];
|
|
27
|
+
export type sf_known_entities_type = keyof typeof sf_known_entities;
|
|
28
|
+
export type sf_field_value_types = string | boolean | number | Date;
|
|
29
|
+
export interface isf_cfg {
|
|
30
|
+
clientId: string;
|
|
31
|
+
clientSecret: string;
|
|
32
|
+
redirectUri: string;
|
|
33
|
+
}
|
|
34
|
+
export interface isf_user_token {
|
|
35
|
+
instanceUrl: string;
|
|
36
|
+
accessToken: string;
|
|
37
|
+
userName: string;
|
|
38
|
+
}
|
|
39
|
+
export type sf_conn = Connection<Schema>;
|
|
40
|
+
export interface iSFContext {
|
|
41
|
+
/** instance url */
|
|
42
|
+
instanceUrl: string;
|
|
43
|
+
}
|
|
44
|
+
export interface iSFEntityContext extends iSFContext {
|
|
45
|
+
/** entity name */
|
|
46
|
+
entity: string;
|
|
47
|
+
}
|
|
48
|
+
export declare function isSFContext(ctx: any): ctx is iSFContext;
|
|
49
|
+
export declare function isSFEntityContext(ctx: any): ctx is iSFEntityContext;
|
|
50
|
+
export interface iSFEntity extends DescribeGlobalSObjectResult {
|
|
51
|
+
}
|
|
52
|
+
export interface iSFOrgInfo {
|
|
53
|
+
instanceUrl: string;
|
|
54
|
+
orgId: string;
|
|
55
|
+
orgName: string;
|
|
56
|
+
}
|
|
57
|
+
export interface iPicklistValue {
|
|
58
|
+
active: boolean;
|
|
59
|
+
defaultValue: boolean;
|
|
60
|
+
label: string;
|
|
61
|
+
/** https://salesforce.stackexchange.com/questions/201775/picklists-validfor-attribute */
|
|
62
|
+
validFor: string;
|
|
63
|
+
value: string;
|
|
64
|
+
}
|
|
65
|
+
export declare const sf_field_ex_type_info: {
|
|
66
|
+
textarea: string;
|
|
67
|
+
string: string;
|
|
68
|
+
picklist: string;
|
|
69
|
+
multipicklist: string;
|
|
70
|
+
email: string;
|
|
71
|
+
phone: string;
|
|
72
|
+
url: string;
|
|
73
|
+
int: string;
|
|
74
|
+
double: string;
|
|
75
|
+
currency: string;
|
|
76
|
+
boolean: string;
|
|
77
|
+
date: string;
|
|
78
|
+
datetime: string;
|
|
79
|
+
percent: string;
|
|
80
|
+
};
|
|
81
|
+
export type sf_field_ex_types = keyof typeof sf_field_ex_type_info;
|
|
82
|
+
export type sf_field_ex = (Omit<Field, "picklistValues" | "type"> & {
|
|
83
|
+
picklistValues?: iPicklistValue[];
|
|
84
|
+
type: sf_field_ex_types;
|
|
85
|
+
extraTypeInfo?: "personname" | "imageurl" | "plaintextarea" | "richtextarea";
|
|
86
|
+
});
|
|
87
|
+
export interface iSFDesignerProps {
|
|
88
|
+
ctx: iSFContext;
|
|
89
|
+
container: HTMLDivElement;
|
|
90
|
+
onRendered?: () => void;
|
|
91
|
+
}
|
|
92
|
+
export interface iSFBaseEntity<type = string> {
|
|
93
|
+
attributes: {
|
|
94
|
+
type: type;
|
|
95
|
+
url: string;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export type sf_metadata_field_types = keyof typeof sf_metadata_field_type_info;
|
|
99
|
+
export interface sf_metadata_field_base {
|
|
100
|
+
/**`${entity}.${name}` */
|
|
101
|
+
fullName: string;
|
|
102
|
+
label: string;
|
|
103
|
+
required: boolean;
|
|
104
|
+
description?: string;
|
|
105
|
+
inlineHelpText?: string;
|
|
106
|
+
}
|
|
107
|
+
export interface sf_metadata_field_text extends sf_metadata_field_base {
|
|
108
|
+
type: "Text";
|
|
109
|
+
/** 128 */
|
|
110
|
+
length: number;
|
|
111
|
+
}
|
|
112
|
+
export interface sf_metadata_field_textarea extends sf_metadata_field_base {
|
|
113
|
+
type: "TextArea";
|
|
114
|
+
}
|
|
115
|
+
export interface sf_metadata_field_html extends sf_metadata_field_base {
|
|
116
|
+
type: "Html";
|
|
117
|
+
/** 512 */
|
|
118
|
+
length: number;
|
|
119
|
+
/** 10 */
|
|
120
|
+
visibleLines: number;
|
|
121
|
+
}
|
|
122
|
+
export interface sf_metadata_field_numeric extends sf_metadata_field_base {
|
|
123
|
+
type: "Number" | "Currency" | "Percent";
|
|
124
|
+
precision: number;
|
|
125
|
+
scale: number;
|
|
126
|
+
}
|
|
127
|
+
export interface sf_metadata_field_checkbox extends sf_metadata_field_base {
|
|
128
|
+
type: "Checkbox";
|
|
129
|
+
defaultValue: boolean;
|
|
130
|
+
}
|
|
131
|
+
export interface sf_metadata_field_list extends sf_metadata_field_base {
|
|
132
|
+
type: "Picklist";
|
|
133
|
+
valueSet: Omit<ValueSet, "valueSettings"> & Required<Pick<ValueSet, 'valueSetDefinition'>>;
|
|
134
|
+
}
|
|
135
|
+
export interface sf_metadata_field_multiList extends sf_metadata_field_base {
|
|
136
|
+
type: "MultiselectPicklist";
|
|
137
|
+
valueSet: Omit<ValueSet, "valueSettings"> & Required<Pick<ValueSet, 'valueSetDefinition'>>;
|
|
138
|
+
/** 10 */
|
|
139
|
+
visibleLines: number;
|
|
140
|
+
}
|
|
141
|
+
type basicFieldTypes = Exclude<sf_metadata_field_types, "Text" | "TextArea" | "Html" | "Number" | "Currency" | "Percent" | "Checkbox" | "Picklist" | "MultiselectPicklist">;
|
|
142
|
+
export interface sf_metadata_field_basic extends sf_metadata_field_base {
|
|
143
|
+
type: basicFieldTypes;
|
|
144
|
+
}
|
|
145
|
+
export type sf_metadata_field_type = sf_metadata_field_text | sf_metadata_field_textarea | sf_metadata_field_html | sf_metadata_field_checkbox | sf_metadata_field_list | sf_metadata_field_multiList | sf_metadata_field_basic | sf_metadata_field_numeric;
|
|
146
|
+
export {};
|