@wirecat/bitrix24-cli 0.2.0 → 0.4.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.
Files changed (178) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/dist/api-keys.d.ts +30 -8
  3. package/dist/api-keys.d.ts.map +1 -1
  4. package/dist/api-keys.js +81 -18
  5. package/dist/api-keys.js.map +1 -1
  6. package/dist/bin/b24.js +2 -2
  7. package/dist/bitrix/methods.d.ts.map +1 -1
  8. package/dist/bitrix/methods.js +7 -3
  9. package/dist/bitrix/methods.js.map +1 -1
  10. package/dist/bitrix/transport.d.ts +4 -7
  11. package/dist/bitrix/transport.d.ts.map +1 -1
  12. package/dist/bitrix/transport.js +12 -16
  13. package/dist/bitrix/transport.js.map +1 -1
  14. package/dist/bundle/{all-profiles-QJ444GSX.js → all-profiles-MBQZCOVK.js} +6 -6
  15. package/dist/bundle/{anthropic-RHRAVHC2.js → anthropic-QCYLKSJJ.js} +4 -4
  16. package/dist/bundle/{app-server-QIT6S7AZ.js → app-server-FSLZ2Y6N.js} +42 -42
  17. package/dist/bundle/b24.js +12 -12
  18. package/dist/bundle/{bun-H6RSODZ3.js → bun-UYRQXF33.js} +2 -2
  19. package/dist/bundle/{bun-sqlite-BO4LTQHX.js → bun-sqlite-GXME7EMT.js} +3 -3
  20. package/dist/bundle/{chunk-MBDK4YXG.js → chunk-2D5W4LWL.js} +1 -1
  21. package/dist/bundle/{chunk-U5ACMCAQ.js → chunk-2IZ6GGU2.js} +151 -151
  22. package/dist/bundle/{chunk-VEWWAGTD.js → chunk-4OVK5XW2.js} +8 -8
  23. package/dist/bundle/{chunk-45AKJVKV.js → chunk-66QLBRIT.js} +1 -1
  24. package/dist/bundle/{chunk-P364PLIK.js → chunk-6BLVBGRK.js} +9 -9
  25. package/dist/bundle/{chunk-FOTREPNS.js → chunk-6ERX33NC.js} +8 -8
  26. package/dist/bundle/{chunk-LRGYKOCP.js → chunk-AMVRNYD6.js} +1 -1
  27. package/dist/bundle/{chunk-YZ5LHE5Q.js → chunk-AOUNT22U.js} +2 -2
  28. package/dist/bundle/{chunk-ZDQQCXFG.js → chunk-B252WFK7.js} +13 -13
  29. package/dist/bundle/{chunk-WKRQ44EH.js → chunk-BHZ5VDDY.js} +13 -13
  30. package/dist/bundle/{chunk-ZIAQPTUS.js → chunk-COOOXDKZ.js} +3 -3
  31. package/dist/bundle/{chunk-GDFNH33E.js → chunk-CR3TLGM4.js} +9 -4
  32. package/dist/bundle/{chunk-D5S6QV6R.js → chunk-D2IRPC5I.js} +6 -6
  33. package/dist/bundle/{chunk-POC3V3AO.js → chunk-DQIQIZQS.js} +297 -256
  34. package/dist/bundle/{chunk-QGMDQ2PM.js → chunk-EIGPMMGC.js} +3 -3
  35. package/dist/bundle/{chunk-WTPMJYMD.js → chunk-ELBOQHJA.js} +45 -45
  36. package/dist/bundle/{chunk-LSPIOT6Z.js → chunk-EQLWU6ZB.js} +7 -7
  37. package/dist/bundle/{chunk-WII44RXN.js → chunk-F5NH3UJQ.js} +2 -2
  38. package/dist/bundle/{chunk-HAXNUIGQ.js → chunk-GTDOUP6L.js} +26 -23
  39. package/dist/bundle/{chunk-QQXH2OPB.js → chunk-GTFRSYYJ.js} +17 -12
  40. package/dist/bundle/{chunk-H2ADPPSH.js → chunk-GTMCLOYY.js} +670 -465
  41. package/dist/bundle/{chunk-7GRZAKBB.js → chunk-IF27EQN6.js} +2 -2
  42. package/dist/bundle/{chunk-FZL7F5NR.js → chunk-IWEWDVZ6.js} +22 -22
  43. package/dist/bundle/{program-UYX5362I.js → chunk-J7OMY6EO.js} +16672 -18336
  44. package/dist/bundle/{chunk-QIPTIUMJ.js → chunk-JAS3OZSP.js} +4 -4
  45. package/dist/bundle/{chunk-OTD2ZRXD.js → chunk-JB7OXYAU.js} +4 -4
  46. package/dist/bundle/{chunk-ZEW4P6AH.js → chunk-K7XWCZF6.js} +8 -8
  47. package/dist/bundle/{chunk-YYO7D2MO.js → chunk-LAYH344Y.js} +28 -28
  48. package/dist/bundle/{chunk-K3UIB6ZF.js → chunk-M5XMAUGZ.js} +2 -2
  49. package/dist/bundle/{chunk-2KCZ7BKW.js → chunk-MPI2FDJ4.js} +11 -11
  50. package/dist/bundle/{chunk-HGL63O5V.js → chunk-MY6FAZRA.js} +2 -2
  51. package/dist/bundle/{chunk-QC53QBNC.js → chunk-NDSOBIR3.js} +3 -3
  52. package/dist/bundle/{chunk-XRFJWHY5.js → chunk-NEK7LKC6.js} +4 -4
  53. package/dist/bundle/{chunk-2SNUMZ7S.js → chunk-NKLLI4B2.js} +6 -6
  54. package/dist/bundle/{chunk-QMPN6WKD.js → chunk-NWKXMMON.js} +100 -81
  55. package/dist/bundle/{chunk-P33NDCDI.js → chunk-O7FVOICH.js} +1 -1
  56. package/dist/bundle/{chunk-SFRNX2TI.js → chunk-OCRCVLZQ.js} +1 -1
  57. package/dist/bundle/{chunk-TE3FR6MI.js → chunk-OKDC6CLH.js} +5 -5
  58. package/dist/bundle/{chunk-DTXERR44.js → chunk-OWILUBCI.js} +2 -2
  59. package/dist/bundle/{chunk-CXL33BFL.js → chunk-OYLJHX74.js} +1 -1
  60. package/dist/bundle/{chunk-6WY72XVQ.js → chunk-POUSZWMP.js} +4 -4
  61. package/dist/bundle/{chunk-N6FLBXZS.js → chunk-Q4ILKTV4.js} +3 -3
  62. package/dist/bundle/{chunk-FLUEXJ4X.js → chunk-Q7Z5IMVY.js} +1 -1
  63. package/dist/bundle/{chunk-XJXONOB5.js → chunk-QVZSLBR6.js} +1 -1
  64. package/dist/bundle/{chunk-IRV2PCQ2.js → chunk-SBW2Y7AZ.js} +26 -26
  65. package/dist/bundle/{chunk-XNHSPHUN.js → chunk-UCLWWSQK.js} +2 -2
  66. package/dist/bundle/{chunk-BCF7P4FZ.js → chunk-UH56WLDS.js} +8 -8
  67. package/dist/bundle/{chunk-ZGZT5S6B.js → chunk-VMQL4GNH.js} +55 -55
  68. package/dist/bundle/{chunk-XD4FRDSL.js → chunk-VTIUWHZ3.js} +5 -5
  69. package/dist/bundle/{chunk-SGRYYE4X.js → chunk-WJRBX5QB.js} +4 -4
  70. package/dist/bundle/{chunk-VL6SPMZV.js → chunk-XG6QKS7L.js} +5 -5
  71. package/dist/bundle/{chunk-RRJNNPR4.js → chunk-XKQZLR2X.js} +1 -1
  72. package/dist/bundle/{chunk-QSNROIJL.js → chunk-XOPMSWFC.js} +9 -9
  73. package/dist/bundle/{chunk-EVYSBZ3I.js → chunk-XR5SUCAC.js} +4 -4
  74. package/dist/bundle/{chunk-PH5FZX6E.js → chunk-Y5PPMGCS.js} +2 -2
  75. package/dist/bundle/{chunk-EXOOKUEA.js → chunk-YFZXI3NN.js} +2 -2
  76. package/dist/bundle/{chunk-CNNEA2M4.js → chunk-ZU4HXKEW.js} +3 -3
  77. package/dist/bundle/command-contract-UON4EIC4.js +30 -0
  78. package/dist/bundle/{decode-5ZPLTYV6.js → decode-IF2F2SFC.js} +3 -3
  79. package/dist/bundle/{echarts-J6LAPIX7.js → echarts-WDDVEJO2.js} +2 -2
  80. package/dist/bundle/{embed-YG5LDHME.js → embed-VDUGYEAR.js} +4 -4
  81. package/dist/bundle/{embedder-7FNUA5OZ.js → embedder-DUN62H3Z.js} +7 -7
  82. package/dist/bundle/{first-run-JPZNWIJN.js → first-run-NDGYBQEN.js} +8 -8
  83. package/dist/bundle/first-screen-QAVKP5RF.js +28 -0
  84. package/dist/bundle/{instructions-AXWTQHMR.js → instructions-JIIKWS7X.js} +1 -1
  85. package/dist/bundle/{mcp-7F46P6AM.js → mcp-33JX6KP4.js} +2 -2
  86. package/dist/bundle/{mcp-HUD6UH5X.js → mcp-57EQ6QJO.js} +58 -47
  87. package/dist/bundle/mcp-PFJER2DE.js +87 -0
  88. package/dist/bundle/{node-CWKAIOEM.js → node-K57WT42O.js} +2 -2
  89. package/dist/bundle/{node-sqlite-LSEKVRDA.js → node-sqlite-KS6ORRIG.js} +4 -4
  90. package/dist/bundle/{oauth-THYNLRLD.js → oauth-SLSANN37.js} +5 -5
  91. package/dist/bundle/{open-E47QYKFC.js → open-WJPHADEX.js} +3 -3
  92. package/dist/bundle/{openai-EWSGC3BC.js → openai-HXB3GTOD.js} +12 -12
  93. package/dist/bundle/{process-WKTEA3WE.js → process-P73TFAXT.js} +1 -1
  94. package/dist/bundle/program-7BMG5NIN.js +2250 -0
  95. package/dist/bundle/{prompt-CAQ7QR3U.js → prompt-WDPV37R4.js} +3 -3
  96. package/dist/bundle/{recognize-6KGHNZC3.js → recognize-CXIFL6IV.js} +2 -2
  97. package/dist/bundle/{remote-3UO2WDC3.js → remote-Q4VJ4OQW.js} +5 -5
  98. package/dist/bundle/{rerank-2JVDPZBX.js → rerank-SUFYK63I.js} +5 -5
  99. package/dist/bundle/{serve-ES7AG5IK.js → serve-B7PGFOC2.js} +7 -7
  100. package/dist/bundle/server-4DBNJWW6.js +58 -0
  101. package/dist/bundle/server-OKE7SXJ2.js +45 -0
  102. package/dist/bundle/{state-7NH5G4XJ.js → state-EZCCXQV7.js} +4 -4
  103. package/dist/bundle/{store-7O4JQD2Z.js → store-MZ7JBYR6.js} +12 -12
  104. package/dist/bundle/store-maintenance-command-T5QZMENJ.js +47 -0
  105. package/dist/commands/api.d.ts.map +1 -1
  106. package/dist/commands/api.js +57 -7
  107. package/dist/commands/api.js.map +1 -1
  108. package/dist/commands/crm-writes.d.ts.map +1 -1
  109. package/dist/commands/crm-writes.js +24 -8
  110. package/dist/commands/crm-writes.js.map +1 -1
  111. package/dist/commands/crm.d.ts.map +1 -1
  112. package/dist/commands/crm.js +29 -3
  113. package/dist/commands/crm.js.map +1 -1
  114. package/dist/commands/fields.d.ts +3 -0
  115. package/dist/commands/fields.d.ts.map +1 -0
  116. package/dist/commands/fields.js +45 -0
  117. package/dist/commands/fields.js.map +1 -0
  118. package/dist/commands/write.d.ts +6 -1
  119. package/dist/commands/write.d.ts.map +1 -1
  120. package/dist/commands/write.js +7 -5
  121. package/dist/commands/write.js.map +1 -1
  122. package/dist/config.d.ts.map +1 -1
  123. package/dist/config.js +2 -1
  124. package/dist/config.js.map +1 -1
  125. package/dist/crm/conditions.js +1 -1
  126. package/dist/crm/conditions.js.map +1 -1
  127. package/dist/crm/custom-query.d.ts +19 -0
  128. package/dist/crm/custom-query.d.ts.map +1 -0
  129. package/dist/crm/custom-query.js +79 -0
  130. package/dist/crm/custom-query.js.map +1 -0
  131. package/dist/crm/deal.d.ts +7 -3
  132. package/dist/crm/deal.d.ts.map +1 -1
  133. package/dist/crm/deal.js +3 -3
  134. package/dist/crm/deal.js.map +1 -1
  135. package/dist/crm/fields.d.ts +44 -0
  136. package/dist/crm/fields.d.ts.map +1 -0
  137. package/dist/crm/fields.js +143 -0
  138. package/dist/crm/fields.js.map +1 -0
  139. package/dist/crm/items.d.ts +9 -3
  140. package/dist/crm/items.d.ts.map +1 -1
  141. package/dist/crm/items.js +27 -6
  142. package/dist/crm/items.js.map +1 -1
  143. package/dist/crm/lead.d.ts +7 -3
  144. package/dist/crm/lead.d.ts.map +1 -1
  145. package/dist/crm/lead.js +3 -3
  146. package/dist/crm/lead.js.map +1 -1
  147. package/dist/crm/organization.d.ts +7 -3
  148. package/dist/crm/organization.d.ts.map +1 -1
  149. package/dist/crm/organization.js +3 -3
  150. package/dist/crm/organization.js.map +1 -1
  151. package/dist/crm/person.d.ts +7 -3
  152. package/dist/crm/person.d.ts.map +1 -1
  153. package/dist/crm/person.js +3 -3
  154. package/dist/crm/person.js.map +1 -1
  155. package/dist/crm/values.d.ts +12 -1
  156. package/dist/crm/values.d.ts.map +1 -1
  157. package/dist/crm/values.js +12 -2
  158. package/dist/crm/values.js.map +1 -1
  159. package/dist/mcp.d.ts.map +1 -1
  160. package/dist/mcp.js +4 -1
  161. package/dist/mcp.js.map +1 -1
  162. package/dist/program.d.ts.map +1 -1
  163. package/dist/program.js +4 -1
  164. package/dist/program.js.map +1 -1
  165. package/dist/reasons.d.ts.map +1 -1
  166. package/dist/reasons.js +6 -1
  167. package/dist/reasons.js.map +1 -1
  168. package/dist/version.d.ts +1 -1
  169. package/dist/version.js +1 -1
  170. package/package.json +3 -3
  171. package/skills/bitrix24-cli/SKILL.md +8 -3
  172. package/dist/bundle/command-contract-OKQOE6G4.js +0 -30
  173. package/dist/bundle/first-screen-VQM4MTS7.js +0 -28
  174. package/dist/bundle/mcp-J5R5A65I.js +0 -87
  175. package/dist/bundle/server-5LE5LNUQ.js +0 -45
  176. package/dist/bundle/server-BU4VBM6S.js +0 -58
  177. package/dist/bundle/store-maintenance-command-UDVGEY2D.js +0 -47
  178. /package/dist/bundle/{chunk-4PDYYS5K.js → chunk-NDTJE6JQ.js} +0 -0
