@eyeauras/youtrack-cli 0.5.6 → 0.5.7

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 (93) hide show
  1. package/README.md +63 -56
  2. package/dist/src/agile-commands.d.ts.map +1 -1
  3. package/dist/src/agile-commands.js +8 -9
  4. package/dist/src/agile-commands.js.map +1 -1
  5. package/dist/src/agile.d.ts.map +1 -1
  6. package/dist/src/agile.js +9 -15
  7. package/dist/src/agile.js.map +1 -1
  8. package/dist/src/article-extras-commands.d.ts.map +1 -1
  9. package/dist/src/article-extras-commands.js +13 -12
  10. package/dist/src/article-extras-commands.js.map +1 -1
  11. package/dist/src/articles-commands.d.ts.map +1 -1
  12. package/dist/src/articles-commands.js +15 -12
  13. package/dist/src/articles-commands.js.map +1 -1
  14. package/dist/src/articles.d.ts.map +1 -1
  15. package/dist/src/articles.js +13 -14
  16. package/dist/src/articles.js.map +1 -1
  17. package/dist/src/attachment-download-commands.d.ts.map +1 -1
  18. package/dist/src/attachment-download-commands.js +7 -5
  19. package/dist/src/attachment-download-commands.js.map +1 -1
  20. package/dist/src/attachment-download.d.ts +1 -0
  21. package/dist/src/attachment-download.d.ts.map +1 -1
  22. package/dist/src/attachment-download.js +16 -26
  23. package/dist/src/attachment-download.js.map +1 -1
  24. package/dist/src/attachment-form.js +3 -3
  25. package/dist/src/attachment-form.js.map +1 -1
  26. package/dist/src/bundle-values-commands.d.ts.map +1 -1
  27. package/dist/src/bundle-values-commands.js +21 -18
  28. package/dist/src/bundle-values-commands.js.map +1 -1
  29. package/dist/src/cli-support.d.ts +5 -5
  30. package/dist/src/cli-support.d.ts.map +1 -1
  31. package/dist/src/cli-support.js +28 -26
  32. package/dist/src/cli-support.js.map +1 -1
  33. package/dist/src/cli.d.ts.map +1 -1
  34. package/dist/src/cli.js +52 -34
  35. package/dist/src/cli.js.map +1 -1
  36. package/dist/src/client.d.ts +5 -2
  37. package/dist/src/client.d.ts.map +1 -1
  38. package/dist/src/client.js +66 -49
  39. package/dist/src/client.js.map +1 -1
  40. package/dist/src/field-catalog-commands.d.ts.map +1 -1
  41. package/dist/src/field-catalog-commands.js +19 -16
  42. package/dist/src/field-catalog-commands.js.map +1 -1
  43. package/dist/src/group-directory-commands.d.ts.map +1 -1
  44. package/dist/src/group-directory-commands.js +17 -16
  45. package/dist/src/group-directory-commands.js.map +1 -1
  46. package/dist/src/issue-attachments-commands.d.ts.map +1 -1
  47. package/dist/src/issue-attachments-commands.js +9 -8
  48. package/dist/src/issue-attachments-commands.js.map +1 -1
  49. package/dist/src/issue-batch.d.ts +2 -0
  50. package/dist/src/issue-batch.d.ts.map +1 -1
  51. package/dist/src/issue-batch.js +14 -10
  52. package/dist/src/issue-batch.js.map +1 -1
  53. package/dist/src/issue-context-commands.d.ts.map +1 -1
  54. package/dist/src/issue-context-commands.js +13 -12
  55. package/dist/src/issue-context-commands.js.map +1 -1
  56. package/dist/src/issue-context.d.ts.map +1 -1
  57. package/dist/src/issue-context.js +9 -13
  58. package/dist/src/issue-context.js.map +1 -1
  59. package/dist/src/issue-fields-commands.d.ts.map +1 -1
  60. package/dist/src/issue-fields-commands.js +10 -9
  61. package/dist/src/issue-fields-commands.js.map +1 -1
  62. package/dist/src/issue-fields.d.ts +2 -4
  63. package/dist/src/issue-fields.d.ts.map +1 -1
  64. package/dist/src/issue-fields.js +39 -100
  65. package/dist/src/issue-fields.js.map +1 -1
  66. package/dist/src/issue-query-commands.d.ts.map +1 -1
  67. package/dist/src/issue-query-commands.js +15 -14
  68. package/dist/src/issue-query-commands.js.map +1 -1
  69. package/dist/src/issue-query.d.ts.map +1 -1
  70. package/dist/src/issue-query.js +7 -10
  71. package/dist/src/issue-query.js.map +1 -1
  72. package/dist/src/issue-relations-commands.d.ts.map +1 -1
  73. package/dist/src/issue-relations-commands.js +17 -16
  74. package/dist/src/issue-relations-commands.js.map +1 -1
  75. package/dist/src/issue-relations.js +2 -2
  76. package/dist/src/issue-relations.js.map +1 -1
  77. package/dist/src/issue-time-commands.d.ts.map +1 -1
  78. package/dist/src/issue-time-commands.js +12 -11
  79. package/dist/src/issue-time-commands.js.map +1 -1
  80. package/dist/src/issue-time.d.ts.map +1 -1
  81. package/dist/src/issue-time.js +16 -19
  82. package/dist/src/issue-time.js.map +1 -1
  83. package/dist/src/presentation.d.ts +59 -0
  84. package/dist/src/presentation.d.ts.map +1 -0
  85. package/dist/src/presentation.js +467 -0
  86. package/dist/src/presentation.js.map +1 -0
  87. package/dist/src/time-settings-commands.d.ts.map +1 -1
  88. package/dist/src/time-settings-commands.js +13 -11
  89. package/dist/src/time-settings-commands.js.map +1 -1
  90. package/dist/src/user-directory-commands.d.ts.map +1 -1
  91. package/dist/src/user-directory-commands.js +14 -12
  92. package/dist/src/user-directory-commands.js.map +1 -1
  93. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"field-catalog-commands.d.ts","sourceRoot":"","sources":["../../src/field-catalog-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAgBxE,eAAO,MAAM,wBAAwB,EAAE,SAAS,iBAAiB,EAQhE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,SAAS,iBAAiB,EAyClE,CAAC"}
