@haiiro/docuflow 0.0.10 → 0.0.12
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 +15 -9
- package/bin/install.mjs +32 -10
- package/manifest.json +27 -12
- package/package.json +1 -1
- package/src/front-components/docflow-documents.front-component.mjs +42 -42
- package/src/front-components/docflow-documents.front-component.tsx +336 -128
- package/src/front-components/docflow-processes.front-component.mjs +35 -35
- package/src/front-components/docflow-processes.front-component.tsx +511 -131
- package/src/front-components/docflow-tasks.front-component.mjs +46 -41
- package/src/front-components/docflow-tasks.front-component.tsx +489 -132
- package/src/front-components/process-steps.front-component.mjs +21 -21
- package/src/front-components/process-steps.front-component.tsx +1 -1
- package/src/front-components/task-form.front-component.mjs +46 -41
- package/src/logic-functions/bitrix-app.logic-function.mjs +295 -142
- package/src/logic-functions/bitrix-app.logic-function.ts +43 -34
- package/src/logic-functions/capture-file.logic-function.mjs +2 -1
- package/src/logic-functions/hand-out-form-step.logic-function.mjs +2 -1
- package/src/logic-functions/on-workflow-run-updated.logic-function.mjs +2 -1
- package/src/logic-functions/publish-process.logic-function.mjs +119519 -0
- package/src/logic-functions/publish-process.logic-function.ts +91 -0
- package/src/logic-functions/save-launch-fields.logic-function.mjs +2 -1
|
@@ -1700,9 +1700,14 @@ var readRestList = (response) => {
|
|
|
1700
1700
|
const value = readDataValue(response);
|
|
1701
1701
|
return {
|
|
1702
1702
|
records: Array.isArray(value) ? value : [],
|
|
1703
|
-
pageInfo: response?.pageInfo ?? {}
|
|
1703
|
+
pageInfo: response?.pageInfo ?? {},
|
|
1704
|
+
totalCount: response?.totalCount
|
|
1704
1705
|
};
|
|
1705
1706
|
};
|
|
1707
|
+
var readRestRecord = (response) => {
|
|
1708
|
+
const value = readDataValue(response);
|
|
1709
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
|
|
1710
|
+
};
|
|
1706
1711
|
|
|
1707
1712
|
// src/shared/bitrix/bitrix.util.ts
|
|
1708
1713
|
var BITRIX_OAUTH_TOKEN_URL = "https://oauth.bitrix.info/oauth/token/";
|
|
@@ -1845,95 +1850,45 @@ var DOCFLOW_LAUNCH_PARAMETERS_KEY = "smbDocflowParameters";
|
|
|
1845
1850
|
var LAUNCH_PARAMETERS_STEP_INPUT = `{{trigger.${DOCFLOW_LAUNCH_PARAMETERS_KEY}}}`;
|
|
1846
1851
|
var TASK_DONE_STATUS = "DONE";
|
|
1847
1852
|
|
|
1848
|
-
//
|
|
1849
|
-
|
|
1850
|
-
var n = (n4) => !(0, import_guards.isUndefined)(n4) && !(0, import_guards.isNull)(n4);
|
|
1851
|
-
|
|
1852
|
-
// node_modules/twenty-sdk/dist/logic-function/index.mjs
|
|
1853
|
-
var import_guards2 = __toESM(require_build(), 1);
|
|
1854
|
-
|
|
1855
|
-
// node_modules/uuid/dist-node/stringify.js
|
|
1856
|
-
var byteToHex = [];
|
|
1857
|
-
for (let i5 = 0; i5 < 256; ++i5) {
|
|
1858
|
-
byteToHex.push((i5 + 256).toString(16).slice(1));
|
|
1859
|
-
}
|
|
1860
|
-
function unsafeStringify(arr, offset = 0) {
|
|
1861
|
-
return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
|
|
1862
|
-
}
|
|
1863
|
-
|
|
1864
|
-
// node_modules/uuid/dist-node/rng.js
|
|
1865
|
-
import { randomFillSync } from "node:crypto";
|
|
1866
|
-
var rnds8Pool = new Uint8Array(256);
|
|
1867
|
-
var poolPtr = rnds8Pool.length;
|
|
1868
|
-
function rng() {
|
|
1869
|
-
if (poolPtr > rnds8Pool.length - 16) {
|
|
1870
|
-
randomFillSync(rnds8Pool);
|
|
1871
|
-
poolPtr = 0;
|
|
1872
|
-
}
|
|
1873
|
-
return rnds8Pool.slice(poolPtr, poolPtr += 16);
|
|
1874
|
-
}
|
|
1875
|
-
|
|
1876
|
-
// node_modules/uuid/dist-node/native.js
|
|
1877
|
-
import { randomUUID } from "node:crypto";
|
|
1878
|
-
var native_default = { randomUUID };
|
|
1879
|
-
|
|
1880
|
-
// node_modules/uuid/dist-node/v4.js
|
|
1881
|
-
function _v4(options, buf, offset) {
|
|
1882
|
-
options = options || {};
|
|
1883
|
-
const rnds = options.random ?? options.rng?.() ?? rng();
|
|
1884
|
-
if (rnds.length < 16) {
|
|
1885
|
-
throw new Error("Random bytes length must be >= 16");
|
|
1886
|
-
}
|
|
1887
|
-
rnds[6] = rnds[6] & 15 | 64;
|
|
1888
|
-
rnds[8] = rnds[8] & 63 | 128;
|
|
1889
|
-
if (buf) {
|
|
1890
|
-
offset = offset || 0;
|
|
1891
|
-
if (offset < 0 || offset + 16 > buf.length) {
|
|
1892
|
-
throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
|
|
1893
|
-
}
|
|
1894
|
-
for (let i5 = 0; i5 < 16; ++i5) {
|
|
1895
|
-
buf[offset + i5] = rnds[i5];
|
|
1896
|
-
}
|
|
1897
|
-
return buf;
|
|
1898
|
-
}
|
|
1899
|
-
return unsafeStringify(rnds);
|
|
1900
|
-
}
|
|
1901
|
-
function v4(options, buf, offset) {
|
|
1902
|
-
if (native_default.randomUUID && !buf && !options) {
|
|
1903
|
-
return native_default.randomUUID();
|
|
1904
|
-
}
|
|
1905
|
-
return _v4(options, buf, offset);
|
|
1906
|
-
}
|
|
1907
|
-
var v4_default = v4;
|
|
1853
|
+
// src/server/bitrix-member.ts
|
|
1854
|
+
import { randomBytes } from "node:crypto";
|
|
1908
1855
|
|
|
1909
|
-
//
|
|
1910
|
-
var
|
|
1911
|
-
|
|
1856
|
+
// src/shared/bitrix/bitrix-user.util.ts
|
|
1857
|
+
var readText = (value) => typeof value === "string" ? value.trim() : "";
|
|
1858
|
+
var readBitrixUserEmail = (user) => {
|
|
1859
|
+
const email = readText(user.EMAIL);
|
|
1860
|
+
return email.length > 0 ? email.toLowerCase() : void 0;
|
|
1861
|
+
};
|
|
1862
|
+
var readBitrixUserName = (user) => {
|
|
1863
|
+
const firstName = readText(user.NAME);
|
|
1864
|
+
const lastName = [readText(user.LAST_NAME), readText(user.SECOND_NAME)].filter((part) => part.length > 0).join(" ");
|
|
1865
|
+
return { firstName, lastName };
|
|
1866
|
+
};
|
|
1912
1867
|
|
|
1913
1868
|
// node_modules/twenty-client-sdk/dist/chunk-Dqa2HsxW.mjs
|
|
1914
|
-
var
|
|
1915
|
-
var
|
|
1916
|
-
var
|
|
1869
|
+
var e = Object.create;
|
|
1870
|
+
var t = Object.defineProperty;
|
|
1871
|
+
var n = Object.getOwnPropertyDescriptor;
|
|
1917
1872
|
var r = Object.getOwnPropertyNames;
|
|
1918
1873
|
var i = Object.getPrototypeOf;
|
|
1919
1874
|
var a = Object.prototype.hasOwnProperty;
|
|
1920
1875
|
var o = (e3, t4) => () => (t4 || (e3((t4 = { exports: {} }).exports, t4), e3 = null), t4.exports);
|
|
1921
1876
|
var s = (e3, n4) => {
|
|
1922
1877
|
let r4 = {};
|
|
1923
|
-
for (var i5 in e3)
|
|
1878
|
+
for (var i5 in e3) t(r4, i5, {
|
|
1924
1879
|
get: e3[i5],
|
|
1925
1880
|
enumerable: true
|
|
1926
1881
|
});
|
|
1927
|
-
return n4 ||
|
|
1882
|
+
return n4 || t(r4, Symbol.toStringTag, { value: "Module" }), r4;
|
|
1928
1883
|
};
|
|
1929
1884
|
var c = (e3, i5, o5, s5) => {
|
|
1930
|
-
if (i5 && typeof i5 == "object" || typeof i5 == "function") for (var c4 = r(i5), l5 = 0, u4 = c4.length, d2; l5 < u4; l5++) d2 = c4[l5], !a.call(e3, d2) && d2 !== o5 &&
|
|
1885
|
+
if (i5 && typeof i5 == "object" || typeof i5 == "function") for (var c4 = r(i5), l5 = 0, u4 = c4.length, d2; l5 < u4; l5++) d2 = c4[l5], !a.call(e3, d2) && d2 !== o5 && t(e3, d2, {
|
|
1931
1886
|
get: ((e4) => i5[e4]).bind(null, d2),
|
|
1932
|
-
enumerable: !(s5 =
|
|
1887
|
+
enumerable: !(s5 = n(i5, d2)) || s5.enumerable
|
|
1933
1888
|
});
|
|
1934
1889
|
return e3;
|
|
1935
1890
|
};
|
|
1936
|
-
var l = (n4, r4, a5) => (a5 = n4 == null ? {} :
|
|
1891
|
+
var l = (n4, r4, a5) => (a5 = n4 == null ? {} : e(i(n4)), c(r4 || !n4 || !n4.__esModule ? t(a5, "default", {
|
|
1937
1892
|
value: n4,
|
|
1938
1893
|
enumerable: true
|
|
1939
1894
|
}) : a5, n4));
|
|
@@ -61274,7 +61229,197 @@ var u2 = class {
|
|
|
61274
61229
|
}
|
|
61275
61230
|
};
|
|
61276
61231
|
|
|
61232
|
+
// src/server/records.ts
|
|
61233
|
+
var clients = {
|
|
61234
|
+
person: new u2(),
|
|
61235
|
+
application: new u2({ runAs: "application" })
|
|
61236
|
+
};
|
|
61237
|
+
var restClient = (runAs) => clients[runAs];
|
|
61238
|
+
|
|
61239
|
+
// src/server/bitrix-member.ts
|
|
61240
|
+
var callMetadataGraphql = async ({
|
|
61241
|
+
query,
|
|
61242
|
+
variables,
|
|
61243
|
+
token
|
|
61244
|
+
}) => {
|
|
61245
|
+
const apiUrl = process.env.TWENTY_API_URL?.replace(/\/$/, "");
|
|
61246
|
+
if (apiUrl === void 0 || apiUrl.length === 0) {
|
|
61247
|
+
throw new Error("TWENTY_API_URL is not set");
|
|
61248
|
+
}
|
|
61249
|
+
const headers = {
|
|
61250
|
+
"content-type": "application/json"
|
|
61251
|
+
};
|
|
61252
|
+
if (token !== void 0 && token.length > 0) {
|
|
61253
|
+
headers.authorization = `Bearer ${token}`;
|
|
61254
|
+
}
|
|
61255
|
+
const response = await fetch(`${apiUrl}/metadata`, {
|
|
61256
|
+
method: "POST",
|
|
61257
|
+
headers,
|
|
61258
|
+
body: JSON.stringify({ query, variables })
|
|
61259
|
+
});
|
|
61260
|
+
const body = await response.json().catch(() => null);
|
|
61261
|
+
const [firstError] = body?.errors ?? [];
|
|
61262
|
+
if (firstError !== void 0 || body?.data === void 0) {
|
|
61263
|
+
throw new Error(firstError?.message ?? `Metadata request failed with ${response.status}`);
|
|
61264
|
+
}
|
|
61265
|
+
return body.data;
|
|
61266
|
+
};
|
|
61267
|
+
var findMemberByEmail = async (email) => readRestList(
|
|
61268
|
+
await restClient("application").get("/rest/workspaceMembers", {
|
|
61269
|
+
query: { filter: restEq("userEmail", email), limit: 1 }
|
|
61270
|
+
})
|
|
61271
|
+
).records[0];
|
|
61272
|
+
var loadWorkspaceInvite = async () => {
|
|
61273
|
+
const token = process.env.TWENTY_APP_APPLICATION_ACCESS_TOKEN ?? process.env.TWENTY_APP_ACCESS_TOKEN;
|
|
61274
|
+
const data = await callMetadataGraphql({
|
|
61275
|
+
query: `query {
|
|
61276
|
+
currentWorkspace { id inviteHash isPublicInviteLinkEnabled }
|
|
61277
|
+
}`,
|
|
61278
|
+
token
|
|
61279
|
+
});
|
|
61280
|
+
const inviteHash = data.currentWorkspace.inviteHash?.trim() ?? "";
|
|
61281
|
+
if (inviteHash.length === 0) {
|
|
61282
|
+
throw new Error("\u0423 \u043A\u043E\u043C\u043F\u0430\u043D\u0438\u0438 \u0432 CRM \u043D\u0435\u0442 \u0441\u0441\u044B\u043B\u043A\u0438-\u043F\u0440\u0438\u0433\u043B\u0430\u0448\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u043D\u043E\u0432\u044B\u0445 \u0441\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\u043E\u0432");
|
|
61283
|
+
}
|
|
61284
|
+
if (data.currentWorkspace.isPublicInviteLinkEnabled === false) {
|
|
61285
|
+
throw new Error(
|
|
61286
|
+
"\u0412 CRM \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u0430 \u043F\u0443\u0431\u043B\u0438\u0447\u043D\u0430\u044F \u0441\u0441\u044B\u043B\u043A\u0430-\u043F\u0440\u0438\u0433\u043B\u0430\u0448\u0435\u043D\u0438\u0435. \u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435 \u0435\u0451 \u0432 \xAB\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u2192 \u0423\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u0438\xBB, \u0447\u0442\u043E\u0431\u044B \u0441\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\u0438 \u0438\u0437 \u0411\u0438\u0442\u0440\u0438\u043A\u044124 \u043F\u043E\u044F\u0432\u043B\u044F\u043B\u0438\u0441\u044C \u0441\u0430\u043C\u0438."
|
|
61287
|
+
);
|
|
61288
|
+
}
|
|
61289
|
+
return {
|
|
61290
|
+
id: data.currentWorkspace.id,
|
|
61291
|
+
inviteHash,
|
|
61292
|
+
isPublicInviteLinkEnabled: true
|
|
61293
|
+
};
|
|
61294
|
+
};
|
|
61295
|
+
var signUpMember = async (email, workspace) => {
|
|
61296
|
+
await callMetadataGraphql({
|
|
61297
|
+
query: `mutation SignUpInWorkspace(
|
|
61298
|
+
$email: String!
|
|
61299
|
+
$password: String!
|
|
61300
|
+
$workspaceId: UUID
|
|
61301
|
+
$workspaceInviteHash: String
|
|
61302
|
+
$locale: String
|
|
61303
|
+
) {
|
|
61304
|
+
signUpInWorkspace(
|
|
61305
|
+
email: $email
|
|
61306
|
+
password: $password
|
|
61307
|
+
workspaceId: $workspaceId
|
|
61308
|
+
workspaceInviteHash: $workspaceInviteHash
|
|
61309
|
+
locale: $locale
|
|
61310
|
+
) { workspace { id } }
|
|
61311
|
+
}`,
|
|
61312
|
+
variables: {
|
|
61313
|
+
email,
|
|
61314
|
+
password: randomBytes(24).toString("base64url"),
|
|
61315
|
+
workspaceId: workspace.id,
|
|
61316
|
+
workspaceInviteHash: workspace.inviteHash,
|
|
61317
|
+
locale: "ru-RU"
|
|
61318
|
+
}
|
|
61319
|
+
});
|
|
61320
|
+
};
|
|
61321
|
+
var nameIsEmpty = (member) => {
|
|
61322
|
+
const firstName = member.name?.firstName?.trim() ?? "";
|
|
61323
|
+
const lastName = member.name?.lastName?.trim() ?? "";
|
|
61324
|
+
return firstName.length === 0 && lastName.length === 0;
|
|
61325
|
+
};
|
|
61326
|
+
var applyBitrixName = async (member, user) => {
|
|
61327
|
+
const name = readBitrixUserName(user);
|
|
61328
|
+
if (name.firstName.length === 0 && name.lastName.length === 0) {
|
|
61329
|
+
return member;
|
|
61330
|
+
}
|
|
61331
|
+
if (!nameIsEmpty(member) && member.name?.firstName === name.firstName && member.name?.lastName === name.lastName) {
|
|
61332
|
+
return member;
|
|
61333
|
+
}
|
|
61334
|
+
if (!nameIsEmpty(member)) {
|
|
61335
|
+
return member;
|
|
61336
|
+
}
|
|
61337
|
+
return readRestRecord(
|
|
61338
|
+
await restClient("application").patch(`/rest/workspaceMembers/${member.id}`, { name })
|
|
61339
|
+
) ?? { ...member, name };
|
|
61340
|
+
};
|
|
61341
|
+
var findOrCreateWorkspaceMemberFromBitrix = async (user) => {
|
|
61342
|
+
const email = readBitrixUserEmail(user);
|
|
61343
|
+
if (email === void 0) {
|
|
61344
|
+
return void 0;
|
|
61345
|
+
}
|
|
61346
|
+
const existing = await findMemberByEmail(email);
|
|
61347
|
+
if (existing !== void 0) {
|
|
61348
|
+
return applyBitrixName(existing, user);
|
|
61349
|
+
}
|
|
61350
|
+
const workspace = await loadWorkspaceInvite();
|
|
61351
|
+
await signUpMember(email, workspace);
|
|
61352
|
+
const created = await findMemberByEmail(email);
|
|
61353
|
+
if (created === void 0) {
|
|
61354
|
+
throw new Error("\u0421\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A \u0441\u043E\u0437\u0434\u0430\u043D \u0432 CRM, \u043D\u043E \u0437\u0430\u043F\u0438\u0441\u044C \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430 \u043F\u043E \u043F\u043E\u0447\u0442\u0435");
|
|
61355
|
+
}
|
|
61356
|
+
return applyBitrixName(created, user);
|
|
61357
|
+
};
|
|
61358
|
+
|
|
61359
|
+
// node_modules/twenty-sdk/dist/logic-function/isDefined-Dtu5EYqP-CMNeFg4z.mjs
|
|
61360
|
+
var import_guards = __toESM(require_build(), 1);
|
|
61361
|
+
var n2 = (n4) => !(0, import_guards.isUndefined)(n4) && !(0, import_guards.isNull)(n4);
|
|
61362
|
+
|
|
61363
|
+
// node_modules/twenty-sdk/dist/logic-function/index.mjs
|
|
61364
|
+
var import_guards2 = __toESM(require_build(), 1);
|
|
61365
|
+
|
|
61366
|
+
// node_modules/uuid/dist-node/stringify.js
|
|
61367
|
+
var byteToHex = [];
|
|
61368
|
+
for (let i5 = 0; i5 < 256; ++i5) {
|
|
61369
|
+
byteToHex.push((i5 + 256).toString(16).slice(1));
|
|
61370
|
+
}
|
|
61371
|
+
function unsafeStringify(arr, offset = 0) {
|
|
61372
|
+
return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
|
|
61373
|
+
}
|
|
61374
|
+
|
|
61375
|
+
// node_modules/uuid/dist-node/rng.js
|
|
61376
|
+
import { randomFillSync } from "node:crypto";
|
|
61377
|
+
var rnds8Pool = new Uint8Array(256);
|
|
61378
|
+
var poolPtr = rnds8Pool.length;
|
|
61379
|
+
function rng() {
|
|
61380
|
+
if (poolPtr > rnds8Pool.length - 16) {
|
|
61381
|
+
randomFillSync(rnds8Pool);
|
|
61382
|
+
poolPtr = 0;
|
|
61383
|
+
}
|
|
61384
|
+
return rnds8Pool.slice(poolPtr, poolPtr += 16);
|
|
61385
|
+
}
|
|
61386
|
+
|
|
61387
|
+
// node_modules/uuid/dist-node/native.js
|
|
61388
|
+
import { randomUUID } from "node:crypto";
|
|
61389
|
+
var native_default = { randomUUID };
|
|
61390
|
+
|
|
61391
|
+
// node_modules/uuid/dist-node/v4.js
|
|
61392
|
+
function _v4(options, buf, offset) {
|
|
61393
|
+
options = options || {};
|
|
61394
|
+
const rnds = options.random ?? options.rng?.() ?? rng();
|
|
61395
|
+
if (rnds.length < 16) {
|
|
61396
|
+
throw new Error("Random bytes length must be >= 16");
|
|
61397
|
+
}
|
|
61398
|
+
rnds[6] = rnds[6] & 15 | 64;
|
|
61399
|
+
rnds[8] = rnds[8] & 63 | 128;
|
|
61400
|
+
if (buf) {
|
|
61401
|
+
offset = offset || 0;
|
|
61402
|
+
if (offset < 0 || offset + 16 > buf.length) {
|
|
61403
|
+
throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
|
|
61404
|
+
}
|
|
61405
|
+
for (let i5 = 0; i5 < 16; ++i5) {
|
|
61406
|
+
buf[offset + i5] = rnds[i5];
|
|
61407
|
+
}
|
|
61408
|
+
return buf;
|
|
61409
|
+
}
|
|
61410
|
+
return unsafeStringify(rnds);
|
|
61411
|
+
}
|
|
61412
|
+
function v4(options, buf, offset) {
|
|
61413
|
+
if (native_default.randomUUID && !buf && !options) {
|
|
61414
|
+
return native_default.randomUUID();
|
|
61415
|
+
}
|
|
61416
|
+
return _v4(options, buf, offset);
|
|
61417
|
+
}
|
|
61418
|
+
var v4_default = v4;
|
|
61419
|
+
|
|
61277
61420
|
// node_modules/twenty-sdk/dist/logic-function/index.mjs
|
|
61421
|
+
var l4 = __toESM(require_react(), 1);
|
|
61422
|
+
import { MetadataApiClient as u3 } from "twenty-client-sdk/metadata";
|
|
61278
61423
|
var f2 = Object.defineProperty;
|
|
61279
61424
|
var p2 = (e3, t4) => () => (t4 || (e3((t4 = { exports: {} }).exports, t4), e3 = null), t4.exports);
|
|
61280
61425
|
var m2 = (e3, t4) => {
|
|
@@ -71982,17 +72127,17 @@ var gp2 = {
|
|
|
71982
72127
|
};
|
|
71983
72128
|
var _p = /* @__PURE__ */ new WeakSet();
|
|
71984
72129
|
var vp = /* @__PURE__ */ new WeakMap();
|
|
71985
|
-
var yp2 = (t4) =>
|
|
72130
|
+
var yp2 = (t4) => n2(t4) && !(typeof t4 == "object" && _p.has(t4));
|
|
71986
72131
|
var bp = (e3) => typeof e3 == "object" && !!e3 && !Array.isArray(e3);
|
|
71987
72132
|
var xp2 = (t4) => {
|
|
71988
|
-
if (!
|
|
72133
|
+
if (!n2(t4) || t4 === "") return true;
|
|
71989
72134
|
if (Array.isArray(t4)) return t4.length === 0;
|
|
71990
72135
|
if (!bp(t4) || t4 instanceof Date) return false;
|
|
71991
72136
|
if (_p.has(t4)) return true;
|
|
71992
72137
|
let n4 = vp.get(t4);
|
|
71993
72138
|
if (n4 === W2.RICH_TEXT) return !(0, import_guards2.isNonEmptyString)(t4.markdown) || t4.markdown.trim().length === 0;
|
|
71994
|
-
let i5 =
|
|
71995
|
-
return (
|
|
72139
|
+
let i5 = n2(n4) ? gp2[n4] : void 0;
|
|
72140
|
+
return (n2(i5) ? i5.map((e3) => t4[e3]) : Object.values(t4)).every(xp2);
|
|
71996
72141
|
};
|
|
71997
72142
|
var Sp2 = {
|
|
71998
72143
|
isDefined: {
|
|
@@ -116675,7 +116820,7 @@ var Vj2 = (t4, n4) => {
|
|
|
116675
116820
|
if (!(0, import_guards2.isString)(n4)) return;
|
|
116676
116821
|
let r4 = n4.split("."), i5 = t4;
|
|
116677
116822
|
for (let t5 of r4) {
|
|
116678
|
-
if (!
|
|
116823
|
+
if (!n2(i5) || !(0, import_guards2.isObject)(i5) || Bj2.has(t5) || !Object.prototype.hasOwnProperty.call(i5, t5)) return;
|
|
116679
116824
|
i5 = i5[t5];
|
|
116680
116825
|
}
|
|
116681
116826
|
return i5;
|
|
@@ -116683,7 +116828,7 @@ var Vj2 = (t4, n4) => {
|
|
|
116683
116828
|
var Hj2 = (e3, n4) => (r4, i5) => (0, import_guards2.isNonEmptyArray)(r4) ? r4[e3]((e4) => n4(Vj2(e4, i5))) : false;
|
|
116684
116829
|
var Uj = (e3, n4) => (r4, i5, a5) => (0, import_guards2.isNonEmptyArray)(r4) ? r4[e3]((e4) => n4(Vj2(e4, i5), a5)) : false;
|
|
116685
116830
|
var Wj2 = new ph2();
|
|
116686
|
-
Wj2.functions.isDefined = (t4) =>
|
|
116831
|
+
Wj2.functions.isDefined = (t4) => n2(t4), Wj2.functions.isNonEmptyString = (e3) => (0, import_guards2.isNonEmptyString)(e3), Wj2.functions.includes = (e3, t4) => Array.isArray(e3) && e3.includes(t4), Wj2.functions.arrayLength = (e3) => Array.isArray(e3) ? e3.length : 0, Wj2.functions.every = Hj2("every", Boolean), Wj2.functions.everyDefined = Hj2("every", n2), Wj2.functions.some = Hj2("some", Boolean), Wj2.functions.someDefined = Hj2("some", n2), Wj2.functions.someNonEmptyString = Hj2("some", import_guards2.isNonEmptyString), Wj2.functions.none = Hj2("every", (e3) => !e3), Wj2.functions.noneDefined = Hj2("every", (t4) => !n2(t4)), Wj2.functions.everyEquals = Uj("every", (e3, t4) => e3 === t4), Wj2.functions.someEquals = Uj("some", (e3, t4) => e3 === t4), Wj2.functions.noneEquals = Uj("every", (e3, t4) => e3 !== t4), Wj2.functions.includesEvery = Uj("every", (e3, t4) => Array.isArray(e3) && e3.includes(t4)), Wj2.functions.includesSome = Uj("some", (e3, t4) => Array.isArray(e3) && e3.includes(t4)), Wj2.functions.includesNone = Uj("every", (e3, t4) => Array.isArray(e3) && !e3.includes(t4));
|
|
116687
116832
|
var Kj2 = [
|
|
116688
116833
|
"yyyy.MM.dd",
|
|
116689
116834
|
"yyyy/MM/dd",
|
|
@@ -118752,7 +118897,7 @@ var jF2 = (e3) => {
|
|
|
118752
118897
|
var MF2 = /{{([^{}]+)}}/g;
|
|
118753
118898
|
function* NF2(t4) {
|
|
118754
118899
|
if ((0, import_guards2.isString)(t4)) {
|
|
118755
|
-
for (let [, n4] of t4.matchAll(MF2))
|
|
118900
|
+
for (let [, n4] of t4.matchAll(MF2)) n2(n4) && (yield n4);
|
|
118756
118901
|
return;
|
|
118757
118902
|
}
|
|
118758
118903
|
if ((0, import_guards2.isObject)(t4)) for (let e3 of Object.values(t4)) yield* NF2(e3);
|
|
@@ -118772,9 +118917,9 @@ var FF2 = (e3, t4) => {
|
|
|
118772
118917
|
return i5[e3.length][t4.length];
|
|
118773
118918
|
};
|
|
118774
118919
|
var IF2 = (t4) => {
|
|
118775
|
-
if (!
|
|
118920
|
+
if (!n2(t4) || !Kf2(t4) || Array.isArray(t4)) return false;
|
|
118776
118921
|
let n4 = Object.values(t4);
|
|
118777
|
-
return n4.length === 0 ? false : n4.every((t5) =>
|
|
118922
|
+
return n4.length === 0 ? false : n4.every((t5) => n2(t5) && Kf2(t5) && Wf2(t5.isLeaf));
|
|
118778
118923
|
};
|
|
118779
118924
|
var LF2 = (e3, t4 = []) => {
|
|
118780
118925
|
let n4 = [];
|
|
@@ -118790,21 +118935,21 @@ var RF2 = ({ schema: t4, propertyPath: n4 }) => {
|
|
|
118790
118935
|
let r4 = t4;
|
|
118791
118936
|
for (let t5 = 0; t5 < n4.length; t5++) {
|
|
118792
118937
|
let i5 = n4[t5];
|
|
118793
|
-
if (!
|
|
118938
|
+
if (!n2(i5)) return;
|
|
118794
118939
|
if (!(0, import_guards2.isObject)(r4)) return {
|
|
118795
118940
|
validPrefix: n4.slice(0, t5),
|
|
118796
118941
|
failedSegment: i5,
|
|
118797
118942
|
availableKeys: []
|
|
118798
118943
|
};
|
|
118799
118944
|
let o5 = r4[i5];
|
|
118800
|
-
if (!
|
|
118945
|
+
if (!n2(o5)) return {
|
|
118801
118946
|
validPrefix: n4.slice(0, t5),
|
|
118802
118947
|
failedSegment: i5,
|
|
118803
118948
|
availableKeys: Object.keys(r4)
|
|
118804
118949
|
};
|
|
118805
118950
|
if (o5.isLeaf) {
|
|
118806
118951
|
let r5 = n4[t5 + 1];
|
|
118807
|
-
return
|
|
118952
|
+
return n2(r5) ? {
|
|
118808
118953
|
validPrefix: n4.slice(0, t5 + 1),
|
|
118809
118954
|
failedSegment: r5,
|
|
118810
118955
|
availableKeys: []
|
|
@@ -118841,9 +118986,9 @@ var KF2 = (e3, t4) => {
|
|
|
118841
118986
|
};
|
|
118842
118987
|
var qF2 = (t4, n4) => {
|
|
118843
118988
|
let [r4, ...i5] = n4;
|
|
118844
|
-
if (!
|
|
118989
|
+
if (!n2(r4)) return zF2;
|
|
118845
118990
|
let a5 = t4[r4];
|
|
118846
|
-
return BF2(a5) ? WF2(a5, i5) :
|
|
118991
|
+
return BF2(a5) ? WF2(a5, i5) : n2(a5) ? i5.length === 0 ? { found: true } : bp(a5) ? qF2(a5, i5) : zF2 : zF2;
|
|
118847
118992
|
};
|
|
118848
118993
|
var JF2 = (e3, t4) => t4.length === 0 || !bp(e3) ? zF2 : VF2(e3) ? GF2(e3.fields, t4) : HF2(e3) ? KF2(e3, t4) : qF2(e3, t4);
|
|
118849
118994
|
var YF2 = ({ schema: e3, propertyPath: t4 }) => JF2(e3, t4);
|
|
@@ -118854,7 +118999,7 @@ var XF2 = (t4) => {
|
|
|
118854
118999
|
let e3 = i5.value;
|
|
118855
119000
|
if (VF2(e3)) for (let t5 of XF2(e3.fields)) n4.push(`${r4}.${t5}`);
|
|
118856
119001
|
else if (bp(e3)) for (let t5 of XF2(e3)) n4.push(`${r4}.${t5}`);
|
|
118857
|
-
} else if (
|
|
119002
|
+
} else if (n2(i5) && (n4.push(r4), bp(i5))) for (let e3 of XF2(i5)) n4.push(`${r4}.${e3}`);
|
|
118858
119003
|
return n4;
|
|
118859
119004
|
};
|
|
118860
119005
|
var ZF2 = (t4) => {
|
|
@@ -118866,7 +119011,7 @@ var ZF2 = (t4) => {
|
|
|
118866
119011
|
n4.push("first");
|
|
118867
119012
|
for (let e3 of ZF2(t4.first.value)) n4.push(`first.${e3}`);
|
|
118868
119013
|
}
|
|
118869
|
-
return
|
|
119014
|
+
return n2(t4.all) && n4.push("all"), n4.push("totalCount"), n4;
|
|
118870
119015
|
}
|
|
118871
119016
|
return XF2(t4);
|
|
118872
119017
|
};
|
|
@@ -118885,7 +119030,7 @@ var tI2 = ({ schema: n4, propertyPath: r4, referencedStepId: i5 }) => {
|
|
|
118885
119030
|
schema: n4,
|
|
118886
119031
|
propertyPath: r4
|
|
118887
119032
|
});
|
|
118888
|
-
if (!
|
|
119033
|
+
if (!n2(a5)) return [];
|
|
118889
119034
|
let o5 = eI2(a5.failedSegment, a5.availableKeys).map((e3) => [
|
|
118890
119035
|
i5,
|
|
118891
119036
|
...a5.validPrefix,
|
|
@@ -118901,7 +119046,7 @@ var nI2 = ({ workflow: t4, graph: n4, stepsById: r4 }) => {
|
|
|
118901
119046
|
let s5 = PF2(o5.settings?.input), c4 = n4.ancestorsByStepId.get(o5.id) ?? /* @__PURE__ */ new Set();
|
|
118902
119047
|
for (let n5 of s5) {
|
|
118903
119048
|
let s6 = jF2(n5), l5 = s6[0];
|
|
118904
|
-
if (!
|
|
119049
|
+
if (!n2(l5)) {
|
|
118905
119050
|
i5.push({
|
|
118906
119051
|
severity: "error",
|
|
118907
119052
|
code: "VARIABLE_INVALID_PATH",
|
|
@@ -118950,8 +119095,8 @@ var nI2 = ({ workflow: t4, graph: n4, stepsById: r4 }) => {
|
|
|
118950
119095
|
var rI2 = ({ step: n4, variable: r4, pathSegments: i5, referencedStepId: o5, isTriggerReference: s5, trigger: c4, stepsById: l5 }) => {
|
|
118951
119096
|
let u4 = i5.slice(1);
|
|
118952
119097
|
if (u4.length === 0) return [];
|
|
118953
|
-
let d2 = s5 ? c4?.settings?.outputSchema : l5.get(o5)?.settings?.outputSchema, f3 =
|
|
118954
|
-
if (!
|
|
119098
|
+
let d2 = s5 ? c4?.settings?.outputSchema : l5.get(o5)?.settings?.outputSchema, f3 = n2(d2) && (0, import_guards2.isObject)(d2) && !Array.isArray(d2) && Object.keys(d2).length === 0;
|
|
119099
|
+
if (!n2(d2) || f3) return [];
|
|
118955
119100
|
if (!YF2({
|
|
118956
119101
|
schema: d2,
|
|
118957
119102
|
propertyPath: u4
|
|
@@ -118967,7 +119112,7 @@ var rI2 = ({ step: n4, variable: r4, pathSegments: i5, referencedStepId: o5, isT
|
|
|
118967
119112
|
message: `Step "${n4.name ?? n4.id}" references variable "{{${r4}}}" but the path "${u4.join(".")}" was not found in the output of step "${o5}".`,
|
|
118968
119113
|
stepId: n4.id,
|
|
118969
119114
|
path: r4,
|
|
118970
|
-
...
|
|
119115
|
+
...n2(s6) ? { hint: s6 } : {},
|
|
118971
119116
|
...(0, import_guards2.isNonEmptyArray)(i6) ? { suggestions: i6 } : {},
|
|
118972
119117
|
...(0, import_guards2.isNonEmptyArray)(a5) ? { availablePaths: a5 } : {}
|
|
118973
119118
|
}];
|
|
@@ -119151,7 +119296,7 @@ sI2.extend({ input: V2({
|
|
|
119151
119296
|
fieldName: z2()
|
|
119152
119297
|
}).optional()
|
|
119153
119298
|
}).superRefine((t4, n4) => {
|
|
119154
|
-
t4.strategy === "LOAD_BALANCED" && !
|
|
119299
|
+
t4.strategy === "LOAD_BALANCED" && !n2(t4.loadBalance) && n4.addIssue({
|
|
119155
119300
|
code: Cf2.custom,
|
|
119156
119301
|
path: ["loadBalance"],
|
|
119157
119302
|
message: "loadBalance is required when strategy is LOAD_BALANCED"
|
|
@@ -119167,7 +119312,7 @@ var NI2 = (e3) => {
|
|
|
119167
119312
|
};
|
|
119168
119313
|
var PI2 = (t4) => {
|
|
119169
119314
|
let n4 = t4.settings?.input;
|
|
119170
|
-
if (
|
|
119315
|
+
if (n2(n4) && (0, import_guards2.isObject)(n4)) return n4;
|
|
119171
119316
|
};
|
|
119172
119317
|
var FI2 = (e3) => {
|
|
119173
119318
|
let t4 = new Set(e3.nextStepIds ?? []);
|
|
@@ -119176,13 +119321,13 @@ var FI2 = (e3) => {
|
|
|
119176
119321
|
return [...t4];
|
|
119177
119322
|
};
|
|
119178
119323
|
var II2 = ({ trigger: t4, steps: n4 }) => {
|
|
119179
|
-
let r4 = /* @__PURE__ */ new Map(), i5 =
|
|
119324
|
+
let r4 = /* @__PURE__ */ new Map(), i5 = n2(t4?.nextStepIds) ? t4.nextStepIds.filter(n2) : [];
|
|
119180
119325
|
r4.set(AF2, i5);
|
|
119181
119326
|
for (let e3 of n4 ?? []) r4.set(e3.id, FI2(e3));
|
|
119182
119327
|
let a5 = /* @__PURE__ */ new Set(), o5 = [AF2];
|
|
119183
119328
|
for (; o5.length > 0; ) {
|
|
119184
119329
|
let t5 = o5.shift();
|
|
119185
|
-
if (!(!
|
|
119330
|
+
if (!(!n2(t5) || a5.has(t5))) {
|
|
119186
119331
|
a5.add(t5);
|
|
119187
119332
|
for (let e3 of r4.get(t5) ?? []) a5.has(e3) || o5.push(e3);
|
|
119188
119333
|
}
|
|
@@ -119228,10 +119373,10 @@ var RI2 = ({ workflow: t4, graph: n4 }) => {
|
|
|
119228
119373
|
return;
|
|
119229
119374
|
}
|
|
119230
119375
|
let d2 = o5.get(t5), f3 = `${t5}:${c4.join(",")}`;
|
|
119231
|
-
if (!
|
|
119376
|
+
if (!n2(d2) || a5.has(f3)) return;
|
|
119232
119377
|
i5.add(t5), NI2(d2) && (d2.settings.input.initialLoopStepIds ?? []).forEach((e3) => s5(e3, [...c4, t5], t5));
|
|
119233
119378
|
let p3 = d2.type === kF2.ITERATOR ? d2.nextStepIds ?? [] : n4.childrenByStepId.get(t5) ?? [];
|
|
119234
|
-
|
|
119379
|
+
n2(u4) && p3.length === 0 && r4.push({
|
|
119235
119380
|
severity: "error",
|
|
119236
119381
|
code: "ITERATOR_MISSING_RETURN",
|
|
119237
119382
|
stepId: t5,
|
|
@@ -119248,7 +119393,7 @@ var zI2 = ({ workflow: t4, graph: n4 }) => {
|
|
|
119248
119393
|
message: `Duplicate step id "${e3.id}". Every step id must be unique within the workflow.`,
|
|
119249
119394
|
stepId: e3.id
|
|
119250
119395
|
}), o5.add(e3.id);
|
|
119251
|
-
let s5 = (t4.trigger?.nextStepIds ?? []).filter(
|
|
119396
|
+
let s5 = (t4.trigger?.nextStepIds ?? []).filter(n2);
|
|
119252
119397
|
zj2(i5) && s5.length === 0 && r4.push({
|
|
119253
119398
|
severity: "error",
|
|
119254
119399
|
code: "TRIGGER_HAS_NO_NEXT_STEP",
|
|
@@ -119286,7 +119431,7 @@ var BI = (t4) => {
|
|
|
119286
119431
|
message: `If/Else step "${t4.name ?? t4.id}" should have at least two branches (a condition branch and an else branch).`,
|
|
119287
119432
|
stepId: t4.id
|
|
119288
119433
|
});
|
|
119289
|
-
let o5 = r4?.stepFilterGroups, s5 = new Set((Array.isArray(o5) ? o5 : []).filter(
|
|
119434
|
+
let o5 = r4?.stepFilterGroups, s5 = new Set((Array.isArray(o5) ? o5 : []).filter(n2).map((e3) => e3.id));
|
|
119290
119435
|
for (let r5 of a5) {
|
|
119291
119436
|
let i6 = r5?.nextStepIds;
|
|
119292
119437
|
(!Array.isArray(i6) || i6.length === 0) && n4.push({
|
|
@@ -119294,7 +119439,7 @@ var BI = (t4) => {
|
|
|
119294
119439
|
code: "IF_ELSE_BRANCH_HAS_NO_NEXT_STEP",
|
|
119295
119440
|
message: `A branch of If/Else step "${t4.name ?? t4.id}" is not connected to any step.`,
|
|
119296
119441
|
stepId: t4.id
|
|
119297
|
-
}),
|
|
119442
|
+
}), n2(r5?.filterGroupId) && !s5.has(r5.filterGroupId) && n4.push({
|
|
119298
119443
|
severity: "error",
|
|
119299
119444
|
code: "INVALID_STEP_PARAMS",
|
|
119300
119445
|
message: `A branch of If/Else step "${t4.name ?? t4.id}" references filter group "${r5.filterGroupId}", which does not exist.`,
|
|
@@ -119383,7 +119528,7 @@ var YI2 = gd2("type", [
|
|
|
119383
119528
|
fieldUniversalIdentifier: Wl2()
|
|
119384
119529
|
}).optional()
|
|
119385
119530
|
}).superRefine((t4, n4) => {
|
|
119386
|
-
t4.strategy === "LOAD_BALANCED" && !
|
|
119531
|
+
t4.strategy === "LOAD_BALANCED" && !n2(t4.loadBalance) && n4.addIssue({
|
|
119387
119532
|
code: "custom",
|
|
119388
119533
|
path: ["loadBalance"],
|
|
119389
119534
|
message: "loadBalance is required when strategy is LOAD_BALANCED"
|
|
@@ -119614,13 +119759,6 @@ var htmlResponse = (status, html) => new AL(html, {
|
|
|
119614
119759
|
headers: { "content-type": "text/html; charset=utf-8" }
|
|
119615
119760
|
});
|
|
119616
119761
|
|
|
119617
|
-
// src/server/records.ts
|
|
119618
|
-
var clients = {
|
|
119619
|
-
person: new u2(),
|
|
119620
|
-
application: new u2({ runAs: "application" })
|
|
119621
|
-
};
|
|
119622
|
-
var restClient = (runAs) => clients[runAs];
|
|
119623
|
-
|
|
119624
119762
|
// src/universal-identifiers.ts
|
|
119625
119763
|
var BITRIX_APP_LOGIC_FUNCTION_UNIVERSAL_IDENTIFIER = "00fa5cea-d57b-4215-980a-c4bed9232a4f";
|
|
119626
119764
|
|
|
@@ -119630,33 +119768,23 @@ var getCrmUrl = () => {
|
|
|
119630
119768
|
const value = process.env.CRM_PUBLIC_URL?.trim();
|
|
119631
119769
|
return value !== void 0 && /^https?:\/\//.test(value) ? value.replace(/\/$/, "") : void 0;
|
|
119632
119770
|
};
|
|
119633
|
-
var
|
|
119634
|
-
|
|
119635
|
-
|
|
119636
|
-
|
|
119637
|
-
|
|
119638
|
-
|
|
119639
|
-
|
|
119640
|
-
|
|
119641
|
-
|
|
119642
|
-
|
|
119643
|
-
|
|
119644
|
-
|
|
119645
|
-
|
|
119646
|
-
|
|
119647
|
-
|
|
119648
|
-
|
|
119649
|
-
|
|
119650
|
-
order_by: "dueAt[AscNullsLast]",
|
|
119651
|
-
limit: TASKS_SHOWN_IN_PORTAL
|
|
119652
|
-
}
|
|
119653
|
-
})
|
|
119654
|
-
).records.map((task) => ({
|
|
119655
|
-
title: task.title?.trim() || "\u0411\u0435\u0437 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u044F",
|
|
119656
|
-
url: crmUrl !== void 0 ? `${crmUrl}/object/task/${task.id}` : void 0,
|
|
119657
|
-
dueAt: typeof task.dueAt === "string" ? new Date(task.dueAt).toLocaleDateString("ru-RU") : void 0
|
|
119658
|
-
}));
|
|
119659
|
-
};
|
|
119771
|
+
var listOpenTasksForMember = async (memberId, crmUrl) => readRestList(
|
|
119772
|
+
await restClient("application").get("/rest/tasks", {
|
|
119773
|
+
query: {
|
|
119774
|
+
filter: restAnd(
|
|
119775
|
+
restEq("smbSection", DOCFLOW_SECTION),
|
|
119776
|
+
restEq("assigneeId", memberId),
|
|
119777
|
+
restOr(restNeq("status", TASK_DONE_STATUS), restIsNull("status"))
|
|
119778
|
+
),
|
|
119779
|
+
order_by: "dueAt[AscNullsLast]",
|
|
119780
|
+
limit: TASKS_SHOWN_IN_PORTAL
|
|
119781
|
+
}
|
|
119782
|
+
})
|
|
119783
|
+
).records.map((task) => ({
|
|
119784
|
+
title: task.title?.trim() || "\u0411\u0435\u0437 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u044F",
|
|
119785
|
+
url: crmUrl !== void 0 ? `${crmUrl}/object/task/${task.id}` : void 0,
|
|
119786
|
+
dueAt: typeof task.dueAt === "string" ? new Date(task.dueAt).toLocaleDateString("ru-RU") : void 0
|
|
119787
|
+
}));
|
|
119660
119788
|
var handler = async (event) => {
|
|
119661
119789
|
const crmUrl = getCrmUrl();
|
|
119662
119790
|
if (!isBitrixConfigured()) {
|
|
@@ -119684,23 +119812,48 @@ var handler = async (event) => {
|
|
|
119684
119812
|
method: "user.current",
|
|
119685
119813
|
params: {}
|
|
119686
119814
|
});
|
|
119687
|
-
const
|
|
119815
|
+
const member = await findOrCreateWorkspaceMemberFromBitrix(user);
|
|
119816
|
+
if (member === void 0) {
|
|
119817
|
+
return htmlResponse(
|
|
119818
|
+
200,
|
|
119819
|
+
renderBitrixPage({
|
|
119820
|
+
title: "\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u043E\u0431\u043E\u0440\u043E\u0442",
|
|
119821
|
+
message: "\u0412 \u043F\u0440\u043E\u0444\u0438\u043B\u0435 \u0411\u0438\u0442\u0440\u0438\u043A\u044124 \u043D\u0435\u0442 \u043F\u043E\u0447\u0442\u044B \u2014 \u0431\u0435\u0437 \u043D\u0435\u0451 \u043D\u0435\u043B\u044C\u0437\u044F \u043D\u0430\u0439\u0442\u0438 \u0438\u043B\u0438 \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0441\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\u0430 \u0432 CRM.",
|
|
119822
|
+
crmUrl,
|
|
119823
|
+
tasks: [],
|
|
119824
|
+
isInstall: false
|
|
119825
|
+
})
|
|
119826
|
+
);
|
|
119827
|
+
}
|
|
119828
|
+
const tasks = await listOpenTasksForMember(member.id, crmUrl);
|
|
119688
119829
|
return htmlResponse(
|
|
119689
119830
|
200,
|
|
119690
119831
|
renderBitrixPage({
|
|
119691
119832
|
title: "\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u043E\u0431\u043E\u0440\u043E\u0442",
|
|
119692
|
-
message: tasks
|
|
119833
|
+
message: tasks.length === 0 ? "\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0445 \u0437\u0430\u0434\u0430\u043D\u0438\u0439 \u043D\u0435\u0442." : "\u0412\u0430\u0448\u0438 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u0437\u0430\u0434\u0430\u043D\u0438\u044F:",
|
|
119693
119834
|
crmUrl,
|
|
119694
|
-
tasks
|
|
119835
|
+
tasks,
|
|
119695
119836
|
isInstall: false
|
|
119696
119837
|
})
|
|
119697
119838
|
);
|
|
119698
119839
|
} catch (error) {
|
|
119840
|
+
if (error instanceof BitrixError) {
|
|
119841
|
+
return htmlResponse(
|
|
119842
|
+
403,
|
|
119843
|
+
renderBitrixPage({
|
|
119844
|
+
title: "\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u043E\u0431\u043E\u0440\u043E\u0442",
|
|
119845
|
+
message: `\u0417\u0430\u043F\u0440\u043E\u0441 \u043F\u043E\u0440\u0442\u0430\u043B\u0430 \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043D: ${error.message}`,
|
|
119846
|
+
crmUrl,
|
|
119847
|
+
tasks: [],
|
|
119848
|
+
isInstall: false
|
|
119849
|
+
})
|
|
119850
|
+
);
|
|
119851
|
+
}
|
|
119699
119852
|
return htmlResponse(
|
|
119700
|
-
|
|
119853
|
+
200,
|
|
119701
119854
|
renderBitrixPage({
|
|
119702
119855
|
title: "\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u043E\u0431\u043E\u0440\u043E\u0442",
|
|
119703
|
-
message: error instanceof
|
|
119856
|
+
message: error instanceof Error ? error.message : "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u043E\u0431\u043E\u0440\u043E\u0442 \u0434\u043B\u044F \u0432\u0430\u0448\u0435\u0433\u043E \u043F\u0440\u043E\u0444\u0438\u043B\u044F \u0411\u0438\u0442\u0440\u0438\u043A\u044124.",
|
|
119704
119857
|
crmUrl,
|
|
119705
119858
|
tasks: [],
|
|
119706
119859
|
isInstall: false
|