@@ -3,7 +3,9 @@ import { defineQuery, queryFieldsOf } from "@wirecat/cli-base/query";
3
3
  import { answerEntity, commandPath, itemOf, listQuery, nativeTerms, outputFor, pagedList, REMOTE_READ, renderAnswer, typedQuery, unfilteredQuery, withPaging, withQuery, } from "@wirecat/cli-core/cli";
4
4
  import { Command } from "commander";
5
5
  import { conditionsOf } from "../crm/conditions.js";
6
+ import { customConditions, customNames, filterableFields, selectedCodes, wantedCodes, withCustomFields, } from "../crm/custom-query.js";
6
7
  import { DEAL, DEAL_FIELDS, dealSchema } from "../crm/deal.js";
8
+ import { loadFields } from "../crm/fields.js";
7
9
  import { getItem, listItems, resolveItem } from "../crm/items.js";
8
10
  import { LEAD, LEAD_FIELDS, leadSchema } from "../crm/lead.js";
9
11
  import { ORGANIZATION, ORGANIZATION_FIELDS, organizationSchema } from "../crm/organization.js";
@@ -27,18 +29,31 @@ const nativeQuery = (entity, schema, fields, examples = {}) => defineQuery({
27
29
  examples,
28
30
  }),
29
31
  });
