@wirecat/bitrix24-cli 0.3.0 → 0.5.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/CHANGELOG.md +130 -0
- package/README.md +84 -9
- package/dist/api-keys.d.ts +36 -9
- package/dist/api-keys.d.ts.map +1 -1
- package/dist/api-keys.js +139 -19
- package/dist/api-keys.js.map +1 -1
- package/dist/bin/b24.js +2 -2
- package/dist/bitrix/errors.js +1 -1
- package/dist/bitrix/errors.js.map +1 -1
- package/dist/bitrix/methods.d.ts.map +1 -1
- package/dist/bitrix/methods.js +7 -3
- package/dist/bitrix/methods.js.map +1 -1
- package/dist/bitrix/transport.d.ts +4 -7
- package/dist/bitrix/transport.d.ts.map +1 -1
- package/dist/bitrix/transport.js +29 -19
- package/dist/bitrix/transport.js.map +1 -1
- package/dist/body.d.ts +14 -0
- package/dist/body.d.ts.map +1 -0
- package/dist/body.js +44 -0
- package/dist/body.js.map +1 -0
- package/dist/bundle/{chunk-QIPTIUMJ.js → all-profiles-CANIDIDS.js} +12 -7
- package/dist/bundle/{anthropic-RHRAVHC2.js → anthropic-JUJB4DCF.js} +5 -5
- package/dist/bundle/{app-server-QIT6S7AZ.js → app-server-3V5Z4PTK.js} +68 -54
- package/dist/bundle/b24.js +18 -12
- package/dist/bundle/{bun-H6RSODZ3.js → bun-LKMV5TY7.js} +2 -2
- package/dist/bundle/{bun-sqlite-BO4LTQHX.js → bun-sqlite-S56EF74S.js} +3 -3
- package/dist/bundle/{chunk-D5S6QV6R.js → chunk-2I4KWS3H.js} +6 -6
- package/dist/bundle/chunk-36PO5NWY.js +147 -0
- package/dist/bundle/{chunk-ZIAQPTUS.js → chunk-42F7Q7V6.js} +3 -3
- package/dist/bundle/{chunk-6WY72XVQ.js → chunk-4D3K6GZW.js} +18 -4
- package/dist/bundle/chunk-5D4MJQ6X.js +22 -0
- package/dist/bundle/chunk-5JOPERVF.js +84 -0
- package/dist/bundle/chunk-6A4UPWDC.js +15 -0
- package/dist/bundle/{chunk-P33NDCDI.js → chunk-6MGWIZG4.js} +1 -1
- package/dist/bundle/{chunk-ZDQQCXFG.js → chunk-6YJTNZ7U.js} +13 -13
- package/dist/bundle/{chunk-MBDK4YXG.js → chunk-7FBFJ6B4.js} +4 -2
- package/dist/bundle/chunk-7VCMOTQP.js +55 -0
- package/dist/bundle/{chunk-P364PLIK.js → chunk-A5IMMGYU.js} +36 -34
- package/dist/bundle/{chunk-45AKJVKV.js → chunk-ASEHTBNK.js} +1 -1
- package/dist/bundle/{chunk-HGL63O5V.js → chunk-B6LPJYPQ.js} +2 -2
- package/dist/bundle/{chunk-LSPIOT6Z.js → chunk-BHEE2K6C.js} +7 -7
- package/dist/bundle/chunk-BYZQBE63.js +971 -0
- package/dist/bundle/{program-H3TGGRQ6.js → chunk-COKGNTDQ.js} +15761 -16685
- package/dist/bundle/{chunk-XJXONOB5.js → chunk-DVFYRQGE.js} +1 -1
- package/dist/bundle/{chunk-FLUEXJ4X.js → chunk-DVSIBZ3G.js} +1 -1
- package/dist/bundle/chunk-EJEIXC6Y.js +273 -0
- package/dist/bundle/chunk-EYTGCM44.js +130 -0
- package/dist/bundle/{chunk-IRV2PCQ2.js → chunk-EYYOKT23.js} +26 -26
- package/dist/bundle/{chunk-PH5FZX6E.js → chunk-FCWPIWSR.js} +2 -2
- package/dist/bundle/{chunk-YZ5LHE5Q.js → chunk-FSWRMQWX.js} +2 -2
- package/dist/bundle/{chunk-ADLS6FVG.js → chunk-FXBHOCJK.js} +1 -1
- package/dist/bundle/chunk-G5MW6RCM.js +723 -0
- package/dist/bundle/{chunk-VEWWAGTD.js → chunk-GLTKRLFT.js} +8 -8
- package/dist/bundle/chunk-GUUZQ7NE.js +581 -0
- package/dist/bundle/{chunk-QSNROIJL.js → chunk-H6RIPOOI.js} +42 -9
- package/dist/bundle/{chunk-H2ADPPSH.js → chunk-HGFNC4CR.js} +1819 -597
- package/dist/bundle/{chunk-7GRZAKBB.js → chunk-IERYD2N2.js} +6 -6
- package/dist/bundle/{chunk-N6FLBXZS.js → chunk-IGCLMEMB.js} +3 -3
- package/dist/bundle/{chunk-U5ACMCAQ.js → chunk-J7WCSZ2Q.js} +411 -919
- package/dist/bundle/{chunk-W5YAO5G5.js → chunk-JZYHQ4HB.js} +9 -4
- package/dist/bundle/{chunk-EVYSBZ3I.js → chunk-K4QM3X5F.js} +4 -4
- package/dist/bundle/{chunk-DTXERR44.js → chunk-KFSMY7SZ.js} +2 -2
- package/dist/bundle/{chunk-LRGYKOCP.js → chunk-KPEDH5T4.js} +1 -1
- package/dist/bundle/{chunk-XRFJWHY5.js → chunk-KUY7LII2.js} +4 -4
- package/dist/bundle/{chunk-QC53QBNC.js → chunk-LFXDHLFR.js} +3 -3
- package/dist/bundle/{chunk-CNNEA2M4.js → chunk-LGLT4JB6.js} +3 -3
- package/dist/bundle/{chunk-QGMDQ2PM.js → chunk-LM4OOBAW.js} +3 -3
- package/dist/bundle/chunk-M74BSKMA.js +234 -0
- package/dist/bundle/{chunk-2KCZ7BKW.js → chunk-MMMT6ORT.js} +11 -11
- package/dist/bundle/{chunk-WII44RXN.js → chunk-NGYD6QTE.js} +2 -2
- package/dist/bundle/{chunk-FOTREPNS.js → chunk-NO6QOPVT.js} +10 -19
- package/dist/bundle/chunk-O6XC7DZI.js +804 -0
- package/dist/bundle/chunk-OE3NFB53.js +64 -0
- package/dist/bundle/{chunk-XD4FRDSL.js → chunk-OUMFNB34.js} +13 -149
- package/dist/bundle/{chunk-ZGZT5S6B.js → chunk-P2RQTNVJ.js} +806 -850
- package/dist/bundle/{chunk-RRJNNPR4.js → chunk-PBIBGIZ7.js} +1 -1
- package/dist/bundle/{chunk-EXOOKUEA.js → chunk-Q6VQHTRW.js} +2 -2
- package/dist/bundle/{chunk-TE3FR6MI.js → chunk-QHBCNVUG.js} +5 -5
- package/dist/bundle/{chunk-SGRYYE4X.js → chunk-QNOXAQ6Y.js} +4 -4
- package/dist/bundle/{chunk-QQXH2OPB.js → chunk-R5F2O5GX.js} +15 -272
- package/dist/bundle/{chunk-SFRNX2TI.js → chunk-R5PBSKJL.js} +1 -1
- package/dist/bundle/{chunk-OTD2ZRXD.js → chunk-RS2BARUU.js} +4 -4
- package/dist/bundle/chunk-TG3DSPT5.js +14 -0
- package/dist/bundle/{chunk-BCF7P4FZ.js → chunk-U22JMKUO.js} +6 -125
- package/dist/bundle/chunk-U66Q5TVK.js +106 -0
- package/dist/bundle/{chunk-QMPN6WKD.js → chunk-UCHMQWON.js} +211 -89
- package/dist/bundle/{chunk-POC3V3AO.js → chunk-VMJS7FJZ.js} +526 -467
- package/dist/bundle/{chunk-FZL7F5NR.js → chunk-VMVAQHDC.js} +77 -615
- package/dist/bundle/{chunk-K3UIB6ZF.js → chunk-WWMCJFMT.js} +2 -2
- package/dist/bundle/{chunk-CXL33BFL.js → chunk-XTA5TN3H.js} +1 -1
- package/dist/bundle/{chunk-WTPMJYMD.js → chunk-XUHHBEA7.js} +652 -131
- package/dist/bundle/{chunk-WKRQ44EH.js → chunk-YDZHO4LT.js} +13 -13
- package/dist/bundle/{chunk-2SNUMZ7S.js → chunk-ZKINZFIT.js} +6 -6
- package/dist/bundle/{chunk-HAXNUIGQ.js → chunk-ZSQXSIFQ.js} +89 -39
- package/dist/bundle/{chunk-YYO7D2MO.js → chunk-ZZEHDIEG.js} +58 -54
- package/dist/bundle/command-contract-OQV6H7SR.js +36 -0
- package/dist/bundle/{decode-5ZPLTYV6.js → decode-QSTBX4MG.js} +3 -3
- package/dist/bundle/{echarts-J6LAPIX7.js → echarts-JZELFH2N.js} +2 -2
- package/dist/bundle/{embed-YG5LDHME.js → embed-4RIW2LVH.js} +4 -4
- package/dist/bundle/{embedder-7FNUA5OZ.js → embedder-SW7DTWSL.js} +7 -7
- package/dist/bundle/{first-run-JPZNWIJN.js → first-run-7AISOSOM.js} +8 -8
- package/dist/bundle/first-screen-NMHNFZ2B.js +34 -0
- package/dist/bundle/{instructions-AXWTQHMR.js → instructions-BZE5YUGG.js} +1 -1
- package/dist/bundle/{mcp-7F46P6AM.js → mcp-SDWHDJTY.js} +2 -2
- package/dist/bundle/{node-P4E63KXA.js → node-KM3CUABH.js} +9 -9
- package/dist/bundle/{node-CWKAIOEM.js → node-LTKZIO4U.js} +2 -2
- package/dist/bundle/{node-sqlite-LSEKVRDA.js → node-sqlite-HQ5PN2RH.js} +4 -4
- package/dist/bundle/{oauth-THYNLRLD.js → oauth-UH6FOZQL.js} +5 -5
- package/dist/bundle/{open-E47QYKFC.js → open-TSUP3XGL.js} +3 -3
- package/dist/bundle/{openai-EWSGC3BC.js → openai-GVEE52E3.js} +14 -14
- package/dist/bundle/{process-WKTEA3WE.js → process-AGXY76ZE.js} +1 -1
- package/dist/bundle/program-BI4A4HFJ.js +2247 -0
- package/dist/bundle/{prompt-CAQ7QR3U.js → prompt-NRSUY7FA.js} +3 -3
- package/dist/bundle/{recognize-6KGHNZC3.js → recognize-NPDPQ6PJ.js} +2 -2
- package/dist/bundle/{remote-3UO2WDC3.js → remote-HFASMVLB.js} +5 -5
- package/dist/bundle/{rerank-2JVDPZBX.js → rerank-TL6Z6F7K.js} +5 -5
- package/dist/bundle/{chunk-VL6SPMZV.js → serve-VB4DHDZQ.js} +8 -6
- package/dist/bundle/server-T5EDRPJI.js +68 -0
- package/dist/bundle/{chunk-ZEW4P6AH.js → server-Z6MW6C37.js} +50 -14
- package/dist/bundle/source-4IGO5J7E.js +237 -0
- package/dist/bundle/sqlite-runtime-YS4POY3W.js +17 -0
- package/dist/bundle/{state-7NH5G4XJ.js → state-ISZVVZGR.js} +4 -4
- package/dist/bundle/store-IZJBAKJV.js +58 -0
- package/dist/bundle/{store-7O4JQD2Z.js → store-L76MSQC3.js} +17 -12
- package/dist/bundle/store-PBTIB7BD.js +207 -0
- package/dist/bundle/store-maintenance-command-YFKII7TF.js +58 -0
- package/dist/bundle/writer-3O5EYMFE.js +214 -0
- package/dist/commands/api.d.ts.map +1 -1
- package/dist/commands/api.js +81 -30
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/crm-shared.d.ts +4 -0
- package/dist/commands/crm-shared.d.ts.map +1 -0
- package/dist/commands/crm-shared.js +94 -0
- package/dist/commands/crm-shared.js.map +1 -0
- package/dist/commands/crm-writes.d.ts +0 -1
- package/dist/commands/crm-writes.d.ts.map +1 -1
- package/dist/commands/crm-writes.js +43 -88
- package/dist/commands/crm-writes.js.map +1 -1
- package/dist/commands/crm.d.ts.map +1 -1
- package/dist/commands/crm.js +30 -48
- package/dist/commands/crm.js.map +1 -1
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +1 -0
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/write.d.ts +6 -6
- package/dist/commands/write.d.ts.map +1 -1
- package/dist/commands/write.js +11 -18
- package/dist/commands/write.js.map +1 -1
- package/dist/config.d.ts +0 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -8
- package/dist/config.js.map +1 -1
- package/dist/crm/capabilities.d.ts +7 -0
- package/dist/crm/capabilities.d.ts.map +1 -0
- package/dist/crm/capabilities.js +7 -0
- package/dist/crm/capabilities.js.map +1 -0
- package/dist/crm/conditions.d.ts +1 -1
- package/dist/crm/conditions.d.ts.map +1 -1
- package/dist/crm/conditions.js +4 -6
- package/dist/crm/conditions.js.map +1 -1
- package/dist/crm/custom-query.d.ts +19 -0
- package/dist/crm/custom-query.d.ts.map +1 -0
- package/dist/crm/custom-query.js +79 -0
- package/dist/crm/custom-query.js.map +1 -0
- package/dist/crm/deal.d.ts +4 -27
- package/dist/crm/deal.d.ts.map +1 -1
- package/dist/crm/deal.js +15 -48
- package/dist/crm/deal.js.map +1 -1
- package/dist/crm/fields.d.ts +20 -0
- package/dist/crm/fields.d.ts.map +1 -0
- package/dist/crm/fields.js +78 -0
- package/dist/crm/fields.js.map +1 -0
- package/dist/crm/items.d.ts +7 -1
- package/dist/crm/items.d.ts.map +1 -1
- package/dist/crm/items.js +21 -18
- package/dist/crm/items.js.map +1 -1
- package/dist/crm/lead.d.ts +5 -36
- package/dist/crm/lead.d.ts.map +1 -1
- package/dist/crm/lead.js +15 -61
- package/dist/crm/lead.js.map +1 -1
- package/dist/crm/organization.d.ts +1 -0
- package/dist/crm/organization.d.ts.map +1 -1
- package/dist/crm/person.d.ts +1 -0
- package/dist/crm/person.d.ts.map +1 -1
- package/dist/crm/pipelines.d.ts +5 -0
- package/dist/crm/pipelines.d.ts.map +1 -0
- package/dist/crm/pipelines.js +54 -0
- package/dist/crm/pipelines.js.map +1 -0
- package/dist/crm/product.d.ts.map +1 -1
- package/dist/crm/product.js +2 -2
- package/dist/crm/product.js.map +1 -1
- package/dist/crm/rest3-fields.d.ts +3 -0
- package/dist/crm/rest3-fields.d.ts.map +1 -0
- package/dist/crm/rest3-fields.js +38 -0
- package/dist/crm/rest3-fields.js.map +1 -0
- package/dist/crm/source.d.ts +15 -0
- package/dist/crm/source.d.ts.map +1 -0
- package/dist/crm/source.js +122 -0
- package/dist/crm/source.js.map +1 -0
- package/dist/crm/user.d.ts.map +1 -1
- package/dist/crm/user.js +2 -2
- package/dist/crm/user.js.map +1 -1
- package/dist/crm/values.d.ts +26 -5
- package/dist/crm/values.d.ts.map +1 -1
- package/dist/crm/values.js +40 -5
- package/dist/crm/values.js.map +1 -1
- package/dist/crm/writer.d.ts +9 -0
- package/dist/crm/writer.d.ts.map +1 -0
- package/dist/crm/writer.js +119 -0
- package/dist/crm/writer.js.map +1 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +53 -5
- package/dist/program.js.map +1 -1
- package/dist/reasons.d.ts.map +1 -1
- package/dist/reasons.js +6 -1
- package/dist/reasons.js.map +1 -1
- package/dist/store.d.ts +15 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +33 -0
- package/dist/store.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -6
- package/skills/bitrix24-cli/SKILL.md +16 -10
- package/dist/bundle/all-profiles-QJ444GSX.js +0 -24
- package/dist/bundle/chunk-XNHSPHUN.js +0 -48
- package/dist/bundle/command-contract-OKQOE6G4.js +0 -30
- package/dist/bundle/first-screen-VQM4MTS7.js +0 -28
- package/dist/bundle/mcp-5RSWNTHS.js +0 -160
- package/dist/bundle/mcp-J5R5A65I.js +0 -87
- package/dist/bundle/serve-ES7AG5IK.js +0 -19
- package/dist/bundle/server-5LE5LNUQ.js +0 -45
- package/dist/bundle/server-BU4VBM6S.js +0 -58
- package/dist/bundle/store-maintenance-command-UDVGEY2D.js +0 -47
- package/dist/commands/doctor.d.ts +0 -77
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -74
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/mcp.d.ts +0 -3
- package/dist/commands/mcp.d.ts.map +0 -1
- package/dist/commands/mcp.js +0 -97
- package/dist/commands/mcp.js.map +0 -1
- package/dist/crm/pipeline.d.ts +0 -17
- package/dist/crm/pipeline.d.ts.map +0 -1
- package/dist/crm/pipeline.js +0 -42
- package/dist/crm/pipeline.js.map +0 -1
- package/dist/crm/stage.d.ts +0 -20
- package/dist/crm/stage.d.ts.map +0 -1
- package/dist/crm/stage.js +0 -65
- package/dist/crm/stage.js.map +0 -1
- package/dist/mcp.d.ts +0 -29
- package/dist/mcp.d.ts.map +0 -1
- package/dist/mcp.js +0 -99
- package/dist/mcp.js.map +0 -1
- /package/dist/bundle/{chunk-4PDYYS5K.js → chunk-ZQ3GWKDQ.js} +0 -0
package/dist/commands/session.js
CHANGED
|
@@ -77,6 +77,7 @@ const listCommand = () => profileFree(annotate(new Command("list"), {
|
|
|
77
77
|
.action(function () {
|
|
78
78
|
const environment = environmentOf(this);
|
|
79
79
|
const env = environment.env ?? process.env;
|
|
80
|
+
// biome-ignore lint/plugin/no-own-settings: baseContext needs a profile, and this local read names none
|
|
80
81
|
const { configuredProfiles } = configuration.resolveSettings({}, { env, needsProfile: false });
|
|
81
82
|
const store = tokens(env, environment.keyring);
|
|
82
83
|
const items = profilesHere(IDENTITY, configuredProfiles, env).map((profile) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/write.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
+
import { type Level } from "@wirecat/cli-core/sends";
|
|
1
2
|
import type { Command } from "commander";
|
|
2
3
|
import type { BitrixTransport } from "../bitrix/transport.js";
|
|
3
|
-
export declare const operationIdOf: (given: string | undefined) => string;
|
|
4
4
|
export interface Write {
|
|
5
|
-
/** The command's own permission key, `deals.create`. */
|
|
6
5
|
key: string;
|
|
7
6
|
/** The employee the record is assigned to, when the write sets one. */
|
|
8
7
|
assignee?: string | undefined;
|
|
9
|
-
/** False for a REST 2 write, which Bitrix24 does not answer from a record when it is repeated. */
|
|
10
|
-
keyed?: boolean;
|
|
11
8
|
/** Keys checked beside `key`, such as the command key a raw `api call` does the same as. */
|
|
12
9
|
extra?: readonly string[];
|
|
13
|
-
|
|
10
|
+
/** The built-in levels, when the call adds its own key's (`callDefaults`). */
|
|
11
|
+
defaults?: Readonly<Record<string, Level>>;
|
|
12
|
+
/** A lookup the write needs, in its own run before the write is checked and sent, as gcal-cli's `api call` reads. */
|
|
13
|
+
prepare?: (portal: BitrixTransport) => Promise<void>;
|
|
14
14
|
act: (portal: BitrixTransport, operationId: string) => Promise<Record<string, unknown>>;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* Every write's one path, as gcal-cli's `api call` (src/commands/api.ts): the read-only lock, the profile's levels,
|
|
18
18
|
* one question for every key at `ask`, the send journal, and an `operation_id` in the answer (WC-PERM-13, WC-OUT-10).
|
|
19
19
|
*/
|
|
20
|
-
export declare const write: (command: Command, { key, assignee, extra: also,
|
|
20
|
+
export declare const write: (command: Command, { key, assignee, extra: also, defaults, prepare, act }: Write) => Promise<void>;
|
|
21
21
|
//# sourceMappingURL=write.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"AAWA,OAAO,EAAsC,KAAK,KAAK,EAA4B,MAAM,yBAAyB,CAAA;AAClH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAK7D,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,4FAA4F;IAC5F,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IAC1C,qHAAqH;IACrH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,GAAG,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACxF;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,YACP,OAAO,0DACoE,KAAK,kBA0C1F,CAAA"}
|
package/dist/commands/write.js
CHANGED
|
@@ -1,45 +1,38 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { environmentOf, itemOf, outputFor, readOnlyLockOf, readOnlyRefusal, renderAnswer, terminalAsker, } from "@wirecat/cli-core/cli";
|
|
3
|
+
import { CRM_ASSIGN_OTHERS_KEY } from "@wirecat/cli-core/crm";
|
|
3
4
|
import { guardedWrite, guardFor, keyedGuard, levelFor, newOperationId } from "@wirecat/cli-core/sends";
|
|
4
|
-
import {
|
|
5
|
+
import { permissions } from "../config.js";
|
|
5
6
|
import { IDENTITY } from "../identity.js";
|
|
6
7
|
import { contextOf, transportFor, webhookOf } from "../portal.js";
|
|
7
|
-
/** REST 3.0's `Idempotency-Key`: 1 to 255 printable ASCII characters (apidocs "REST 3.0"). */
|
|
8
|
-
const OPERATION_ID = /^[\x21-\x7e]{1,255}$/;
|
|
9
|
-
export const operationIdOf = (given) => {
|
|
10
|
-
if (given !== undefined && !OPERATION_ID.test(given))
|
|
11
|
-
throw new CliError("validation_error", "--operation-id takes 1 to 255 printable characters with no spaces", {
|
|
12
|
-
param: "--operation-id",
|
|
13
|
-
});
|
|
14
|
-
return given ?? newOperationId();
|
|
15
|
-
};
|
|
16
8
|
/**
|
|
17
9
|
* Every write's one path, as gcal-cli's `api call` (src/commands/api.ts): the read-only lock, the profile's levels,
|
|
18
10
|
* one question for every key at `ask`, the send journal, and an `operation_id` in the answer (WC-PERM-13, WC-OUT-10).
|
|
19
11
|
*/
|
|
20
|
-
export const write = async (command, { key, assignee, extra: also = [],
|
|
12
|
+
export const write = async (command, { key, assignee, extra: also = [], defaults = permissions.defaults, prepare, act }) => {
|
|
21
13
|
const { env, settings, run } = contextOf(command);
|
|
22
14
|
const lock = readOnlyLockOf(IDENTITY, env);
|
|
23
15
|
if (lock)
|
|
24
16
|
throw readOnlyRefusal(lock, "change the Bitrix24 portal");
|
|
25
|
-
const operationId =
|
|
17
|
+
const operationId = newOperationId();
|
|
26
18
|
const webhook = webhookOf(command);
|
|
27
19
|
const self = webhook.userId;
|
|
28
|
-
const extra = [...also, ...(assignee !== undefined && assignee !== self ? [
|
|
29
|
-
const levelOf = (one) => levelFor(settings.permissions, one,
|
|
20
|
+
const extra = [...also, ...(assignee !== undefined && assignee !== self ? [CRM_ASSIGN_OTHERS_KEY] : [])];
|
|
21
|
+
const levelOf = (one) => levelFor(settings.permissions, one, defaults).level;
|
|
30
22
|
const guard = keyedGuard((ask) => guardFor(IDENTITY,
|
|
31
23
|
// The portal limits its own rate; the guard is here for the levels and the journal, not a send limit.
|
|
32
|
-
{ ...settings, sendsPerHour: Number.MAX_SAFE_INTEGER, permissionDefaults:
|
|
24
|
+
{ ...settings, sendsPerHour: Number.MAX_SAFE_INTEGER, permissionDefaults: defaults }, outputFor(command).renderer.warn, environmentOf(command).env ?? process.env, ask), terminalAsker(command), levelOf, extra);
|
|
33
25
|
const request = { chatId: null, kind: "edit", key, operationId };
|
|
34
26
|
guard.refuse(request);
|
|
27
|
+
if (prepare)
|
|
28
|
+
await run((events) => prepare(transportFor(command, webhook, events)));
|
|
35
29
|
let done;
|
|
36
30
|
try {
|
|
37
31
|
done = await guardedWrite(guard, request, () => run((events) => act(transportFor(command, webhook, events), operationId)));
|
|
38
32
|
}
|
|
39
33
|
catch (error) {
|
|
40
|
-
if (
|
|
41
|
-
throw new CliError("outcome_unknown", `${error.message} —
|
|
42
|
-
"instead of running it again", { ...error.details, operation_id: operationId });
|
|
34
|
+
if (error instanceof CliError && error.code === "outcome_unknown")
|
|
35
|
+
throw new CliError("outcome_unknown", `${error.message} — check the portal before you write it again: Bitrix24 would make it a second time`, { ...error.details, operation_id: operationId });
|
|
43
36
|
throw error;
|
|
44
37
|
}
|
|
45
38
|
renderAnswer(command, outputFor(command), itemOf({ operation_id: operationId, ...done }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EACL,aAAa,EACb,MAAM,EACN,SAAS,EACT,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,GACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
import { type Configuration } from "@wirecat/cli-core/cli";
|
|
2
|
-
/**
|
|
3
|
-
* Assigning a record to another employee tells that employee in Bitrix24 by itself, so it is its own key, denied
|
|
4
|
-
* until the owner allows it (WC-PERM-22). Assigning to the webhook's own user tells nobody.
|
|
5
|
-
*/
|
|
6
|
-
export declare const ASSIGN_KEY = "crm.assign-others";
|
|
7
2
|
export declare const permissions: import("@wirecat/cli-core/cli").CommandPermissions;
|
|
8
3
|
export declare const configuration: Configuration;
|
|
9
4
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAmD,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAmD,MAAM,uBAAuB,CAAA;AAW3G,eAAO,MAAM,WAAW,oDAKtB,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,aAAsD,CAAA"}
|
package/dist/config.js
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { commandPathKey, commandPermissions, settingsFor } from "@wirecat/cli-core/cli";
|
|
2
|
-
import {
|
|
2
|
+
import { CRM_WRITE_DEFAULTS, CRM_WRITE_KEYS, crmAlsoChecks } from "@wirecat/cli-core/crm";
|
|
3
|
+
import { API_DEFAULTS, API_KEYS, apiKeysOf, crmApiKeys } from "./api-keys.js";
|
|
3
4
|
import { IDENTITY } from "./identity.js";
|
|
4
|
-
/**
|
|
5
|
-
* Assigning a record to another employee tells that employee in Bitrix24 by itself, so it is its own key, denied
|
|
6
|
-
* until the owner allows it (WC-PERM-22). Assigning to the webhook's own user tells nobody.
|
|
7
|
-
*/
|
|
8
|
-
export const ASSIGN_KEY = "crm.assign-others";
|
|
9
5
|
/** `api list` and `show` never reach the portal; `api call` names its method only in its arguments and checks it itself. */
|
|
10
6
|
const keyOf = (path) => path[0] === "api" && ["call", "list", "show"].includes(path[1] ?? "") ? null : commandPathKey(path);
|
|
7
|
+
const crmChecks = crmAlsoChecks(crmApiKeys);
|
|
11
8
|
export const permissions = commandPermissions({
|
|
12
9
|
keyOf,
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
alsoChecks: (path) => [...crmChecks(path), ...apiKeysOf(path)],
|
|
11
|
+
extra: [...CRM_WRITE_KEYS, ...API_KEYS],
|
|
12
|
+
defaults: { ...CRM_WRITE_DEFAULTS, ...API_DEFAULTS },
|
|
15
13
|
});
|
|
16
14
|
export const configuration = settingsFor(IDENTITY, { permissions });
|
|
17
15
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC3G,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC3G,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACzF,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,4HAA4H;AAC5H,MAAM,KAAK,GAAG,CAAC,IAAuB,EAAE,EAAE,CACxC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;AAErG,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;IAC5C,KAAK;IACL,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9D,KAAK,EAAE,CAAC,GAAG,cAAc,EAAE,GAAG,QAAQ,CAAC;IACvC,QAAQ,EAAE,EAAE,GAAG,kBAAkB,EAAE,GAAG,YAAY,EAAE;CACrD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAkB,WAAW,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type CrmWriteCapabilities } from "@wirecat/cli-core/crm";
|
|
2
|
+
/**
|
|
3
|
+
* Not idempotent: on a live portal (2026-11-07) a create repeated with the same `Idempotency-Key` made a second lead,
|
|
4
|
+
* although the REST 3.0 documentation says the repeat is answered from its record.
|
|
5
|
+
*/
|
|
6
|
+
export declare const BITRIX_WRITES: CrmWriteCapabilities;
|
|
7
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/crm/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE5E;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,oBAAuF,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CRM_VERBS } from "@wirecat/cli-core/crm";
|
|
2
|
+
/**
|
|
3
|
+
* Not idempotent: on a live portal (2026-11-07) a create repeated with the same `Idempotency-Key` made a second lead,
|
|
4
|
+
* although the REST 3.0 documentation says the repeat is answered from its record.
|
|
5
|
+
*/
|
|
6
|
+
export const BITRIX_WRITES = { kinds: ["deal", "lead"], verbs: CRM_VERBS, idempotent: false };
|
|
7
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/crm/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA6B,MAAM,uBAAuB,CAAA;AAE5E;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAyB,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA"}
|
package/dist/crm/conditions.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface Condition {
|
|
|
9
9
|
/** How one query field reaches the portal: its Bitrix24 name, and how its values read. */
|
|
10
10
|
export interface FieldMap {
|
|
11
11
|
field: string;
|
|
12
|
-
kind: "id" | "number" | "time" | "text" | "
|
|
12
|
+
kind: "id" | "number" | "time" | "text" | "word";
|
|
13
13
|
}
|
|
14
14
|
/** The query's terms as conditions, AND-ed: `nativeTerms` has already refused anything the portal cannot ask. */
|
|
15
15
|
export declare const conditionsOf: (terms: ReadonlyMap<string, Predicate>, fields: Readonly<Record<string, FieldMap>>) => Condition[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../src/crm/conditions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAIxD,MAAM,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,CAAA;AAE7D,uGAAuG;AACvG,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,QAAQ,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB;AAED,0FAA0F;AAC1F,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../src/crm/conditions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAIxD,MAAM,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,CAAA;AAE7D,uGAAuG;AACvG,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,QAAQ,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB;AAED,0FAA0F;AAC1F,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CACjD;AAiCD,iHAAiH;AACjH,eAAO,MAAM,YAAY,UAAW,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,gBAiB1G,CAAA;AAEJ,uFAAuF;AACvF,eAAO,MAAM,UAAU,eAAgB,SAAS,SAAS,EAAE,YAAgD,CAAA;AAE3G;;;GAGG;AACH,eAAO,MAAM,WAAW,eAAgB,SAAS,SAAS,EAAE,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAI5F,CAAA;AAEJ,2GAA2G;AAC3G,eAAO,MAAM,WAAW,eACV,SAAS,SAAS,EAAE,UACzB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,4BAWnD,CAAA"}
|
package/dist/crm/conditions.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { timeBounds } from "@wirecat/cli-core/cli";
|
|
3
|
-
import {
|
|
3
|
+
import { portalTime } from "./values.js";
|
|
4
4
|
const bare = (value) => value.replace(/^\*+|\*+$/g, "");
|
|
5
5
|
const valueFor = (kind, raw, name) => {
|
|
6
6
|
if (kind === "id" || kind === "number") {
|
|
7
7
|
const found = Number(raw);
|
|
8
|
-
if (!Number.isFinite(found) || (kind === "id" && !/^[1-9]\d
|
|
8
|
+
if (!Number.isFinite(found) || (kind === "id" && !/^(0|[1-9]\d*)$/.test(raw)))
|
|
9
9
|
throw new CliError("validation_error", `${name} takes ${kind === "id" ? "an id" : "a number"}; got ${raw}`, {
|
|
10
10
|
reason: "query.bad-value",
|
|
11
11
|
});
|
|
12
12
|
return found;
|
|
13
13
|
}
|
|
14
|
-
if (kind === "outcome")
|
|
15
|
-
return semanticsOf(raw.toLowerCase());
|
|
16
14
|
return raw;
|
|
17
15
|
};
|
|
18
16
|
const range = (node, map, name) => {
|
|
@@ -43,8 +41,8 @@ export const conditionsOf = (terms, fields) => [...terms].flatMap(([name, node])
|
|
|
43
41
|
if (map.kind === "time") {
|
|
44
42
|
const { since, until } = timeBounds(node);
|
|
45
43
|
return [
|
|
46
|
-
...(since === undefined ? [] : [{ field: map.field, op: ">=", value:
|
|
47
|
-
...(until === undefined ? [] : [{ field: map.field, op: "<=", value:
|
|
44
|
+
...(since === undefined ? [] : [{ field: map.field, op: ">=", value: portalTime(since) }]),
|
|
45
|
+
...(until === undefined ? [] : [{ field: map.field, op: "<=", value: portalTime(until) }]),
|
|
48
46
|
];
|
|
49
47
|
}
|
|
50
48
|
if (node.operator === "range")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/crm/conditions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/crm/conditions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Predicate, type QueryRegistry } from "@wirecat/cli-base/query";
|
|
2
|
+
import type { Condition } from "./conditions.js";
|
|
3
|
+
import type { Field } from "./fields.js";
|
|
4
|
+
/** The field names a query uses that the list's own fields do not have: the portal's custom fields, if any. */
|
|
5
|
+
export declare const customNames: (text: string, registry: QueryRegistry, command: string, defaultField?: string) => string[];
|
|
6
|
+
/** The custom fields a query names, each as typed, refused unless the portal can filter a list by it. */
|
|
7
|
+
export declare const filterableFields: (fields: readonly Field[], names: readonly string[]) => [string, Field][];
|
|
8
|
+
/** The list's query fields and the custom ones, each a whole value, so cli-base validates the query as it is. */
|
|
9
|
+
export declare const withCustomFields: (registry: QueryRegistry, chosen: readonly [string, Field][]) => QueryRegistry;
|
|
10
|
+
/** The custom terms as conditions on their codes, taken out of `terms` so the rest map as before. */
|
|
11
|
+
export declare const customConditions: (terms: Map<string, Predicate>, chosen: readonly [string, Field][]) => Condition[];
|
|
12
|
+
/**
|
|
13
|
+
* The custom fields `--json` names, as `provider_metadata.<code>`, or every one for a bare `provider_metadata`;
|
|
14
|
+
* undefined when it names none.
|
|
15
|
+
*/
|
|
16
|
+
export declare const wantedCodes: (paths: string | undefined) => string[] | "all" | undefined;
|
|
17
|
+
/** The codes to select: only those the portal lists, since REST 3.0 refuses a whole call over one unknown name. */
|
|
18
|
+
export declare const selectedCodes: (fields: readonly Field[], wanted: string[] | "all" | undefined) => string[];
|
|
19
|
+
//# sourceMappingURL=custom-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-query.d.ts","sourceRoot":"","sources":["../../src/crm/custom-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,SAAS,EAAe,KAAK,aAAa,EAAa,MAAM,yBAAyB,CAAA;AAGpH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,+GAA+G;AAC/G,eAAO,MAAM,WAAW,SAChB,MAAM,YACF,aAAa,WACd,MAAM,4BAEd,MAAM,EAOR,CAAA;AAED,yGAAyG;AACzG,eAAO,MAAM,gBAAgB,WAAY,SAAS,KAAK,EAAE,SAAS,SAAS,MAAM,EAAE,KAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EASjG,CAAA;AAEJ,iHAAiH;AACjH,eAAO,MAAM,gBAAgB,aAAc,aAAa,UAAU,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAG,aAQ7F,CAAA;AAcF,qGAAqG;AACrG,eAAO,MAAM,gBAAgB,UAAW,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAG,SAAS,EAK1G,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,WAAW,UAAW,MAAM,GAAG,SAAS,KAAG,MAAM,EAAE,GAAG,KAAK,GAAG,SAY1E,CAAA;AAED,mHAAmH;AACnH,eAAO,MAAM,aAAa,WAAY,SAAS,KAAK,EAAE,UAAU,MAAM,EAAE,GAAG,KAAK,GAAG,SAAS,KAAG,MAAM,EAOpG,CAAA"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { parseLucene, walkQuery } from "@wirecat/cli-base/query";
|
|
3
|
+
import { LIST_QUERY_GUIDE } from "@wirecat/cli-core/cli";
|
|
4
|
+
import { fieldNamed, optionOf, unknownField } from "@wirecat/cli-core/crm";
|
|
5
|
+
/** The field names a query uses that the list's own fields do not have: the portal's custom fields, if any. */
|
|
6
|
+
export const customNames = (text, registry, command, defaultField = "none") => {
|
|
7
|
+
if (text.trim() === "")
|
|
8
|
+
return [];
|
|
9
|
+
const known = new Set(registry.fields.map((field) => field.name));
|
|
10
|
+
const named = walkQuery(parseLucene(text, { defaultField, command, guide: LIST_QUERY_GUIDE }).root)
|
|
11
|
+
.filter((term) => !term.implicit)
|
|
12
|
+
.map((term) => term.field);
|
|
13
|
+
return [...new Set(named.filter((name) => !known.has(name)))];
|
|
14
|
+
};
|
|
15
|
+
/** The custom fields a query names, each as typed, refused unless the portal can filter a list by it. */
|
|
16
|
+
export const filterableFields = (fields, names) => names.map((name) => {
|
|
17
|
+
const field = fieldNamed(fields, name);
|
|
18
|
+
if (!field.filterable)
|
|
19
|
+
throw new CliError("validation_error", `the portal cannot filter a list by ${field.label ?? field.code}`, {
|
|
20
|
+
reason: "field.not-filterable",
|
|
21
|
+
field: field.code,
|
|
22
|
+
});
|
|
23
|
+
return [name, field];
|
|
24
|
+
});
|
|
25
|
+
/** The list's query fields and the custom ones, each a whole value, so cli-base validates the query as it is. */
|
|
26
|
+
export const withCustomFields = (registry, chosen) => ({
|
|
27
|
+
...registry,
|
|
28
|
+
fields: [
|
|
29
|
+
...registry.fields,
|
|
30
|
+
...chosen.map(([name]) => ({ name, type: "kw", operators: ["term", "phrase"], example: `${name}:x`, native: true })),
|
|
31
|
+
],
|
|
32
|
+
});
|
|
33
|
+
const NUMBERS = new Set(["integer", "double"]);
|
|
34
|
+
/**
|
|
35
|
+
* REST 3.0 checks a value's type against the field's: `field.list` gives a list field as `int`, so its option id goes
|
|
36
|
+
* as a number, and so does a number field's value.
|
|
37
|
+
*/
|
|
38
|
+
const filterValue = (field, typed) => {
|
|
39
|
+
if (field.options)
|
|
40
|
+
return Number(optionOf(field, typed));
|
|
41
|
+
const number = Number(typed);
|
|
42
|
+
return NUMBERS.has(field.type) && typed.trim() !== "" && Number.isFinite(number) ? number : typed;
|
|
43
|
+
};
|
|
44
|
+
/** The custom terms as conditions on their codes, taken out of `terms` so the rest map as before. */
|
|
45
|
+
export const customConditions = (terms, chosen) => chosen.flatMap(([name, field]) => {
|
|
46
|
+
const term = terms.get(name);
|
|
47
|
+
terms.delete(name);
|
|
48
|
+
return term ? [{ field: field.code, op: "=", value: filterValue(field, term.value) }] : [];
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* The custom fields `--json` names, as `provider_metadata.<code>`, or every one for a bare `provider_metadata`;
|
|
52
|
+
* undefined when it names none.
|
|
53
|
+
*/
|
|
54
|
+
export const wantedCodes = (paths) => {
|
|
55
|
+
if (!paths)
|
|
56
|
+
return undefined;
|
|
57
|
+
const parts = paths.split(",").map((path) => path
|
|
58
|
+
.trim()
|
|
59
|
+
.replace(/^items\./, "")
|
|
60
|
+
.split("."));
|
|
61
|
+
const metadata = parts.filter(([top]) => top === "provider_metadata");
|
|
62
|
+
if (metadata.some((part) => part.length === 1))
|
|
63
|
+
return "all";
|
|
64
|
+
const codes = metadata.flatMap(([, code]) => (code ? [code] : []));
|
|
65
|
+
return codes.length ? [...new Set(codes)] : undefined;
|
|
66
|
+
};
|
|
67
|
+
/** The codes to select: only those the portal lists, since REST 3.0 refuses a whole call over one unknown name. */
|
|
68
|
+
export const selectedCodes = (fields, wanted) => {
|
|
69
|
+
if (wanted === undefined)
|
|
70
|
+
return [];
|
|
71
|
+
if (wanted === "all")
|
|
72
|
+
return fields.map((field) => field.code);
|
|
73
|
+
return wanted.map((code) => {
|
|
74
|
+
if (!fields.some((field) => field.code === code))
|
|
75
|
+
throw unknownField(fields, code);
|
|
76
|
+
return code;
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=custom-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-query.js","sourceRoot":"","sources":["../../src/crm/custom-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAkC,WAAW,EAAsB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACpH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAI1E,+GAA+G;AAC/G,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAY,EACZ,QAAuB,EACvB,OAAe,EACf,YAAY,GAAG,MAAM,EACX,EAAE;IACZ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,CAAA;IACjC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACjE,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC;SAChG,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;SAChC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/D,CAAC,CAAA;AAED,yGAAyG;AACzG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAwB,EAAE,KAAwB,EAAqB,EAAE,CACxG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;IACjB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtC,IAAI,CAAC,KAAK,CAAC,UAAU;QACnB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,sCAAsC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE;YACxG,MAAM,EAAE,sBAAsB;YAC9B,KAAK,EAAE,KAAK,CAAC,IAAI;SAClB,CAAC,CAAA;IACJ,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACtB,CAAC,CAAC,CAAA;AAEJ,iHAAiH;AACjH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAuB,EAAE,MAAkC,EAAiB,EAAE,CAAC,CAAC;IAC/G,GAAG,QAAQ;IACX,MAAM,EAAE;QACN,GAAG,QAAQ,CAAC,MAAM;QAClB,GAAG,MAAM,CAAC,GAAG,CACX,CAAC,CAAC,IAAI,CAAC,EAAa,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CACjH;KACF;CACF,CAAC,CAAA;AAEF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;AAE9C;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,KAAY,EAAE,KAAa,EAAmB,EAAE;IACnE,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;AACnG,CAAC,CAAA;AAED,qGAAqG;AACrG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAA6B,EAAE,MAAkC,EAAe,EAAE,CACjH,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC5B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,GAAY,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACrG,CAAC,CAAC,CAAA;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAyB,EAAgC,EAAE;IACrF,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1C,IAAI;SACD,IAAI,EAAE;SACN,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,GAAG,CAAC,CACd,CAAA;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAA;IACrE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACvD,CAAC,CAAA;AAED,mHAAmH;AACnH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAwB,EAAE,MAAoC,EAAY,EAAE;IACxG,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IACnC,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAClF,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
package/dist/crm/deal.d.ts
CHANGED
|
@@ -1,30 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { FieldMap } from "./conditions.js";
|
|
1
|
+
import type { CrmItem } from "@wirecat/cli-core";
|
|
3
2
|
import type { ItemType } from "./items.js";
|
|
4
3
|
import { type Metadata, type Raw } from "./values.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
readonly pipeline_id: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
9
|
-
readonly stage_id: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
10
|
-
readonly outcome: v.PicklistSchema<readonly ["open", "won", "lost"], undefined>;
|
|
11
|
-
readonly amount: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
12
|
-
readonly currency: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
13
|
-
readonly assigned_to: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
14
|
-
readonly organization_id: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
15
|
-
readonly person_ids: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
16
|
-
readonly closes_on: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
17
|
-
readonly created_at: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
|
|
18
|
-
readonly updated_at: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
|
|
19
|
-
readonly url: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
20
|
-
readonly provider_metadata: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StrictObjectSchema<{
|
|
21
|
-
readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
22
|
-
readonly value: v.UnknownSchema;
|
|
23
|
-
}, undefined>, undefined>, undefined>;
|
|
24
|
-
}, undefined>;
|
|
25
|
-
export type Deal = v.InferOutput<typeof dealSchema>;
|
|
26
|
-
export declare const DEAL_FIELDS: Record<string, FieldMap>;
|
|
27
|
-
/** Bitrix24 ⇄ neutral for a deal. */
|
|
28
|
-
export declare const fromBitrixDeal: (raw: Raw, metadata?: Metadata) => Deal;
|
|
29
|
-
export declare const DEAL: ItemType<Deal>;
|
|
4
|
+
/** Bitrix24 ⇄ neutral for a deal: its pipeline is its category, `0` the default one. */
|
|
5
|
+
export declare const fromBitrixDeal: (raw: Raw, metadata?: Metadata) => CrmItem;
|
|
6
|
+
export declare const DEAL: ItemType<CrmItem>;
|
|
30
7
|
//# sourceMappingURL=deal.d.ts.map
|
package/dist/crm/deal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deal.d.ts","sourceRoot":"","sources":["../../src/crm/deal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"deal.d.ts","sourceRoot":"","sources":["../../src/crm/deal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAA4B,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAQ,MAAM,aAAa,CAAA;AAErF,wFAAwF;AACxF,eAAO,MAAM,cAAc,QAAS,GAAG,aAAa,QAAQ,KAAG,OAc7D,CAAA;AAEF,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,CAsBlC,CAAA"}
|
package/dist/crm/deal.js
CHANGED
|
@@ -1,51 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export const dealSchema = v.strictObject({
|
|
4
|
-
id: v.string(),
|
|
5
|
-
title: v.nullable(v.string()),
|
|
6
|
-
pipeline_id: v.nullable(v.string()),
|
|
7
|
-
stage_id: v.nullable(v.string()),
|
|
8
|
-
outcome: v.picklist(OUTCOMES),
|
|
9
|
-
amount: v.nullable(v.number()),
|
|
10
|
-
currency: v.nullable(v.string()),
|
|
11
|
-
assigned_to: v.nullable(v.string()),
|
|
12
|
-
organization_id: v.nullable(v.string()),
|
|
13
|
-
person_ids: v.array(v.string()),
|
|
14
|
-
closes_on: v.nullable(v.string()),
|
|
15
|
-
created_at: nullableTime,
|
|
16
|
-
updated_at: nullableTime,
|
|
17
|
-
url: v.nullable(v.string()),
|
|
18
|
-
provider_metadata: metadataSchema,
|
|
19
|
-
});
|
|
20
|
-
export const DEAL_FIELDS = {
|
|
21
|
-
title: { field: "title", kind: "word" },
|
|
22
|
-
pipeline_id: { field: "categoryId", kind: "id" },
|
|
23
|
-
stage_id: { field: "stageId", kind: "text" },
|
|
24
|
-
outcome: { field: "stageSemanticId", kind: "outcome" },
|
|
25
|
-
amount: { field: "opportunity", kind: "number" },
|
|
26
|
-
currency: { field: "currencyId", kind: "text" },
|
|
27
|
-
assigned_to: { field: "assignedById", kind: "id" },
|
|
28
|
-
organization_id: { field: "companyId", kind: "id" },
|
|
29
|
-
created_at: { field: "createdTime", kind: "time" },
|
|
30
|
-
updated_at: { field: "updatedTime", kind: "time" },
|
|
31
|
-
};
|
|
32
|
-
/** Bitrix24 ⇄ neutral for a deal. */
|
|
1
|
+
import { amountOf, epoch, id, ids, text } from "./values.js";
|
|
2
|
+
/** Bitrix24 ⇄ neutral for a deal: its pipeline is its category, `0` the default one. */
|
|
33
3
|
export const fromBitrixDeal = (raw, metadata) => ({
|
|
34
|
-
|
|
35
|
-
title: text(raw.title),
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
closes_on: text(raw.closeTime)?.slice(0, 10) ?? null,
|
|
45
|
-
created_at: time(raw.createdTime),
|
|
46
|
-
updated_at: time(raw.updatedTime),
|
|
4
|
+
externalId: id(raw.id) ?? "",
|
|
5
|
+
title: text(raw.title) ?? "",
|
|
6
|
+
pipeline: text(raw.categoryId) ?? "0",
|
|
7
|
+
stage: text(raw.stageId) ?? "",
|
|
8
|
+
...amountOf(raw.opportunity, raw.currencyId),
|
|
9
|
+
closeDate: text(raw.closeTime)?.slice(0, 10) ?? null,
|
|
10
|
+
organization: id(raw.companyId),
|
|
11
|
+
people: ids(raw.contactsId).map((externalId) => ({ externalId, role: "contact" })),
|
|
12
|
+
createdAt: epoch(raw.createdTime),
|
|
13
|
+
updatedAt: epoch(raw.updatedTime),
|
|
47
14
|
url: text(raw.url),
|
|
48
|
-
|
|
15
|
+
assignee: id(raw.assignedById),
|
|
16
|
+
...(metadata ? { metadata } : {}),
|
|
49
17
|
});
|
|
50
18
|
export const DEAL = {
|
|
51
19
|
type: "deal",
|
|
@@ -56,16 +24,15 @@ export const DEAL = {
|
|
|
56
24
|
"title",
|
|
57
25
|
"categoryId",
|
|
58
26
|
"stageId",
|
|
59
|
-
"stageSemanticId",
|
|
60
27
|
"opportunity",
|
|
61
28
|
"currencyId",
|
|
62
|
-
"assignedById",
|
|
63
29
|
"companyId",
|
|
64
30
|
"contactsId",
|
|
65
31
|
"closeTime",
|
|
66
32
|
"createdTime",
|
|
67
33
|
"updatedTime",
|
|
68
34
|
"url",
|
|
35
|
+
"assignedById",
|
|
69
36
|
],
|
|
70
37
|
words: ["title"],
|
|
71
38
|
nameOf: (deal) => deal.title,
|
package/dist/crm/deal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deal.js","sourceRoot":"","sources":["../../src/crm/deal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deal.js","sourceRoot":"","sources":["../../src/crm/deal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAA2B,IAAI,EAAE,MAAM,aAAa,CAAA;AAErF,wFAAwF;AACxF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAQ,EAAE,QAAmB,EAAW,EAAE,CAAC,CAAC;IACzE,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;IAC5B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;IAC5B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG;IACrC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;IAC9B,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC;IAC5C,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI;IACpD,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;IAC/B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,SAAkB,EAAE,CAAC,CAAC;IAC3F,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;IACjC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;IACjC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAClB,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC;IAC9B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CAClC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,IAAI,GAAsB;IACrC,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,CAAC;IACf,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE;QACN,IAAI;QACJ,OAAO;QACP,YAAY;QACZ,SAAS;QACT,aAAa;QACb,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,WAAW;QACX,aAAa;QACb,aAAa;QACb,KAAK;QACL,cAAc;KACf;IACD,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK;IAC5B,GAAG,EAAE,cAAc;CACpB,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { CrmField } from "@wirecat/cli-core";
|
|
2
|
+
import type { BitrixTransport } from "../bitrix/transport.js";
|
|
3
|
+
import type { ItemType } from "./items.js";
|
|
4
|
+
import { type Metadata, type Raw } from "./values.js";
|
|
5
|
+
/** One of the portal's own fields on deals, leads, contacts or companies. */
|
|
6
|
+
export type Field = CrmField;
|
|
7
|
+
/**
|
|
8
|
+
* The portal's custom fields of one type, in two calls that need only read rights: REST 3.0's `field.list` has the
|
|
9
|
+
* title and whether a list can filter by it, and REST 2's `userfield.list` the real type and a list field's options,
|
|
10
|
+
* which `field.list` shows only as `int` (apidocs crm.<type>.field.custom.enum.list).
|
|
11
|
+
*/
|
|
12
|
+
export declare const loadFields: (portal: BitrixTransport, type: ItemType<unknown>["type"]) => Promise<Field[]>;
|
|
13
|
+
/** Custom values as `{ label, value }`, a list field's option ids turned into their labels. */
|
|
14
|
+
export declare const metadataOf: (custom: Record<string, unknown>, fields: readonly Field[]) => Metadata;
|
|
15
|
+
/**
|
|
16
|
+
* The custom values to write, by code, as typed: a list field's options as their ids, numbers as `field.list` types
|
|
17
|
+
* them (`int`), and a multiple field's values as an array.
|
|
18
|
+
*/
|
|
19
|
+
export declare const customValues: (fields: readonly Field[], pairs: readonly [string, string][]) => Raw;
|
|
20
|
+
//# sourceMappingURL=fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/crm/fields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAY,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAa,MAAM,aAAa,CAAA;AAE1E,6EAA6E;AAC7E,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAA;AAO5B;;;;GAIG;AACH,eAAO,MAAM,UAAU,WAAkB,eAAe,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAG,OAAO,CAAC,KAAK,EAAE,CA0B1G,CAAA;AAKD,+FAA+F;AAC/F,eAAO,MAAM,UAAU,WAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,SAAS,KAAK,EAAE,KAAG,QAetF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,WAAY,SAAS,KAAK,EAAE,SAAS,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAG,GAiB3F,CAAA"}
|