@enrichlayer/el-linear 1.9.0 → 1.10.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 (60) hide show
  1. package/README.md +13 -0
  2. package/dist/commands/attachments.js +2 -1
  3. package/dist/commands/comments.js +17 -28
  4. package/dist/commands/cycles.js +2 -1
  5. package/dist/commands/documents.js +2 -1
  6. package/dist/commands/graphql.js +4 -6
  7. package/dist/commands/issue-id.js +1 -3
  8. package/dist/commands/issues/description.js +2 -6
  9. package/dist/commands/issues/link-references.d.ts +21 -0
  10. package/dist/commands/issues/link-references.js +171 -0
  11. package/dist/commands/issues/relations.d.ts +55 -0
  12. package/dist/commands/issues/relations.js +132 -0
  13. package/dist/commands/issues.js +65 -284
  14. package/dist/commands/labels.js +13 -23
  15. package/dist/commands/project-milestones.js +13 -20
  16. package/dist/commands/projects.js +67 -38
  17. package/dist/commands/refs.js +8 -0
  18. package/dist/commands/releases.js +26 -30
  19. package/dist/commands/search.js +21 -30
  20. package/dist/commands/teams.js +2 -1
  21. package/dist/commands/templates.js +9 -14
  22. package/dist/commands/users.js +2 -1
  23. package/dist/config/resolver.js +2 -3
  24. package/dist/queries/attachments-types.d.ts +30 -0
  25. package/dist/queries/attachments-types.js +5 -0
  26. package/dist/queries/comments-types.d.ts +49 -0
  27. package/dist/queries/comments-types.js +5 -0
  28. package/dist/queries/documents-types.d.ts +61 -0
  29. package/dist/queries/documents-types.js +9 -0
  30. package/dist/queries/introspect-types.d.ts +57 -0
  31. package/dist/queries/introspect-types.js +10 -0
  32. package/dist/queries/issues-types.d.ts +416 -0
  33. package/dist/queries/issues-types.js +23 -0
  34. package/dist/queries/issues.d.ts +2 -0
  35. package/dist/queries/issues.js +22 -0
  36. package/dist/queries/labels-types.d.ts +64 -0
  37. package/dist/queries/labels-types.js +5 -0
  38. package/dist/queries/project-milestones-types.d.ts +91 -0
  39. package/dist/queries/project-milestones-types.js +10 -0
  40. package/dist/queries/projects-types.d.ts +75 -0
  41. package/dist/queries/projects-types.js +5 -0
  42. package/dist/queries/projects.d.ts +2 -0
  43. package/dist/queries/projects.js +22 -0
  44. package/dist/queries/releases-types.d.ts +84 -0
  45. package/dist/queries/releases-types.js +5 -0
  46. package/dist/queries/search-types.d.ts +86 -0
  47. package/dist/queries/search-types.js +6 -0
  48. package/dist/queries/templates-types.d.ts +61 -0
  49. package/dist/queries/templates-types.js +9 -0
  50. package/dist/types/linear.d.ts +8 -2
  51. package/dist/utils/auto-link-references.js +29 -24
  52. package/dist/utils/graphql-attachments-service.js +6 -9
  53. package/dist/utils/graphql-documents-service.js +19 -25
  54. package/dist/utils/graphql-issues-service.d.ts +12 -2
  55. package/dist/utils/graphql-issues-service.js +151 -172
  56. package/dist/utils/output.d.ts +2 -0
  57. package/dist/utils/output.js +16 -6
  58. package/dist/utils/workspace-url.d.ts +5 -1
  59. package/dist/utils/workspace-url.js +35 -5
  60. package/package.json +1 -1
@@ -1,32 +1,29 @@
1
1
  import { CREATE_DOCUMENT_MUTATION, DELETE_DOCUMENT_MUTATION, GET_DOCUMENT_QUERY, LIST_DOCUMENTS_QUERY, UPDATE_DOCUMENT_MUTATION, } from "../queries/documents.js";
2
2
  import { createGraphQLService, } from "./graphql-service.js";
3
3
  function transformDocument(doc) {
4
- const creator = doc.creator;
5
- const project = doc.project;
6
- const issue = doc.issue;
7
4
  return {
8
5
  id: doc.id,
9
6
  title: doc.title,
10
- content: doc.content || undefined,
11
- color: doc.color || undefined,
12
- icon: doc.icon || undefined,
13
- slugId: doc.slugId || undefined,
14
- url: doc.url || undefined,
15
- creator: creator
16
- ? { id: creator.id, name: creator.name }
7
+ content: doc.content ?? undefined,
8
+ color: doc.color ?? undefined,
9
+ icon: doc.icon ?? undefined,
10
+ slugId: doc.slugId ?? undefined,
11
+ url: doc.url ?? undefined,
12
+ creator: doc.creator
13
+ ? { id: doc.creator.id, name: doc.creator.name }
17
14
  : undefined,
18
- project: project
19
- ? { id: project.id, name: project.name }
15
+ project: doc.project
16
+ ? { id: doc.project.id, name: doc.project.name }
20
17
  : undefined,
21
- issue: issue
18
+ issue: doc.issue
22
19
  ? {
23
- id: issue.id,
24
- identifier: issue.identifier,
25
- title: issue.title,
20
+ id: doc.issue.id,
21
+ identifier: doc.issue.identifier,
22
+ title: doc.issue.title,
26
23
  }
27
24
  : undefined,
28
- createdAt: doc.createdAt || undefined,
29
- updatedAt: doc.updatedAt || undefined,
25
+ createdAt: doc.createdAt ?? undefined,
26
+ updatedAt: doc.updatedAt ?? undefined,
30
27
  };
31
28
  }