32
+ const CUSTOM_HELP = `
33
+ The portal's own fields, as \`fields list\` prints them:
34
+ <code or label>:<value> a field the portal can filter by; a list field takes its option's label or id.
35
+ A label with spaces: lead_source:web, or Lead\\ source:web
36
+ --json=id,title,provider_metadata.<code> adds that field to each item; provider_metadata alone adds them all`;
30
37
  const windowOf = (command) => {
31
38
  const { settings } = contextOf(command);
32
39
  return settings.all ? { offset: 0 } : { offset: (settings.page - 1) * settings.limit, limit: settings.limit };
33
40
  };
34
41
  const listCommand = (noun) => withPaging(withQuery(answerEntity(annotate(new Command("list"), { effects: REMOTE_READ, offline: false, examples: noun.examples }), noun.entity, noun.schema), noun.query))
35
42
  .description(`list ${noun.what} on the portal, newest first`)
43
+ .addHelpText("after", noun.custom ? CUSTOM_HELP : "")
36
44
  .action(async function (words) {
37
45
  const path = commandPath(this);
38
- const terms = nativeTerms(listQuery(typedQuery(words), noun.query, path, noun.word ? { defaultField: noun.word } : {}), path);
46
+ const text = typedQuery(words);
47
+ const options = noun.word ? { defaultField: noun.word } : {};
48
+ const termsOf = (registry) => nativeTerms(listQuery(text, registry, path, options), path);
49
+ const names = noun.custom ? customNames(text, noun.query, path, noun.word) : [];
50
+ const wanted = noun.custom ? wantedCodes(this.optsWithGlobals().fields) : undefined;
51
+ const terms = names.length ? undefined : termsOf(noun.query);
39
52
  const { settings } = contextOf(this);
40
53
  const window = windowOf(this);
41
- const found = await withPortal(this, (portal) => noun.list(portal, terms, window));
54
+ const found = await withPortal(this, (portal) => noun.custom && (terms === undefined || wanted !== undefined)
55
+ ? noun.custom(portal, { names, wanted, terms: termsOf }, window)
56
+ : noun.list(portal, terms ?? new Map(), window));
42
57
  renderAnswer(this, outputFor(this), pagedList(path, settings, found));
43
58
  });