1
+ {"version":3,"file":"field-catalog-commands.d.ts","sourceRoot":"","sources":["../../src/field-catalog-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAoBxE,eAAO,MAAM,wBAAwB,EAAE,SAAS,iBAAiB,EAQhE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,SAAS,iBAAiB,EAiBlE,CAAC"}
@@ -1,30 +1,33 @@
1
1
  import { command } from "@eyeauras/cli-factory";
2
2
  import { pagedRead, projectedRead } from "./cli-support.js";
3
3
  import { getCustomField, getEnumBundle, getEnumValue, getStateBundle, getStateValue, listCustomFields, listEnumBundles, listEnumValues, listFieldTypes, listStateBundles, listStateValues, } from "./field-catalog.js";
4
+ import { fieldTable, namedTable } from "./presentation.js";
5
+ const bundleTable = namedTable("BUNDLE", "No bundles.");
6
+ const valueTable = namedTable("VALUE", "No values.");
4
7
  export const fieldCatalogRootCommands = [
5
- command("field", "Inspect global custom fields and their types", [
6
- pagedRead("list", "List one page of global custom fields", listCustomFields),
7
- projectedRead("get <field>", "Show a global custom field by database ID", getCustomField),
8
+ command("field", "Inspect custom fields and their types", [
9
+ pagedRead("list", "List custom fields", listCustomFields, fieldTable),
10
+ projectedRead("get <field>", "Show a custom field", getCustomField),
8
11
  command("type", "Inspect custom-field types", [
9
- pagedRead("list", "List one page of supported field types", listFieldTypes),
12
+ pagedRead("list", "List field types", listFieldTypes, namedTable("TYPE", "No field types.")),
10
13
  ]),
11
14
  ]),
12
15
  ];
13
16
  export const fieldCatalogBundleChildren = [
14
- command("enum", "Inspect enum bundles and their values", [
15
- pagedRead("list", "List one page of enum bundles without expanding values", listEnumBundles),
16
- projectedRead("get <bundle>", "Show an enum bundle by database ID without expanding values", getEnumBundle),
17
- command("value", "Inspect values in an enum bundle", [
18
- pagedRead("list <bundle>", "List one page of enum values, preserving archived entries", listEnumValues),
19
- projectedRead("get <bundle> <value>", "Show an enum value by database ID", getEnumValue),
17
+ command("enum", "Inspect enum bundles", [
18
+ pagedRead("list", "List enum bundles", listEnumBundles, bundleTable),
19
+ projectedRead("get <bundle>", "Show an enum bundle", getEnumBundle),
20
+ command("value", "Inspect enum values", [
21
+ pagedRead("list <bundle>", "List the bundle's values", listEnumValues, valueTable),
22
+ projectedRead("get <bundle> <value>", "Show an enum value", getEnumValue),
20
23
  ]),
21
24
  ]),
22
- command("state", "Inspect state bundles and their values", [
23
- pagedRead("list", "List one page of state bundles without expanding values", listStateBundles),
24
- projectedRead("get <bundle>", "Show a state bundle by database ID without expanding values", getStateBundle),
25
- command("value", "Inspect values in a state bundle", [
26
- pagedRead("list <bundle>", "List one page of state values, preserving archived entries", listStateValues),
27
- projectedRead("get <bundle> <value>", "Show a state value and whether it resolves an issue", getStateValue),
25
+ command("state", "Inspect state bundles", [
26
+ pagedRead("list", "List state bundles", listStateBundles, bundleTable),
27
+ projectedRead("get <bundle>", "Show a state bundle", getStateBundle),
28
+ command("value", "Inspect state values", [
29
+ pagedRead("list <bundle>", "List the bundle's values", listStateValues, valueTable),
30
+ projectedRead("get <bundle> <value>", "Show a state value", getStateValue),
28
31
  ]),
29
32
  ]),
30
33
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"field-catalog-commands.js","sourceRoot":"","sources":["../../src/field-catalog-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,MAAM,wBAAwB,GAAiC;IACpE,OAAO,CAAC,OAAO,EAAE,8CAA8C,EAAE;QAC/D,SAAS,CAAC,MAAM,EAAE,uCAAuC,EAAE,gBAAgB,CAAC;QAC5E,aAAa,CAAC,aAAa,EAAE,2CAA2C,EAAE,cAAc,CAAC;QACzF,OAAO,CAAC,MAAM,EAAE,4BAA4B,EAAE;YAC5C,SAAS,CAAC,MAAM,EAAE,wCAAwC,EAAE,cAAc,CAAC;SAC5E,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAiC;IACtE,OAAO,CAAC,MAAM,EAAE,uCAAuC,EAAE;QACvD,SAAS,CAAC,MAAM,EAAE,wDAAwD,EAAE,eAAe,CAAC;QAC5F,aAAa,CACX,cAAc,EACd,6DAA6D,EAC7D,aAAa,CACd;QACD,OAAO,CAAC,OAAO,EAAE,kCAAkC,EAAE;YACnD,SAAS,CACP,eAAe,EACf,2DAA2D,EAC3D,cAAc,CACf;YACD,aAAa,CACX,sBAAsB,EACtB,mCAAmC,EACnC,YAAY,CACb;SACF,CAAC;KACH,CAAC;IACF,OAAO,CAAC,OAAO,EAAE,wCAAwC,EAAE;QACzD,SAAS,CAAC,MAAM,EAAE,yDAAyD,EAAE,gBAAgB,CAAC;QAC9F,aAAa,CACX,cAAc,EACd,6DAA6D,EAC7D,cAAc,CACf;QACD,OAAO,CAAC,OAAO,EAAE,kCAAkC,EAAE;YACnD,SAAS,CACP,eAAe,EACf,4DAA4D,EAC5D,eAAe,CAChB;YACD,aAAa,CACX,sBAAsB,EACtB,qDAAqD,EACrD,aAAa,CACd;SACF,CAAC;KACH,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"field-catalog-commands.js","sourceRoot":"","sources":["../../src/field-catalog-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACxD,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,wBAAwB,GAAiC;IACpE,OAAO,CAAC,OAAO,EAAE,uCAAuC,EAAE;QACxD,SAAS,CAAC,MAAM,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,UAAU,CAAC;QACrE,aAAa,CAAC,aAAa,EAAE,qBAAqB,EAAE,cAAc,CAAC;QACnE,OAAO,CAAC,MAAM,EAAE,4BAA4B,EAAE;YAC5C,SAAS,CAAC,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;SAC7F,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAiC;IACtE,OAAO,CAAC,MAAM,EAAE,sBAAsB,EAAE;QACtC,SAAS,CAAC,MAAM,EAAE,mBAAmB,EAAE,eAAe,EAAE,WAAW,CAAC;QACpE,aAAa,CAAC,cAAc,EAAE,qBAAqB,EAAE,aAAa,CAAC;QACnE,OAAO,CAAC,OAAO,EAAE,qBAAqB,EAAE;YACtC,SAAS,CAAC,eAAe,EAAE,0BAA0B,EAAE,cAAc,EAAE,UAAU,CAAC;YAClF,aAAa,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,YAAY,CAAC;SAC1E,CAAC;KACH,CAAC;IACF,OAAO,CAAC,OAAO,EAAE,uBAAuB,EAAE;QACxC,SAAS,CAAC,MAAM,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,WAAW,CAAC;QACtE,aAAa,CAAC,cAAc,EAAE,qBAAqB,EAAE,cAAc,CAAC;QACpE,OAAO,CAAC,OAAO,EAAE,sBAAsB,EAAE;YACvC,SAAS,CAAC,eAAe,EAAE,0BAA0B,EAAE,eAAe,EAAE,UAAU,CAAC;YACnF,aAAa,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,aAAa,CAAC;SAC3E,CAAC;KACH,CAAC;CACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"group-directory-commands.d.ts","sourceRoot":"","sources":["../../src/group-directory-commands.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,0BAA0B,qDAoBtC,CAAC;AAEF,eAAO,MAAM,6BAA6B,qDA2BzC,CAAC"}
1
+ {"version":3,"file":"group-directory-commands.d.ts","sourceRoot":"","sources":["../../src/group-directory-commands.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,0BAA0B,qDAoBtC,CAAC;AAEF,eAAO,MAAM,6BAA6B,qDAmBzC,CAAC"}
@@ -1,36 +1,37 @@
1
1
  import { command } from "@eyeauras/cli-factory";
2
2
  import { pagedRead, projectedRead, readCommand, pageOptions, readOptions } from "./cli-support.js";
3
3
  import { getGroup, getProjectTeam, listGroupMembers, listGroups, listProjectTeamGroups, listProjectTeamUsers, listSubgroups, } from "./group-directory.js";
4
+ import { groupRecord, groupTable, userTable, withView } from "./presentation.js";
4
5
  const memberOptions = [
5
6
  ...pageOptions,
6
- { flags: "--direct", description: "Only directly added users; exclude inherited membership" },
7
+ { flags: "--direct", description: "Directly added users only" },
7
8
  ];
8
9
  export const groupDirectoryRootCommands = [
9
- command("group", "Inspect user groups and membership", [
10
- pagedRead("list", "List one page of visible groups without expanding members", listGroups),
11
- projectedRead("get <group>", "Read a group by database ID without expanding members", getGroup),
12
- command("member", "Inspect direct or inherited group members", [
13
- readCommand("list <group>", "List one page of members, including inherited users unless --direct is set", async (connection, { args, options }, context) => listGroupMembers(connection, args.group, {
10
+ command("group", "Inspect user groups", [
11
+ pagedRead("list", "List groups", listGroups, groupTable),
12
+ projectedRead("get <group>", "Show a group", getGroup, groupRecord),
13
+ command("member", "Inspect group members", [
14
+ withView(userTable, readCommand("list <group>", "List members, including inherited ones", async (connection, { args, options }, context) => listGroupMembers(connection, args.group, {
14
15
  ...readOptions(options),
15
16
  direct: options.direct === true,
16
- }), memberOptions),
17
+ }), memberOptions)),
17
18
  ]),
18
- command("subgroup", "Inspect nested groups without recursive traversal", [
19
- pagedRead("list <group>", "List one page of immediate subgroups", listSubgroups),
19
+ command("subgroup", "Inspect nested groups", [
20
+ pagedRead("list <group>", "List the immediate subgroups", listSubgroups, groupTable),
20
21
  ]),
21
22
  ]),
22
23
  ];
23
24
  export const groupDirectoryProjectChildren = [
24
- command("team", "Inspect project teams (YouTrack 2026.1+)", [
25
- projectedRead("get <project>", "Read team identity and member count without expanding membership", getProjectTeam),
26
- command("group", "Inspect groups added to the project team", [
27
- pagedRead("list <project>", "List one page of team groups without expanding their users", listProjectTeamGroups),
25
+ command("team", "Inspect the project team (YouTrack 2026.1+)", [
26
+ projectedRead("get <project>", "Show the team", getProjectTeam, groupRecord),
27
+ command("group", "Inspect the team's groups", [
28
+ pagedRead("list <project>", "List the team's groups", listProjectTeamGroups, groupTable),
28
29
  ]),
29
- command("user", "Inspect direct or inherited project-team users", [
30
- readCommand("list <project>", "List one page of team users, including group members unless --direct is set", async (connection, { args, options }, context) => listProjectTeamUsers(connection, args.project, {
30
+ command("user", "Inspect the team's users", [
31
+ withView(userTable, readCommand("list <project>", "List team users, including group members", async (connection, { args, options }, context) => listProjectTeamUsers(connection, args.project, {
31
32
  ...readOptions(options),
32
33
  direct: options.direct === true,
33
- }), memberOptions),
34
+ }), memberOptions)),
34
35
  ]),
35
36
  ]),
36
37
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"group-directory-commands.js","sourceRoot":"","sources":["../../src/group-directory-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EACL,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,MAAM,aAAa,GAAG;IACpB,GAAG,WAAW;IACd,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,yDAAyD,EAAE;CAC9F,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,OAAO,CAAC,OAAO,EAAE,oCAAoC,EAAE;QACrD,SAAS,CAAC,MAAM,EAAE,2DAA2D,EAAE,UAAU,CAAC;QAC1F,aAAa,CAAC,aAAa,EAAE,uDAAuD,EAAE,QAAQ,CAAC;QAC/F,OAAO,CAAC,QAAQ,EAAE,2CAA2C,EAAE;YAC7D,WAAW,CACT,cAAc,EACd,4EAA4E,EAC5E,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAC/C,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE;gBACvC,GAAG,WAAW,CAAC,OAAO,CAAC;gBACvB,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;aAChC,CAAC,EACJ,aAAa,CACd;SACF,CAAC;QACF,OAAO,CAAC,UAAU,EAAE,mDAAmD,EAAE;YACvE,SAAS,CAAC,cAAc,EAAE,sCAAsC,EAAE,aAAa,CAAC;SACjF,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,OAAO,CAAC,MAAM,EAAE,0CAA0C,EAAE;QAC1D,aAAa,CACX,eAAe,EACf,kEAAkE,EAClE,cAAc,CACf;QACD,OAAO,CAAC,OAAO,EAAE,0CAA0C,EAAE;YAC3D,SAAS,CACP,gBAAgB,EAChB,4DAA4D,EAC5D,qBAAqB,CACtB;SACF,CAAC;QACF,OAAO,CAAC,MAAM,EAAE,gDAAgD,EAAE;YAChE,WAAW,CACT,gBAAgB,EAChB,6EAA6E,EAC7E,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAC/C,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE;gBAC7C,GAAG,WAAW,CAAC,OAAO,CAAC;gBACvB,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;aAChC,CAAC,EACJ,aAAa,CACd;SACF,CAAC;KACH,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"group-directory-commands.js","sourceRoot":"","sources":["../../src/group-directory-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EACL,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEjF,MAAM,aAAa,GAAG;IACpB,GAAG,WAAW;IACd,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,2BAA2B,EAAE;CAChE,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,OAAO,CAAC,OAAO,EAAE,qBAAqB,EAAE;QACtC,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC;QACxD,aAAa,CAAC,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC;QACnE,OAAO,CAAC,QAAQ,EAAE,uBAAuB,EAAE;YACzC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAC7B,cAAc,EACd,wCAAwC,EACxC,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAC/C,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE;gBACvC,GAAG,WAAW,CAAC,OAAO,CAAC;gBACvB,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;aAChC,CAAC,EACJ,aAAa,CACd,CAAC;SACH,CAAC;QACF,OAAO,CAAC,UAAU,EAAE,uBAAuB,EAAE;YAC3C,SAAS,CAAC,cAAc,EAAE,8BAA8B,EAAE,aAAa,EAAE,UAAU,CAAC;SACrF,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,OAAO,CAAC,MAAM,EAAE,6CAA6C,EAAE;QAC7D,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,CAAC;QAC5E,OAAO,CAAC,OAAO,EAAE,2BAA2B,EAAE;YAC5C,SAAS,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,UAAU,CAAC;SACzF,CAAC;QACF,OAAO,CAAC,MAAM,EAAE,0BAA0B,EAAE;YAC1C,QAAQ,CAAC,SAAS,EAAE,WAAW,CAC7B,gBAAgB,EAChB,0CAA0C,EAC1C,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAC/C,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE;gBAC7C,GAAG,WAAW,CAAC,OAAO,CAAC;gBACvB,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;aAChC,CAAC,EACJ,aAAa,CACd,CAAC;SACH,CAAC;KACH,CAAC;CACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"issue-attachments-commands.d.ts","sourceRoot":"","sources":["../../src/issue-attachments-commands.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,wBAAwB,qDAgCpC,CAAC"}
1
+ {"version":3,"file":"issue-attachments-commands.d.ts","sourceRoot":"","sources":["../../src/issue-attachments-commands.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,wBAAwB,qDAwBpC,CAAC"}
@@ -1,21 +1,22 @@
1
1
  import { command } from "@eyeauras/cli-factory";
2
- import { requiredText } from "./client.js";
2
+ import { inputFilePath } from "./client.js";
3
3
  import { attachmentDownloadCommand } from "./attachment-download-commands.js";
4
4
  import { pagedRead, projectedRead, updateCommand } from "./cli-support.js";
5
5
  import { getIssueAttachment, listIssueAttachments, uploadIssueAttachment, } from "./issue-attachments.js";
6
+ import { attachmentRecord, attachmentTable, uploadedAttachments, withView } from "./presentation.js";
6
7
  export const attachmentsIssueChildren = [
7
- command("attachments", "Inspect, upload or download one selected attachment", [
8
+ command("attachments", "Inspect, upload or download attachments", [
8
9
  attachmentDownloadCommand,
9
- pagedRead("list <issueID>", "List one page of attachment metadata without downloading files", listIssueAttachments),
10
- projectedRead("get <issueID> <attachmentID>", "Read attachment metadata without downloading its contents", getIssueAttachment),
11
- updateCommand("upload <issueID>", "Upload one selected regular file to an existing issue", async (connection, { args, options }, context) => uploadIssueAttachment(connection, args.issueID, String(options.file)), [
10
+ pagedRead("list <issueID>", "List attachments", listIssueAttachments, attachmentTable),
11
+ projectedRead("get <issueID> <attachmentID>", "Show an attachment", getIssueAttachment, attachmentRecord),
12
+ withView(uploadedAttachments, updateCommand("upload <issueID>", "Upload a file to the issue", async (connection, { args, options }, context) => uploadIssueAttachment(connection, args.issueID, String(options.file)), [
12
13
  {
13
14
  flags: "--file <path>",
14
- description: "Required explicit local input file; no copies or recursion",
15
+ description: "Local file to upload",
15
16
  required: true,
16
- parse: (value) => requiredText(value, "file path"),
17
+ parse: inputFilePath,
17
18
  },
18
- ]),
19
+ ])),
19
20
  ]),
20
21
  ];
21
22
  //# sourceMappingURL=issue-attachments-commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"issue-attachments-commands.js","sourceRoot":"","sources":["../../src/issue-attachments-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO,CAAC,aAAa,EAAE,qDAAqD,EAAE;QAC5E,yBAAyB;QACzB,SAAS,CACP,gBAAgB,EAChB,gEAAgE,EAChE,oBAAoB,CACrB;QACD,aAAa,CACX,8BAA8B,EAC9B,2DAA2D,EAC3D,kBAAkB,CACnB;QACD,aAAa,CACX,kBAAkB,EAClB,uDAAuD,EACvD,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAC/C,qBAAqB,CACnB,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CACrB,EACH;YACI;gBACE,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,4DAA4D;gBACzE,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC;aACnD;SACF,CACJ;KACF,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"issue-attachments-commands.js","sourceRoot":"","sources":["../../src/issue-attachments-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAErG,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO,CAAC,aAAa,EAAE,yCAAyC,EAAE;QAChE,yBAAyB;QACzB,SAAS,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,CAAC;QACtF,aAAa,CAAC,8BAA8B,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;QACzG,QAAQ,CAAC,mBAAmB,EAAE,aAAa,CACzC,kBAAkB,EAClB,4BAA4B,EAC5B,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAC/C,qBAAqB,CACnB,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CACrB,EACH;YACI;gBACE,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,sBAAsB;gBACnC,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,aAAa;aACrB;SACF,CACJ,CAAC;KACH,CAAC;CACH,CAAC"}
@@ -16,6 +16,8 @@ export declare function applyIssueBatch(connection: Connection, rows: readonly B
16
16
  appDataDirectory: string;
17
17
  continueOnError?: boolean;
18
18
  failedRows?: string;
19
+ /** One human-only line per failed row and every ten rows. */
20
+ progress?: (message: string) => void;
19
21
  }): Promise<{
20
22
  status: string;
21
23
  completed: number;
@@ -1 +1 @@
1
- {"version":3,"file":"issue-batch.d.ts","sourceRoot":"","sources":["../../src/issue-batch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,KAAK,UAAU,EAAE,KAAK,cAAc,EAAsB,MAAM,aAAa,CAAC;AACxH,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIhG,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;CACnB;AAsCD,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CA4BnE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,QAAQ,EAAE,EACzB,OAAO,EAAE;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;GAkDtF"}
1
+ {"version":3,"file":"issue-batch.d.ts","sourceRoot":"","sources":["../../src/issue-batch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,KAAK,UAAU,EAAE,KAAK,cAAc,EAAsB,MAAM,aAAa,CAAC;AACxH,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIhG,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;CACnB;AAsCD,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CA4BnE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,QAAQ,EAAE,EACzB,OAAO,EAAE;IACP,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;;;;;;;;GAqDF"}
@@ -18,7 +18,7 @@ function csvRows(text) {
18
18
  });
19
19
  }
20
20
  catch {
21
- throw new Error("YouTrack manifest must be valid CSV with one header of distinct supported columns.");
21
+ throw new Error("The manifest must be valid CSV with one header of distinct supported columns.");
22
22
  }
23
23
  return records.map((record) => {
24
24
  const row = {};
@@ -47,7 +47,7 @@ function csvRows(text) {
47
47
  export function manifestRows(text, path) {
48
48
  const csv = /\.csv$/i.test(path);
49
49
  if (!csv && !/\.json$/i.test(path))
50
- throw new Error("YouTrack manifest must be a .json or .csv file.");
50
+ throw new Error("The manifest must be a .json or .csv file.");
51
51
  let rows;
52
52
  if (csv) {
53
53
  rows = csvRows(text);
@@ -57,14 +57,14 @@ export function manifestRows(text, path) {
57
57
  rows = JSON.parse(text);
58
58
  }
59
59
  catch {
60
- throw new Error("YouTrack manifest must be valid JSON.");
60
+ throw new Error("The manifest must be valid JSON.");
61
61
  }
62
62
  }
63
63
  if (!Array.isArray(rows) || !rows.length)
64
- throw new Error("YouTrack manifest must be a nonempty array of rows.");
64
+ throw new Error("The manifest must be a nonempty array of rows.");
65
65
  return rows.map((value, index) => {
66
66
  try {
67
- const source = mutationBody(value, ["action", "issue", "project", "summary", "description", "customFields"]);
67
+ const source = mutationBody(value);
68
68
  const { action, issue, ...body } = source;
69
69
  if (action === "create" && issue === undefined)
70
70
  return { row: index + 1, source, write: issueWrite(body, true) };
@@ -72,10 +72,10 @@ export function manifestRows(text, path) {
72
72
  encodedID(issue, "issue ID");
73
73
  return { row: index + 1, source, issue, write: issueWrite(body, false) };
74
74
  }
75
- throw new Error("YouTrack manifest action must be create, or update with an issue ID.");
75
+ throw new Error("The action must be create, or update with an issue ID.");
76
76
  }
77
77
  catch (error) {
78
- throw new Error(`YouTrack manifest row ${index + 1}: ${error.message.replace(/^YouTrack /, "")}`);
78
+ throw new Error(`Manifest row ${index + 1}: ${error.message}`);
79
79
  }
80
80
  });
81
81
  }
@@ -85,11 +85,11 @@ export function manifestRows(text, path) {
85
85
  */
86
86
  export async function applyIssueBatch(connection, rows, options) {
87
87
  if (options.failedRows !== undefined && !/\.json$/i.test(options.failedRows)) {
88
- throw new Error("YouTrack failed-rows name must end with .json.");
88
+ throw new Error("--failed-rows must end with .json.");
89
89
  }
90
90
  const results = [];
91
91
  let stop = false;
92
- for (const row of rows) {
92
+ for (const [index, row] of rows.entries()) {
93
93
  if (stop || connection.signal?.aborted) {
94
94
  results.push({ row: row.row, status: "unattempted" });
95
95
  continue;
@@ -103,9 +103,13 @@ export async function applyIssueBatch(connection, rows, options) {
103
103
  catch (error) {
104
104
  const status = error.status;
105
105
  const rejected = !sent || (typeof status === "number" && status >= 400 && status < 500);
106
- results.push({ row: row.row, status: rejected ? "failed" : "uncertain", error: error.message });
106
+ const message = error.message;
107
+ results.push({ row: row.row, status: rejected ? "failed" : "uncertain", error: message });
108
+ options.progress?.(`Row ${row.row}: ${rejected ? "failed" : "uncertain"} (${message})`);
107
109
  stop = !options.continueOnError;
108
110
  }
111
+ if ((index + 1) % 10 === 0 && index + 1 < rows.length)
112
+ options.progress?.(`Processed ${index + 1} of ${rows.length} rows.`);
109
113
  }
110
114
  const count = (status) => results.filter((result) => result.status === status).length;
111
115
  const resubmit = rows.filter((_row, index) => ["failed", "unattempted"].includes(String(results[index]?.status)));
@@ -1 +1 @@
1
- {"version":3,"file":"issue-batch.js","sourceRoot":"","sources":["../../src/issue-batch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"issue-batch.js","sourceRoot":"","sources":["../../src/issue-batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAA4D,MAAM,aAAa,CAAC;AACxH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AAEhG,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;AASjH,SAAS,OAAO,CAAC,IAAY;IAC3B,IAAI,OAAiC,CAAC;IACtC,IAAI,CAAC;QACH,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;YACpB,GAAG,EAAE,IAAI;YACT,gBAAgB,EAAE,IAAI;YACtB,OAAO,EAAE,CAAC,MAAgB,EAAE,EAAE;gBAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;oBACjG,MAAM,IAAI,KAAK,EAAE,CAAC;gBACpB,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAA6B,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,IAAI,IAAI,KAAK,EAAE;gBAAE,SAAS;YAC1B,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClC,GAAG,CAAC,OAAO,GAAG,EAAE,GAAI,GAAG,CAAC,OAA8B,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACpG,CAAC;iBAAM,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;gBACrC,IAAI,CAAC;oBACH,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtC,CAAC;gBAAC,MAAM,CAAC;oBACP,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,8DAA8D;gBACzF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAAY;IACrD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClG,IAAI,IAAa,CAAC;IAClB,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC5G,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAc,EAAE,KAAK,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;YAC1C,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACjH,IAAI,MAAM,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrD,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBAC7B,OAAO,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3E,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,GAAG,CAAC,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAsB,EACtB,IAAyB,EACzB,OAMC;IAED,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YACtD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAC5E,IAAI,GAAG,IAAI,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACtH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAI,KAA8B,CAAC,MAAM,CAAC;YACtD,MAAM,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;YACxF,MAAM,OAAO,GAAI,KAAe,CAAC,OAAO,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1F,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,GAAG,CAAC,CAAC;YACxF,IAAI,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,aAAa,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC;IAC9H,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC9F,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClH,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,UAAU,GAAG;gBACX,GAAG,MAAM,eAAe,CAAC;oBACvB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;oBAC1C,IAAI,EAAE,OAAO,CAAC,UAAU;oBACxB,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;oBAC1E,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,GAAG,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;QACvE,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC;QAC7B,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;QACvB,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC;QAC7B,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC;QACjC,IAAI,EAAE,OAAO;QACb,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"issue-context-commands.d.ts","sourceRoot":"","sources":["../../src/issue-context-commands.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,mBAAmB,qDAU/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,qDAyBhC,CAAC;AAEF,eAAO,MAAM,sBAAsB,qDAQlC,CAAC"}
1
+ {"version":3,"file":"issue-context-commands.d.ts","sourceRoot":"","sources":["../../src/issue-context-commands.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,mBAAmB,qDAU/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,qDAyBhC,CAAC;AAEF,eAAO,MAAM,sBAAsB,qDASlC,CAAC"}
@@ -1,19 +1,20 @@
1
1
  import { command } from "@eyeauras/cli-factory";
2
2
  import { bodyUpdate, pagedRead, projectedRead, readCommand, projectionOptions, readOptions } from "./cli-support.js";
3
3
  import { activityCategories, getActivitiesPage, getComment, getIssueActivitiesPage, getVcsChange, listIssueSprints, listVcsChanges, updateComment, } from "./issue-context.js";
4
+ import { commentShown, commentUpdated, sprintTable } from "./presentation.js";
4
5
  const activityOptions = [
5
6
  ...projectionOptions,
6
7
  {
7
8
  flags: "--categories <categories>",
8
- description: "Required comma-separated YouTrack activity category IDs",
9
+ description: "Comma-separated activity category IDs",
9
10
  required: true,
10
11
  parse: activityCategories,
11
12
  },
12
13
  {
13
14
  flags: "--cursor <cursor>",
14
- description: "Opaque beforeCursor or afterCursor from a previous page",
15
+ description: "beforeCursor or afterCursor from a previous page",
15
16
  },
16
- { flags: "--reverse", description: "Return newest activities first" },
17
+ { flags: "--reverse", description: "Newest activities first" },
17
18
  ];
18
19
  function activityReadOptions(options) {
19
20
  return {
@@ -24,24 +25,24 @@ function activityReadOptions(options) {
24
25
  };
25
26
  }
26
27
  export const contextRootCommands = [
27
- command("activities", "Inspect activities across accessible issues", [
28
- readCommand("page", "Read one server-defined cursor page, including cursor metadata", async (connection, { options }, context) => getActivitiesPage(connection, activityReadOptions(options)), activityOptions),
28
+ command("activities", "Inspect activities across issues", [
29
+ readCommand("page", "Read one cursor page of activities", async (connection, { options }, context) => getActivitiesPage(connection, activityReadOptions(options)), activityOptions),
29
30
  ]),
30
31
  ];
31
32
  export const contextIssueChildren = [
32
33
  command("activity", "Inspect the issue activity stream", [
33
- readCommand("page <issueID>", "Read one server-defined cursor page, including cursor metadata", async (connection, { args, options }, context) => getIssueActivitiesPage(connection, args.issueID, activityReadOptions(options)), activityOptions),
34
+ readCommand("page <issueID>", "Read one cursor page of activities", async (connection, { args, options }, context) => getIssueActivitiesPage(connection, args.issueID, activityReadOptions(options)), activityOptions),
34
35
  ]),
35
- command("sprints", "Inspect sprints that contain an issue", [
36
- pagedRead("list <issueID>", "List one page of the issue's sprints", listIssueSprints),
36
+ command("sprints", "Inspect the sprints that contain an issue", [
37
+ pagedRead("list <issueID>", "List the issue's sprints", listIssueSprints, sprintTable),
37
38
  ]),
38
39
  command("vcs-changes", "Inspect linked VCS changes and pull requests", [
39
- pagedRead("list <issueID>", "List one page of VCS changes and pull requests", listVcsChanges),
40
- projectedRead("get <issueID> <changeID>", "Read a linked VCS change or pull request", getVcsChange),
40
+ pagedRead("list <issueID>", "List VCS changes and pull requests", listVcsChanges),
41
+ projectedRead("get <issueID> <changeID>", "Show a VCS change or pull request", getVcsChange),
41
42
  ]),
42
43
  ];
43
44
  export const contextCommentChildren = [
44
- projectedRead("get <issueID> <commentID>", "Read a specific issue comment", getComment),
45
- bodyUpdate("update <issueID> <commentID>", "Replace comment text with a nonempty text field", updateComment, "text"),
45
+ projectedRead("get <issueID> <commentID>", "Show a comment", getComment, commentShown),
46
+ bodyUpdate("update <issueID> <commentID>", "Replace a comment's text", updateComment, "text", commentUpdated("issueID", "commentID")),
46
47
  ];
47
48
  //# sourceMappingURL=issue-context-commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"issue-context-commands.js","sourceRoot":"","sources":["../../src/issue-context-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAyB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACrH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,aAAa,GAEd,MAAM,oBAAoB,CAAC;AAE5B,MAAM,eAAe,GAAgC;IACnD,GAAG,iBAAiB;IACpB;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,kBAAkB;KAC1B;IACD;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,yDAAyD;KACvE;IACD,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,gCAAgC,EAAE;CACtE,CAAC;AAEF,SAAS,mBAAmB,CAAC,OAAgC;IAC3D,OAAO;QACL,GAAG,WAAW,CAAC,OAAO,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;QACtC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC/E,GAAG,CAAC,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO,CAAC,YAAY,EAAE,6CAA6C,EAAE;QACnE,WAAW,CACT,MAAM,EACN,gEAAgE,EAChE,KAAK,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CACzC,iBAAiB,CAAC,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAC7D,eAAe,CAChB;KACF,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,CAAC,UAAU,EAAE,mCAAmC,EAAE;QACvD,WAAW,CACT,gBAAgB,EAChB,gEAAgE,EAChE,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAC/C,sBAAsB,CACpB,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,mBAAmB,CAAC,OAAO,CAAC,CAC7B,EACH,eAAe,CAChB;KACF,CAAC;IACF,OAAO,CAAC,SAAS,EAAE,uCAAuC,EAAE;QAC1D,SAAS,CAAC,gBAAgB,EAAE,sCAAsC,EAAE,gBAAgB,CAAC;KACtF,CAAC;IACF,OAAO,CAAC,aAAa,EAAE,8CAA8C,EAAE;QACrE,SAAS,CAAC,gBAAgB,EAAE,gDAAgD,EAAE,cAAc,CAAC;QAC7F,aAAa,CACX,0BAA0B,EAC1B,0CAA0C,EAC1C,YAAY,CACb;KACF,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,CAAC,2BAA2B,EAAE,+BAA+B,EAAE,UAAU,CAAC;IACvF,UAAU,CACR,8BAA8B,EAC9B,iDAAiD,EACjD,aAAa,EACb,MAAM,CACP;CACF,CAAC"}
1
+ {"version":3,"file":"issue-context-commands.js","sourceRoot":"","sources":["../../src/issue-context-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAyB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACrH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,aAAa,GAEd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE9E,MAAM,eAAe,GAAgC;IACnD,GAAG,iBAAiB;IACpB;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,uCAAuC;QACpD,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,kBAAkB;KAC1B;IACD;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,kDAAkD;KAChE;IACD,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,yBAAyB,EAAE;CAC/D,CAAC;AAEF,SAAS,mBAAmB,CAAC,OAAgC;IAC3D,OAAO;QACL,GAAG,WAAW,CAAC,OAAO,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;QACtC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC/E,GAAG,CAAC,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO,CAAC,YAAY,EAAE,kCAAkC,EAAE;QACxD,WAAW,CACT,MAAM,EACN,oCAAoC,EACpC,KAAK,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CACzC,iBAAiB,CAAC,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAC7D,eAAe,CAChB;KACF,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,CAAC,UAAU,EAAE,mCAAmC,EAAE;QACvD,WAAW,CACT,gBAAgB,EAChB,oCAAoC,EACpC,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAC/C,sBAAsB,CACpB,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,mBAAmB,CAAC,OAAO,CAAC,CAC7B,EACH,eAAe,CAChB;KACF,CAAC;IACF,OAAO,CAAC,SAAS,EAAE,2CAA2C,EAAE;QAC9D,SAAS,CAAC,gBAAgB,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,WAAW,CAAC;KACvF,CAAC;IACF,OAAO,CAAC,aAAa,EAAE,8CAA8C,EAAE;QACrE,SAAS,CAAC,gBAAgB,EAAE,oCAAoC,EAAE,cAAc,CAAC;QACjF,aAAa,CACX,0BAA0B,EAC1B,mCAAmC,EACnC,YAAY,CACb;KACF,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,CAAC,2BAA2B,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,CAAC;IACtF,UAAU,CACR,8BAA8B,EAC9B,0BAA0B,EAC1B,aAAa,EACb,MAAM,EACN,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CACvC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"issue-context.d.ts","sourceRoot":"","sources":["../../src/issue-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAOD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMxD;AAgDD,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAEzB;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAEzB;AAED,eAAO,MAAM,UAAU,kIAItB,CAAC;AAEF,wBAAsB,aAAa,CACjC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQhC;AAED,eAAO,MAAM,gBAAgB,2GAG5B,CAAC;AACF,eAAO,MAAM,cAAc,2GAG1B,CAAC;AACF,eAAO,MAAM,YAAY,iIAIxB,CAAC"}
1
+ {"version":3,"file":"issue-context.d.ts","sourceRoot":"","sources":["../../src/issue-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAOD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAgDD,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAEzB;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAEzB;AAED,eAAO,MAAM,UAAU,kIAItB,CAAC;AAEF,wBAAsB,aAAa,CACjC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQhC;AAED,eAAO,MAAM,gBAAgB,2GAG5B,CAAC;AACF,eAAO,MAAM,cAAc,2GAG1B,CAAC;AACF,eAAO,MAAM,YAAY,iIAIxB,CAAC"}
@@ -1,17 +1,13 @@
1
- import { encodedID, fields, issuePath, mutate, mutationBody, narrative, page, readCollection, readCollectionAt, readObject, readObjectAt, requiredText, } from "./client.js";
1
+ import { encodedID, fields, issuePath, mutate, mutationBody, nullableText, page, readCollection, readCollectionAt, readObject, readObjectAt, requiredText, } from "./client.js";
2
2
  const activityFields = "id,beforeCursor,afterCursor,hasBefore,hasAfter,reverse,activities(id,$type,timestamp,author(id,login),category(id))";
3
3
  const commentFields = "id,text,author(id,login),created,updated";
4
4
  const vcsFields = "id,$type,date,fetched,text,author(login)";
5
5
  export function activityCategories(value) {
6
- requiredText(value, "categories");
7
- if (value.split(",").some((category) => !category.trim())) {
8
- throw new Error("YouTrack categories must contain nonempty comma-separated category IDs.");
9
- }
10
- return value;
6
+ return requiredText(value, "categories");
11
7
  }
12
8
  function activityQuery(options) {
13
9
  if (options.reverse !== undefined && typeof options.reverse !== "boolean") {
14
- throw new Error("YouTrack reverse must be boolean.");
10
+ throw new Error("--reverse must be boolean.");
15
11
  }
16
12
  return {
17
13
  fields: fields(options, activityFields),
@@ -25,20 +21,20 @@ async function activityPage(connection, path, options) {
25
21
  if (options.fields === undefined &&
26
22
  ["activities", "beforeCursor", "afterCursor", "hasBefore", "hasAfter", "reverse"]
27
23
  .some((key) => !Object.hasOwn(result, key))) {
28
- throw new Error("YouTrack returned an invalid activity page.");
24
+ throw new Error("Invalid activity page from YouTrack.");
29
25
  }
30
26
  if (result.activities !== undefined &&
31
27
  (!Array.isArray(result.activities) || result.activities.some((item) => item === null || typeof item !== "object" || Array.isArray(item)))) {
32
- throw new Error("YouTrack returned an invalid activity page.");
28
+ throw new Error("Invalid activity page from YouTrack.");
33
29
  }
34
30
  for (const key of ["beforeCursor", "afterCursor"]) {
35
31
  if (result[key] !== undefined && typeof result[key] !== "string") {
36
- throw new Error("YouTrack returned an invalid activity page.");
32
+ throw new Error("Invalid activity page from YouTrack.");
37
33
  }
38
34
  }
39
35
  for (const key of ["hasBefore", "hasAfter", "reverse"]) {
40
36
  if (result[key] !== undefined && typeof result[key] !== "boolean") {
41
- throw new Error("YouTrack returned an invalid activity page.");
37
+ throw new Error("Invalid activity page from YouTrack.");
42
38
  }
43
39
  }
44
40
  return result;
@@ -51,8 +47,8 @@ export async function getIssueActivitiesPage(connection, issueID, options) {
51
47
  }
52
48
  export const getComment = readObjectAt((issueID, commentID) => `${issuePath(issueID)}/comments/${encodedID(commentID, "comment ID")}`, commentFields);
53
49
  export async function updateComment(connection, issueID, commentID, input) {
54
- const body = mutationBody(input, ["text"]);
55
- return mutate(connection, `${issuePath(issueID)}/comments/${encodedID(commentID, "comment ID")}`, { text: narrative(body.text, "text") }, commentFields);
50
+ const body = mutationBody(input);
51
+ return mutate(connection, `${issuePath(issueID)}/comments/${encodedID(commentID, "comment ID")}`, { ...body, ...(Object.hasOwn(body, "text") ? { text: nullableText(body.text, "text") } : {}) }, commentFields);
56
52
  }
57
53
  export const listIssueSprints = readCollectionAt((issueID) => `${issuePath(issueID)}/sprints`, "id,name,goal,start,finish,archived,agile(id,name)");
58
54
  export const listVcsChanges = readCollectionAt((issueID) => `${issuePath(issueID)}/vcsChanges`, vcsFields);
@@ -1 +1 @@
1
- {"version":3,"file":"issue-context.js","sourceRoot":"","sources":["../../src/issue-context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,MAAM,EACN,SAAS,EACT,MAAM,EACN,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,YAAY,GAKb,MAAM,aAAa,CAAC;AAQrB,MAAM,cAAc,GAClB,qHAAqH,CAAC;AACxH,MAAM,aAAa,GAAG,0CAA0C,CAAC;AACjE,MAAM,SAAS,GAAG,0CAA0C,CAAC;AAE7D,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,OAAwB;IAC7C,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC;QACvC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC3F,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,UAAsB,EACtB,IAAY,EACZ,OAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,IACE,OAAO,CAAC,MAAM,KAAK,SAAS;QAC5B,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC;aAC9E,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAC7C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,IACE,MAAM,CAAC,UAAU,KAAK,SAAS;QAC/B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAC1D,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAC3E,CAAC,EACF,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE,CAAC;QAClD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;QACvD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAsB,EACtB,OAAwB;IAExB,OAAO,YAAY,CAAC,UAAU,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAsB,EACtB,OAAe,EACf,OAAwB;IAExB,OAAO,YAAY,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CACpC,CAAC,OAAe,EAAE,SAAiB,EAAE,EAAE,CACrC,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,EACxE,aAAa,CACd,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAsB,EACtB,OAAe,EACf,SAAiB,EACjB,KAAc;IAEd,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,OAAO,MAAM,CACX,UAAU,EACV,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,EACtE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EACtC,aAAa,CACd,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAC9C,CAAC,OAAe,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EACpD,mDAAmD,CACpD,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAC5C,CAAC,OAAe,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EACvD,SAAS,CACV,CAAC;AACF,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CACtC,CAAC,OAAe,EAAE,QAAgB,EAAE,EAAE,CACpC,GAAG,SAAS,CAAC,OAAO,CAAC,eAAe,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,EACxE,SAAS,CACV,CAAC"}
1
+ {"version":3,"file":"issue-context.js","sourceRoot":"","sources":["../../src/issue-context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"issue-fields-commands.d.ts","sourceRoot":"","sources":["../../src/issue-fields-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAYxE,eAAO,MAAM,qBAAqB,EAAE,SAAS,iBAAiB,EAM7D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAAS,iBAAiB,EAE1D,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EAc3D,CAAC"}
1
+ {"version":3,"file":"issue-fields-commands.d.ts","sourceRoot":"","sources":["../../src/issue-fields-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAaxE,eAAO,MAAM,qBAAqB,EAAE,SAAS,iBAAiB,EAM7D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAAS,iBAAiB,EAE1D,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EAY3D,CAAC"}
@@ -1,21 +1,22 @@
1
1
  import { command } from "@eyeauras/cli-factory";
2
2
  import { bodyUpdate, pagedRead, projectedRead } from "./cli-support.js";
3
3
  import { getProject, getProjectField, listProjectFields, listUsers, getIssueField, listIssueFields, setIssueField, } from "./issue-fields.js";
4
+ import { issueFieldRecord, issueFieldTable, projectFieldTable, projectRecord, userTable } from "./presentation.js";
4
5
  export const fieldsProjectChildren = [
5
- projectedRead("get <project>", "Show a project by database ID or short name", getProject),
6
- command("field", "Inspect project custom-field settings and types", [
7
- pagedRead("list <project>", "List one page of project custom fields", listProjectFields),
8
- projectedRead("get <project> <field>", "Show project custom-field settings", getProjectField),
6
+ projectedRead("get <project>", "Show a project", getProject, projectRecord),
7
+ command("field", "Inspect project custom-field settings", [
8
+ pagedRead("list <project>", "List the project's custom fields", listProjectFields, projectFieldTable),
9
+ projectedRead("get <project> <field>", "Show a project custom field", getProjectField),
9
10
  ]),
10
11
  ];
11
12
  export const fieldsUserChildren = [
12
- pagedRead("list", "List one page of YouTrack users", listUsers),
13
+ pagedRead("list", "List users", listUsers, userTable),
13
14
  ];
14
15
  export const fieldsIssueChildren = [
15
- command("fields", "Read and set typed issue custom fields", [
16
- pagedRead("list <issueID>", "List one page of issue custom fields", listIssueFields),
17
- projectedRead("get <issueID> <fieldID>", "Show a field; request possibleEvents explicitly for state-machine transitions", getIssueField),
18
- bodyUpdate("set <issueID> <fieldID>", "Set $type and value, or a state-machine event.id", setIssueField),
16
+ command("fields", "Read and set custom fields", [
17
+ pagedRead("list <issueID>", "List the issue's custom fields", listIssueFields, issueFieldTable),
18
+ projectedRead("get <issueID> <fieldID>", "Show a custom field", getIssueField, issueFieldRecord),
19
+ bodyUpdate("set <issueID> <fieldID>", "Set a field value or state event", setIssueField, undefined, issueFieldRecord),
19
20
  ]),
20
21
  ];
21
22
  //# sourceMappingURL=issue-fields-commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"issue-fields-commands.js","sourceRoot":"","sources":["../../src/issue-fields-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,qBAAqB,GAAiC;IACjE,aAAa,CAAC,eAAe,EAAE,6CAA6C,EAAE,UAAU,CAAC;IACzF,OAAO,CAAC,OAAO,EAAE,iDAAiD,EAAE;QAClE,SAAS,CAAC,gBAAgB,EAAE,wCAAwC,EAAE,iBAAiB,CAAC;QACxF,aAAa,CAAC,uBAAuB,EAAE,oCAAoC,EAAE,eAAe,CAAC;KAC9F,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAiC;IAC9D,SAAS,CAAC,MAAM,EAAE,iCAAiC,EAAE,SAAS,CAAC;CAChE,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAiC;IAC/D,OAAO,CAAC,QAAQ,EAAE,wCAAwC,EAAE;QAC1D,SAAS,CAAC,gBAAgB,EAAE,sCAAsC,EAAE,eAAe,CAAC;QACpF,aAAa,CACX,yBAAyB,EACzB,+EAA+E,EAC/E,aAAa,CACd;QACD,UAAU,CACR,yBAAyB,EACzB,kDAAkD,EAClD,aAAa,CACd;KACF,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"issue-fields-commands.js","sourceRoot":"","sources":["../../src/issue-fields-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnH,MAAM,CAAC,MAAM,qBAAqB,GAAiC;IACjE,aAAa,CAAC,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,CAAC;IAC3E,OAAO,CAAC,OAAO,EAAE,uCAAuC,EAAE;QACxD,SAAS,CAAC,gBAAgB,EAAE,kCAAkC,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;QACrG,aAAa,CAAC,uBAAuB,EAAE,6BAA6B,EAAE,eAAe,CAAC;KACvF,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAiC;IAC9D,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC;CACtD,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAiC;IAC/D,OAAO,CAAC,QAAQ,EAAE,4BAA4B,EAAE;QAC9C,SAAS,CAAC,gBAAgB,EAAE,gCAAgC,EAAE,eAAe,EAAE,eAAe,CAAC;QAC/F,aAAa,CAAC,yBAAyB,EAAE,qBAAqB,EAAE,aAAa,EAAE,gBAAgB,CAAC;QAChG,UAAU,CACR,yBAAyB,EACzB,kCAAkC,EAClC,aAAa,EACb,SAAS,EACT,gBAAgB,CACjB;KACF,CAAC;CACH,CAAC"}
@@ -7,15 +7,13 @@ export declare const listIssueFields: (connection: Connection, issueID: string,
7
7
  export declare const getIssueField: (connection: Connection, issueID: string, fieldID: string, options?: import("./client.js").ProjectionOptions | undefined) => Promise<YouTrackObject>;
8
8
  export declare function setIssueField(connection: Connection, issueID: string, fieldID: string, input: unknown): Promise<YouTrackObject | null>;
9
9
  export declare const issueWriteFields = "id,idReadable,summary,updated";
10
- /** A locally validated create/update body whose name selectors are not resolved yet. */
10
+ /** A JSON issue body; the API resolves supplied identity selectors. */
11
11
  export interface IssueWrite {
12
- project?: YouTrackObject;
13
12
  body: YouTrackObject;
14
- customFields?: YouTrackObject[];
15
13
  }
16
14
  /** Validate an issue create/update body without network access. */
17
15
  export declare function issueWrite(input: unknown, create: boolean): IssueWrite;
18
- /** Resolve name selectors with exact reads before the single write; ID-only bodies read nothing. */
16
+ /** Send native selectors without extra catalog reads or body rewriting. */
19
17
  export declare function issueRequest(connection: Connection, write: IssueWrite, issueID?: string): Promise<{
20
18
  path: string;
21
19
  body: YouTrackObject;
@@ -1 +1 @@
1
- {"version":3,"file":"issue-fields.d.ts","sourceRoot":"","sources":["../../src/issue-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,UAAU,EACf,KAAK,cAAc,EAEpB,MAAM,aAAa,CAAC;AAerB,eAAO,MAAM,UAAU,uIAAsE,CAAC;AAC9F,eAAO,MAAM,iBAAiB,mIAG7B,CAAC;AACF,eAAO,MAAM,eAAe,wJAI3B,CAAC;AACF,eAAO,MAAM,SAAS,gHAAqD,CAAC;AAC5E,eAAO,MAAM,eAAe,iIAG3B,CAAC;AACF,eAAO,MAAM,aAAa,sJAA4C,CAAC;AAwEvE,wBAAsB,aAAa,CACjC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAiBhC;AAED,eAAO,MAAM,gBAAgB,kCAAkC,CAAC;AAEhE,wFAAwF;AACxF,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;CACjC;AAWD,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,UAAU,CAgCtE;AAED,oGAAoG;AACpG,wBAAsB,YAAY,CAChC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,CAqCjD;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAGxG;AAED,wBAAsB,WAAW,CAC/B,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAGhC"}
1
+ {"version":3,"file":"issue-fields.d.ts","sourceRoot":"","sources":["../../src/issue-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,UAAU,EACf,KAAK,cAAc,EAEpB,MAAM,aAAa,CAAC;AAerB,eAAO,MAAM,UAAU,uIAAsE,CAAC;AAC9F,eAAO,MAAM,iBAAiB,mIAG7B,CAAC;AACF,eAAO,MAAM,eAAe,wJAI3B,CAAC;AACF,eAAO,MAAM,SAAS,gHAAqD,CAAC;AAC5E,eAAO,MAAM,eAAe,iIAG3B,CAAC;AACF,eAAO,MAAM,aAAa,sJAA4C,CAAC;AAmEvE,wBAAsB,aAAa,CACjC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAYhC;AAED,eAAO,MAAM,gBAAgB,kCAAkC,CAAC;AAEhE,uEAAuE;AACvE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;CACtB;AAOD,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,UAAU,CAsBtE;AAED,2EAA2E;AAC3E,wBAAsB,YAAY,CAChC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,CAEjD;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAGxG;AAED,wBAAsB,WAAW,CAC/B,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAGhC"}