32
29
  class GraphQLDocumentsService {
@@ -37,7 +34,7 @@ class GraphQLDocumentsService {
37
34
  async createDocument(input) {
38
35
  const result = await this.graphqlService.rawRequest(CREATE_DOCUMENT_MUTATION, { input });
39
36
  const createData = result.documentCreate;
40
- if (!createData.success) {
37
+ if (!createData.success || !createData.document) {
41
38
  throw new Error(`Failed to create document "${input.title}"${input.projectId ? ` in project ${input.projectId}` : ""}${input.teamId ? ` for team ${input.teamId}` : ""}`);
42
39
  }
43
40
  return transformDocument(createData.document);
@@ -45,15 +42,13 @@ class GraphQLDocumentsService {
45
42
  async updateDocument(id, input) {
46
43
  const result = await this.graphqlService.rawRequest(UPDATE_DOCUMENT_MUTATION, { id, input });
47
44
  const updateData = result.documentUpdate;
48
- if (!updateData.success) {
45
+ if (!updateData.success || !updateData.document) {
49
46
  throw new Error(`Failed to update document: ${id}`);
50
47
  }
51
48
  return transformDocument(updateData.document);
52
49
  }
53
50
  async getDocument(id) {
54
- const result = await this.graphqlService.rawRequest(GET_DOCUMENT_QUERY, {
55
- id,
56
- });
51
+ const result = await this.graphqlService.rawRequest(GET_DOCUMENT_QUERY, { id });
57
52
  if (!result.document) {
58
53
  throw new Error(`Document not found: ${id}`);
59
54
  }
@@ -71,8 +66,7 @@ class GraphQLDocumentsService {
71
66
  }
72
67
  async deleteDocument(id) {
73
68
  const result = await this.graphqlService.rawRequest(DELETE_DOCUMENT_MUTATION, { id });
74
- const deleteData = result.documentDelete;
75
- if (!deleteData.success) {
69
+ if (!result.documentDelete.success) {
76
70
  throw new Error(`Failed to delete document: ${id}`);
77
71
  }
78
72
  return true;
@@ -1,4 +1,5 @@
1
- import type { GraphQLResponseData, LinearIssue } from "../types/linear.js";
1
+ import type { IssueArchiveEntity, IssueNode, IssueWithCommentsNode } from "../queries/issues-types.js";
2
+ import type { LinearIssue } from "../types/linear.js";
2
3
  import type { GraphQLService } from "./graphql-service.js";
3
4
  import type { LinearService } from "./linear-service.js";
4
5
  /**
@@ -104,6 +105,11 @@ export interface CreateIssueArgs {
104
105
  /** Linear server-side template UUID for `--from-template`. */
105
106
  templateId?: string;
106
107
  }
108
+ export interface IssueArchiveOperationResult {
109
+ id: string;
110
+ entity?: IssueArchiveEntity;
111
+ lastSyncId: number;
112
+ }
107
113
  export declare class GraphQLIssuesService {
108
114
  private readonly graphQLService;
109
115
  private readonly linearService;
@@ -111,6 +117,10 @@ export declare class GraphQLIssuesService {
111
117
  getIssues(limit?: number): Promise<LinearIssue[]>;
112
118
  getIssueById(issueId: string): Promise<LinearIssue>;
113
119
  updateIssue(args: UpdateIssueArgs, labelMode?: string): Promise<LinearIssue>;
120
+ archiveIssue(issueId: string): Promise<IssueArchiveOperationResult>;
121
+ deleteIssue(issueId: string, options?: {
122
+ permanentlyDelete?: boolean;
123
+ }): Promise<IssueArchiveOperationResult>;
114
124
  private extractMilestoneNodes;
115
125
  private executeUpdateMutation;
116
126
  createIssue(args: CreateIssueArgs): Promise<LinearIssue>;
@@ -144,7 +154,7 @@ export declare class GraphQLIssuesService {
144
154
  private resolveStatusIdForUpdate;
145
155
  private buildCreateResolveVariables;
146
156
  private resolveParentId;
147
- transformIssueData(issue: GraphQLResponseData): LinearIssue;
157
+ transformIssueData(issue: IssueNode | IssueWithCommentsNode): LinearIssue;
148
158
  private transformIssueCoreFields;
149
159
  private transformIssueRelations;
150
160
  private transformIssueHierarchy;