44
59
  const showCommand = (noun) => answerEntity(annotate(new Command("show"), {
@@ -58,13 +73,24 @@ const nounCommand = (noun, description) => annotate(new Command(noun.noun), { ef
58
73
  .addCommand(showCommand(noun));
59
74
  const itemNoun = (type, shape, examples, listExamples) => {
60
75
  const word = Object.entries(shape.fields).find(([, map]) => map.kind === "word")?.[0];
76
+ const query = nativeQuery(shape.entity, shape.schema, shape.fields, examples);
61
77
  return {
62
78
  ...shape,
63
- query: nativeQuery(shape.entity, shape.schema, shape.fields, examples),
79
+ query,
64
80
  ...(word ? { word } : {}),
65
81
  examples: listExamples,
66
82
  reference: "id-or-name",
67
83
  list: (portal, terms, window) => listItems(portal, type, conditionsOf(terms, shape.fields), window),
84
+ custom: async (portal, { names, wanted, terms: termsOf }, window) => {
85
+ const fields = await loadFields(portal, type.type);
86
+ const chosen = filterableFields(fields, names);
87
+ const terms = termsOf(withCustomFields(query, chosen));
88
+ const custom = customConditions(terms, chosen);
89
+ return listItems(portal, type, [...conditionsOf(terms, shape.fields), ...custom], window, {
90
+ codes: selectedCodes(fields, wanted),
91
+ fields,
92
+ });
93
+ },
68
94
  show: async (portal, reference) => getItem(portal, type, await resolveItem(portal, type, reference)),
69
95
  };
70
96
  };
@@ -1 +1 @@
1
- {"version":3,"file":"crm.js","sourceRoot":"","sources":["../../src/commands/crm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crm.js","sourceRoot":"","sources":["../../src/commands/crm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const fieldsCommand: () => Command;
3
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/commands/fields.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA0DnC,eAAO,MAAM,aAAa,QAAO,OAGH,CAAA"}
@@ -0,0 +1,45 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { annotate } from "@wirecat/cli-base/commands";
3
+ import { answerEntity, commandPath, outputFor, pagedList, REMOTE_READ, renderAnswer, unfilteredQuery, withPaging, withQuery, } from "@wirecat/cli-core/cli";
4
+ import { Command } from "commander";
5
+ import { DEAL } from "../crm/deal.js";
6
+ import { fieldSchema, loadFields } from "../crm/fields.js";
7
+ import { LEAD } from "../crm/lead.js";
8
+ import { ORGANIZATION } from "../crm/organization.js";
9
+ import { PERSON } from "../crm/person.js";
10
+ import { IDENTITY } from "../identity.js";
11
+ import { contextOf, withPortal } from "../portal.js";
12
+ const B24 = IDENTITY.command;
13
+ const KINDS = {
14
+ deals: DEAL.type,
15
+ leads: LEAD.type,
16
+ people: PERSON.type,
17
+ organizations: ORGANIZATION.type,
18
+ };
19
+ const typeOf = (kind) => {
20
+ const type = KINDS[kind];
21
+ if (!type)
22
+ throw new CliError("validation_error", `fields are listed for ${Object.keys(KINDS).join(", ")}; got ${kind}`, {
23
+ reason: "field.unknown-kind",
24
+ allowed: Object.keys(KINDS),
25
+ });
26
+ return type;
27
+ };
28
+ const listCommand = () => withPaging(withQuery(answerEntity(annotate(new Command("list"), {
29
+ effects: REMOTE_READ,
30
+ offline: false,
31
+ examples: [`${B24} work fields list deals`, `${B24} work fields list people --json`],
32
+ }), "crm_field", fieldSchema).argument("<kind>", Object.keys(KINDS).join(", ")), unfilteredQuery("crm_field", fieldSchema)))
33
+ .description("list the portal's custom fields of one kind, with a list field's options")
34
+ .action(async function (kind) {
35
+ const type = typeOf(kind);
36
+ const { settings } = contextOf(this);
37
+ const fields = await withPortal(this, (portal) => loadFields(portal, type));
38
+ const offset = settings.all ? 0 : (settings.page - 1) * settings.limit;
39
+ const end = settings.all ? fields.length : offset + settings.limit;
40
+ renderAnswer(this, outputFor(this), pagedList(commandPath(this), settings, { items: fields.slice(offset, end), has_more: fields.length > end }));
41
+ });
42
+ export const fieldsCommand = () => annotate(new Command("fields"), { effects: REMOTE_READ })
43
+ .description("read the portal's own fields on deals, leads, people and organizations")
44
+ .addCommand(listCommand());
45
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/commands/fields.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
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
4
  export declare const operationIdOf: (given: string | undefined) => string;
@@ -10,12 +11,16 @@ export interface Write {
10
11
  keyed?: boolean;
11
12
  /** Keys checked beside `key`, such as the command key a raw `api call` does the same as. */
12
13
  extra?: readonly string[];
14
+ /** The built-in levels, when the call adds its own key's (`callDefaults`). */
15
+ defaults?: Readonly<Record<string, Level>>;
13
16
  operationId?: string | undefined;
17
+ /** A lookup the write needs, in its own run before the write is checked and sent, as gcal-cli's `api call` reads. */
18
+ prepare?: (portal: BitrixTransport) => Promise<void>;
14
19
  act: (portal: BitrixTransport, operationId: string) => Promise<Record<string, unknown>>;
15
20
  }
16
21
  /**
17
22
  * Every write's one path, as gcal-cli's `api call` (src/commands/api.ts): the read-only lock, the profile's levels,
18
23
  * one question for every key at `ask`, the send journal, and an `operation_id` in the answer (WC-PERM-13, WC-OUT-10).
19
24
  */
20
- export declare const write: (command: Command, { key, assignee, extra: also, keyed, operationId: given, act }: Write) => Promise<void>;
25
+ export declare const write: (command: Command, { key, assignee, extra: also, defaults, keyed, operationId: given, prepare, act, }: Write) => Promise<void>;
21
26
  //# 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,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAQ7D,eAAO,MAAM,aAAa,UAAW,MAAM,GAAG,SAAS,KAAG,MAMzD,CAAA;AAED,MAAM,WAAW,KAAK;IACpB,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAA;IACX,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,kGAAkG;IAClG,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,4FAA4F;IAC5F,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,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,kEAC4D,KAAK,kBA0ClF,CAAA"}
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"AAUA,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;AAQ7D,eAAO,MAAM,aAAa,UAAW,MAAM,GAAG,SAAS,KAAG,MAMzD,CAAA;AAED,MAAM,WAAW,KAAK;IACpB,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAA;IACX,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,kGAAkG;IAClG,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,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,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,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,sFAUb,KAAK,kBA2CT,CAAA"}
@@ -17,7 +17,7 @@ export const operationIdOf = (given) => {
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 const write = async (command, { key, assignee, extra: also = [], keyed = true, operationId: given, act }) => {
20
+ export const write = async (command, { key, assignee, extra: also = [], defaults = permissions.defaults, keyed = true, operationId: given, prepare, act, }) => {
21
21
  const { env, settings, run } = contextOf(command);
22
22
  const lock = readOnlyLockOf(IDENTITY, env);
23
23
  if (lock)
@@ -26,20 +26,22 @@ export const write = async (command, { key, assignee, extra: also = [], keyed =
26
26
  const webhook = webhookOf(command);
27
27
  const self = webhook.userId;
28
28
  const extra = [...also, ...(assignee !== undefined && assignee !== self ? [ASSIGN_KEY] : [])];
29
- const levelOf = (one) => levelFor(settings.permissions, one, permissions.defaults).level;
29
+ const levelOf = (one) => levelFor(settings.permissions, one, defaults).level;
30
30
  const guard = keyedGuard((ask) => guardFor(IDENTITY,
31
31
  // 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: permissions.defaults }, outputFor(command).renderer.warn, environmentOf(command).env ?? process.env, ask), terminalAsker(command), levelOf, extra);
32
+ { ...settings, sendsPerHour: Number.MAX_SAFE_INTEGER, permissionDefaults: defaults }, outputFor(command).renderer.warn, environmentOf(command).env ?? process.env, ask), terminalAsker(command), levelOf, extra);
33
33
  const request = { chatId: null, kind: "edit", key, operationId };
34
34
  guard.refuse(request);
35
+ if (prepare)
36
+ await run((events) => prepare(transportFor(command, webhook, events)));
35
37
  let done;
36
38
  try {
37
39
  done = await guardedWrite(guard, request, () => run((events) => act(transportFor(command, webhook, events), operationId)));
38
40
  }
39
41
  catch (error) {
40
42
  if (keyed && error instanceof CliError && error.code === "outcome_unknown")
41
- throw new CliError("outcome_unknown", `${error.message} — repeat it with --operation-id ${operationId}: Bitrix24 answers a repeat from its record ` +
42
- "instead of running it again", { ...error.details, operation_id: operationId });
43
+ throw new CliError("outcome_unknown", `${error.message} — check the portal, and repeat it with --operation-id ${operationId} only if it is not ` +
44
+ "there: Bitrix24's documentation says a repeat with that key is answered from its record, not run again", { ...error.details, operation_id: operationId });
43
45
  throw error;
44
46
  }
45
47
  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":"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"}
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"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"}
@@ -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;AAI3G;;;GAGG;AACH,eAAO,MAAM,UAAU,sBAAsB,CAAA;AAM7C,eAAO,MAAM,WAAW,oDAItB,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,aAAsD,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAmD,MAAM,uBAAuB,CAAA;AAI3G;;;GAGG;AACH,eAAO,MAAM,UAAU,sBAAsB,CAAA;AAM7C,eAAO,MAAM,WAAW,oDAKtB,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,aAAsD,CAAA"}
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { commandPathKey, commandPermissions, settingsFor } from "@wirecat/cli-core/cli";
2
- import { API_DEFAULTS, API_KEYS } from "./api-keys.js";
2
+ import { API_DEFAULTS, API_KEYS, apiKeysOf } from "./api-keys.js";
3
3
  import { IDENTITY } from "./identity.js";
4
4
  /**
5
5
  * Assigning a record to another employee tells that employee in Bitrix24 by itself, so it is its own key, denied
@@ -10,6 +10,7 @@ export const ASSIGN_KEY = "crm.assign-others";
10
10
  const keyOf = (path) => path[0] === "api" && ["call", "list", "show"].includes(path[1] ?? "") ? null : commandPathKey(path);
11
11
  export const permissions = commandPermissions({
12
12
  keyOf,
13
+ alsoChecks: apiKeysOf,
13
14
  extra: [ASSIGN_KEY, ...API_KEYS],
14
15
  defaults: { [ASSIGN_KEY]: "deny", ...API_DEFAULTS },
15
16
  });
@@ -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,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAA;AAE7C,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,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;IAC5C,KAAK;IACL,KAAK,EAAE,CAAC,UAAU,EAAE,GAAG,QAAQ,CAAC;IAChC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE;CACpD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAkB,WAAW,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA"}
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,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAA;AAE7C,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,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;IAC5C,KAAK;IACL,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,CAAC,UAAU,EAAE,GAAG,QAAQ,CAAC;IAChC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE;CACpD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAkB,WAAW,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA"}
@@ -5,7 +5,7 @@ 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*$/.test(raw)))
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
  });
@@ -1 +1 @@
1
- {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/crm/conditions.ts"],"names":[],"mappings":"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"}
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;AAEpH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,KAAK,KAAK,EAAqC,MAAM,aAAa,CAAA;AAE3E,+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 { findField, optionOf, unknownField } from "./fields.js";
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 = findField(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":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as v from "valibot";
2
2
  import type { FieldMap } from "./conditions.js";
3
3
  import type { ItemType } from "./items.js";
4
- import { type Raw } from "./values.js";
4
+ import { type Metadata, type Raw } from "./values.js";
5
5
  export declare const dealSchema: v.StrictObjectSchema<{
6
6
  readonly id: v.StringSchema<undefined>;
7
7
  readonly title: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -17,11 +17,15 @@ export declare const dealSchema: v.StrictObjectSchema<{
17
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
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
19
  readonly url: v.NullableSchema<v.StringSchema<undefined>, undefined>;
20
- readonly provider_metadata: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, 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
+ readonly option_id: v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.ArraySchema<v.StringSchema<undefined>, undefined>], undefined>, undefined>;
24
+ }, undefined>, undefined>, undefined>;
21
25
  }, undefined>;
22
26
  export type Deal = v.InferOutput<typeof dealSchema>;
23
27
  export declare const DEAL_FIELDS: Record<string, FieldMap>;
24
28
  /** Bitrix24 ⇄ neutral for a deal. */
25
- export declare const fromBitrixDeal: (raw: Raw, custom?: Raw) => Deal;
29
+ export declare const fromBitrixDeal: (raw: Raw, metadata?: Metadata) => Deal;
26
30
  export declare const DEAL: ItemType<Deal>;
27
31
  //# sourceMappingURL=deal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deal.d.ts","sourceRoot":"","sources":["../../src/crm/deal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EASL,KAAK,GAAG,EAGT,MAAM,aAAa,CAAA;AAEpB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;aAgBrB,CAAA;AAEF,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC,CAAA;AAEnD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAWhD,CAAA;AAED,qCAAqC;AACrC,eAAO,MAAM,cAAc,QAAS,GAAG,WAAW,GAAG,KAAG,IAgBtD,CAAA;AAEF,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI,CAuB/B,CAAA"}
1
+ {"version":3,"file":"deal.d.ts","sourceRoot":"","sources":["../../src/crm/deal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAGL,KAAK,QAAQ,EAMb,KAAK,GAAG,EAGT,MAAM,aAAa,CAAA;AAEpB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;aAgBrB,CAAA;AAEF,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC,CAAA;AAEnD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAWhD,CAAA;AAED,qCAAqC;AACrC,eAAO,MAAM,cAAc,QAAS,GAAG,aAAa,QAAQ,KAAG,IAgB7D,CAAA;AAEF,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI,CAuB/B,CAAA"}
package/dist/crm/deal.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as v from "valibot";
2
- import { customFields, id, ids, metadataSchema, nullableTime, number, OUTCOMES, outcomeOf, text, time, } from "./values.js";
2
+ import { id, ids, metadataSchema, nullableTime, number, OUTCOMES, outcomeOf, text, time, } from "./values.js";
3
3
  export const dealSchema = v.strictObject({
4
4
  id: v.string(),
5
5
  title: v.nullable(v.string()),
@@ -30,7 +30,7 @@ export const DEAL_FIELDS = {
30
30
  updated_at: { field: "updatedTime", kind: "time" },
31
31
  };
32
32
  /** Bitrix24 ⇄ neutral for a deal. */
33
- export const fromBitrixDeal = (raw, custom) => ({
33
+ export const fromBitrixDeal = (raw, metadata) => ({
34
34
  id: id(raw.id) ?? "",
35
35
  title: text(raw.title),
36
36
  pipeline_id: text(raw.categoryId),
@@ -45,7 +45,7 @@ export const fromBitrixDeal = (raw, custom) => ({
45
45
  created_at: time(raw.createdTime),
46
46
  updated_at: time(raw.updatedTime),
47
47
  url: text(raw.url),
48
- ...(custom && Object.keys(customFields(custom)).length ? { provider_metadata: customFields(custom) } : {}),
48
+ ...(metadata ? { provider_metadata: metadata } : {}),
49
49
  });
50
50
  export const DEAL = {
51
51
  type: "deal",
@@ -1 +1 @@
1
- {"version":3,"file":"deal.js","sourceRoot":"","sources":["../../src/crm/deal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deal.js","sourceRoot":"","sources":["../../src/crm/deal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import * as v from "valibot";
3
+ import type { BitrixTransport } from "../bitrix/transport.js";
4
+ import type { ItemType } from "./items.js";
5
+ import { type Metadata, type Raw } from "./values.js";
6
+ export declare const fieldSchema: v.StrictObjectSchema<{
7
+ readonly code: v.StringSchema<undefined>;
8
+ readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
9
+ readonly type: v.StringSchema<undefined>;
10
+ readonly multiple: v.BooleanSchema<undefined>;
11
+ readonly filterable: v.BooleanSchema<undefined>;
12
+ /** A list field's options; absent on any other field. */
13
+ readonly options: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
14
+ readonly id: v.StringSchema<undefined>;
15
+ readonly label: v.StringSchema<undefined>;
16
+ }, undefined>, undefined>, undefined>;
17
+ }, undefined>;
18
+ /** One of the portal's own fields on deals, leads, contacts or companies. */
19
+ export type Field = v.InferOutput<typeof fieldSchema>;
20
+ /**
21
+ * The portal's custom fields of one type, in two calls that need only read rights: REST 3.0's `field.list` has the
22
+ * title and whether a list can filter by it, and REST 2's `userfield.list` the real type and a list field's options,
23
+ * which `field.list` shows only as `int` (apidocs crm.<type>.field.custom.enum.list).
24
+ */
25
+ export declare const loadFields: (portal: BitrixTransport, type: ItemType<unknown>["type"]) => Promise<Field[]>;
26
+ /** Custom values as `{ label, value }`, a list field's option ids turned into their labels. */
27
+ export declare const metadataOf: (custom: Record<string, unknown>, fields: readonly Field[]) => Metadata;
28
+ /** No field by that name: the fields whose code or label holds it, or is held in it, as candidates. */
29
+ export declare const unknownField: (fields: readonly Field[], name: string) => CliError;
30
+ /**
31
+ * A custom field by its code, or by its whole label; two fields with that label are refused with both, never
32
+ * guessed (as `resolveItem` refuses two records).
33
+ */
34
+ export declare const findField: (fields: readonly Field[], name: string) => Field;
35
+ /** A list field's option by its id or its whole label. */
36
+ export declare const optionOf: (field: Field, value: string) => string;
37
+ /** `--field` as typed, split at the first `=`. */
38
+ export declare const fieldPairsOf: (typed: readonly string[]) => [string, string][];
39
+ /**
40
+ * The custom values to write, by code, as typed: a list field's options as their ids, numbers as `field.list` types
41
+ * them (`int`), and a multiple field's values as an array.
42
+ */
43
+ export declare const customValues: (fields: readonly Field[], pairs: readonly [string, string][]) => Raw;
44
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/crm/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,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,eAAO,MAAM,WAAW;;;;;;IAMtB,yDAAyD;;;;;aAEzD,CAAA;AAEF,6EAA6E;AAC7E,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,WAAW,CAAC,CAAA;AAOrD;;;;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;AAWD,uGAAuG;AACvG,eAAO,MAAM,YAAY,WAAY,SAAS,KAAK,EAAE,QAAQ,MAAM,aAalE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,WAAY,SAAS,KAAK,EAAE,QAAQ,MAAM,KAAG,KAgBlE,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,QAAQ,UAAW,KAAK,SAAS,MAAM,KAAG,MAatD,CAAA;AAED,kDAAkD;AAClD,eAAO,MAAM,YAAY,UAAW,SAAS,MAAM,EAAE,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAMpE,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,YAAY,WAAY,SAAS,KAAK,EAAE,SAAS,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAG,GAiB3F,CAAA"}